[AI CC-CC2021] Переименовать выделенные объекты с нумерацией

Статус
Закрыто для дальнейших ответов.

alxundr

Участник
Топикстартер
Сообщения
3
Реакции
0
Здравствуйте, подскажите, пожалуйста, можно ли создать такой скрипт, который позволял бы переименовать выделенные объекты в заданное имя с нумерацией.

К примеру у меня есть 4 квадрата с названием <path>, а мне нужно их переименовать в object1, object2, object3, object4.

В задаче где мне это необходимо объектов не 4, а намного больше, около 1500. И самая сложная часть - все правильно переименовать. Хотелось бы это как-то автоматизировать.

Искал здесь на форуме, нашел только вот этот скрипт в одной из тем

Код:
(function renameItems(){
  for ( var i = 0 ; i < selection.length ; i++ ) {
    selection[i].name = selection[i].typename;
  }
  alert('renamed ' + i + ' items');
}())

Это что-то близкое, но немного не то. Возможно то что мне нужно реализуется очень просто, но я не владею скриптингом) Заранее спасибо)
 

alxundr

Участник
Топикстартер
Сообщения
3
Реакции
0
Спасибо большое! Вот этот код теперь делает именно то что надо!)

Код:
(function renameItems(){
  for ( var i = 0 ; i < selection.length ; i++ )
    selection[i].name = "object"+(i+1);
  }())

А нельзя ли еще сделать как-то чтобы при запуске скрипта всплывало поле ввода, в которое можно было бы ввести другое слово вместо "object" и далее скрипт переименовывал объекты уже в новое имя? Или такое невозможно?
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 187
Реакции
10 844
Как то так:
Код:
function renameItems(){
  for ( var i = 0 ; i < selection.length ; i++ )
    selection[i].name =objname+(i+1);
  }
var objname=prompt("Введите имя: ");
renameItems();
 

alxundr

Участник
Топикстартер
Сообщения
3
Реакции
0
@_MBK_, супер! Огромное спасибо, прямо то что нужно)
 

quaritexa

Участник
Сообщения
79
Реакции
6
Скрипт после переименования не рефрешит имена в палитре слоёв. То есть, для отображения изменившихся имён нужно сделать деселект или другое телодвижение. Как это поправить?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 187
Реакции
10 844
Скрипт после переименования не рефрешит имена в палитре слоёв.
А это сильно надо? Они ж самопроизвольно обновятся в этой панели при следующем действии
Ну, чисто с эстетических соображений можно вызвать последовательно пункты меню Group-Ungroup или, идеологически правильнее два раза Window-Layers, чтоб стопроцентно перерисовало
 
  • Спасибо
Реакции: quaritexa

quaritexa

Участник
Сообщения
79
Реакции
6
Надо. Уже несколько раз несвоевременное обновление раздражало.

В смысле так?
Код:
app.executeMenuCommand("AdobeLayerPalette1")
app.executeMenuCommand("AdobeLayerPalette1")
Кроме костыля щёлкнуть панелью вариантов нет?

Кстати, где можно найти полный массив ключей и значений "menuCommandString"?

P.S. Поиск документации на адобовский скриптинг это какой-то квест.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 187
Реакции
10 844
Кроме костыля щёлкнуть панелью вариантов нет?
Это разве костыль? По мне так самый прямой способ
Многие вещи у адобы гораздо более заднепроходно реализуются
Да и вообще хотелка странная
Кстати, где можно найти полный массив ключей и значений "menuCommandString"?
Вот тут это обсуждали
А вот и список
 

quaritexa

Участник
Сообщения
79
Реакции
6
Ну если это не костыль, то мне страшно. Нагуглил ещё такой список команд: [JS] CS6+ executeMenuCommand |Adobe Community
Спасибо за совет.

P.S. Ведро гвоздей бы в жопу кодерам адобы.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 187
Реакции
10 844
Ну на самом деле, при желании, код любой команды меню можно безо всякого списка через запись экшна самому посмотреть, там же процесс описан.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 187
Реакции
10 844
А по поводу адобовских индокодеров - вы еще не пробовали плагины писать, так что пока только верхушку айсберга увидели ;)
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
app.redraw() в конце попробуйте добавить
 

_MBK_

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

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
тогда вот )

selection[0].selected = false;
selection[0].selected = true;
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 187
Реакции
10 844
Потенциально опасная операция в первой строке. Попытка укусить себя за задницу. ;)
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
а, ну тут app.selection, да
щас
Код:
function main(){
if(!app.selection.length) return;
var firstObj = app.selection[0];
 for ( var i = 0 ; i < selection.length ; i++ )
   selection[i].name = "object"+(i+1);
firstObj.selected = false;
firstObj.selected = true;
}

main();
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 187
Реакции
10 844
Так я не понял, что проще - дернуть панель или выполнить данную конструкцию? ;)
 
  • Спасибо
Реакции: quaritexa
Статус
Закрыто для дальнейших ответов.