Контакти

Як встановлювати скрипти в adobe illustrator. Скрипти в Adobe Illustrator

Я розповім вам про одну дуже зручною панелі, про яку часто ходять чутки: як вона хороша, і як би було здорово, якби вона у мене встановилася та ще й працювала!

Переваги цієї панельки:

Можливість розташовувати папки зі скриптами в будь-якому місці на комп'ютері - вам слід лише вказати шлях до них.

Якщо розташувати їх в папці Script Bay cross-application, Вони будуть доступні і іншим програмам Adobe. А можна просто довантажити їх, вказавши add cross app folder.

Компактність і зручність. Ви можете розташувати всі свої скрипти в окремих папках, організувавши їх за частотою використання або по їх особливостям: рандомний, з виділенням, робота з текстом, спецефекти. До речі, в налаштуваннях Script Bay можна створити категорії, які замінять ці папки.

Але головна причина того, що я пишу цю статтю, в тому, що стандартний спосіб установки і до речі рекомендований компанією In-Tools Solutions, мені не допоміг. Як і багатьом, судячи з вигуків в ЖЖ та інших спільнотах.

Проблем кілька:

Плагін не встановлюється через Adobe Extension Manager і має підступну дозвіл zxp.
- встановлюється, але злітає або втрачає все скрипти при новому запуску Adobe Illustrator.

Тому, якщо у вас теж не виходить встановити плагін через Adobe Extension Manager, ви можете піти на мою шляху. Ось як я вирішила цю проблему.

1. Установка ScriptBay

Дістала плагін з архіву. просто відкриваємо ScriptBay.zxp через WinRAR (Архіватор) і витягаємо з нього файли в окрему папку ScriptBay.

Розмістила отриману папку, де належить. ручками :)
У моїй версії ілюстратора (Adobe Illustrator CS6) - це папка Extensions.


C: \\ Program Files (x86) \\ Common Files \\ Adobe \\ CS6ServiceManager \\ extensions

Для CS5 треба покласти в папку з плагінами Plug-ins.

C: \\ Program Files \\ Adobe \\ Adobe Illustrator CS5 \\ Plug-ins

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

C: \\ Program Files (x86) \\ Common Files \\ Adobe \\ CEP \\ extensions

2. Додаємо скрипти в ScriptBay

Потім ми додаємо в нашу панель улюблені скрипти. Відкрити панель плагіна можна в меню Window:


Window\u003e Extension\u003e ScriptBay (Вікно\u003e Розширення\u003e ScriptBay)

Щоб додати скрипти тиснемо на панелі add script folder і вказуємо шлях до папки зберігання скриптів на комп'ютері.


Якщо скрипти призначені не тільки для Adobe Illustrator - тиснемо add cross app folder.
Щоб видалити ліву папку, виділяємо і тиснемо remove script folder.
Якщо ви не зберігайте їх в особливому місці на іншому диску, то можете вказати рідну папку скриптів Illustrator:

Зазвичай шлях до папки такий:


диск C\u003e Program Files\u003e Adobe\u003e папка з вашою версією Adobe Illustrator\u003e Стилі (Presets)\u003e en_GB або RU (там одна папка - НЕ промахнетеся)\u003e Scripts (Сценарії)

Але у мене там давно нічого не лежить. Я не зберігаю їх на одному диску з Windows і програмами. На роботі панелі Script Bay це ніяк не відбивається. Також панель дозволяє вибрати два режими огляду: деревом і листом - display scripts as list or tree.


3. Меню Script Bay і інші функції

Коротко про інші команди контекстного меню:

hide / show empty folders - приховати / показати порожні папки
show script file path - вказати шлях до файлу сценарію
hide / show default folders - приховати / показати папки за замовчуванням
reveal installed scripts - виявити встановлені скрипти
script bay preference - меню налаштувань Script Bay
check for updates - перевірити наявність оновлень
about - версія Script Bay

Меню налаштувань Script Bay дублює деякі команди контекстного меню.


Але має і відмінності. Так тут можна створити свої категорії для всієї колекції ваших скриптів, що замінить вам створення і сортування скриптів по папках.


Якщо ви відчуваєте себе здатним написати новий геніальний скрипт, використовуйте вбудований редактор скриптів Script Bay - Script Editor.

В 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 є функція, що додає більше ключових точок в фігуру, однак ви не можете вказати, скільки конкретно ключових точок ви хочете додати.

У цій збірці ви знайдете 10 корисних скриптів для Adobe Illustrator. Ці скрипти абсолютно безкоштовні. Все ссилочку - в назвах скриптів. Якщо скрипт не хоче скачиваться по посиланню, а замість цього в вашому браузері відкривається код, то зробіть Правий клік\u003e Зберегти посилання як і збережіть скрипт на свій комп'ютер.

