В Illustrator є ціла купа інструментів, але навіть з усім цим достатком, завжди буде чогось не вистачати. Ось тут то і приходять на допомогу скрипти і плагіни. Використовуючи їх, ви можете виконувати такі завдання, які сам по собі Illustrator виконати не в змозі. У цій статті ви познайомитеся з 10 безкоштовними і найбільш корисними скриптами (сценарії) для Illustrator!

Скрипти?

Illustrator підтримує сценарії від AppleScript, Visual Basic, JavaScript, і ExtendScript. В активованому стані вони виконують різні операції всередині Illustrator, а також можуть залучати інші програми, такі як редактори текстів, програми баз даних і електронних таблиць. Ви можете використовувати як встановлені за замовчуванням або чужі готові скрипти, так і створювати свої власні. Для отримання більш детальної інформації по сценаріями в Illustrator, вивчіть документацію в папці Adobe Illustrator CS3 / Scripting.

встановлюємо скрипти

Скачайте бажаний скрипт. Після помістіть його в папку Adobe Illustrator CS3 / Presets / Scripts і він з'явиться в підменю скриптів. Щоб запустити потрібний вам скрипт в Illustrator натисніть File\u003e Scripts і виберете його у випадаючому списку.


1) Закрити всі шляхи Закрити всі виділені колії (Close All Paths / Close All Selected Paths)

Простий, однак, дуже потужний скрипт. За допомогою нього ви зможете розділяти багаторядкові текстові поля в окремі об'єкти текстових рамок, полегшуючи завдання поділу списків, предметів навігації і багато чого іншого.


3) Злиття текстових рамок (Join Text Frames)

Цей скрипт може возз'єднати розділені текстові рамки. Дуже корисний, якщо вам знадобилося відкрити файл pre-CS illustrator або ж потрібно скомбінувати кілька текстових рамок разом.


Цей скрипт здатний створювати квіткові фігури з традиційних форм. Дуже добре підходить для створення незвичайних візерунків, логотипів і просто для експериментування.


Цей скрипт може створювати з'єднуються арки з створених вами фігур. Дуже корисний при з'єднанні звичайних фігур для створення більш складних форм для логотипів, іконок і ілюстрацій.


6) Переклад CMYK в Pantone v.2 (CMYK to Pantone v.2)

Цей скрипт підбере для вас найбільш точну відповідність пантона з даного кольору CMYK.


7) Зміна відтінків Випадкові кольору (Vary Hues / Randomize Colors

Цей скрипт створить еліпс із зазначеним числом ключових точок. Це може здатися простим, проте операція пристойно полегшує процес редагування кіл, створення кистей, складних фігур і багато чого іншого. В Illustrator є функція, що додає більше ключових точок в фігуру, однак ви не можете вказати, скільки конкретно ключових точок ви хочете додати.

Мікростокер і ілюстратор Ольга Захарова поділилась своїм набором скриптів, яким вона користується щодня в своїй роботі. Сюди увійшли скрипти як для створення ілюстрацій, так і для автоматизації деяких робочих процесів в Adobe Illustrator.

Як ви вже, напевно, зрозуміли, я завжди намагаюся максимально оптимізувати робочий процес :) І сьогодні хочу розповісти вам про декілька скриптах для ілюстратора, які мені в цьому дуже допомагають. Клікнувши на назву скрипта, ви потрапите туди, де його можна скачати / купити.

Close All Paths

вартість: безкоштовно
Що робить: Позбавляється від відкритих шляхів, яких не повинно бути в стокової ілюстрації

Щоб відправити векторну ілюстрацію на стік, потрібно дотримати ряд «правил» - зокрема, позбавити файл від відкритих шляхів. Їх кількість в документі, до речі, дізнатися дуже легко - потрібно виділити все (ctrl + A), піти в верхнє меню Window-Document Info - в віконці «відкинути» меню справа вгорі і вибрати Objects. Якщо в дужках поруч з Paths написано Open: 0, я вас вітаю, в вашій картинці немає помилки (по крайней мере, не в відкритих шляхах). Якщо цифра більше нуля - це порушення стічних правил. І я не знаю, скільки часу ми все б витрачали на пошук цих часто абсолютно незрозуміло звідки утворюватися відкритих шляхів, якби не цей чудовий безкоштовний скрипт - cloth all paths, який дозволяє зазвичай менше, ніж за хвилину закрити всі відкриті шляху, не заморочуючись їх ручним пошуком. При цьому сама картинка зовсім не змінюється. Маст-хев для всіх Стокер!

Magic Eraser

вартість: $5
Що робить: Обрізає ілюстрацію по краю робочої області, видаляючи всі об'єкти, що знаходиться за її межами
Чарівний скрипт, без якого я вже не уявляю свого життя. Особливо актуальний для любителів робити патерни, але я використовую його буквально для кожної ілюстрації - так він мене розбалував. Замість того, щоб виміряти рівний квадрат, щоб підкласти його під фон, я роблю просто більше за розміром, ніж робоча область, а після завершення малювання включаю ерейзер - і він прибирає все зайве.

Коли я тільки вчилася малювати в ілюстратора і пробувала робити свої перші патерни, мене дуже пригнічував процес обрізки зайвих шматків і пошуку маленьких «залишків». Начебто все видалив - перевіряєш розмір, а там не рівний квадрат, а, скажімо, 2001,38 замість 2000 пікселів по висоті. І ти знову йдеш шукати - де ж там загубився зайвий обрізаний, але не віддалений мікро-шматочок ... Тепер все патерни у мене завжди ідеально квадратні. І я точно знаю, що при спробі їх розмножити, я не зіткнемося з «нещільним приляганням» та іншими неприємними багами. Magic Eraser і обрізає все по краю, і удалется все обрізане.

