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

  • Автор темы Автор темы alxundr
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

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');
}())

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

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

А нельзя ли еще сделать как-то чтобы при запуске скрипта всплывало поле ввода, в которое можно было бы ввести другое слово вместо "object" и далее скрипт переименовывал объекты уже в новое имя? Или такое невозможно?
 
Последнее редактирование:
Как то так:
Код:
function renameItems(){
  for ( var i = 0 ; i < selection.length ; i++ )
    selection[i].name =objname+(i+1);
  }
var objname=prompt("Введите имя: ");
renameItems();
 
@_MBK_, супер! Огромное спасибо, прямо то что нужно)
 
Скрипт после переименования не рефрешит имена в палитре слоёв. То есть, для отображения изменившихся имён нужно сделать деселект или другое телодвижение. Как это поправить?
 
Скрипт после переименования не рефрешит имена в палитре слоёв.
А это сильно надо? Они ж самопроизвольно обновятся в этой панели при следующем действии
Ну, чисто с эстетических соображений можно вызвать последовательно пункты меню Group-Ungroup или, идеологически правильнее два раза Window-Layers, чтоб стопроцентно перерисовало
 
  • Спасибо
Реакции: quaritexa
Надо. Уже несколько раз несвоевременное обновление раздражало.

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

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

P.S. Поиск документации на адобовский скриптинг это какой-то квест.
 
Кроме костыля щёлкнуть панелью вариантов нет?
Это разве костыль? По мне так самый прямой способ
Многие вещи у адобы гораздо более заднепроходно реализуются
Да и вообще хотелка странная
Кстати, где можно найти полный массив ключей и значений "menuCommandString"?
Вот тут это обсуждали
А вот и список
 
Ну если это не костыль, то мне страшно. Нагуглил ещё такой список команд: [JS] CS6+ executeMenuCommand |Adobe Community
Спасибо за совет.

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

selection[0].selected = false;
selection[0].selected = true;
 
Потенциально опасная операция в первой строке. Попытка укусить себя за задницу. ;)
 
а, ну тут 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();
 
Так я не понял, что проще - дернуть панель или выполнить данную конструкцию? ;)
 
  • Спасибо
Реакции: quaritexa
Статус
Закрыто для дальнейших ответов.