Контакти

Як писати скрипти для illustrator. Корисні та безкоштовні скрипти для Adobe Illustrator

Тут я хочу скласти структурований список скриптів з описом та робочими посиланнями. Якщо ви бажаєте запропонувати цікавий скрипт, пишіть у коментарі.
Оновлено 24-10-2016.
Оновлено.
Оновлено.

Arc Correction

Округлює арки намальовані від руки.


Додає стрілки як трикутників на кінці контуру.


Додає стрілки на кінці контуру.

Adjust Dashes (offset)


Робить пунктирне обведення симетричною.

Adjust Dashes


Доповнює попередній скрипт, роблячи лінії однієї довжини.

Archimedean Spiral


Малює Архімедову спіраль.
У скрипті доступні параметри.
var radius_increment = 5; // radius-increment per round (point)
var uzu_angle = 15/180*mpi; // unit of rounding angle (radian)
var uzu_roundtime = 10; // rounding times


Малює коло із заданої кількості точок. На малюнку 2 кола, з 10 та 2 точок.


Обводить об'єкти за допомогою кола.

Common Tangents


Знаходить точки біля контуру та з'єднує їх лініями.

Cut At Selected Anchors


Нарізує контур по крапках.

Dance


Генерує на новому шарі танцюючих чоловічків.

Divide (length)


Додає вибрану кількість точок між існуючими точками.

Dup At Selected Anchors


Копіює верхній об'єкт над крапками. Крапка може бути поставлена ​​пером, або може використовуватися точки будь-якої фігури.

Extend Handles


Масштабування важелів у зазначених відсотках.

Join Reasonably


Закриває виділені шляхи в один об'єкт.

Merge Overlapped Anchors

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

Metaball (Arc)



Метаболізує об'єкти. Поєднує об'єкти дугами. Можна ставити ступінь вигнутості.

Path Length


Додає текст із довгою виділеного контуру.

Remove Anchors

Видаляє виділені точки, не розриваючи шлях. Як видалити точки Delete Anchor Point Tool.


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

Round Any Corner


Округлює будь-які кути, вказавши радіус у будь-яких одиницях вимірів. Зручно задати всім кутам один градус заокруглення. Можна виконувати математичні операції над створеними кутами. Наприклад розділити градуси на 2 або додати 10 градусів до всіх кутів.

Sine Curve


Малює синусоїду. На малюнку 2 хвилі. Перша фільтр ілюстратора, друга створена скриптом.

Tangents From A Point


Проводить лінії з точки щодо об'єктів.

Tree-like


Генерує цілком реалістичні дерева. Іноді доведеться доопрацювати стовбур і округлити кінці гілок, виставивши скруглення кінців на панелі обведення.

Connect Centers


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

Tree Example Edit


Малює фрактальні дерева
- Без рандому
- З рандомом

Томськ привіт

Мікростокер та ілюстраторка Ольга Захарова поділилася своїм набором скриптів, яким вона користується щодня у своїй роботі. Сюди увійшли скрипти як для створення ілюстрацій, так і для автоматизації деяких робочих процесів 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 величезний, але тут є деякі недоліки, благо в даній програмі є скриптинг, який спрощує і навіть розширює можливість програми. Крім скриптингу є і розширення (extension) - панелі для розширення програми, але це трохи інша тема.

Встановлення скриптів

Якщо ви ніколи не використовували скрипти в Adobe Illustrator, ось вам короткий посібник, як запустити скрипт.

Для початку нам потрібно помістити скрипти, які ви хочете використати, у папку "Scripts". Як знайти шлях до цієї папки? Все просто, заходимо в корінь папки, де знаходиться сама програма Adobe Illustrator, далі "Presets -> en_US -> Scripts", замість en_US може бути інша папка з локалізацією, яка локалізація у Illustrator, таку папку і вибирати.

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

  1. Заходимо в меню "File -> Scripts -> Other Script...", відкриється провідник, після чого потрібно знайти файл скрипта, а потім запуститися скрипт
  2. Можна з провідника просто перетягнути скрипт до Illustrator, після чого відбудеться запуск скрипту
  3. Можна використовувати розширення (extension), для запуску скриптів - це панель Illustrator, яка дозволяє запускати скрипти прямо з програми. Таких розширень є кілька. Я рекомендую використовувати LAScripts.

Harmonizer

Скрипт для розміщення елементів по сітці

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

ArtboardsResizeWithObjects

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

В Adobe Photoshopє функція "Image size", для зміни монтажної області разом із вмістом, але Adobe Illustrator такої функції, з коробки, немає. Іноді потрібно змінити монтажну область разом із вмістом, так щоб після зміни всі стани збереглися.

Допустимо ви вирішили змінити монтажну область руками, порядок ваших дій: Змінюєте монтажну область, потім ви виділяєте всі елементи на монтажній області, і змінюєте розмір, але тут якраз і спливає одна проблема. Якщо у вас є елементи з обведенням, то при зміні руками обведення не буде зменшуватися разом зі зменшенням об'єкта, так можна обійти це рішення поставивши галочку "Масштабувати обведення та ефекти", але що робити якщо вам необхідно змінити розмір декількох монтажних областей? Для спрощення та економії часу використовуйте скрипт artboardsResizeWithObjects.jsx


  • New scale factor- масштаб монтажної області у відсотковому співвідношенні
  • New artboard width- нова ширина монтажної області, висота зміниться пропорційно
  • New artboard height- нова висота монтажної області, ширина зміниться пропорційно
  • Only active artboard- змінити лише активну монтажну область
  • All artboards- змінити всі монтажні області
  • Custom artboards- змінити довільні монтажні області, можна писати як через кому, так і через дефіс (як коли ви вказуєте сторінки під час друку)
  • Include hidden & locked items- враховувати залочені та приховані елементи
  • Поле введення для розміру- за промовчанням береться ширина активної монтажної області.

