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

Ant-3

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

Blend_thumb.png


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


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


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

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

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






Заранее благодарю за ответы! Надеюсь это вообще возможно реализовать
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Для применения "blend tool" на сразу несколько отдельных групп объектов, точнее чтобы "blend tool" применялся только внутри этих отдельных групп объектов за одно нажатие скрипта (для экономии времени).
А что именно невозможно? Пока не вижу препятствий, конкретизируйте проблему.
 

Ant-3

Участник
Топикстартер
Сообщения
57
Реакции
2
А что именно невозможно? Пока не вижу препятствий, конкретизируйте проблему.
К сожалению я не так хорошо разбираюсь в возможностях работы скриптов и их создании. В основном основываюсь на мнении специалистов и создателей инструментов для adobe иллюстратора.

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

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Вы просто напишите что именно хотите сделать скриптом. По вашему рисунку нихрена не понятно. 'hz'
 

Gad

Сообщения
2 971
Реакции
1 405
По вашему рисунку нихрена не понятно
Видео посмотри :)
То есть если скрипт по очереди на каждом из артбордов выделит все элементы и выполнит некий экшн Вас это устроит?
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Видео посмотри :)
То есть если скрипт по очереди на каждом из артбордов выделит все элементы и выполнит некий экшн Вас это устроит?
Это костыль как я понимаю - как обычно топикстартер пытается перефразировать свой вопрос так, что в итоге уходит в противоположную сторону и запутывает всех еще больше.
 

Ant-3

Участник
Топикстартер
Сообщения
57
Реакции
2
Видео посмотри :)
То есть если скрипт по очереди на каждом из артбордов выделит все элементы и выполнит некий экшн Вас это устроит?
"....Тем самым создать экшн (сценарий), где через одной действие будут чередоваться скрипт и применение "blend tool"."

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

ркцрцкррц.png


Конечно если невозможно сделать немного проще и удобнее, то для меня это будет вполне устраивающий вариант.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
А бленд тут при чем?
 

Ant-3

Участник
Топикстартер
Сообщения
57
Реакции
2
А бленд тут при чем?
Я хотел найти решение, при котором я не будут выделять вручную каждую группу объектов и применять к ним "blend tool" , а просто нажму одну кнопку и к каждой отдельно группе объектов применится "blend tool".


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


Сейчас, если выделю все группы объектов и применю к ним "blend tool", то получится вот так:
рцкрцрццркцр.png
 

Gad

Сообщения
2 971
Реакции
1 405
Если честно, дальнейшие объяснения ТС немного сбивают с толку :) Но может так?
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;
};
 

ITIT

15 лет на форуме
Сообщения
500
Реакции
194
Можно и без скриптов,только Action.

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

Вложения

  • MakeGS.rar
    646 байт · Просм.: 163

Ant-3

Участник
Топикстартер
Сообщения
57
Реакции
2
Если честно, дальнейшие объяснения ТС немного сбивают с толку :) Но может так?
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;
};
Добрый день! Благодарю за скрипт. Возможно я что-то делаю не так или нужно что-то выделить предварительно в монтажной области , но при активации у меня ничего не происходит
 

Ant-3

Участник
Топикстартер
Сообщения
57
Реакции
2
Можно и без скриптов,только Action.

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

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Если честно, дальнейшие объяснения ТС немного сбивают с толку :) Но может так?
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

Gad

Сообщения
2 971
Реакции
1 405
у меня ничего не происходит
Ок, вот без бриджа
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

Ant-3

Участник
Топикстартер
Сообщения
57
Реакции
2
Ок, вот без бриджа
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;
};
Ничего выделять/группировать не надо, просто запустить

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