[AI CC-CC2022] Скрипт для инструмента "blend tool". Illustrator

Ant-3

Участник
Топикстартер
Сообщения
81
Реакции
2
Доброго дня! Искал скрипт для встроенного в adobe иллюстратор инструмента "blend tool":

Blend_thumb.png


Для применения "blend tool" на сразу несколько отдельных групп объектов, точнее чтобы "blend tool" применялся только внутри этих отдельных групп объектов за одно нажатие скрипта (для экономии времени).
рцкцрцрццк.png


Предварительно создавал несколько тем об этом на официальном форуме adobe и нескольких других иностранных форумах, посвященных скриптам для Иллюстратора. Увы, большинство отвечает невозможностью создания скриптов под инструмент "blend tool" или дает неточный, расплывчатый ответ.


Если действительно невозможно создавать скрипты под инструмент "blend tool", то может быть можно с помощью вспомогательного скрипта сделать экшн (сценарий), который будет выполнять необходимую задачу:

Например, если каждую группу объектов поместить на отдельный артборд, то возможно ли сделать скрипт, который будет выделять все объекты только в одном артборде, а затем переключаться на соседний артборд и делать тоже самое.

То есть чтобы данный скрипт выделял объекты только в одном артборде, затем можно было к этим объектам применить "blend tool", и при повторном нажатии скрипта он переключался на соседний артборд и выделял объекты уже там.
Тем самым создать экшн (сценарий), где через одной действие будут чередоваться скрипт и применение "blend tool":






Заранее благодарю за ответы! Надеюсь это вообще возможно реализовать
 
Для применения "blend tool" на сразу несколько отдельных групп объектов, точнее чтобы "blend tool" применялся только внутри этих отдельных групп объектов за одно нажатие скрипта (для экономии времени).
А что именно невозможно? Пока не вижу препятствий, конкретизируйте проблему.
 
А что именно невозможно? Пока не вижу препятствий, конкретизируйте проблему.
К сожалению я не так хорошо разбираюсь в возможностях работы скриптов и их создании. В основном основываюсь на мнении специалистов и создателей инструментов для adobe иллюстратора.

Во второй части созданной темы (с возможным решением через экнш (сценарий)) я только предложил возможный вариант массового применения "blend tool" на отдельные (выборочные) группы объектов.
 
Вы просто напишите что именно хотите сделать скриптом. По вашему рисунку нихрена не понятно. 'hz'
 
По вашему рисунку нихрена не понятно
Видео посмотри :)
То есть если скрипт по очереди на каждом из артбордов выделит все элементы и выполнит некий экшн Вас это устроит?
 
Последнее редактирование:
Видео посмотри :)
То есть если скрипт по очереди на каждом из артбордов выделит все элементы и выполнит некий экшн Вас это устроит?
Это костыль как я понимаю - как обычно топикстартер пытается перефразировать свой вопрос так, что в итоге уходит в противоположную сторону и запутывает всех еще больше.
 
Видео посмотри :)
То есть если скрипт по очереди на каждом из артбордов выделит все элементы и выполнит некий экшн Вас это устроит?
"....Тем самым создать экшн (сценарий), где через одной действие будут чередоваться скрипт и применение "blend tool"."

Экшн я имел ввиду раздел операции, извиняюсь за небольшую неточность

ркцрцкррц.png


Конечно если невозможно сделать немного проще и удобнее, то для меня это будет вполне устраивающий вариант.
 
А бленд тут при чем?
 
А бленд тут при чем?
Я хотел найти решение, при котором я не будут выделять вручную каждую группу объектов и применять к ним "blend tool" , а просто нажму одну кнопку и к каждой отдельно группе объектов применится "blend tool".


ркцкркццрк.png


Сейчас, если выделю все группы объектов и применю к ним "blend tool", то получится вот так:
рцкрцрццркцр.png
 
Если честно, дальнейшие объяснения ТС немного сбивают с толку :) Но может так?
JavaScript:
#target Illustrator
var steps = "5"; // задаем параметр Blend Tool Specified Steps
var doc = app.activeDocument;
for (var i=0; i < doc.artboards.length; i++) {
    doc.artboards.setActiveArtboardIndex(i);
    action(steps);
    redraw();
};

