[AI CS4-CS6] Возможно ли редактирование символа скриптом?

Статус
Закрыто для дальнейших ответов.
Что это такое?
Вроде ж, нет в модели методов разобрать и собрать?
Экшном только, вышеупомянутые мной пункты в подменю панели Symbols записываются и вызываются из скриптинга
Это видимо не подгрузилось :

var newIt = it.breakLink();
var newsymbol = docRef.symbols.add(newIt);

.breakLink() - разобрал символ через скрипт. А по поводу создания символа, есть предположение, что сначала надо выделение в группу закинуть. Проверяю.
 
Занятно
Это недокументированнный метод, в reference его нет, нашел только у jongware
upload_2016-10-13_16-46-39.png
 
Впрочем, в CS6 таки работает, хоть в референсе и нету, но даже у него по спецификации
void breakLink ()
Break link to the symbol.
Т.е. возвращает он ничего
А для метода add, который создает символ нужен объект в качестве аргумента - тот же GroupItem по идее.
Так что идее сгрупировать и группу конвертировать в символ не лишена смысла, если, конесчно, разобрать таким странным образом получилось.
Но я бы предпочел все таки старыми добрыми экшнами делать, потому как, меня терзают смутные сомнения, что работать этот хитрый breаkLink не везде будет
 
Последнее редактирование:
Ну эшнами я не умею пока пользоваться в скрипте, а вот с помощью
Код:
for (var i = 0; i < app.activeDocument.selection.length; i++) { 
app.activeDocument.selection[i].breakLink();
redraw();
}
Успешно разобрал все выделенные символы скриптом
 
Успешно разобрал все выделенные символы скриптом
Ну если так, собрать их не проблема, самую главную проблему я вижу в том, как понять, какие именно объекты какому символу принадлежали до разборки?
А с экшнами просто - выделяешь символ, вызываешь экшн разборки, перебираешь выделенные объекты, вызываешь экшн сборки.
 
Создается новый слой с именем таким же, как и имя бывшего символа. Думаю можно использовать это
Ну, можно всегда выкрутиться, но телодвижений все равно больше
Хотя, конечно, с другой стороны, вызывать экшн из скрипта тоже не сильно полезное для экосистемы действие
 
А как объект поместить в группу? Пробовал .move() - не получилось, рефов не могу найти
 
а, все, разобрался
Код:
it[0].move(testGroup,ElementPlacement.INSIDE);
пытался сделать через то самое место)))
Код:
testGroup.move(it[i],ElementPlacement.PLACEBEFORE);
 
рефов не могу найти
Ну почему ж нету, вот к примеру
Код:
// Duplicates and groups all items in the current selection,
// then applies the same brush to each item in the group
if ( app.documents.length > 0 ) {
docSelection = app.activeDocument.selection;
if ( docSelection.length > 0 ) {
newGroup = app.activeDocument.groupItems.add();
for ( i = 0; i < docSelection.length; i++ ) {
newItem = docSelection[i].duplicate();
newItem.moveToBeginning( newGroup );
}
brush4 = app.activeDocument.brushes[1];
brush4.applyTo( newGroup );
}
}
 
  • Спасибо
Реакции: Larvatus
Статус
Закрыто для дальнейших ответов.