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

Veniamin-kHz

Участник
Топикстартер
Сообщения
141
Реакции
10
Есть такой скрипт - Fillinger нужен аналогичный скрипт под CS3. Кто-нибудь знает такой?
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
29 921
Реакции
9 835
В 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;
            }
...
 
Последнее редактирование:

Veniamin-kHz

Участник
Топикстартер
Сообщения
141
Реакции
10
В CS3 разве были артборды?
Вдобавок, за это время сильно API расширилось, очень многие действия на CS3 просто не реализуемы от слова "совсем"
Да я и не рассчитываю на то, что можно как-то легкой правкой запустить его на CS3. Это я на саму задачу указал. Мне нужен аналогичный по действию скрипт. Пока нашел тот, который меняет все объекты на указанный Symbol (JET_ReplaceWithSymbol) и тот, который меняет объекты на тот, который находится сверху (find-and-replace-graphics). Через Symbol вариант совсем не удобный.
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
29 921
Реакции
9 835

Veniamin-kHz

Участник
Топикстартер
Сообщения
141
Реакции
10
Аналогичный по действию чему именно?
Скрипту Fillinger, который, в свою очередь, является доработанной версией скрипта Circle fill от Jongware и который существует в нескольких поправленных версиях. ;)
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
29 921
Реакции
9 835

Veniamin-kHz

Участник
Топикстартер
Сообщения
141
Реакции
10
Да он у меня есть, только он делает не совсем то, что мне надо, вернее делает только половину. Мне нужно чтобы вместо кругов были случайные элементы (буквы алфавита, например), а не круги.
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
29 921
Реакции
9 835
Ну по моей ссылке написано как это сделать
 

Veniamin-kHz

Участник
Топикстартер
Сообщения
141
Реакции
10
Я это видел, такой вариант мне не подходит. У меня будет более сотни объектов, которые должны быть вместо кругов и под каждый объект делать случайный выбор и потом замену - это неделю сидеть кнопки тыкать.
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
29 921
Реакции
9 835
Тогда надо внимательно смотреть, что в новом коде не совместимо с cs3 и пробовать искать костыли. На что вообще ругается?
 

Veniamin-kHz

Участник
Топикстартер
Сообщения
141
Реакции
10
Ни на что не ругается, просто ничего не делает. Окно закрывается и всё.
 

LisiyCin

Участник
Сообщения
31
Реакции
6
Тут есть скрипт "ReplaceItems" посмотрите, может подойдёт.
 

Veniamin-kHz

Участник
Топикстартер
Сообщения
141
Реакции
10
Есть еще вариант не работающий на 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;

}
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
29 921
Реакции
9 835
Пошагово посмотрите на чем закрывается. Вообще если в обработчике есть 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 работает?
 

Veniamin-kHz

Участник
Топикстартер
Сообщения
141
Реакции
10

Вложения

  • err01.png
    err01.png
    4.4 КБ · Просм.: 18

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
29 921
Реакции
9 835
Гм такая конструкция и в более поздних работать не должна, selection (в отличие от корела) это массив, у него ни длины ни ширины нету. Проверьте внимательно код, возможно (скорее всего) движок индексы при sel погрыз
 

Veniamin-kHz

Участник
Топикстартер
Сообщения
141
Реакции
10
Даже не знаю, это взято отсюда script-for-randomly-replacing-symbols, человек отписался, что якобы прекрасно работает. На какой версии Illustrator, правда, не понятно, вроде как на CC 2018.
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
29 921
Реакции
9 835
Этого не может быть потому что не может быть никогда
Код неработоспособен ни в какой версии, вы хоть примерно в него вникали? Там же явно видно что по смыслу при 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