function action(steps) {
var ActionString = [ '/version 3',
'/name [ 12',
'    536372697074416374696f6e',
']',
'/isOpen 1',
'/actionCount 1',
'/action-1 {',
'    /name [ 9',
'        426c656e64546f6f6c',
'    ]',
'    /keyIndex 0',
'    /colorIndex 0',
'    /isOpen 1',
'    /eventCount 3',
'    /event-1 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (adobe_selectAll_in_artboard)',
'        /localizedName [ 22',
'            53656c65637420416c6c20496e20417274626f617264',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 0',
'        /parameterCount 0',
'    }',
'    /event-2 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (ai_plugin_liveblend)',
'        /localizedName [ 5',
'            426c656e64',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 1',
'        /showDialog 0',
'        /parameterCount 3',
'        /parameter-1 {',
'            /key 1835363957',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 7',
'                4f7074696f6e73',
'            ]',
'            /value 5',
'        }',
'        /parameter-2 {',
'            /key 1937007984',
'            /showInPalette -1',
'            /type (integer)',
'            /value 10',
'        }',
'        /parameter-3 {',
'            /key 1919906913',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 13',
'                416c69676e20746f2050616765',
'            ]',
'            /value 0',
'        }',
'    }',
'    /event-3 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (ai_plugin_liveblend)',
'        /localizedName [ 5',
'            426c656e64',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 0',
'        /parameterCount 1',
'        /parameter-1 {',
'            /key 1835363957',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 4',
'                4d616b65',
'            ]',
'            /value 2',
'        }',
'    }',
'}'].join('\n');

    var f = new File('~/ScriptAction.aia');
    f.open('w');
    f.write(ActionString);
    f.close();
    loadAction (f);
    f.remove();
    var myScriptString = [
    'app.doScript("BlendTool", "ScriptAction");',
    'unloadAction("ScriptAction", "");'
    ].join('\n');
    var bt = new BridgeTalk;
    bt.target = "illustrator";
    bt.body = myScriptString;
    bt.send(100);
    ActionString = null;
};
 
Можно и без скриптов,только Action.

Инструкция:
1.Пары для Blend должны быть ОБЯЗАТЕЛЬНО сгруппированы.
2.Выделить первую нарисованную пару это тоже обязательно.
3.Запустить Action.
4.Action работает по замкнутому циклу,посему по окончании действий не забудьте
выключить.
 

Вложения

Если честно, дальнейшие объяснения ТС немного сбивают с толку :) Но может так?
JavaScript:
#target Illustrator
var steps = "5"; // задаем параметр Blend Tool Specified Steps
var doc = app.activeDocument;
for (var i=0; i < doc.artboards.length; i++) {
    doc.artboards.setActiveArtboardIndex(i);
    action(steps);
    redraw();
};

function action(steps) {
var ActionString = [ '/version 3',
'/name [ 12',
'    536372697074416374696f6e',
']',
'/isOpen 1',
'/actionCount 1',
'/action-1 {',
'    /name [ 9',
'        426c656e64546f6f6c',
'    ]',
'    /keyIndex 0',
'    /colorIndex 0',
'    /isOpen 1',
'    /eventCount 3',
'    /event-1 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (adobe_selectAll_in_artboard)',
'        /localizedName [ 22',
'            53656c65637420416c6c20496e20417274626f617264',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 0',
'        /parameterCount 0',
'    }',
'    /event-2 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (ai_plugin_liveblend)',
'        /localizedName [ 5',
'            426c656e64',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 1',
'        /showDialog 0',
'        /parameterCount 3',
'        /parameter-1 {',
'            /key 1835363957',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 7',
'                4f7074696f6e73',
'            ]',
'            /value 5',
'        }',
'        /parameter-2 {',
'            /key 1937007984',
'            /showInPalette -1',
'            /type (integer)',
'            /value 10',
'        }',
'        /parameter-3 {',
'            /key 1919906913',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 13',
'                416c69676e20746f2050616765',
'            ]',
'            /value 0',
'        }',
'    }',
'    /event-3 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (ai_plugin_liveblend)',
'        /localizedName [ 5',
'            426c656e64',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 0',
'        /parameterCount 1',
'        /parameter-1 {',
'            /key 1835363957',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 4',
'                4d616b65',
'            ]',
'            /value 2',
'        }',
'    }',
'}'].join('\n');

    var f = new File('~/ScriptAction.aia');
    f.open('w');
    f.write(ActionString);
    f.close();
    loadAction (f);
    f.remove();
    var myScriptString = [
    'app.doScript("BlendTool", "ScriptAction");',
    'unloadAction("ScriptAction", "");'
    ].join('\n');
    var bt = new BridgeTalk;
    bt.target = "illustrator";
    bt.body = myScriptString;
    bt.send(100);
    ActionString = null;
};
Добрый день! Благодарю за скрипт. Возможно я что-то делаю не так или нужно что-то выделить предварительно в монтажной области , но при активации у меня ничего не происходит
 