Потрібно враховувати, що при обрізанні важкого файлу прогрес роботи скрипта показується не відразу (тобто кілька секунд - іноді 10-20 - прогрес-бар може залишатися порожнім), головне його не чіпати, а піти попити чай-каву, він відріже. Векторні Трейсі акварелі на моєму досить спритно маці він іноді обрізає по 15-20 хвилин, але все простіше, ніж вручну - уявляєте, скільки там зайвих шматочків? :)

Vary Hues

вартість: безкоштовно
Що робить: Забарвлює вибрані об'єкти в рендомние кольору

Мені подобається застосовувати цей скрипт при малюванні квіточок-листочків, коли є багато різних «частинок», які нудно залишати пофарбованими одним кольором. Щоб застосувати скрипт, потрібно ввести число від 0 до 100, яке відображає «дальність» розкиду нових рендомних квітів. Чим більше число - тим барвистіший і різноманітніше вийде ілюстрація. Я зазвичай ввожу 15-25, мені вистачає :) Танцює скрипт при цьому від початкового кольору картинки. Гарний для включення натхнення і додавання різноманітності в ілюстрації.

Dynamic Corners

вартість: $ 82 (за комплект з чотирьох скриптів, один купити окремо не можна)
Що робить: динамічно округляють кути, дозволяючи в будь-який момент повернутися і змінити радіус

Взагалі кажучи цей скрипт - один з чотирьох, які входять в пакет Vector Scribe від відомого творця скриптів Astute Graphics. Вони все - дуже круті, але з усіх чотирьох я поки користуюся тільки динамік Корнерс, тому що до вивчення повного функціоналу інших просто поки не дійшли руки :)

Скрипт не безкоштовний і не дешевий - пакет Vector Scribe коштує $ 82, але можна скачати тріал і пробувати його безкоштовно 30 днів. На скрипт динамік Корнерс мене спокусив Он Глітчка (пам'ятаєте, я розповідала про курси lynda.com), Сказавши, що, спробувавши цей скрипт в справі, вже неможливо уявити, як жив без нього. І це правда.

Я скачала його потестить - і так звикла, що виконував до цього обрізка кутів round any corner, до якого довелося повернутися після закінчення тестового періоду, почав здаватися моторошно доісторичним і неповоротким інструментом, як ніби сокирою чистиш картоплю ... І я зважилася на покупку - і не пошкодувала. Він особливо допомагає в малюванні графіки, інфографіки та іконок, а також все, що можна намалювати за допомогою простих форм і пентула. Тим, хто малює виключно блоб брашем, він навряд чи потрібен.

Autosaviour

вартість: Безкоштовно - після реєстрації
Що робить: Автоматично зберігає ілюстрацію в задані проміжки часу

Цей скрипт потрапив в список авансом, тому що поки що, на щастя, не було моментів, коли мені довелося б спробувати його в справі. Але так як з якихось незрозумілих логікам в ілюстратора відсутня функція «автосейв», цей скрипт - поки що єдине рішення проблеми раптового вильоту і втрати всіх даних. У мене за півроку ілюстратор вилітав без попередження п'ять-шість разів, і, звичайно, кожен з них - за кілька секунд до збереження який-небудь глобальної, що відняла значну кількість часу роботи :) Дуже хочеться вірити, що цей плагін допоможе мінімізувати втрати при наступному польоті люстри.

Після установки скрипт буде запускатися Атоматіческая при створенні нового документа або відкритті старого. Потрібно буде вибрати період збереження (також можна вибрати, щоб він не зберігав, а нагадував вам зберегти - мабуть на випадок, якщо ви боїтеся випадково перезаписати файл).

Взагалі в інтернеті можна знайти сотні різних скриптів, але я на сьогоднішній день користуюся тільки цими п'ятьма купила пакет платних скриптів від Astute Graphics, які буквально перевернули мій світ :)

Мене часто запитують про те, як встановити скачаний / куплений скрипт, але тут я вам, на жаль, не допоможу, так як це залежить від вашої операційної системи і її версії. Глобально ідея в тому, щоб знайти папку, де у вас лежить ілюстратор, і в ній знайти папку зі Скіпт. Інструкцію, яка спрацює в вашому випадку, ви легко знайдете, погуглити фразу на кшталт «установка скриптів в ілюстратор на ... (назва операційної системи і версії)».

Після установки скрипта доступ до нього здійснюється через верхнє меню File - Scripts - і далі можна вибрати той, який потрібен саме зараз.

Зазвичай, якщо мова йде про програми для дизайнерів, першочергова увага приділяється художнім можливостям додатків - інструментам малювання, фільтрів і т. П. Але в повсякденному житті доводиться займатися і рутиною. На щастя, ПО від Adobe (в т. Ч. Illustrator) стало підтримувати написання сценаріїв (скриптів), що дозволяють перекласти монотонна праця на плечі машини. І ви вже не працюєте в Illustrator - ви їм керуєте, а це, як кажуть в Одесі, дві великі різниці!

Віддаючи звіт, що переважна частина користувачів Illustrator - художники і дизайнери, які не стикалися з програмуванням, постараюся побудувати огляд функціональності сценаріїв так, щоб у читачів не склалося враження, ніби для цього заняття потрібні якийсь «особливий» склад мислення і тривалий спецосвіта. Одночасно приношу вибачення професіоналам за деякі спрощення в формулюваннях на догоду доступності матеріалу. Сам автор колись був в подібній ситуації і спочатку не вважав цю сферу своєї єпархією. Але витратив на вивчення менше двох тижнів і тепер стверджую: маючи мінімальні уявлення про програмування, освоїти скрипти - завдання цілком посильне.

Сценарії під Illustrator можна писати на будь-якій мові: JavaScript, Visual Basic (Windows) і AppleScript (Mac OS). Оскільки з першим знайоме більшість читачів (багато дизайнерів для поліграфії успішно справляються і зі створенням інтернет-сторінок, в яких він використовується), спиратися будемо саме на нього. До того ж JavaScript переносних незалежний: написані на ньому скрипти будуть працювати в обох ОС - Windows і Mac OS. Спосіб звернення до елементів - об'єктно-орієнтована: щоб дізнатися, наприклад, товщину окантовки у другого векторного елемента на першому шарі, потрібно написати наступну конструкцію:

app.activeDocument.Layer.pathItems.strokeWidth

Це можна інтерпретувати так: спочатку вказується об'єкт найвищого рівня в ієрархії Illustrator (app - додаток, скорочено від application), і далі вибір поступово звужується до конкретного елементу (в активному документі працювати на першому шарі, потім в зазначеному шарі вибрати другий по глибині залягання векторний об'єкт і дізнатися у нього товщину окантовки). Подібний метод звернення до елементів досить зручний, оскільки дозволяє легко орієнтуватися у всьому різноманітті їх типів, існуючих в редакторі. З повною моделлю взаємозв'язків можна познайомитися з добре складеним опису (входить в комплект Illustartor).