ArtboardsRotateWithObjects

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

В Adobe Photoshop можна повертати монтажну облати і вміст теж буде повернутий, але в Adobe Illustrator такої функції з коробки немає.

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


Короткий опис кожного з пунктів скрипту:

  • Active artboard #- повернути лише активну монтажну область
  • All artboards- повернути всі монтажні області
  • Rotation angle 90 CW- повернути монтажну область за годинниковою стрілкою
  • Rotation angle 90 CCW- повернути монтажну область проти годинникової стрілки

InlineSVGToAI

Скрипт для вставлення svg (і перетворення коду svg) у документ.

У версії Adobe Illustrator CC 2018 v.22.1 (березень, 2018), додали можливість вставляти svg об'єкт, скрипт у цьому випадку використовувати не потрібно.

Мене завжди дратувало, що в програму яка спеціалізується на векторі не можна вставити svg, я маю на увазі, якщо ми скопіювали svg код із редактора або звідки ще, але у вигляді тексту, то в програму його вставити не вийде. Потрібно спочатку зберегти код у файл, тільки після цього відкрити файл в Illustraor, скопіювати вміст і вставити в потрібний документ. Дуже багато непотрібних дій, чи не правда?

Щоб позбутися цього непорозуміння, я написав скрипт який автоматично створюватиме файл, імпортуватиме вміст у ваш документ, а після чого його видалить. Тобто. скрипт робить все те саме, але тільки без нашої участі і не потрібно витрачати на цей час.


Короткий опис кожного з пунктів скрипту:

  • Все просто - вставте вміст у поле та натисніть "Paste"

PuzzleClipper


Скрипт створення пазлів на основі об'єктів.

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


ReplaceItems

Скрипт для заміни об'єктів вихідним, об'єктами із групи або з буфера обміну.

Наприклад, вам потрібно замінити деякі елементи на макеті, але руками їх замінювати довго, ви можете використовувати даний скрипт для заміни, просто виділіть потрібний вам елемент, скопіюйте його, після чого запустіть скрипт, виберіть пункт "Object Buffer".

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


Короткий опис кожного з пунктів скрипту:

  • Object in buffer - об'єкт знаходиться в буфері обміну
  • Top object - об'єкт є першим із списку виділених
  • All in group (random) - випадково вибирається об'єкт із групи
  • Поле масштаб - масштаб елемента, що вставляється
  • Replace items in a group? - Замінні елементи знаходяться в групі? (якщо елементи, які потрібно замінити знаходяться в групі, поставте цю галочку, інакше буде замінена вся група, а не кожен елемент з групи)
  • Copy Width & Height - Скопіювати значення Ширини та Висоти із замінного елемента
  • Save original element - зберегти (не видаляти) елемент, що замінюється
  • Copy colors from element - скопіювати заливку із елемента, що замінюється.
  • Random element rotation - випадково повернути кожен із елементів

CreateArtboardsFromTheSelection

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

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


Короткий опис кожного з пунктів скрипту:

  • Each in the selection – створити для кожного з колекції виділених елементів
  • Only selection bounds – створити монтажну область на основі виділення.
  • Item bounds Vsible - межі елемента "Видимі"
  • Item bounds Geometric - межі елемента "геометричні"

TransferSwatches

Скрипт для імпорту зразків кольору (swatches) з документа до активного документа.

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


ArtboardItemsMoveToNewLayer

Скрипт, який вміст монтажної області поміщає на новий шар.

Запустіть скрипт, виберіть монтажні області, також ви можете вибрати "видалити порожні шари та підшари", та "Ім'я шару з імені монтажної області".


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

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

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

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

sel = 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 = sel.position + (sel.width/2);
refObj_y = sel.position - (sel.height/2);

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

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

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

newlayer = activeDocument.layers.add();
newlayer.ZOrder(ZOrderMethod.BRINGTOFRONT);

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

newlayer.name = "Connectors";

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

newCompoundPath = activeDocument.compoundPathItems.add();

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

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

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

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

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

newPath = 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 = app.activeDocument.selection;
var go = true;
if (sel == 0) (

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

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

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

value = prompt ("Зображення крутої довжини threshold (in pt),\n What to select: correctod objects (1) or inaccessible (2)", "0.25, 1")

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

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

if (value! = null) (
splitString = value.split(“, “);
weight = splitString;
type = splitString; )

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

else ( go = false )

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

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

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

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

if (sel isArray) (
weight = sel.strokeWidth;

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

sel.selected = false; ) ) )

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

Обставини

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

var dL = activeDocument.layers;
var blokedLayers = new Array();

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

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

lockedPresence = true;

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

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

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

pgI=activeDocument.pageItems;

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

bloсkedPathes = новий Array();
correctod = 0;

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

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

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

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

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

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

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

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

lockedPresence = true;
pgI[i].selected = true;
pgI[i].strokeWidth = weight;
correctod++;

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

if (type =“1”) ( pgI[i].selected = true )

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

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

if (blokedPathes.length >0) (
retrievedPathes = blokedPathes.shift();
pI.locked = true;))

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

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

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

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

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

function restore (array, itemType)
if (array.length > 0) (
retrieved = array.shift();
itemType.locked=true;
}

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

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

if (type == “2”) ( b = “\nCheck selected!” )
if (pluginItemExist == true) (
alert (“Due to scripting restrictions деякі objects can't be affected” + b) )

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

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

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

alert (“Number of correctod objects are: “ + correctod + warning)

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

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

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

А десерт?

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

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

На ту ж тему:

    Новини 2019-04-03

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

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

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

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

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

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

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

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

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

Тож поїхали!

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

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

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

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

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

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

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

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

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



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