Можно и без скриптов,только Action.

Инструкция:
1.Пары для Blend должны быть ОБЯЗАТЕЛЬНО сгруппированы.
2.Выделить первую нарисованную пару это тоже обязательно.
3.Запустить Action.
4.Action работает по замкнутому циклу,посему по окончании действий не забудьте
выключить.
Добрый день, да, это работает, благодарю. Только теперь нужен инструмент, чтобы предварительно сгруппировать все объекты внутри каждой монтажной области (артбордах), перед применением вашего Action
 
Последнее редактирование:
Если честно, дальнейшие объяснения ТС немного сбивают с толку :) Но может так?
JavaScript:
#target Illustrator
var steps = "5"; // задаем параметр Blend Tool Specified Steps
var doc = app.activeDocument;
for (var i=0; i < doc.artboards.length; i++) {
    doc.artboards.setActiveArtboardIndex(i);
    action(steps);
    redraw();
};

function action(steps) {
var ActionString = [ '/version 3',
'/name [ 12',
'    536372697074416374696f6e',
']',
'/isOpen 1',
'/actionCount 1',
'/action-1 {',
'    /name [ 9',
'        426c656e64546f6f6c',
'    ]',
'    /keyIndex 0',
'    /colorIndex 0',
'    /isOpen 1',
'    /eventCount 3',
'    /event-1 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (adobe_selectAll_in_artboard)',
'        /localizedName [ 22',
'            53656c65637420416c6c20496e20417274626f617264',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 0',
'        /parameterCount 0',
'    }',
'    /event-2 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (ai_plugin_liveblend)',
'        /localizedName [ 5',
'            426c656e64',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 1',
'        /showDialog 0',
'        /parameterCount 3',
'        /parameter-1 {',
'            /key 1835363957',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 7',
'                4f7074696f6e73',
'            ]',
'            /value 5',
'        }',
'        /parameter-2 {',
'            /key 1937007984',
'            /showInPalette -1',
'            /type (integer)',
'            /value 10',
'        }',
'        /parameter-3 {',
'            /key 1919906913',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 13',
'                416c69676e20746f2050616765',
'            ]',
'            /value 0',
'        }',
'    }',
'    /event-3 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (ai_plugin_liveblend)',
'        /localizedName [ 5',
'            426c656e64',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 0',
'        /parameterCount 1',
'        /parameter-1 {',
'            /key 1835363957',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 4',
'                4d616b65',
'            ]',
'            /value 2',
'        }',
'    }',
'}'].join('\n');

    var f = new File('~/ScriptAction.aia');
    f.open('w');
    f.write(ActionString);
    f.close();
    loadAction (f);
    f.remove();
    var myScriptString = [
    'app.doScript("BlendTool", "ScriptAction");',
    'unloadAction("ScriptAction", "");'
    ].join('\n');
    var bt = new BridgeTalk;
    bt.target = "illustrator";
    bt.body = myScriptString;
    bt.send(100);
    ActionString = null;
};
Перед action(steps); вообще то надо бы redraw поставить а то ведь может не активировать
 
  • Спасибо
Реакции: Gad
у меня ничего не происходит
Ок, вот без бриджа
JavaScript:
#target Illustrator
var steps = "15"; // задаем параметр Blend Tool Specified Steps
var doc = app.activeDocument;
redraw();
action(steps);
for (var i=0; i < doc.artboards.length; i++) {
    doc.artboards.setActiveArtboardIndex(i);
    redraw();
    app.doScript("BlendTool", "ScriptAction");
    redraw();
};
unloadAction("ScriptAction", "");

