[PS CS4-CS6] разделить путь скриптом

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74
имеются картинки с путём, на котором расположены непересекающиеся куски пути. задача — разделить оригинальный путь, чтобы каждый отдельный подпуть был на отдельном пути.

Не по теме:
(да, я в курсе, что уж очень много раз повторилось слово "путь")

методом гугления нашёл как можно создать путь с одним из подпутей с оригинального пути:
JavaScript:
        var myPathInfo = app.activeDocument.pathItems[0];
        for (pi=0;pi<app.activeDocument.pathItems[0].subPathItems.length;pi++)
            {
            var pathArray = new Array()
            var pArray = new Array();
            for(var i=0;i<myPathInfo.subPathItems[pi].pathPoints.length;i++)
                {
                pArray[i] = new PathPointInfo();
                pArray[i].kind = myPathInfo.subPathItems[pi].pathPoints[i].kind;
                pArray[i].anchor = myPathInfo.subPathItems[pi].pathPoints[i].anchor;
                pArray[i].leftDirection = myPathInfo.subPathItems[pi].pathPoints[i].leftDirection;
                pArray[i].rightDirection = myPathInfo.subPathItems[pi].pathPoints[i].rightDirection;
                };
            pathArray[0] = new Array();
            pathArray[0] = new SubPathInfo();
            pathArray[0].operation = myPathInfo.subPathItems[pi].operation;
            pathArray[0].closed = myPathInfo.subPathItems[pi].closed;
            pathArray[0].entireSubPath = pArray;
            app.activeDocument.pathItems.add("boss_path "+pi, pathArray);
            }
и всё бы было хорошо, но большие пути с большим количеством узлов этот скрипт делает ооооочень долго, и периодически (если единицы измерения в шопе вдруг становятся пиксели) куски путей на копиях лежат вообще не на тех координатах, что в оригинальном пути.

нет ли более простого пути удалить подпуть? чтобы просто скопировать путь, и удалить лишние части?
или может есть кардинально другой способ выполнить эту задачу?
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 808
Реакции
3 434
имеются картинки с путём, на котором расположены непересекающиеся куски пути. задача — разделить оригинальный путь, чтобы каждый отдельный подпуть был на отдельном пути.

Не по теме:
Этапять! Я ничего не понял, но очень понравилось!
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74
как это они могут вдруг сами меняться?

Не по теме:
скажем так — так получилось. я не специально. ;)

там главная притензия на то, что ооооочень долго. хотелось бы побыстрее.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
для оптимизации можно сделать так
во-первых, последний subpath и так остается единственным, его можно оставить на месте
во-вторых - не уверен что это быстрее, (и что вообще из скрипта получится) но попробовать можно - вместо перебора всех узлов можно выделять каждый subpath, и делать cut/paste в новый path
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
я нашёл за за чего. там в единицах измерения дело
Не пойму причем тут единицы измерения могут быть, ну да ладно.
Вы pathItemы перебираете с начала или таки с конца? А то не видя весь код ванговать можно по всякому
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Не пойму причем тут единицы измерения могут быть, ну да ладно.
Вы pathItemы перебираете с начала или таки с конца? А то не видя весь код ванговать можно по всякому

ну берешь координаты в cm, потом меняешь в px, из-за этого они сбиваются. PathPoint же содержит просто числа, а не UnitValue
 
  • Спасибо
Реакции: _MBK_

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74
Вы pathItemы перебираете с начала или таки с конца? А то не видя весь код ванговать можно по всякому
это весь код работы с путём. можно даже скопипастить к себе и запустить в шопе.
и там пофиг с какой стороны. оно не меняет существующую картинку до момента создания нового пути.


для оптимизации можно сделать так
во-первых, последний subpath и так остается единственным, его можно оставить на месте
в том-то и дело, что я не нашёл способа выделить субпуть. со всеми вытекающими в виде невозможности удалить его или скопировать. в моём скрипте создаются новые пути.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
ну берешь координаты в cm, потом меняешь в px, из-за этого они сбиваются. PathPoint же содержит просто числа, а не UnitValue
А, понял
Но все равно меня терзают смутные сомнения, что топикстартер перебирает уже добавленные пути по второму кругу
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74
ну берешь координаты в cm, потом меняешь в px, из-за этого они сбиваются. PathPoint же содержит просто числа, а не UnitValue
не-а. ну я же поместил весь скрипт. там нет смены едениц измерения. если ДО начала работы скрипта установлены пикселы — то копия пути создаётся в глубокой оппе. а если поставить мм — то всё ок.
у разных людей на компах свои единицы, вот и был глюк. поставил в скрипте смену на мм — в этом стало всё норм.
 

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74
А, понял
Но все равно меня терзают смутные сомнения, что топикстартер перебирает уже добавленные пути по второму кругу
нет. весь код в первом сообщении
 

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74
А, то есть у вас уже на одном единственном пути торможение?
ага. если путь с большим количством точек — комп начинает тормозить. он же их всех перебирает, а интерпретатор явскрипта в шопе весьма не ок
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
а скиньте psd с таким путем
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
  • Спасибо
Реакции: bossrus