Квадратні дужки говорять про те, що елемент - частина масиву. Масив - сукупність кількох об'єктів, об'єднаних певним ознакою. Наприклад, Layers, pathItems, RasterItems, GroupItems, Selection і т. Д. - масиви, що складаються з однотипних об'єктів (шарів документа, векторних контурів, растрових зображень, груп і т. П.). У дужках вказується індекс (порядковий номер) необхідного елемента в масиві. Так, запис Layer позначає перший шар, оскільки перший індекс завжди «0».

До об'єктів можна звертатися і за назвами Layer [ «сhart»]. Для цього елемент потрібно явно назвати - вручну, використовуючи палітру Layers (подвійне клацання на назві об'єкта відкриває вікно з його властивостями), або з скрипта. Щоб не писати кожен раз громіздку конструкцію з перерахуванням всієї «родоводу», використовуйте посилання (references):

pI \u003d activeDocument.Layer.pathItems;

Тоді вищенаведений ділянку коду буде мати вигляд: pI.strokeWidth.

До шару як до об'єкта допускається не звертатися щоразу, якщо всі операції відбуваються на одному і тому ж активному шарі. І врахуйте, що в назвах змінних має значення регістр: якщо перший раз написати pI, а другий - pi, то скрипт видасть помилку і працювати не буде.

В об'єктно-орієнтованої моделі існують: сам додаток, класи (типи об'єктів, або, використовуючи більш звичне поняття, іменники: шари, векторні об'єкти, групи і т. П.), Методи (способи взаємодії з ними - дієслова: move, duplicate і т. п.) і властивості (прикметники: strokeWidth, fillColor, selected і т. п.). Щоб легше орієнтуватися, уявіть, що додаток - це будинок, в якому є різні предмети - аналог класів (вікна, двері), що володіють деякими властивостями (пластикові, дерев'яні), з якими виконують певні дії - методи (відкривають, закривають). Розуміючи суть подібної ієрархії, набагато простіше розібратися в скриптинга.

На самому верхньому рівні знаходиться додаток, і, буквально слідуючи правилу підпорядкованості об'єктів, його довелося б вказувати при будь-якій дії. З метою спрощення посилання на додаток можна опускати - крім тих випадків, коли дійсно потрібно дізнатися якісь його властивості (наприклад, доступні шрифти - app.fonts).

Класи Layer, Group, Text можуть містити об'єкти того ж класу, у яких також можуть бути дочірні. Корисна можливість об'єктного підходу - успадкування властивостей. Так, все векторні контури (pathItems) є дочірніми для більш загального класу - елементів сторінки (pageItems). Отже, призначивши певні властивості pageItems, ми автоматично призначаємо його і pathItems.

Незважаючи на схожість, класи Layers і Layer все ж різні. Перший - колекція всіх шарів в документі, другий - тільки якийсь певний, відповідно відрізняються їхні методи і властивості. До першого можна застосовувати методи add, removeAll, а до другого - всі операції, доступні для окремого шару. Безпосередньо до об'єкта звертаються як до елементу відповідного масиву - в нашому випадку через Layers, Layers і т. Д.

