[AI CC2022] Неправильно работает скрипт внутри операции (action)

Ant-3

Участник
Топикстартер
Сообщения
57
Реакции
2
Доброго дня!
Некорректно работает скрипт, когда запускаю его в разделе "операции"
В операцию этот скрипт вставляю через "вставить пункт меню" (скрипт в иллюстраторе находится в "файл-сценарии").

Вот сам скрипт:
Код:
var lays=activeDocument.layers;
for(l=0;l<lays.length;l++){app.activeDocument.activeLayer=lays[l];
while (app.activeDocument.activeLayer.pathItems.length !=0) {try{
activeDocument.selection=app.activeDocument.activeLayer.pathItems[0];
app.executeMenuCommand("Find Fill & Stroke menu item");
app.executeMenuCommand('group');}catch(e){continue;}
};
}


Может быть для раздела "операции" в этом скрипте нужно что-то дописать или переделать?
Или может быть я его как-то не так вставляю в раздел "операции"
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Доброго дня!
Некорректно работает скрипт, когда запускаю его в разделе "операции"
В операцию этот скрипт вставляю через "вставить пункт меню" (скрипт в иллюстраторе находится в "файл-сценарии").

Вот сам скрипт:
Код:
var lays=activeDocument.layers;
for(l=0;l<lays.length;l++){app.activeDocument.activeLayer=lays[l];
while (app.activeDocument.activeLayer.pathItems.length !=0) {try{
activeDocument.selection=app.activeDocument.activeLayer.pathItems[0];
app.executeMenuCommand("Find Fill & Stroke menu item");
app.executeMenuCommand('group');}catch(e){continue;}
};
}


Может быть для раздела "операции" в этом скрипте нужно что-то дописать или переделать?
Или может быть я его как-то не так вставляю в раздел "операции"
То есть скрипт оформлен в отдельный пункт меню, который вы вставляете в экшн?
Сразу вам скажу, что вы выбрали очень нехороший тернистый путь и сразу же споткнуличь на нем.
Хорошим тоном является не вставлять скрипт в экшн, а, наоборот, экшн в скрипт.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
а что он вообще делает? "Find Fill & Stroke menu item" - это expand какой-то?

не из экшена корректно работает?
 

Ant-3

Участник
Топикстартер
Сообщения
57
Реакции
2
То есть скрипт оформлен в отдельный пункт меню, который вы вставляете в экшн?
Сразу вам скажу, что вы выбрали очень нехороший тернистый путь и сразу же споткнуличь на нем.
Хорошим тоном является не вставлять скрипт в экшн, а, наоборот, экшн в скрипт.
да, я бы тоже хотел лучше все сделать отдельным скриптом)
Данная тема продолжение прошлой - [AI CC2022] - Изменение скрипта "Find same color path and make compound path" . Здесь нужный скрипт был сделан пользователем "Drawer", но я так и не смог начать им нормально пользоваться, тк при достижении определенного количества объектов в документе скрипт и иллюстратор зависают. Пробовал на разных компьютерах с разной производительностью (и разными версиями иллюстратора) - результат тот же.
Вот я и решил подойти к этому вопросу уже со стороны экшена, сам экшен я уже сделал, осталось только со скриптом разобраться (если это возможно конечно)
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
ну не хотите отвечать, не надо 'hz' скрипт довольно странно написан, конечно
 

Ant-3

Участник
Топикстартер
Сообщения
57
Реакции
2
а что он вообще делает? "Find Fill & Stroke menu item" - это expand какой-то?

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

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
я не понимаю, вот вы его если не из экшена запускаете - он корректно работает?
 

Ant-3

Участник
Топикстартер
Сообщения
57
Реакции
2
я не понимаю, вот вы его если не из экшена запускаете - он корректно работает?
в экшене он не собирает объекты с одинаковым цветом в группы, он там просто любой объект который видит помещает в отдельную группу
 
Последнее редактирование:

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
а вы попробуйте так вместо continue (который в данном контексте ничего и не делает). может сообщение об ошибке прояснит ситуацию

Код:
catch(e){alert(e+":"+e.line)}
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Сейчас глянул ваш скрипт - он и вправду какой то левоватый.
Он выбирает на активном слое первый pathItem, выделяет и группирует все обьекты с таким же цветом, затем повторяет операцию опять же с первым. Почему этот хромой индокод не зацикливается в душе не чаю. Вам наверное к Натали надо обратиться, у нее большой опыт в запуске подобных скриптов '))'
 

