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

bossrus

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

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

методом гугления нашёл как можно создать путь с одним из подпутей с оригинального пути:
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_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
23 674
Оценка реакций
8 203

~RA~

Чмоки всем в этом чате.
Сообщения
6 775
Оценка реакций
1 898
имеются картинки с путём, на котором расположены непересекающиеся куски пути. задача — разделить оригинальный путь, чтобы каждый отдельный подпуть был на отдельном пути.

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

bossrus

шибка умный, аднака
Топикстартер
Сообщения
375
Оценка реакций
58

bossrus

шибка умный, аднака
Топикстартер
Сообщения
375
Оценка реакций
58
как это они могут вдруг сами меняться?

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

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

Skvoznyak

12 лет на форуме
Сообщения
3 906
Оценка реакций
1 629
для оптимизации можно сделать так
во-первых, последний subpath и так остается единственным, его можно оставить на месте
во-вторых - не уверен что это быстрее, (и что вообще из скрипта получится) но попробовать можно - вместо перебора всех узлов можно выделять каждый subpath, и делать cut/paste в новый path
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
23 674
Оценка реакций
8 203
я нашёл за за чего. там в единицах измерения дело
Не пойму причем тут единицы измерения могут быть, ну да ладно.
Вы pathItemы перебираете с начала или таки с конца? А то не видя весь код ванговать можно по всякому
 

Skvoznyak

12 лет на форуме
Сообщения
3 906
Оценка реакций
1 629
Не пойму причем тут единицы измерения могут быть, ну да ладно.
Вы pathItemы перебираете с начала или таки с конца? А то не видя весь код ванговать можно по всякому
ну берешь координаты в cm, потом меняешь в px, из-за этого они сбиваются. PathPoint же содержит просто числа, а не UnitValue
 

bossrus

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


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

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
23 674
Оценка реакций
8 203
ну берешь координаты в cm, потом меняешь в px, из-за этого они сбиваются. PathPoint же содержит просто числа, а не UnitValue
А, понял
Но все равно меня терзают смутные сомнения, что топикстартер перебирает уже добавленные пути по второму кругу
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
23 674
Оценка реакций
8 203

bossrus

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

bossrus

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

bossrus

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

Skvoznyak

12 лет на форуме
Сообщения
3 906
Оценка реакций
1 629
а скиньте psd с таким путем
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
23 674
Оценка реакций
8 203