Виділеному елементу відповідає окремий клас - selection, який також є масивом (виділена може бути група об'єктів). На особливому рахунку в Illustrator класи pluginItems, Colors, Views. Перший має безліч обмежень, пов'язаних з тим, що об'єкти такого типу «не рідні» для Illustrator. До них відносяться елементи Blend, Envelope, Mesh і аналогічні. Особливості інших розглядатимемо в міру їх використання.

Щоб скрипт був «видно», його розміщують в папці Presets.Scripts, розташованої в тій, де встановлено додаток. Розглядати будемо реальні приклади (це дозволить відразу відчути корисність сценаріїв), а писати їх під Illustrator CS, оскільки його скриптинг гнучкіше попередніх версій.

Приклад 1: об'єднання об'єктів

Почнемо з найпростішого - напишемо скрипт, що з'єднує лініями підлеглі об'єкти з основним (часта завдання при створенні блок-схем, технічної документації та аналогічних роботах). І торкнемося таких базових питань, як робота з виділеними об'єктами, створення нових шарів, розміщення об'єктів, зміна їх порядку, щоб створювати та установлювати кривих в складний шлях (compound path).

Робота з такого роду документами передбачає широке використання символів (symbols) - внесення змін до них автоматично оновлює всі створені копії. Однак з такими елементами Illustrator працює не завжди коректно: буває, що ні зчитує назви у об'єктів, які є копіями символів. В результаті їх відбір на ім'я нездійсненний. Обробка ж всіх елементів даного типу в поточному шарі практичної користі не має. У підсумку, я схилився на користь альтернативного варіанту, при якому спочатку необхідно виділити необхідні об'єкти (найпростіше - вибором одного символу і пошуком його копій через командою Select.Same Instances), а потім виділити опорний елемент, з яким вони будуть з'єднуватися.

Отже, починаємо. Для скорочення введемо змінну sel, до якої будемо звертатися, коли потрібно провести будь-які дії над виділеним об'єктом. Потім перевіримо, скільки елементів виділено (хоча до масиву selection також відносяться і будь-які виділені символи тексту, перевіряти, що виділений не текст, не будемо). Запис if (sel.length<2) означает, что мы сравниваем значение length (количество объектов класса sel) с двойкой — минимальным количеством для работы сценария. Если выделенных элементов меньше, будут выполняться действия, заключённые в первые идущие за оператором if фигурные скобки, иначе — идущие после else. При этом логично предусмотреть выдачу сообщения, чтобы сориентироваться в ситуации и понять, что нужно сделать.

sel \u003d activeDocument.selection
if (sel.length<2) {br> alert ( "Not enough objects to proceed! \\ nSelect at least 2 objects and the last - target object!"))
else (

Alert - стандартна функція JavaScript, яка виводить вікно з заданим текстом і кнопкою ОК. «\\ N» означає перехід на новий рядок і використовується, щоб розміри вікна залишалися невеликими. Текст, що виводиться у вікні, повинен бути укладений в лапки.

Підготовчий етап

Одержимо координати центру опорного об'єкта. Оскільки ми домовилися, що він - самий верхній, його номер (індекс) - «0» (sel). Для обчислення координат будемо використовувати такі властивості об'єкта, як position (положення), width і height (висота і ширина). Значення position зберігаються в масиві, що складається з пари значень - координат по осі Х і Y, відповідно. Отже, до кожного потрібно звертатися як position і position.

refObj_x \u003d sel.position + (sel.width / 2);
refObj_y \u003d sel.position - (sel.height / 2);

Ми отримали координати центру опорного об'єкта і привласнили їх двом змінним для подальшого використання. У другому рядку стоїть знак «-», т. К. За точку відліку в Illustrator прийнятий лівий нижній кут документа, а position видає координати верхнього лівого кута елементу.

Оскільки при роботі з документом не останню роль відіграє зручність, подбаємо, щоб створювані лінії були на окремому шарі - така структурованість допоможе підтримувати порядок в макеті різної складності.

Створюємо новий шар - він, як і будь-який елемент Illustrator, створюється методом add (), застосованим до відповідного класу об'єктів. У дужках можна конкретизувати параметри дії: вказати об'єкт-призначення (їм може бути, наприклад, шар або навіть новий документ, а також положення в місці призначення). На відміну від більшості методів, для add додаткових параметрів не передбачено, тому для перенесення на самий верхній рівень скористаємося спеціальним методом - zOrder, якому в якості параметра вкажемо BRINGTOFRONT (зарезервована константа, повний список яких наведено в документації). В принципі, якщо в документі всього один шар, спеціально вказувати положення нового не потрібно, оскільки Illustrator завжди має в своєму розпорядженні його вище поточного. Якщо ж з'єднуються об'єкти розташовані не на самому верхньому рівні, другий рядок буде потрібна.

newlayer \u003d activeDocument.layers.add ();
newlayer.ZOrder (ZOrderMethod.BRINGTOFRONT);

Перший рядок можна прочитати так: створити новий елемент шляхом збільшення (add) числа об'єктів необхідного типу (layers) і посилання на щойно створений елемент привласнити змінної newlayer. У початковий момент шар порожній, т. К. В нього ще нічого не вміщено. Для спрощення орієнтації в складному макеті дамо шару назву «Connectors» (методом name) - як бачите, назви методів чітко говорять про виконувані дії.

newlayer.name \u003d "Connectors";

У навчальних цілях створимо НЕ розрізнені сполучні лінії, а об'єднані в об'єкт типу Compound Path - для зручності редагування. Створення такого об'єкта повторює вже відому процедуру, на цей раз застосовану до класу compoundPathItems:

newCompoundPath \u003d activeDocument.compoundPathItems.add ();

Оскільки в минулому кроці ми створили новий шар, він є активним - відповідно, створювані об'єкти будуть розташовуватися на ньому, і необхідності спеціально вказувати його (activeDocument.newlayer) немає.

Визначення координат підлеглих елементів

Цей процес об'єднаємо з висновком самих сполучних ліній, оскільки їх кількість повинна відповідати кількості об'єктів. По черзі починаємо перебирати всі виділені елементи ( «i ++» означає приріст на одиницю) і зчитуємо їх координати. Пошук почнемо не з самого першого об'єкта з масиву Selection (як ви пам'ятаєте, їм виступає опорний об'єкт), а з другого (sel). Наступні рядки нам вже знайомі:

for (i \u003d 1; i< sel.length; i++) {
obj_x \u003d sel [i] .position + sel [i] .width
obj_y \u003d sel [i] .position - sel [i] .height

Отримавши координати центру дочірнього елемента, приступимо до створення лінії, що з'єднує його з опорним. Для кожного виділеного елемента створюємо новий об'єкт - векторний контур, що входить в клас CompoundPath, збільшуючи загальну кількість контурів:

newPath \u003d newCompoundPath.pathItems.add ();

Для завдання простих контурів в Illustrator існує метод setEntirePath, параметрами якого виступає масив з координат початкової та кінцевої точок - які, як ми вже знаємо, в свою чергу задаються у вигляді масивів з двох значень (положення по двох осях). Нарешті, закінчуємо введене в самому початку умова «якщо щось виділено».

newPath.setEntirePath (Array (Array (refObj_x, refObj_y), Array (obj_x, obj_y))); )

Скрипт готовий. Як бачите, нічого складного в ньому немає: назви методів розкривають їх сутність, а об'єктно-орієнтована модель допомагає чітко розуміти ієрархію об'єктів Illustrator. Особливою практичної цінності скрипт не представляє (він скоріше повчальний), але на його прикладі було розглянуто багато базові поняття, на які ми будемо спиратися в подальшому (робота з виділеними об'єктами, принцип їх нумерації в масиві selection, визначення координат, створення нових шарів, висновок ліній).

Приклад 2: виявлення занадто тонких контурів

Операції масштабування в векторній графіці застосовуються дуже активно. Тому при зменшенні розмірів об'єктів з тонкими лініями (якщо включений параметр Scale strokes) часто товщина їх обведення стає нижче 0,25 pt (значення, після якого лінії стають слабо помітними) і виявляється причиною зникнення їх при роздруківці на струменевому принтері. Вбудованих в Illustrator функцій пошуку об'єктів зі значеннями обведення, менше заданої, не передбачено. Вручну ж знайти їх дуже важко - доведеться виділяти кожен об'єкт окремо, що швидко відіб'є бажання займатися подібними перевірками. Істотно спростить операцію скрипт.

Сам по собі сценарій в найпростішому варіанті невеликий, але ми задамося метою зробити його більш універсальним - розширимо функціональність за рахунок можливості вказувати мінімальну товщину в вікні діалогу. Звичайно, можна в самому скрипті жорстко прописати цю величину і при необхідності кожного разу її коригувати, але, погодьтеся, це незручно. Також передбачимо вказівку виділеного елемента як об'єкта-еталона з мінімально допустимим значенням окантовки. Паралельно для статистики підрахуємо кількість елементів зі зміненою товщиною і для наочності їх виділимо.

Весь скрипт ділиться на дві частини: початкову (зчитування значення з вікна діалогу або ж у виділеного елемента) і заключну (пошук серед всіх об'єктів в документі і перепризначення товщини окантовки). Крім демонстрації доступу до об'єктів Illustrator, ми розглянемо створення міні-інтерфейсу для введення призначених для користувача значень.

введення значень

Перші два рядки будуть ідентичні до попереднього прикладу за винятком того, що замість «2» стане фігурувати «0», оскільки перед роботою скрипта нам потрібно визначити, чи є виділені об'єкти. Порівняння задається подвійним знаком рівності (одиничний привласнює значення).

var mySel \u003d app.activeDocument.selection;
var go \u003d true;
if (sel \u003d\u003d 0) (

Якщо нічого не виділено, мінімальна товщина буде задаватися через вікно діалогу. Виведемо його за допомогою стандартної функції JavaScript - prompt. Вона відкриває вікно з полем, в яке можна ввести значення і в подальшому його використовувати. Синтаксис функції такий: спочатку йде текст-підказка, який буде виводитися у вікні (з урахуванням уніфікації роботи скрипта не будемо використовувати кирилицю, оскільки вона часто відображається некоректно), потім слідує значення, яке буде за замовчуванням стояти в поле введення. Плюса цілих два: можливість відразу задати мінімально допустиму товщину і вказати будь-яке значення. Створивши змінну, якій присвоєно значення функції prompt, можна потім використовувати його в своїх цілях.

Забігаючи вперед, зауважу, що Illustrator дає повний доступ не до всіх типів об'єктів - деякі залишаються за бортом. Тому передбачимо візуалізацію не тільки виправлених елементів, але і недоступних скрипту, щоб не шукати їх вручну - адже в них також можуть бути проблемні об'єкти. Щоб не виводити два вікна діалогу (для значення товщини і визначення, які елементи виділяти), скористаємося можливостями JavaScript з обробки рядків. Справа в тому, що вміст заповненого користувачем поля є «рядком» (блоком інформації), в якій може перебувати скільки завгодно параметрів (через роздільники). Знаючи роздільник, значення окремих параметрів можна легко витягти з рядка.

Відповідно, текст-підказка вікна діалогу буде таким: завдання мінімальної товщини окантовки і умовне число: «1», якщо потрібно, щоб скрипт виділив виправлені елементи, «2» - ті, до яких «достукатися» не вдалося.

value \u003d prompt ( "Specify the stroke width threshold (in pt), \\ n What to select: corrected objects (1) or inaccessible (2)", "0.25, 1")

Спочатку в поле встановимо 0,25 пункту (одиниці вимірювання в Illustrator за замовчуванням), але при його зміні буде використовуватися нове значення, і «1». «2» потрібно вказувати, тільки якщо скрипт знайде недоступні об'єкти (ми подбаємо, щоб він в кінці роботи сигналізував про це). І вони стануть виділеними, що позбавить нас від ручного пошуку (як відомо, вбудований пошук Illustrator залишає бажати).

Зі зчитуванням значень з призначеного для користувача поля розібралися, переходимо до їх обробці. Перевіримо, чи дійсно поле не порожнє (знак «!» Позначає заперечення, т. Е. «! \u003d» Еквівалентно «не дорівнює», null - зареєстроване слово для порожнього значення). Якщо в ньому щось є, рядок розбиваємо на окремі блоки за допомогою функції JavaScript split (як роздільник визначимо комбінацію із символів «,») і отримані значення заносимо в масив splitString. Після цього значенням з масиву дамо описові назви (перше визначатиме товщину, друге - режим роботи).

if (value! \u003d null) (
splitString \u003d value.split ( ",");
weight \u003d splitString;
type \u003d splitString; )

Якщо ж в призначеному для користувача поле нічого немає - зупиняємо виконання сценарію. Остання закриває дужка - ознака завершення умови, що ми поставили спочатку ( «якщо в документі нічого не виділено»).

else (go \u003d false)

Якщо опорний об'єкт спеціально виділений

Тепер напишемо послідовність дій, якщо ми навмисно виділили елемент, чию товщину окантовки хочемо використовувати в якості порогового значення. Виведемо попередження про подальші дії скрипта за допомогою стандартної функції confirm (створює вікно діалогу з двома кнопками - і). якщо натиснути<Сancel>, Робота припиняється, якщо ж погодитися, скрипт продовжить роботу.

else (selectedMsg \u003d confirm ( "Stroke width of selected object will be used as threshold")
if (selectedMsg! \u003d true) (
go \u003d false;
) Else (

Переходимо до основної частини сценарію. Свідомо не розглядаємо ситуацію, коли виділено декілька об'єктів, - адже для завдання товщини окантовки досить вибрати лише один. Та й яке значення використовувати, якщо воно у елементів буде різна? Як ми вже знаємо, єдино виділений об'єкт буде мати індекс «0», а для отримання товщини окантовки у Illustrator існує властивість strokeWidth. Врахуємо, що в принципі, selection може містити не тільки окремі елементи, але і частина тексту (наприклад, виділену випадково), що не входить в наші плани, тому перед початком роботи перевіримо можливостями JavaScript тип виділеного елемента на приналежність саме масиву:

if (sel isArray) (
weight \u003d sel.strokeWidth;

Оскільки ми домовилися виділяти тільки змінені об'єкти, з самого опорного виділення потрібно зняти (звертаємося до його властивості selected):

sel.selected \u003d false; )))

Тепер ми повністю готові до виконання основного завдання сценарію - пошуку об'єктів: значення, яке буде використовуватися в якості мінімально допустимої товщини, зберігається в змінної wei.

обставини

Порівняємо його з аналогічним властивістю у всіх об'єктів в документі. Можна відразу перейти до пошуку, але використання скрипта в повсякденній роботі зажадало урахування додаткових обставин - в макетах часто бувають як заблоковані шари, так і окремі об'єкти. Отже, хоч в них пошук і працює, але вносити зміни не можна. Щоб забезпечити тотальну перевірку, додамо в скрипт кілька операцій: перевіряючи елементи на відповідність заданому критерію, одночасно розблокуємо їх, якщо це необхідно, і запам'ятаємо індекс, щоб після завершення перевірки повернути їх до попереднього стану. Вводимо дві змінні: першу для скороченого доступу до всіх верств в документі, а за допомогою другої отримаємо доступ тільки до заблокованих. Зберігати порядкові номери останніх будемо в масиві, який створимо функцією JavaScript - new Array ().

var dL \u003d activeDocument.layers;
var blokedLayers \u003d new Array ();

Потім переглянемо всі верстви і у заблокованих (властивість locked \u003d true) порядковий номер занесемо в масив blokedLayers (за допомогою функції push з JavaScript), після чого вирішимо їх редагування (locked \u003d false).

if (go \u003d\u003d true) (
for (i \u003d 0; i if (dL [i] .locked \u003d\u003d true) (
blokedLayers.push (i);
dL [i] .locked \u003d false; Раніше ми домовилися виправлені об'єкти виділяти, але після завершення роботи скрипта на заблокованих шарах цього зробити не зможемо - потрібно вивести відповідне попередження. Для цього використовуємо ознака lockedPresence, який встановимо, якщо хоча б один шар заблокований.

lockedPresence \u003d true;

Те ж повторимо і з окремими заблокованими елементами. У найпростішому випадку досить перевірити всі векторні елементи (клас pathItems), в які як підклас входять compound pathes, - щоб ніщо не вислизнуло від всевидющого ока скрипта.

Підводні камені

Крім розглянутої ситуації з заблокування, існує ще один «підводний камінь». Як вже зазначалося, деякі елементи (зокрема, Blend Group і Envelope) не є «рідними» для Illustrator, вони належать до спеціального типу рluginItem. При цьому доступ до таких об'єктів в Illustrator не передбачений, вони - «річ у собі». «Достукатися» до них можна тільки через клас вищого рівня - pageItems, через який ми зможемо хоча б визначити їх присутність і вивести в кінці відповідне попередження. Воно буде говорити, що, запустивши скрипт ще раз і вказавши в якості другого параметра в полі введення «2», він виділить ці «чорні ящики».

pgI \u003d activeDocument.pageItems;

Для зберігання індексів заблокованих об'єктів створимо масив blokedPathes, а для підрахунку кількості змінених введемо змінну corrected.

bloсkedPathes \u003d new Array ();
corrected \u003d 0;

Для всіх об'єктів виконаємо перевірку на приналежність типу PluginItem (властивість typename): якщо такі присутні, встановимо ознака pluginItemExist (його стан буде визначати висновок попередження про наявність таких елементів). У разі ж повторної перевірки (коли другий параметр в поле введення дорівнює «2») будемо їх виділяти:

for (i \u003d 0; i< pgI.length; i++) {
if (pgI [i] .typename \u003d\u003d "PluginItem") (
pluginItemExist \u003d true
if (type \u003d\u003d "2") (pgI [i] .selected \u003d true)

Отже, все (або майже все) можливі ситуації, що виникають в роботі, ми передбачили і визначили для них дії.

Основна перевірка

Тепер настала черга власне перевірки макета на відповідність заданому критерію окантовки. Врахуємо, що серед об'єктів можуть попастися і такі, у яких окантовки немає взагалі (визначається станом ознаки stroked) - отже, їх потрібно виключити з перевірки.

if ((pgI [i] .strokeWidth< weight)&&(pgI[i].stroked)) {
if (pgI [i] .locked \u003d\u003d true) (
blokedPathes.push (i);
pgI [i] .locked \u003d false;

Цей фрагмент коду можна інтерпретувати так: визначаємо у кожного елемента наявність окантовки і її товщину. Якщо вона менша за мінімальну (if (pI [i] .strokeWidth< weight), и объект заблокирован, его индекс занести в специально созданный для такой цели массив blokedPathes, после чего разблокировать для внесения возможных изменений. Знак && обозначает логическое «И» (обязательное совпадение двух условий) — толщины меньше минимальной и присутствия окантовки.

Потім фіксуємо наявність заблокованих об'єктів (встановлюємо ознака lockedPresence для виведення в майбутньому попередження про те, що не всі змінені можуть бути виділені) і сам виправлений виділяємо, а його окантовці присвоюємо порогове значення - і так для всіх елементів. Для статистики паралельно будемо підраховувати кількість змінених об'єктів.

lockedPresence \u003d true;
pgI [i] .selected \u003d true;
pgI [i] .strokeWidth \u003d weight;
corrected ++;

Раніше були розглянуті дії для виділення неперевірених елементів (type \u003d «2»). Тепер визначимо, що повинно відбуватися в стандартній ситуації - при звичайному пошуку потенційно проблемних об'єктів.

if (type \u003d "1") (pgI [i] .selected \u003d true)

Відновлення статусу заблокованих елементів

Головне завдання ми виконали - проблемні об'єкти виправлені і виділені. Залишилося відновити status quo - все спочатку заблоковане повернути до попереднього стану. Для цього в поточному циклі зчитуємо вміст масиву, де зберігаються індекси заблокованих об'єктів, і кожному відповідного елементу встановлюємо ознака locked \u003d true (метод shift виводить з масиву останнім занесене в нього значення). Оскільки загальна кількість об'єктів більше заблокованих, потрібно подбати, щоб після спустошення масиву цикл перевірки закінчувався.

if (blokedPathes.length\u003e 0) (
retrievedPathes \u003d blokedPathes.shift ();
pI.locked \u003d true;))

Потім аналогічні дії зробимо щодо шарів:

for (i \u003d 0; i if (blokedLayers.length\u003e 0) (
retrieved \u003d blokedLayers.shift ();
dL.locked \u003d true; )) Взагалі-то, для однотипних операцій набагато зручніше користуватися функціями. Їх перевага в тому, що одного разу описавши певні дії, можна повторювати їх в повному обсязі, просто викликаючи в потрібних місцях функцію; так досягається компактність і читабельність сценарію. Для підвищення гнучкості функції передають використовувані в ній значення (параметри). Якщо ж не хочете використовувати функції, пропустіть наступні два абзаци.

Складемо дві функції: першу - для розблокування шарів і об'єктів, другу - для відновлення їх атрибутів. Змінюватися в них будуть тільки типи об'єктів (клас Layers і pageItems) і масиви для запису цікавлять нас елементів (blokedLayers і blokedPathes) - вони-то і будуть фігурувати в якості параметрів функції. Першу запишемо так:

function unlock (array, itemType)
if (itemType [i] .locked \u003d\u003d true) (
array.push (i);
itemType [i] .locked \u003d false;
locked \u003d false;
}

Замість array будемо підставляти масив, замість itemType - необхідний клас. Тоді отримаємо два виклики - unlock (blockedLayers, dL) і unlock (blokedPathes, pgI). Аналогічно запишемо функцію для відновлення статусу:

function restore (array, itemType)
if (array.length\u003e 0) (
retrieved \u003d array.shift ();
itemType.locked \u003d true;
}

Виведення інформації про результати перевірки

Це останній етап роботи скрипта. Спочатку визначимо умова виведення повідомлення, якщо обраний пошук нередактіруемих об'єктів, потім умова появи попередження про те, що такі об'єкти були виявлені:

if (type \u003d\u003d "2") (b \u003d "\\ nCheck selected!")
if (pluginItemExist \u003d\u003d true) (
alert ( "Due to scripting restrictions some objects can" t be affected "+ b))

Логіка видачі застереження про те, що не всі виправлені можуть бути виділені, така:

if ((lockedPresence \u003d\u003d true) && (pluginItemExist \u003d\u003d false)) (
warning \u003d "\\ nBecause some of them are locked they can" t be showed as selected ")

Після чого виводимо остаточні результати:

alert ( "Number of corrected objects are:" + corrected + warning)

Ось, власне, і весь скрипт. Як бачите, ці кілька рядків виконують колосальний обсяг роботи, на яку вручну навряд чи хтось наважиться. Сценарій же виконується моментально (в масштабних проектах, при кількості елементів порядку декількох тисяч, починає позначатися продуктивність процесора). Від вас вимагається лише вибрати його зі списку наявних (можна навіть цього не робити - Illustrator дозволяє скриптам призначати «гарячі клавіші») командою Edit.Keyboard shortcuts.Menu commands.Scripts. Але врахуйте: назви скриптів сортуються в алфавітному порядку, тому додавання нових або видалення старих може привести до перепризначення клавіш сусіднім сценаріями. Висновок: після змін в папці Presets \\ Scripts перевіряйте відповідність клавіш.

Ми постаралися зробити скрипт універсальним, що позначилося на його обсязі. У самому ж примітивному варіанті (без урахування описаних вище особливостей і підводних каменів) він займає буквально пару рядків:

minWidth \u003d activeDocument.selection.strokeWidth;
pI \u003d activeDocument.pathItems;
for (i \u003d 0; i< pI.length; i++) {
if ((pI [i] .strokeWidth< minWidth) && (pI[i].stroked)) {
pI [i] .strokeWidth \u003d minWidth;
}}

А десерт?

Наступний випуск ми присвятимо візиток: напишемо скрипт, що автоматизує їх розкладку на аркуші. Втім, він стане в нагоді і для більш широкого кола завдань, оскільки не має прив'язки до розмірів об'єктів. Як і належить, передбачимо створення випусків щоб уникнути проблем при неточною порізки листа, а також поворот візиток (якщо їх верх і низ істотно відрізняються). Паралельно торкнемося питання пошуку об'єктів, колірна модель яких відрізняється від заданої, що теж не рідкість при подібних роботах.

Журналів у вільному доступі.

На ту ж тему:

    Новини 2019-04-03

    Як додаткові білі чорнило допомагають створювати нові застосування широкоформатного друку.

    Сьогодні ряд моделей широкоформатних і сверхшірокоформатних принтерів можуть друкувати чорнилом додаткового кольору - білого, що створює нові можливості застосування цих пристроїв. Але в принтерах можуть бути реалізовані різні технології друку білим чорнилом, і у різних технологій - свої можливості і обмеження.

При створенні малюнка в будь-якому графічному редакторі часто доводиться виконувати одні і ті ж дії. Ще більше часу займає дрібна рутинна робота по підгонці контурів або створення невеликих деталей. При створенні зображень для стоків витрати часу і зовсім можуть стати катастрофічними. На щастя багато завдань можна вирішити використовуючи записані дії або скрипти. Представляємо вам підбірку з 20 зручних і корисних скриптів для.

Як встановити скрипти в Adobe Illustrator

В цілому установка скриптів в Illustrator не представляє нічого важкого. Після того, як ви завантажили потрібні вам скрипт просто відкрийте програму, зайдіть в File\u003e Scripts\u003e Other Scripts і виберіть його. Корисна порада: скрипти найкраще зберігати в одному місці. Також дуже корисним буде зберігати опису скриптів в окремих файлах - з часом їх база у вас буде тільки зростати, що може призвести до плутанини.

Adjust Dashes

Скрипт Adjust Dashes допомагає вирівнювати пунктирную обведення по ключових точках. Всім відома проблема не дуже красивого пунктиру йде назавжди! Важливий момент: після роботи скрипта заливка у об'єкта зникне, так що виконуйте його якомога раніше.

Arc Correction

Скажімо, ви хочете намалювати хмаринку. Можна довго возитися з еліпсами і кривими, а можна за секунду накидати її форму за допомогою планшета. Але ось біда - дуги часто виходять дуже нерівними. Скрипт Arc Correction легко виправляє становище.

Arrow-A, Arrow-V

При створенні інфографіки часто використовуються стрілки. Якщо ви хочете намалювати красиву вигнуту стрілку, спробуйте скрипт Arrow-A, Arrow-V. Він створить на кожному виділеному кінці кривої покажчик в формі А чи V.

Circumcircle

Скрипт Circumcircle описує коло навколо обраної фігури. Дуже зручно, тільки не забувайте, що не всяку складну фігуру можна вписати в коло.

Common Tangents

Скрипт Common Tangents малює загальні дотичні для кожної обраної кривої (якщо такі дотичні є).

Divide

Необхідно розділити сегмент на рівні частини? Використовуйте скрипт Divide. Він акуратно і точно розріджене об'єкт на потрібну кількість рівних відрізків.

Extend Handles

Вічна проблема - рівномірний розтягування повзунків у ключовий точки. Ще й є ризик зіпсувати нахил кривої. Скрипт Extend Handles зробить всю роботу за вас.

наприклад:
100: оригінал
120: розширити 20%
80: стиснути 20%
0: прибрати закруглення
-100: звернути закруглення

Merge Overlapped Anchors

Багато фігури простіше спочатку намалювати у вигляді кривої, потім розгорнути її і працювати вже як з повноцінним об'єктом. Але практично завжди відбувається одне і теж - після перетворення кривої в заливку утворюється величезна кількість непотрібних точок, які моторошно заважають при подальшому редагуванні. Скрипт Merge Overlapped Anchors допомагає впоратися з проблемою і видаляє зайві точки не змінюючи форму об'єкта.


Завантажити Merge Overlapped Anchors можна.

Round Any Corner

Складну форму можна створити, об'єднавши кілька простих форм або ж накидавши вугласте обрис. Далі може знадобитися скруглить кути. Завдання рутинна і вимагає часу. Скрипт Round Any Corner спростить цю задачу. Виділіть потрібні точки, запустіть скрипт, введіть значення кута закруглення і насолоджуйтеся результатом.

Tree-like

Дерева - один з часто використовуваних елементів. Малювати дерево довго, а малювати ліс і можна вічність. Скрипт Tree-like малює дерева на основі однієї кривої і може змінювати вид дерева при зміні її розміру. Швидко і красиво.

Tangents From A Point

Цей скрипт малює дотичні від точки до обраного об'єкта. Точка може бути як на кривій, так і ізольована (в такому випадку вона зникне після роботи скрипта). Отримані дотичні можна змінювати на свій розсуд.



Add Highlight And Shadow Swatches

Потрібні швидкі контури затемнення і освітлення? Використовуйте скрипт Add Highlight And Shadow Swatches. Він бере колір з обраного об'єкта, далі вам необхідно задати йому якесь ім'я, після чого на панелі кольорів з'являться його гармонійні відтінки.



Завантажити Add Highlight And Shadow Swatches можна.

Layer Export

Скрипт Layer Export швидко збереже кожен шар в окремий файл у форматі PNG або PDF. Файл буде відповідати імені шару, а розташовуватися вони будуть там же, де і вихідний Ai.

Layer Compose

Скрипт Layer Compose дозволяє швидко об'єднати content- і template-шари в композицію. Для цього необхідно назвати template-шар будь-яким ім'ям з нижнім підкресленням спочатку (_abc) і запустити скрипт.

Specify!

Виберіть один об'єкт, запустіть скрипт Specify! і задайте напрямок вимірювання - у дізнаєтеся довжину або ширину об'єкта. Виділіть два об'єкти - ви дізнаєтеся відстань між ними. Виділіть групу - дізнаєтеся її довжину.

У вас є унікальна можливість розширити функціонал Adobe Illustrator. Немає нічого простішого, ніж використання скриптів (файлів-сценаріїв), просто виберіть об'єкт і запустіть скрипт, який вам потрібен. Скрипти представлені в цій замітці зекономити вам багато часу, зроблять вашу роботу більш приємною і ефективною. Повірте, вони стоять вашої уваги. Всі скрипти були протестовані в версіях ілюстратор CS3 і СS4.

Якщо вам потрібні доповнення до Illustrator преміум якості, ви можете знайти їх у нас в розділі Illustrator Actions and Scripts на нашому ресурсі GraphicRiver, такі як: Isometric Guides Grid Action (екшен по створенню ізометричної сітки), Pattern Maker (Створення патернів), і Long Shadow Action (Екшен по створенню довгою тіні).

Кращі Екшени (Операції) і Скрипти для Illustrator на Graphic River.

В іншому разі скористайтеся безкоштовними "булочками" про які ми вам зараз розповімо. Але спочатку, давайте розберемося, як встановити скрипти для Illustrator.

установка Скриптів

Скрипти, які ви збираєтеся використовувати, бажано зберігати завжди в один і той же місце, наприклад в директорію Scrips (скрипти). Що б запустити скрипт потрібно зайти в Файл\u003e Сценарії\u003e Інший Сценарій (Command + F12) (File\u003e Scripts\u003e Other Scripts).

Відкрити директорію зі скриптами і запустити потрібний файл.