Skvoznyak

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

Ant-3

Участник
Топикстартер
Сообщения
57
Реакции
2
Сейчас глянул ваш скрипт - он и вправду какой то левоватый.
Он выбирает на активном слое первый pathItem, выделяет и группирует все обьекты с таким же цветом, затем повторяет операцию опять же с первым. Почему этот хромой индокод не зацикливается в душе не чаю. Вам наверное к Натали надо обратиться, у нее большой опыт в запуске подобных скриптов '))'
Я нашел этот скрипт на github, он единственный был из тех, что мне подошел, вот им с тех пор и пользуюсь. Может его переписать как-то можно, чтобы он выполнял ту же функцию и нормально запускался в экшене
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
ну там есть нюанс, pathItems внутри групп уже не попадают в свойство pathItems на слое. хотя если в какой-то момент это глюканет (что для иллюстратора святое дело), то скрипт уйдет в бесконечный цикл
Как именно реализованы коллекции pathItems внутри Layer и Group ведомо только разработчикам-индусам, да и то не факт. Мы уже тут несколько раз разбирали случаи, когда шейпы просто повисали в воздухе и доступ к ним только из родительского Document был, поэтому, перебирать дочерние pathItems от слоя на мой взгляд вообще дело безнадежное.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Я нашел этот скрипт на github, он единственный был из тех, что мне подошел, вот им с тех пор и пользуюсь. Может его переписать как-то можно, чтобы он выполнял ту же функцию и нормально запускался в экшене
Ну небось индусы и писали.
Я не пойму - у вас что, в документе дохрена слоев и на каждом надо одноцветные обьекты в отдельные группы сгруппировать или все таки для всего документа?
 

Ant-3

Участник
Топикстартер
Сообщения
57
Реакции
2
Ну небось индусы и писали.
Я не пойму - у вас что, в документе дохрена слоев и на каждом надо одноцветные обьекты в отдельные группы сгруппировать или все таки для всего документа?
слой один, объектов очень много, сами объекты не сгруппированы.
В данный момент я с помощью этого скрипта + экшена (который скрывает в документе все объекты, кроме объектов в одном артборде) сейчас группирую объекты с одинаковым цветом внутри одного артборда. Для этого запускаю сначала экшн, затем отдельно скрипт.

Хочу добиться того, чтобы за одно нажатие скрипта (или экшена) для каждого отдельного существующего артборда в документе это происходило за один клик. Экшн я сделал, скрипт в экшне не работает корректно
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
слой один, объектов очень много, сами объекты не сгруппированы.
В данный момент я с помощью этого скрипта + экшена (который скрывает в документе все объекты, кроме объектов в одном артборде) сейчас группирую объекты с одинаковым цветом внутри одного артборда. Для этого запускаю сначала экшн, затем отдельно скрипт.

Хочу добиться того, чтобы за одно нажатие скрипта (или экшена) для каждого отдельного существующего артборда в документе это происходило за один клик. Экшн я сделал, скрипт в экшне не работает корректно
Да он вообще по всем понятиям не должен корректно работать, то что он работает вообще - чистейшей воды хак индобага.
По хорошему надо в цикле по всем обьектам (как минимум) лочить группу и потом при выборе проверять блокировку.
Ну и redraw животворящий, разумеется
 

Ant-3

Участник
Топикстартер
Сообщения
57
Реакции
2
Да он вообще по всем понятиям не должен корректно работать, то что он работает вообще - чистейшей воды хак индобага.
По хорошему надо в цикле по всем обьектам (как минимум) лочить группу и потом при выборе проверять блокировку.
Ну и redraw животворящий, разумеется
хм, дак этот скрипт своего рода чит-код какой-то? Никогда не думал, что встречусь с чем-то подобным в графическом редакторе
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Ну я ж вам подробно нвписал в чем дело.
Сейчас глянул ваш скрипт - он и вправду какой то левоватый.
Он выбирает на активном слое первый pathItem, выделяет и группирует все обьекты с таким же цветом, затем повторяет операцию опять же с первым. Почему этот хромой индокод не зацикливается в душе не чаю. Вам наверное к Натали надо обратиться, у нее большой опыт в запуске подобных скриптов '))'
Работает это исключительно потому, что изза какого то внутреннего индобага группировка обьектов выводит группируемые обьекты из коллекции pathItems слоя, чего, вообще говоря, по логике здорового человека, происходить не должно.