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

  • Автор темы Автор темы bossrus
  • Дата начала Дата начала

bossrus

шибка умный, аднака
Топикстартер
10 лет на форуме
Сообщения
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);
            }
и всё бы было хорошо, но большие пути с большим количеством узлов этот скрипт делает ооооочень долго, и периодически (если единицы измерения в шопе вдруг становятся пиксели) куски путей на копиях лежат вообще не на тех координатах, что в оригинальном пути.

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

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

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

там главная притензия на то, что ооооочень долго. хотелось бы побыстрее.
 
для оптимизации можно сделать так
во-первых, последний subpath и так остается единственным, его можно оставить на месте
во-вторых - не уверен что это быстрее, (и что вообще из скрипта получится) но попробовать можно - вместо перебора всех узлов можно выделять каждый subpath, и делать cut/paste в новый path
 
Последнее редактирование:
я нашёл за за чего. там в единицах измерения дело
Не пойму причем тут единицы измерения могут быть, ну да ладно.
Вы pathItemы перебираете с начала или таки с конца? А то не видя весь код ванговать можно по всякому
 
Не пойму причем тут единицы измерения могут быть, ну да ладно.
Вы pathItemы перебираете с начала или таки с конца? А то не видя весь код ванговать можно по всякому

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


для оптимизации можно сделать так
во-первых, последний subpath и так остается единственным, его можно оставить на месте
в том-то и дело, что я не нашёл способа выделить субпуть. со всеми вытекающими в виде невозможности удалить его или скопировать. в моём скрипте создаются новые пути.
 
ну берешь координаты в cm, потом меняешь в px, из-за этого они сбиваются. PathPoint же содержит просто числа, а не UnitValue
А, понял
Но все равно меня терзают смутные сомнения, что топикстартер перебирает уже добавленные пути по второму кругу
 
ну берешь координаты в cm, потом меняешь в px, из-за этого они сбиваются. PathPoint же содержит просто числа, а не UnitValue
не-а. ну я же поместил весь скрипт. там нет смены едениц измерения. если ДО начала работы скрипта установлены пикселы — то копия пути создаётся в глубокой оппе. а если поставить мм — то всё ок.
у разных людей на компах свои единицы, вот и был глюк. поставил в скрипте смену на мм — в этом стало всё норм.
 
А, понял
Но все равно меня терзают смутные сомнения, что топикстартер перебирает уже добавленные пути по второму кругу
нет. весь код в первом сообщении
 
А, то есть у вас уже на одном единственном пути торможение?
ага. если путь с большим количством точек — комп начинает тормозить. он же их всех перебирает, а интерпретатор явскрипта в шопе весьма не ок
 
а скиньте psd с таким путем
 
  • Спасибо
Реакции: bossrus