function action(steps) {
var ActionString = [ '/version 3',
'/name [ 12',
'    536372697074416374696f6e',
']',
'/isOpen 1',
'/actionCount 1',
'/action-1 {',
'    /name [ 9',
'        426c656e64546f6f6c',
'    ]',
'    /keyIndex 0',
'    /colorIndex 0',
'    /isOpen 1',
'    /eventCount 3',
'    /event-1 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (adobe_selectAll_in_artboard)',
'        /localizedName [ 22',
'            53656c65637420416c6c20496e20417274626f617264',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 0',
'        /parameterCount 0',
'    }',
'    /event-2 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (ai_plugin_liveblend)',
'        /localizedName [ 5',
'            426c656e64',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 1',
'        /showDialog 0',
'        /parameterCount 3',
'        /parameter-1 {',
'            /key 1835363957',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 7',
'                4f7074696f6e73',
'            ]',
'            /value 5',
'        }',
'        /parameter-2 {',
'            /key 1937007984',
'            /showInPalette -1',
'            /type (integer)',
'            /value '+ steps,
'        }',
'        /parameter-3 {',
'            /key 1919906913',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 13',
'                416c69676e20746f2050616765',
'            ]',
'            /value 0',
'        }',
'    }',
'    /event-3 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (ai_plugin_liveblend)',
'        /localizedName [ 5',
'            426c656e64',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 0',
'        /parameterCount 1',
'        /parameter-1 {',
'            /key 1835363957',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 4',
'                4d616b65',
'            ]',
'            /value 2',
'        }',
'    }',
'}'].join('\n');

    var f = new File('~/ScriptAction.aia');
    f.open('w');
    f.write(ActionString);
    f.close();
    loadAction (f);
    f.remove();
    ActionString = null;
};
Ничего выделять/группировать не надо, просто запустить
 
Последнее редактирование:
  • Спасибо
Реакции: ITIT
Ок, вот без бриджа
JavaScript:
#target Illustrator
var steps = "15"; // задаем параметр Blend Tool Specified Steps
var doc = app.activeDocument;
redraw();
action(steps);
for (var i=0; i < doc.artboards.length; i++) {
    doc.artboards.setActiveArtboardIndex(i);
    redraw();
    app.doScript("BlendTool", "ScriptAction");
    redraw();
};
unloadAction("ScriptAction", "");

function action(steps) {
var ActionString = [ '/version 3',
'/name [ 12',
'    536372697074416374696f6e',
']',
'/isOpen 1',
'/actionCount 1',
'/action-1 {',
'    /name [ 9',
'        426c656e64546f6f6c',
'    ]',
'    /keyIndex 0',
'    /colorIndex 0',
'    /isOpen 1',
'    /eventCount 3',
'    /event-1 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (adobe_selectAll_in_artboard)',
'        /localizedName [ 22',
'            53656c65637420416c6c20496e20417274626f617264',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 0',
'        /parameterCount 0',
'    }',
'    /event-2 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (ai_plugin_liveblend)',
'        /localizedName [ 5',
'            426c656e64',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 1',
'        /showDialog 0',
'        /parameterCount 3',
'        /parameter-1 {',
'            /key 1835363957',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 7',
'                4f7074696f6e73',
'            ]',
'            /value 5',
'        }',
'        /parameter-2 {',
'            /key 1937007984',
'            /showInPalette -1',
'            /type (integer)',
'            /value '+ steps,
'        }',
'        /parameter-3 {',
'            /key 1919906913',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 13',
'                416c69676e20746f2050616765',
'            ]',
'            /value 0',
'        }',
'    }',
'    /event-3 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (ai_plugin_liveblend)',
'        /localizedName [ 5',
'            426c656e64',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 0',
'        /parameterCount 1',
'        /parameter-1 {',
'            /key 1835363957',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 4',
'                4d616b65',
'            ]',
'            /value 2',
'        }',
'    }',
'}'].join('\n');

    var f = new File('~/ScriptAction.aia');
    f.open('w');
    f.write(ActionString);
    f.close();
    loadAction (f);
    f.remove();
    ActionString = null;
};
Ничего выделять/группировать не надо, просто запустить

Во, да, это работает прямо как нужно! Еще и автоматически группирует объекты внутри артбордов! Спасибо большое вам за помощь со скриптом!