[AI CS3 и ранее] Аналог Fillinger для CS3

Veniamin-kHz

Участник
Топикстартер
Сообщения
163
Реакции
18
Есть такой скрипт - Fillinger нужен аналогичный скрипт под CS3. Кто-нибудь знает такой?
 
В CS3 разве были артборды?
Вдобавок, за это время сильно API расширилось, очень многие действия на CS3 просто не реализуемы от слова "совсем"
Код:
...
 function compoundFix (item, isHidden, isLocked) {
                if (isHidden) item.hidden = false;
                if (isLocked) item.locked = false;

                selection = [item];
                app.executeMenuCommand('noCompoundPath');      <--------------!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                __ungroup(selection);
                app.executeMenuCommand('compoundPath');          <--------------!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                if (isHidden) selection[0].hidden = true;
                if (isLocked) selection[0].locked = true;
                selection = null;
            }
...
 
Последнее редактирование:
В CS3 разве были артборды?
Вдобавок, за это время сильно API расширилось, очень многие действия на CS3 просто не реализуемы от слова "совсем"
Да я и не рассчитываю на то, что можно как-то легкой правкой запустить его на CS3. Это я на саму задачу указал. Мне нужен аналогичный по действию скрипт. Пока нашел тот, который меняет все объекты на указанный Symbol (JET_ReplaceWithSymbol) и тот, который меняет объекты на тот, который находится сверху (find-and-replace-graphics). Через Symbol вариант совсем не удобный.
 
Аналогичный по действию чему именно?
Скрипту Fillinger, который, в свою очередь, является доработанной версией скрипта Circle fill от Jongware и который существует в нескольких поправленных версиях. ;)
 
Да он у меня есть, только он делает не совсем то, что мне надо, вернее делает только половину. Мне нужно чтобы вместо кругов были случайные элементы (буквы алфавита, например), а не круги.
 
Ну по моей ссылке написано как это сделать
 
Я это видел, такой вариант мне не подходит. У меня будет более сотни объектов, которые должны быть вместо кругов и под каждый объект делать случайный выбор и потом замену - это неделю сидеть кнопки тыкать.
 
Тогда надо внимательно смотреть, что в новом коде не совместимо с cs3 и пробовать искать костыли. На что вообще ругается?
 
Ни на что не ругается, просто ничего не делает. Окно закрывается и всё.
 
Тут есть скрипт "ReplaceItems" посмотрите, может подойдёт.
 
Есть еще вариант не работающий на CS3 с заменой на символы, но он короткий и простой, может быть его можно поправить?
Код:
var doc = app.activeDocument;

var sym = doc.symbols;

var sel = doc.selection;

for(var i = 0; i < sel.length; i++){

    var place = doc.symbolItems.add(sym[Math.floor(Math.random() * sym.length)]);

    place.height = sel.height;

    place.width = sel.width;

    place.top = sel.top;

    place.left = sel.left;

    sel.remove();

    place.selected = true;

}
 
Пошагово посмотрите на чем закрывается. Вообще если в обработчике есть executeMenuCommand то так и будет
Есть еще вариант не работающий на CS3 с заменой на символы, но он короткий и простой, может быть его можно поправить?
Код:
var doc = app.activeDocument;

var sym = doc.symbols;

var sel = doc.selection;

for(var i = 0; i < sel.length; i++){

    var place = doc.symbolItems.add(sym[Math.floor(Math.random() * sym.length)]);

    place.height = sel.height;

    place.width = sel.width;

    place.top = sel.top;

    place.left = sel.left;

    sel.remove();

    place.selected = true;

}
А что в нем править если он и так на CS3 работает?
 
Гм такая конструкция и в более поздних работать не должна, selection (в отличие от корела) это массив, у него ни длины ни ширины нету. Проверьте внимательно код, возможно (скорее всего) движок индексы при sel погрыз
 
Даже не знаю, это взято отсюда script-for-randomly-replacing-symbols, человек отписался, что якобы прекрасно работает. На какой версии Illustrator, правда, не понятно, вроде как на CC 2018.
 
Этого не может быть потому что не может быть никогда
Код неработоспособен ни в какой версии, вы хоть примерно в него вникали? Там же явно видно что по смыслу при sel должны быть индексы примерно вот так
Код:
var sym = doc.symbols;


var sel = doc.selection;


for(var i = 0; i < sel.length; i++){


    var place = doc.symbolItems.add(sym[Math.floor(Math.random() * sym.length)]);


    place.height = sel[i].height;


    place.width = sel[i].width;


    place.top = sel[i].top;


    place.left = sel[i].left;


    sel[i].remove();


    place.selected = true;


}
 
  • Спасибо
Реакции: Skvoznyak