Невеликий ліричний відступ для тих, хто не зустрічався до цього з скриптами в ілюстратора. Скрипт - це програма, яка може бути запущена в Adobe Illustrator через меню File\u003e Scripts. Як це належить будь-якій програмі, скрипт виконує будь-які корисні дії, швидко і автоматично. Саме тому скрипти стали невід'ємними помічниками для мікростокеров, так як рутини в нашій роботі хоч відбавляй.

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

Щоб встановити скрипт на свій ілюстратор, потрібно скопіювати файл скрипта в папку зі стандартними скриптами. Шукайте її там, де встановлено ваш ілюстратор.

Для вінди це зазвичай: диск C\u003e Program Files\u003e Adobe\u003e папка з вашою версією Adobe Illustrator\u003e Стилі (Presets)\u003e en_GB або RU (там одна папка промахнетеся)\u003e Scripts.

Для маків: Applications\u003e Adobe\u003e ваша версія Adobe Illustrator\u003e Presets\u003e en_GB\u003e Scripts.

Якщо стандартну папку ніяк не знайти, то скрипти можна запускати в ілюстратора без установки через File\u003e Scripts\u003e Other Script (Ctrl + F12).

Отже, поїхали!

Скрипт шукає і виправляє помилки, які не допустимі на мікростоках. Векторний файл сканується автоматично: скрипт знаходить відкриті шляхи, контури-примари, нерозібрані кисті, символи, растр та інше. По ходу справи скрипт відразу пропонує виправити ці помилки. Завантажити безкоштовно Free Stock Master можна на MAI Tools.

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

Скрипт відкриває багатосторінковий PDF цілком і повністю, а не по одній сторінці, як це прийнято в ілюстратора. У віконці скрипта вказуємо шлях до PDF файлу, кількість сторінок, і він відкривається в одному документі на декількох артбордах.

Скрипт вирівнює виділені об'єкти по піксельної сітці. Працює аналогічно опції Align to Pixel Grid.

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

Скрипт проводить лінії з кутка в куток у фігур. Виходять геометричні візерунки та піктограми.

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

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

Скрипт робить з окремих однорядкових текстів рівну колонку як на постерах.

У цій збірці ви знайдете 10 корисних скриптів для Adobe Illustrator. Ці скрипти абсолютно безкоштовні. Все ссилочку - в назвах скриптів. Якщо скрипт не хоче скачиваться по посиланню, а замість цього в вашому браузері відкривається код, то зробіть Правий клік\u003e Зберегти посилання як і збережіть скрипт на свій комп'ютер.

Невеликий ліричний відступ для тих, хто не зустрічався до цього з скриптами в ілюстратора. Скрипт - це програма, яка може бути запущена в Adobe Illustrator через меню File\u003e Scripts. Як це належить будь-якій програмі, скрипт виконує будь-які корисні дії, швидко і автоматично. Саме тому скрипти стали невід'ємними помічниками для мікростокеров, так як рутини в нашій роботі хоч відбавляй.

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

Щоб встановити скрипт на свій ілюстратор, потрібно скопіювати файл скрипта в папку зі стандартними скриптами. Шукайте її там, де встановлено ваш ілюстратор.

Для вінди це зазвичай: диск C\u003e Program Files\u003e Adobe\u003e папка з вашою версією Adobe Illustrator\u003e Стилі (Presets)\u003e en_GB або RU (там одна папка промахнетеся)\u003e Scripts.

Для маків: Applications\u003e Adobe\u003e ваша версія Adobe Illustrator\u003e Presets\u003e en_GB\u003e Scripts.

Якщо стандартну папку ніяк не знайти, то скрипти можна запускати в ілюстратора без установки через File\u003e Scripts\u003e Other Script (Ctrl + F12).

Отже, поїхали!

Скрипт шукає і виправляє помилки, які не допустимі на мікростоках. Векторний файл сканується автоматично: скрипт знаходить відкриті шляхи, контури-примари, нерозібрані кисті, символи, растр та інше. По ходу справи скрипт відразу пропонує виправити ці помилки. Завантажити безкоштовно Free Stock Master можна на MAI Tools.

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

Скрипт відкриває багатосторінковий PDF цілком і повністю, а не по одній сторінці, як це прийнято в ілюстратора. У віконці скрипта вказуємо шлях до PDF файлу, кількість сторінок, і він відкривається в одному документі на декількох артбордах.

Скрипт вирівнює виділені об'єкти по піксельної сітці. Працює аналогічно опції Align to Pixel Grid.

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

Скрипт проводить лінії з кутка в куток у фігур. Виходять геометричні візерунки та піктограми.

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

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

Скрипт робить з окремих однорядкових текстів рівну колонку як на постерах.

Зазвичай, якщо мова йде про програми для дизайнерів, першочергова увага приділяється художнім можливостям додатків - інструментам малювання, фільтрів і т. П. Але в повсякденному житті доводиться займатися і рутиною. На щастя, ПО від 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

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

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



Сподобалася стаття? поділіться їй