телевизори. Конзоли. Проектори и аксесоари. Технологии. Цифрова телевизия

Набор от платени скриптове за илюстратори. Скрипт за подмяна на обекти с оригинални, обекти от група или от клипборда

Имате уникална възможност да разширите функционалността Adobe Illustrator. Няма нищо по-лесно от използването на скриптове (скрипт файлове), просто изберете обект и стартирайте скрипта, от който се нуждаете. Представените в тази статия скриптове ще ви спестят много време и ще направят работата ви по-приятна и ефективна. Повярвайте ми, заслужават вниманието ви. Всички скриптове са тествани във версии на Illustrator CS3 и CS4.

Ако търсите първокласни добавки за Illustrator, можете да ги намерите в раздела Действия и скриптове на Illustrator на нашия GraphicRiver, като например: Изометрични водачи Grid Action, Pattern Maker и Long Shadow Action (Действие за създаване на дълга сянка) .

Най-добрите действия (операции) и скриптове за Illustrator на Graphic River.

В противен случай се възползвайте от безплатните „благини“, за които ще ви разкажем сега. Но първо, нека разберем как да инсталираме скриптове за Illustrator.

Инсталиране на скриптове

Препоръчително е винаги да запазвате скриптовете, които ще използвате, на едно и също място, например в директорията Scrips. За да стартирате скрипта, трябва да отидете на File > Scripts > Other Script (Command + F12) (File > Scripts > Other Scripts).

Отворете директорията със скриптове и стартирайте желания файл.

При създаване на чертеж във всеки графичен редакторчесто трябва да извършват едни и същи действия. Дребната рутинна работа по коригиране на контури или създаване на малки части отнема още повече време. Когато създавате стокови изображения, инвестицията във времето може да стане катастрофална. За щастие много проблеми могат да бъдат разрешени с помощта на записани действия или скриптове. Представяме ви селекция от 20 удобни и полезни скрипта за .

Как да инсталирате скриптове в Adobe Illustrator

Като цяло инсталирането на скриптове в Illustrator не е трудно. След като изтеглите необходимия скрипт, просто отворете програмата, отидете на Файл > Скриптове > Други скриптове и го изберете. Полезен съвет: Скриптовете е най-добре да се съхраняват на едно място. Също така ще бъде много полезно да запазите описанията на скриптовете в отделни файлове - с течение на времето вашата база данни само ще се разраства, което може да доведе до объркване.

Коригиране на тирета

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

Корекция на дъгата

Да приемем, че искате да нарисувате облак. Можете да бърникате с елипси и криви дълго време или можете да скицирате формата му за секунда с помощта на таблет. Но проблемът е, че дъгите често се оказват много неравномерни. Скриптът Arc Correction лесно коригира ситуацията.

Стрелка-A, Стрелка-V

При създаването на инфографика често се използват стрелки. Ако искате да нарисувате хубава извита стрелка, опитайте скрипта Arrow-A, Arrow-V. Той ще създаде указател във формата на A или V във всеки избран край на кривата.

Околна окръжност

Скриптът Circumcircle рисува кръг около избраната форма. Много е удобно, но не забравяйте, че не всяка сложна форма може да се побере в кръг.

Общи допирателни

Скриптът Common Tangents чертае общи допирателни за всяка избрана крива (ако има такава).

Разделям

Трябва да разделите сегмент на равни части? Използвайте скрипта Divide. Той внимателно и точно разделя обекта на необходимия брой равни сегменти.

Разширете дръжките

Вечен проблем е равномерното разтягане на плъзгачите в ключовата точка. Съществува и риск от разваляне на наклона на кривата. Скриптът Extend Handles ще свърши цялата работа вместо вас.

Например:
100: оригинал
120: разширяване с 20%
80: компресиране 20%
0: премахване на закръгляването
-100: обратно закръгляване

Обединяване на припокрити котви

По-лесно е първо да начертаете много форми като крива, след това да я разширите и да работите с нея като с пълноправен обект. Но почти винаги се случва едно и също нещо - след преобразуване на кривата в запълване се образуват огромен брой ненужни точки, които ужасно пречат на по-нататъшното редактиране. Скриптът Merge Overlapped Anchors помага за справяне с проблема и премахва ненужните точки, без да променя формата на обекта.


Можете да изтеглите Merge Overlapped Anchors.

Заобиколете всеки ъгъл

Сложна форма може да бъде създадена чрез комбиниране на няколко прости форми или чрез скициране на ъглови контури. След това може да се наложи да заоблите ъглите. Задачата е рутинна и отнема време. Скриптът Round Any Corner ще улесни тази задача. Изберете необходимите точки, стартирайте скрипта, въведете стойността на ъгъла на заобляне и се насладете на резултата.

Дървоподобен

Дърветата са един от често използваните елементи. Рисуването на дърво отнема много време, но рисуването на гора може да отнеме цяла вечност. Дървоподобният скрипт рисува дървета въз основа на една крива и може да промени външния вид на дървото, когато размерът му се промени. Бързо и красиво.

Допирателни от точка

Този скрипт чертае допирателни от точка към избран обект. Точката може да бъде или върху кривата, или изолирана (в този случай тя ще изчезне след изпълнение на скрипта). Получените допирателни могат да се променят по ваша преценка.



Добавете мостри за осветяване и сенки

Имате нужда от бързо потъмняване и подчертаване на контурите? Използвайте скрипта Add Highlight And Shadow Swatches. Той взема цвета от избрания обект, след което трябва да му дадете име, след което неговите хармонични нюанси ще се появят в цветния панел.



Можете да изтеглите Add Highlight And Shadow Swatches.

Експортиране на слой

Скриптът за експортиране на слой бързо ще запази всеки слой отделен файл V PNG форматили PDF. Името на файла ще съответства на името на слоя и те ще бъдат разположени на същото място като оригиналния Ai.

Съставяне на слой

Скриптът Layer Compose ви позволява бързо да комбинирате слоеве със съдържание и шаблони в композиция. За да направите това, трябва да назовете шаблонния слой с произволно име с долна черта в началото (_abc) и да стартирате скрипта.

Посочете!

Изберете един обект, стартирайте скрипта Specify! и задайте посоката на измерване - ще разберете дължината или ширината на обекта. Изберете два обекта - ще разберете разстоянието между тях. Изберете група и разберете нейната дължина.

Работата на дизайнера, свързана с реализирането на всякакви творчески идеи, е немислима без множество рутинни процеси, когато трябва да се отделят много време и усилия за повтаряне на една и съща операция. Има много причини за това. Първо, необходимо е да се проектират много графични елементи в един и същи стил, което автоматично предполага многократно повторение на един и същи тип операции. Второ, в специфични области на дизайна има много стандартни операции, които също трябва да се повтарят ден след ден (класически пример в този смисъл е привеждането на десетки или дори стотици файлове с изображения в определена стандартна форма). Отделен проблем е пакетната обработка на файлове, когато е необходимо да се приложат същите трансформации към голяма група изображения наведнъж.

Един от начините за автоматизиране на повтарящи се процеси е използването на скриптове, които представляват определени последователности от команди, които могат да се възпроизвеждат многократно и са най-мощният и в същото време най-сложният инструмент за автоматизиране на работата в Adobe програмаИлюстратор. Скриптовете са ефективни в различни ситуации, ако говорим за голям брой подобни действия, и скриптовете могат да се използват както отделни изображения, и към групи от изображения, като ги комбинира ефективно с макроси, което допълнително улеснява и ускорява процеса на подготовка на изображения и спестява много време.

В същото време на практика скриптовете не се използват широко от дизайнерите. Очевидно поради факта, че за да ги напишете, трябва да знаете един от обектно-ориентираните езици за програмиране: JavaScript, Visual Basic (Windows) или AppleScript (Mac OS). Това обаче не е толкова трудно, тъй като много дизайнери създават уеб страници, които използват JavaScript и следователно разбират обектно-ориентираното програмиране, а тези знания са напълно достатъчни за писане на скриптове. Има още един аргумент в полза на JavaScript - този език е независим от платформата и следователно скриптовете, написани на него, ще работят както на Windows, така и на Mac OS. В този урок ще се съсредоточим върху базираната на JavaScript технология за скриптове в средата на Adobe illustrator CS2 и за да повишим нивото на достъпност на материала, ще се опитаме да се справим без сложни формулировки и без да използваме голям брой концепции, които са нови за обикновени потребители, но приети в програмирането, тъй като много от тях решават повечето стандартни дизайнерски проблеми са незадължителни. Тези, които се интересуват да научат повече за JavaScript скриптове на по-високо ниво и основите на създаване на скриптове във Visual Basic и AppleScript, могат да се обърнат към подробно ръководствоот Adobe (включени са файлове с документация заедно с примерни скриптове и могат да бъдат намерени в папката Scripting).

Теоретични аспекти на работата със скриптове

Adobe Illustrator включва няколко готови скрипта, насочени към решаване на най-често повтарящите се задачи, включително скриптове за експортиране на изображения във формати SVG, PDF и Flash. Включените скриптове се стартират с командата Файл=>Скриптове(Файл => Скриптове) (фиг. 1) и се съхраняват в папката Предварителни настройки\Скриптове. Освен това можете да използвате демонстрационни скриптове, включени в документацията във вашата работа, можете да ги изберете от папката Скрипт\ПримерСкриптове, използващи командата Файл=>Скриптове=>Друг скрипт(Файл=>Скриптове=>Друг скрипт).

Библиотеката от вградени скриптове може да се разширява неограничено с нови скриптове, като ги изтегляте от интернет или създавате сами. И в двата случая допълнителните скриптове просто се копират в същата папка след рестартиране на програмата и стават достъпни от менюто Файл=>Скриптовезаедно с вградените скриптове. В случай на голям брой скриптове е по-разумно да ги запазите не директно в папката Предварителни настройки\Скриптове, но в отделни подпапки, чийто брой не е ограничен и всички те ще бъдат представени като отделни подменюта на командата Файл=>Скриптове(фиг. 2).

Почти всички последователности се записват в скриптове необходими действияи трансформации, които по-късно могат да се използват при работа с други изображения. Има обаче изключения: например обекти като стилове, четки, графики, мрежести обекти и спирали не могат да се създават в скриптове и освен това плъгините не могат да се стартират от скриптове.

Скриптовете на езика за програмиране JavaScript са обикновени текстови файлове с разширение js и следователно могат да бъдат създадени във всеки текстов редактор, включително бележник.

Концепция за обектно ориентирано програмиране

Документът, създаден в Illustrator, е набор от обекти, всеки от които принадлежи към един или друг тип (например вектор, растер, символ и т.н.) и има определени свойства (ширина на границата, цвят на запълване и т.н.). Освен това всеки обект принадлежи към определен документ, намира се на неговия специфичен слой и може да бъде подложен на определени действия (преместване, копиране, дублиране и т.н.).

Като цяло, всички тези принципи са валидни по отношение на обектно-ориентираното програмиране, с единствената разлика, че типовете обекти тук обикновено се наричат ​​класове, а разрешените действия по отношение на обекти се наричат ​​методи, но свойствата също се наричат ​​свойства тук . За да разберете по-добре връзката между класове и обекти, можете да мислите за клас като вид план за създаване на обекти. Според този чертеж се произвеждат различни обекти, които имат едни и същи основни характеристики, но всеки обект съществува независимо от другите, тоест промяната на неговите характеристики по никакъв начин не засяга характеристиките на други обекти. Например, всички символични обекти имат една и съща природа, но всеки от тях ще има свои собствени размери, собствени цветови настройки и т.н.

В JavaScript всеки тип обект, метод и свойство има собствено запазено име (или операнд), например pathItemsозначава векторен обект, symbolItemsсимволичен обект, RasterItemsрастерен обект, GroupItemsгрупов елемент, Изборизбран елемент и др. (Вижте ръководството за скриптове за пълния набор от запазени имена.)

На всеки слой на даден документ може да има много обекти, така че всички обекти, разположени на който и да е от слоевете, се комбинират в масиви, в които обектите се различават един от друг по номера (номерирането започва от нула). В резултат на това достъпът до конкретен обект включва последователно указване на думата приложение (съкращение от приложение, което означава, че обектът се отнася до зареденото приложение), името на документа, номера на слоя, името на класа и номера на елемента в съответния масив. . Например дизайнът app.activeDocument.layers.pathItemsтова е обръщение към първия векторен обект по отношение на дълбочината, разположен в активния документ на най-горния слой (имайте предвид, че номерирането на слоевете също започва от нула).

Получените доста дълги структури могат лесно да бъдат съкратени. Тук можете да пропуснете посочването на компоненти на името, които са ненужни в този конкретен случай (по-специално, ако има само един слой в документа, тогава не е необходимо да го посочвате). Можете да използвате препратки към имена, като въведете съкратено име, за да посочите част от конструкция на име, която ще трябва да се повтаря много пъти (такива имена се наричат ​​променливи на език за програмиране). По-добре е да присвоите имена със значение, за да опростите ориентацията в тялото на кода. Например, ако първо въведете конструкцията mypathItems=app.activeDocument.layers.pathItems, тогава разглежданият раздел от код ще има формата mypathItems.

Не трябва да използвате думите, използвани в JavaScript за обозначаване на класове, свойства и методи като имена, тъй като това може да доведе до непредвидими резултати. Пример за неправилно дефинирана променлива strokeWidth=app.activeDocument.layers.pathItems, дума strokeWidthизползвани за обозначаване на свойството Border Width).

Преди да започнете да експериментирате със скриптове, трябва да запомните няколко правила:

  • Имената на променливите са чувствителни към главни и малки букви (т.е. mypathItemsИ MyPathItemsще се окажат напълно различни променливи);
  • Номерът на елемента на масива винаги се посочва в квадратни скоби;
  • всяка скриптова конструкция (такива конструкции се наричат ​​оператори) завършва със символа „;“ или със затварящата фигурна скоба „)“. Вторият вариант се среща само в тези случаи; когато тази конструкция вече съдържа отваряща фигурна скоба “(”;
  • номер на затваряне фигурни скобинапълно съвпада с броя на отварящите се;
  • По-добре е да поставите всеки нов дизайн върху нова линия, а конструкциите, поставени във фигурни скоби, се отпечатват най-добре с отместване на реда (фиг. 3). Въпреки че тези техники не са задължителни, те значително опростяват ориентацията в създадения скрипт и ви позволяват да контролирате броя на отварящите и затварящите фигурни скоби.

Принципът на писане и отстраняване на грешки в скриптове

Въпреки че JavaScript е много лесен за научаване, той все още е език за програмиране. На практика това означава, че доста често скриптовете започват да работят правилно само след отстраняване на грешки, което включва коригиране както на очевидни, така и на скрити грешки. Очевидните грешки означават неправилни езикови конструкции, неправилен синтаксис, опити за достъп до несъществуващи променливи и т.н. (Illustrator ги докладва, когато се опитате да стартирате скрипта). Причината за появата на скрити грешки е неправилен алгоритъм и такива грешки могат да бъдат отгатнати само чрез внимателен анализ на всички операции на скрипта.

Преди скриптът да заработи, той ще трябва да бъде редактиран и стартиран отново повече от веднъж, така че е по-добре веднага да поставите скрипта в менюто Файл=>Скриптове(Файл => Скриптове), вместо да го избирате ръчно всеки път, когато използвате командата Файл=>Скриптове=>Друг скрипт(Файл=>Скриптове=>Друг скрипт). За да направите това, отворете Notepad, запишете празен файл с разширение js в папката Presets\Scripts и рестартирайте програмата. Препоръчително е да посочите специално един елемент в менюто за отстраняване на грешки в скриптове Файл=>Скриптове, например с името отстраняване на грешки, в този случай, когато създавате следващия скрипт, можете първо да го поставите във файла debugging.js в папката Предварителни настройки\Скриптове, след това го припомнете (удобството е, че този скрипт ще бъде незабавно видим в менюто на програмата Illustrator) и след отстраняване на грешки го запазете в същата папка, но под лично име.

Овладяване на най-простите JavaScript конструкции

Преди да преминем към примери за създаване на скриптове, които могат да автоматизират процеса на решаване на определени дизайнерски проблеми, нека да разгледаме няколко прости образователни примера, които, въпреки че нямат голяма практическа стойност, ще ни помогнат да разберем принципите на използване на най-разпространения език конструкти. За да направите това, създайте празен файл debugging.js в Notepad и го запазете в папката Presets\Scripts. След това изтеглете Illustrator и създайте нов документ, поставяйки в него три векторни контура, например три правоъгълника с широка граница (фиг. 4). Обърнете внимание на разположението на обектите в палитрата на слоевете: обектът, разположен в най-долната част на слоя, е създаден първи и следователно ще се появи под номер 0 в различни масиви; Докато се движите нагоре в палитрата със слоеве, номерата на обектите ще се увеличават.

Въведете следните редове във файла debugging.js

mypathItems = app.activeDocument.layers.pathItems;

mypathItems.strokeWidth=2,5;

mypathItems.strokeWidth=3,5;

mypathItems.strokeWidth=2,5;

и запишете файла под същото име (фиг. 5).

Дизайн mypathItems = app.activeDocument.layers.pathItemsозначава създаване на променлива с име mypathItems, благодарение на което ще бъде възможно да се намали достъпът до всички обекти на първия слой на активния документ. Линия mypathItems.strokeWidth=2,5показва, че ширината на границата (свойство strokeWidth) за първия обект ще стане равен на 2,5 пиксела. Останалите линии са идентични.

Превключете към изображението в Illustrator и стартирайте създадения скрипт с командата Файл=>Скриптове=>отстраняване на грешки(Файл=>Скриптове=>Отстраняване на грешки). Резултатът ще бъде промяна в ширината на границата: за първия и третия обект с 2,5 пиксела, а за втория с 3,5 пиксела. Тъй като има само един слой в документа, разглежданият дизайн може да бъде по-кратък (фиг. 6).

На практика същите трансформации (както в в такъв случайпромяна на ширината на границата) най-често се извършват върху няколко или дори всички обекти. Изброяването им ръчно в скрипт, дори само копиране на редове, отнема доста дълго време; Освен това това е изпълнено с ненужни грешки и усложнява програмния код. В такива случаи те прибягват до цикли; ако в документа присъстват същите три правоъгълника, намаляването на границата в цикъла за всички обекти до стойност от 0,5 пиксела е показано на фиг. 7. Въведете тези редове във файла debugging.js, запазете и стартирайте скрипта, за да обработите работещото изображение. Модифицираният скрипт беше допълнен с оператор за цикъл:

f или (условие на цикъл)(

тяло на примка

Условието на цикъла може да изглежда различно, но в повечето случаи може да бъде представено от конструкцията i=0;i<имя_объекта.length;i++ , което означава промяна на променливата i с една единица нагоре от нула, докато нейната стойност съвпадне с броя на обектите ( дължина) в активния слой на активния документ. Тялото на цикъла е ограничено от двете страни с фигурни скоби и може да включва един или няколко реда (в зависимост от броя на действията, извършени в цикъла), всеки от които завършва със символа „;“.

Нека сега се опитаме да променим скрипта, така че границата да се променя само когато има избрани обекти в изображението и в същото време да се запознаем с оператора за условен скок, който най-общо изглежда така:

ако (условие) (

набор от действия 1

набор от действия 2

Тази конструкция означава, че ако условието е вярно, се изпълнява първият набор от действия, а в противен случай вторият. В най-простата си форма условието може да бъде представено като равенство или неравенство и всеки набор от действия е ограден във фигурни скоби и може да се състои от едно или повече действия, всяко на отделен ред и завършващо със символа „;“. Опитайте да промените скрипта според фиг. 8 и го тествайте на практика. В този случай скриптът беше допълнен с нова променлива docSelected, използван за достъп до разпределени обекти в цикъл (променливата на цикъла се увеличава, докато се изравни с броя на разпределените обекти) и се появява в условен оператор, който тества наличието на разпределени обекти. Както показва проверката, този скрипт не създава грешки при изпълнение, но не работи правилно: когато има избрани обекти, ширината на границата действително се променя, но не за онези обекти, които са били избрани, а само за съответния брой обекти в ред. Проблемът е в линията mypathItems[i].strokeWidth=0,5и ще бъде разрешено, ако бъде заменено с дизайн docSelected[i].strokeWidth=0,5(фиг. 9). Проверете това сами, за да се уверите, че ширината на границата сега се променя само за тези обекти, които са били избрани преди това.

Накрая ще добавим финален щрих към скрипта - ще го добавим така, че ако няма избрани обекти, на екрана да се появи съответно съобщение (фиг. 10 и 11). За показване на съобщение ще използваме оператора Тревога, което гарантира, че произволен текст, въведен преди това в дизайна, се показва на екрана Тревогав кавички. Заслужава да се отбележи, че операторът ТревогаМоже да бъде полезно не само ако е необходимо да придружите скрипта с някои съобщения. Може да бъде много по-полезно при отстраняване на грешки в скрипт, когато причините за неправилната работа на скрипта са напълно неясни. Използвайки оператора Alert в такива ситуации, можете да наблюдавате как програмата разбира тази или онази инструкция и по този начин можете да определите причината за неправилната работа на програмния код.

Примери за създаване и използване на скриптове

Промяна на дизайна на обекти от същия тип

Често е необходимо бързо да се променят определени свойства на всички обекти от един и същи тип в документ. Например, трябва да промените цвета на запълване на обекти или леко да намалите или увеличите размера. В ръчната версия в този случай ще трябва да изберете всички обекти, които ви интересуват, което е доста досадно, ако има значителен брой от тях. Затова създайте серия от скриптове за такива операции, които извършват тази работа автоматично. Да кажем, че трябва леко да намалите размера на голям брой символни изображения в готов документ ( symbolItems) (фиг. 12) и не е известно предварително с колко пиксела е необходимо да се намалят стойностите на височината ( височина) и ширина ( ширина). В този случай трябва да го намалите с 1 пиксел и ако това не е достатъчно, скриптът може да се стартира многократно, за да го намали допълнително. За да намалите стойността на имот с определена сума в сравнение с първоначалната стойност, трябва да добавите знак „-“ пред знака за равенство в имота в нашия случай, съответната конструкция ще приеме формата: mysymbolItems[i].height-=1. По същия начин можете да увеличите стойността на даден имот, като въведете знака „+“ вместо знака „-“. Създаденият скрипт е показан на фиг. 13, а резултатът от работата му е показан на фиг. 14.

Скриптовете могат да се използват не само за промяна на едно или друго свойство на обекти, но и за цялостното им проектиране, което най-често става чрез прилагане на графичен стил и може да бъде автоматизирано. Графични стилове ( graphicStyles), подобно на много други обекти, се комбинират в масиви и могат да бъдат достъпни чрез номер. Например, нека създадем скрипт, който ще прилага определен стил към всички векторни обекти, чиято ширина на границата е по-малка или равна на 1 (всъщност принципът на проверка на изображения зависи от характеристиките на тяхното създаване и може да бъде много различен). Пример за такъв скрипт е показан на фиг. 15.

Удебелени граници, които са твърде тънки

Доста често след различни трансформации се оказва, че границите на някои обекти се оказват твърде тънки и могат да бъдат практически невидими (фиг. 16). След това ширината на границата на такива обекти трябва да се увеличи, а правенето на това ръчно с голям брой обекти е много проблематично. Много по-удобно е да направите тази работа с помощта на подходящ скрипт, който ще отнеме само няколко секунди. Задачата на такъв скрипт е да премине през всички обекти, а тези, които имат по-малка ширина на границата (например 0,25 пиксела), увеличават ширината на границата до 0,5 пиксела. Останалите граници трябва да останат непроменени. Създаденият скрипт е показан на фиг. 17, а резултатът от работата му е показан на фиг. 18.

Форматиране на текстови обекти

Често на някакъв етап от дизайна на документа има желание да се промени принципът на дизайн на текстовите обекти, включени в него. Избирането на голям брой обекти обаче е досадна задача. В такива ситуации можете да създадете скрипт, който може да обикаля текстови обекти и да променя техните характеристики по определен начин, например намаляване на размера на шрифта, неговия цвят, шрифт, позиция и т.н.

Можете да измислите много опции за такива скриптове, но ние ще се съсредоточим върху увеличаването на размера на шрифта с 1 единица и промяната на цвета му за всички текстови обекти в документа (фиг. 19). Това включва преминаване през обекти от класа текстови рамки(така се обозначават текстовите обекти) и коригиране на техните свойства characterAttributes.size(размер на шрифта) и fillColor(в този случай цветът на знаците). Подобен скрипт е показан на фиг. 20, а резултатът от работата му е показан на фиг. 21.

Подравняване на височината и ширината на обектите

Когато създавате организационни, технологични и други видове бизнес диаграми, трябва да работите с голям брой идентични обекти, например обикновени правоъгълници, които се различават по размер поради различната дължина на текста, поставен в тях (фиг. 22) . В крайна сметка всички тези елементи често трябва да са еднакви по височина. Подравняването им ръчно е, разбира се, неприятно, но тази операция може бързо да се извърши с помощта на скрипт.

Нека създадем скрипт, който ще подравни височината на всички обекти с височината на контролния обект, създаден последно. Тя трябва да се създаде чрез ръчно задаване на желаната височина (фиг. 23), като ширината на обектите не трябва да се променя. За да направите това, достатъчно е просто да преминете през всички обекти в цикъл, като преизчислите новата височина за всеки според обичайната пропорция и след това я промените. За да променим височината, ще използваме метода преоразмеряване (scaleX, scaleY), Където мащаб XИ мащаб Yпромяна в стойностите на ширината и височината като процент (в сравнение със старите стойности). В нашия случай трябва само да изчислим стойността мащаб Y, А мащаб Xще бъде равно на 100, тъй като ширината остава непроменена. Скриптът, който създадохме, е показан на фиг. 24, а резултатът от работата му е показан на фиг. 25.

Има и ситуация, когато обектите трябва да бъдат подравнени по ширина, оставяйки височината им непроменена. Скриптът също може да помогне за автоматизирането на процеса, който може да бъде получен от предишния чрез замяна на свойството височина(височина) на имот ширина(ширина) и редактиране на принципа на мащабиране на обекта в метода за преоразмеряване ( мащаб X, мащаб Y), където в този случай стойността трябва да остане непроменена мащаб Y(фиг. 26).

Форматиране на таблица

Ако редовно работите с обекти с подобен дизайн, например таблици, чието съдържание, като броя на редовете, непрекъснато се променя, но стилът на проектиране остава същият, тогава можете значително да ускорите процеса на проектиране на таблица, като създадете подходящ сценарий. Да приемем, че всички клетки на таблицата са създадени в бяло и нямат граници (фиг. 27). Когато проектирате, трябва да попълните заглавните клетки с определен цвят (с други думи, да промените стойността на свойството fillColor) и добавете тънка рамка от 0,5 пиксела към тях, което включва промяна на свойствата strokeColorИ strokeWidth.

В този случай под заглавни клетки имаме предвид клетки, които имат определена лява граница - в нашия пример 40 пиксела. Цветът на запълване на клетката ще се различава от цвета на рамката, така че трябва да създадете две цветни променливи, да ги наречем цвятНовИ цвятНов1, за всеки от които ще трябва да определите червения, зеления и синия компонент на цвета. След това ще трябва да преминете през всички векторни обекти в цикъл и да промените свойствата fillColor, strokeColorИ strokeWidthтези с лява граница от 40 пиксела. Създаденият скрипт е показан на фиг. 28, а резултатът от работата му е показан на фиг. 29.

Моля, обърнете внимание, че в този пример самите клетки (т.е. съответните правоъгълни обекти) присъстваха в документа, така че техните параметри можеха да бъдат променени. Това означава, че когато таблицата е била създадена, нейните клетки са били начертани като правоъгълни обекти и след това са били копирани в клипборда и дублирани с командата Редактиране=>Поставяне отпред(Редактиране=>Поставяне отпред). След това текстът беше написан в копията на клетките, групирани заедно със съответната правоъгълна клетка. С различна технология за създаване на таблица ще е необходим напълно различен скрипт за нейното проектиране.

Експортирайте и запазете отворени документи

Случва се, че след работа с няколко или дори много документи, в края на работата всички те трябва да бъдат запазени или експортирани в желания формат. Обмислете опцията за експортиране на всички отворени изображения в jpg формат. Когато създавате скрипт за извършване на тази операция, първо, трябва да се уверите, че изображенията се записват с различни имена и в определена папка, и второ, трябва по някакъв начин да превключвате от документ на документ, при условие че имената на документите са произволни.

За да разрешите първия проблем, има два начина: или посочете целевата папка, както и името на документа ръчно по време на изпълнение на скрипта (но това е доста досадно, особено в случай на голям брой изображения), или формирайте папката и име на документ според определен принцип. Ще поемем по втория път, тоест ще зададем фиксирана папка като целева папка C:/temp/, ще оставим името на документа същото, а разширението jpg ще бъде присвоено автоматично, като изберете желания формат за експортиране. В резултат на това съответният скриптов ред в в този примерще изглежда така: fileSpec = нов файл ("C:/temp/" + име на документ), където doc.name името на активния документ.

Вторият проблем - превключването от документ към документ - в скрипта ще бъде решен автоматично поради факта, че всеки вече експортиран документ ще бъде незабавно затворен, а зареденият преди него ще стане активен. Трябва обаче да имате предвид, че броят на работните документи в този скрипт ще бъде променлива стойност, така че няма да е възможно да се използва като горна граница за изпълнението на цикъла. Следователно, преди цикъла, трябва да създадете допълнителна променлива за съхраняване на първоначалния брой документи docLength=documents.length.

Освен това затворете изображенията по-добър екип doc.close( SaveOptions.DONOTSAVECHANGES), а не doc.close(), защото във втория случай програмата ще изисква подходящо потвърждение при затваряне на всяко изображение. Скриптът за решаване на формулираната задача е представен на фиг. тридесет.

Провеждане на пакетна обработка на файлове

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

Представете си, че има много файлове, разработени от различни потребители, и че те трябва да бъдат намалени по размер възможно най-много и пренаписани в един единствен EPS формат. За всеки файл трябва да извършите две операции: да премахнете ненужните четки, графични стилове, символи и цветове, които натежават файла, и след това да запишете изображението във формат EPS. Теоретично можете да поставите и двете операции в един скрипт, който след това се стартира в пакетен режим от палитрата Действия(Действия), но на практика ще трябва да го направите по различен начин, като използвате макрос Изтрийте неизползваните елементи от палитратаот комплекта Действия по подразбиране, който отговаря за премахването на неизползваните четки, графични стилове, символи и цветове. За съжаление, възможностите на JavaScript са донякъде ограничени, така че за да разрешите този проблем, ще трябва да използвате командите docRef.swatches.removeAll(), docRef.symbols.removeAll()и d ocRef.graphicStyles.removeAll(), което ще доведе до премахване на всички цветове, символи и т.н., а не само неизползваните, които не могат да бъдат разпознати оптимално решение. Можете да премахнете ненужните графични елементи един по един, но това ще отнеме много време и усилия. Благодарение на макроса Delete Unused Palette Items, действието, от което се нуждаем, ще бъде извършено за няколко секунди, така че ще се съсредоточим върху комбинирането на скрипт и макрос.

Отворете палитрата Действия(Макроси) с помощта на командата Прозорец=>Действия(Window=>Actions) и създайте нов набор от действия в него, като щракнете върху бутона Създаване на нов набор(Създаване на нов набор), разположен в долната част на палитрата. Изберете макрос Изтрийте неизползваните елементи от палитрата, дублирайте го с командата Дубликат(Дубликат) и плъзнете дублиращата се операция в създадения набор от макроси. Сега трябва да допълните макроса с операцията за запазване на файла във формат EPS, специално създаден скрипт ще отговаря за тази операция SaveAsEPS(фиг. 31). Ще запазим файловете под оригиналните им имена в папката C:/temp/.

Изглежда по-логично да стартирате скрипта като втори макрос в създадения набор от действия, но това ще бъде неудобно за по-нататъшна обработка на файлове. Факт е, че в пакетен режим можете да изпълните само един макрос, така че за да може операцията по обработка на файла да се извърши в една стъпка, допълнете макроса Изтриване на неизползвани елементи от палета, като изпълните скрипт и променете името на макроса. Изпълнението на скрипт може да бъде включено в комплекта с помощта на командата Поставете Елемент от менюто (Вмъкване на елемент от менюто) меню на палитрата Действия, като посочите командата в прозореца, който се отваря File=>Scripts=>SaveAsEPS(File=>Scripts=>Save as EPS), фиг. 32.

За да стартирате създаден макрос в пакетен режим от менюто на палитрата Действияотворете командата Партида (Пакетна обработка), в диалоговия прозорец, който се отваря, изберете набор от макроси в списъка Комплект(Задаване) и след това желания макрос в списъка Действие(Действие). Следващ в списъка Източник(Източник) задайте опция Папка(Папка), щракнете върху бутона Избирам(Изберете) и посочете предварително създадената папка източник. В списъка Дестинация(Приемник) изберете опция Запази и затвори(Запиши и затвори) (Фиг. 33) и щракнете върху бутона OK. Резултатът ще бъде появата на намалени файлове в папката C:/temp/всички те ще бъдат в EPS формат.

Обикновено, когато става въпрос за дизайнерски програми, основно внимание се обръща на артистичните възможности на приложенията - инструменти за рисуване, филтри и т.н. Но в ежедневието трябва да се справяте и с рутина. За щастие софтуерът от Adobe (включително Illustrator) започна да поддържа писане на скриптове (скриптове), които ви позволяват да прехвърлите монотонната работа върху раменете на машината. И вече не работиш в Illustrator - управляваш го, а това, както се казва в Одеса, са две големи разлики!

Признавайки, че по-голямата част от потребителите на Illustrator са художници и дизайнери, които не са се сблъсквали с програмиране, ще се опитам да направя преглед на функционалността на скриптовете, така че читателите да не останат с впечатлението, че тази дейност изисква някакъв вид „специален“ начин за мислене и дългосрочно специално образование. В същото време се извинявам на професионалистите за някои опростявания във формулировката в името на достъпността на материала. Самият автор някога е бил в подобна ситуация и отначало не е смятал тази област за своя епархия. Но прекарах по-малко от две седмици в учене и сега мога да кажа: имайки минимално разбиране за програмиране, овладяването на скриптове е напълно осъществима задача.

Скриптовете за Illustrator могат да бъдат написани на всеки език: JavaScript, Visual Basic (Windows) и AppleScript (Mac OS). Тъй като повечето читатели са запознати с първия (много печатни дизайнери също успешно създават интернет страници, които го използват), ние ще разчитаме на него. В допълнение, JavaScript е независим от платформата: скриптовете, написани в него, ще работят и в двете операционни системи - Windows и Mac OS. Начинът за достъп до елементи е обектно-ориентиран: за да разберете например дебелината на границата на втория векторен елемент на първия слой, трябва да напишете следната конструкция:

app.activeDocument.Layer.pathItems.strokeWidth

Това може да се тълкува по следния начин: първо се посочва обектът най-високо нивов йерархията на Illustrator (приложение - приложение, съкращение от приложение), след което изборът постепенно се стеснява до конкретен елемент (в активния документ работете върху първия слой; след това в посочения слой изберете втория най-дълбок векторен обект и разберете дебелината на границата от него). Този метод за достъп до елементи е много удобен, тъй като ви позволява лесно да навигирате в разнообразието от техните типове, които съществуват в редактора. Пълният модел на връзките може да бъде намерен в добре написано описание (включено в комплекта Illusstartor).

Квадратните скоби показват, че елементът е част от масив. Масивът е съвкупност от няколко обекта, обединени по определена характеристика. Например слоеве, pathItems, RasterItems, GroupItems, Selection и т.н. са масиви, състоящи се от обекти от един и същи тип (слоеве на документи, векторни пътеки, растерни изображения, групи и т.н.). В скоби се посочва индексът (поредният номер) на необходимия елемент в масива. По този начин записът Layer обозначава първия слой, тъй като първият индекс винаги е „0“.

Обектите също могат да бъдат достъпни чрез имената им Layer[“Chart”]. За целта елементът трябва да бъде изрично наименуван - ръчно, с помощта на палитрата на слоевете (двойното щракване върху името на обекта отваря прозорец с неговите свойства) или от скрипт. За да не пишете тромава конструкция всеки път, изброявайки цялото „родословие“, използвайте препратки:

pI = activeDocument.Layer.pathItems;

Тогава горната част от кода ще изглежда така: pI.strokeWidth.

Слоят може да не бъде достъпен всеки път като обект, ако всички операции се извършват на един и същ активен слой. И имайте предвид, че регистърът на буквите е важен в имената на променливите: ако напишете pI първия път и pi втория път, скриптът ще генерира грешка и няма да работи.

В обектно-ориентиран модел има: самото приложение, класове (типове обекти или, използвайки по-позната концепция, съществителни: слоеве, векторни обекти, групи и т.н.), методи (начини за взаимодействие с тях - глаголи : преместване, дублиране и т.н.) и свойства (прилагателни: strokeWidth, fillColor, selected и т.н.). За да улесните навигацията си, представете си, че приложението е къща, в която има различни обекти - аналог на класове (прозорци, врати), които имат определени свойства (пластмаса, дърво), с които извършват определени действия - методи (отворени , близо). Разбирайки същността на такава йерархия, е много по-лесно да разберете скриптовете.

Всъщност Горно нивоима приложение и, буквално следвайки правилото за подчинение на обектите, то трябва да бъде посочено за всяко действие. За по-голяма простота връзката към приложението може да бъде пропусната - освен в случаите, когато наистина трябва да знаете някои от неговите свойства (например наличните шрифтове - app.fonts).

Класовете Layer, Group, Text могат да съдържат обекти от същия клас, които също могат да имат деца. Полезна характеристика на обектния подход е наследствоИмоти. Така всички векторни пътеки (pathItems) са деца на по-общ клас - елементи на страница (pageItems). Следователно, присвоявайки определени свойства на pageItems, ние автоматично ги присвояваме на pathItems.

Въпреки сходството си, слоевете и класовете на слоевете все още са различни. Първият е колекция от всички слоеве в документа, вторият е само специфичен, техните методи и свойства се различават съответно. Методите add и removeAll могат да бъдат приложени към първия, а всички операции, налични за отделен слой, могат да бъдат приложени към втория. Обектът се достъпва директно като елемент от съответния масив – в нашия случай чрез Layers, Layers и т.н.

Избраният елемент отговаря на отделен клас - селекция, който също е масив (може да се селектира група от обекти). От особено значение в Illustrator са класовете pluginItems, Colors и Views. Първият има много ограничения поради факта, че обекти от този тип не са „местни“ за Illustrator. Те включват Blend, Envelope, Mesh и подобни елементи. Ще разгледаме характеристиките на останалите, докато ги използваме.

За да бъде скриптът „видим“, той се поставя в папката Presets.Scripts, намираща се в папката, в която е инсталирано приложението. Ще обмислим реални примери(това ще ви позволи незабавно да почувствате полезността на скриптовете) и да ги напишете под Illustrator CS, тъй като скриптовете му са по-гъвкави от предишните версии.

Пример 1: Обединяване на обекти

Нека започнем с най-простото нещо - ще напишем скрипт, който свързва подчинени обекти с линии към основния (честа задача при създаване на блок-схеми, техническа документация и подобна работа). И ние ще засегнем такива основни въпроси като работа с избрани обекти, създаване на нови слоеве, поставяне на обекти, промяна на техния ред, създаване и включване на криви в сложна пътека.

Работата с този вид документи включва широко използване на символи - извършването на промени в тях автоматично актуализира всички създадени копия. Въпреки това, Illustrator не винаги работи правилно с такива елементи: случва се да не чете имената на обекти, които са копия на символи. В резултат на това избирането им по име не е възможно. Обработка на всички елементи от този типняма практическа полза в текущия слой. В резултат на това бях склонен да предпочета алтернативен вариант, при който първо трябва да изберете необходимите обекти (най-лесният начин е да изберете един символ и да потърсите неговите копия с помощта на командата Select.Same Instances) и след това да изберете референтен елемент, с който ще бъдат свързани.

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

sel = activeDocument.selection
ако (sel.length<2) {br>предупреждение („Няма достатъчно обекти за продължаване! \nИзберете поне 2 обекта и последния — целеви обект!“) )
иначе(

Предупреждението е стандартна функция на JavaScript, която показва прозорец с посочения текст и бутон OK. "\n" означава нов ред и се използва, за да запази размера на прозореца малък. Текстът, който се показва в прозореца, трябва да бъде ограден в кавички.

Подготвителен етап

Нека вземем координатите на центъра на референтния обект. Тъй като се съгласихме, че е най-горният, неговият номер (индекс) е “0” (sel). За да изчислим координатите, ще използваме свойства на обекта като позиция, ширина и височина. Стойностите на позицията се съхраняват в масив, състоящ се от двойка стойности - координати съответно по оста X и Y. Следователно всеки трябва да се разглежда като позиция и позиция.

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

Получихме координатите на центъра на референтния обект и ги присвоихме на две променливи за по-нататъшна употреба. Вторият ред съдържа знак „—“, тъй като долният ляв ъгъл на документа се приема за референтна точка в Illustrator, а позицията дава координатите на горния ляв ъгъл на елемента.

Тъй като удобството играе важна роля при работа с документ, ние ще се уверим, че създадените редове са на отделен слой - такава структура ще помогне да се поддържа ред в оформления с различна сложност.

Създаваме нов слой - той, както всеки елемент на Illustrator, се създава чрез метода add(), приложен към съответния клас обект. В скоби можете да посочите параметрите на действието: посочете целевия обект (може да бъде например слой или дори нов документ, както и позицията на местоназначението). За разлика от повечето методи, няма допълнителни параметри за add, така че за да го прехвърлим на най-високо ниво ще използваме специален метод - zOrder, на който посочваме BRINGTOFRONT като параметър (запазена константа, пълен списък на която е даден в документацията). По принцип, ако в документа има само един слой, няма нужда да се указва конкретно позицията на новия, тъй като Illustrator винаги го поставя над текущия. Ако обектите, които трябва да бъдат свързани, не са разположени на най-горното ниво, ще е необходим вторият ред.

нов слой = activeDocument.layers.add();
нов слой.ZOrder(ZOrderMethod.BRINGTOFRONT);

Първият ред може да се прочете така: създайте нов елемент, като увеличите (добавите) броя на обектите от необходимия тип (слоеве) и присвоите връзка към новосъздадения елемент към променливата newlayer. В началния момент слоят е празен, тъй като все още нищо не е поставено в него. За да опростим ориентацията в сложно оформление, нека дадем на слоя името „Съединители“ (използвайки метода за име) - както можете да видите, имената на методите ясно показват действията, които се извършват.

newlayer.name = „Съединители“;

За образователни цели ще създадем не отделни свързващи линии, а обединени в обект от типа Compound Path - за по-лесно редактиране. Създаването на такъв обект повтаря вече познатата процедура, този път приложена към класа "compoundPathItems":

newCompoundPath = activeDocument.compoundPathItems.add();

Тъй като в последната стъпка създадохме нов слой, той е активен - съответно създаваните обекти ще бъдат разположени върху него и няма нужда да го указваме конкретно (activeDocument.newlayer).

Определяне на координатите на подчинени елементи

Ще комбинираме този процес с изхода на самите свързващи линии, тъй като техният брой трябва да съответства на броя на обектите. Започваме да обикаляме всички избрани елементи един по един (“i++” означава увеличение с единица) и четем техните координати. Нека започнем търсенето не с първия обект от масива Selection (както си спомняте, това е референтният обект), а с втория (sel). Следните редове вече са ни познати:

за (i=1; i< sel.length; i++) {
obj_x= sel[i].position + sel[i].width
obj_y = sel[i].позиция — sel[i].височина

След като получихме координатите на центъра на дъщерния елемент, ще започнем да създаваме линия, свързваща го с референтния. За всеки избран елемент създаваме нов обект - векторен път, включен в класа CompoundPath, увеличавайки общия брой пътища:

newPath = newCompoundPath.pathItems.add();

За да зададете прости пътища в Illustrator, има метод setEntirePath, чиито параметри са масив от координати на началната и крайната точка - които, както вече знаем, на свой ред са посочени като масиви от две стойности (позиции по две оси). Накрая завършваме условието „ако нещо е избрано“, въведено в самото начало.

newPath.setEntirePath(Масив(Масив(refObj_x, refObj_y), Масив(obj_x, obj_y))); )

Сценарият е готов. Както можете да видите, в него няма нищо сложно: имената на методите разкриват тяхната същност, а обектно-ориентираният модел помага да се разбере ясно йерархията на обектите на Illustrator. Скриптът няма особена практическа стойност (той е по-скоро образователен), но с неговия пример бяха разгледани много основни понятия, на които ще разчитаме в бъдеще (работа с избрани обекти, принципът на тяхното номериране в масива за избор, определяне на координати, създаване на нови слоеве, изходни линии).

Пример 2: Откриване на твърде тънки контури

Операциите за мащабиране във векторната графика се използват много активно. Ето защо при намаляване на размера на обекти с тънки линии (ако опцията Мащаб на щрихи е активирана), дебелината на щриха често става под 0,25 pt (стойността, след която линиите стават слабо видими) и е причината те да изчезнат при отпечатване на мастиленоструен принтер. В Illustrator няма вградени функции за търсене на обекти със стойности на щрихи, по-малки от посочените. Много е трудно да ги намерите ръчно - ще трябва да изберете всеки обект поотделно, което бързо ще ви разубеди да се занимавате с подобни проверки. Скриптът значително ще опрости операцията.

Самият скрипт е малък в най-простата си форма, но ние ще си поставим за цел да го направим по-универсален - ще разширим функционалността, като ни позволи да посочим минималната дебелина в диалоговия прозорец. Разбира се, можете да кодирате тази стойност в самия скрипт и, ако е необходимо, да я коригирате всеки път, но, разбирате ли, това е неудобно. Ние също така ще осигурим задаване на избрания елемент като референтен обект с минималната приемлива стойност на границата. В същото време за статистика ще преброим броя на елементите с променена дебелина и ще ги подчертаем за яснота.

Целият скрипт е разделен на две части: начална (четене на стойността от диалоговия прозорец или от избрания елемент) и крайна (търсене сред всички обекти в документа и пренасочване на дебелината на рамката). В допълнение към демонстрирането на достъпа до обекти на Illustrator, ще разгледаме създаването на мини интерфейс за въвеждане на персонализирани стойности.

Въвеждане на стойности

Първите два реда ще бъдат идентични с предишния пример, с изключение на това, че ще се появи „0“ вместо „2“, тъй като преди стартирането на скрипта трябва да определим дали има избрани обекти. Сравнението се посочва с двоен знак за равенство (човек присвоява стойност).

var mySel = app.activeDocument.selection;
var go = вярно;
if (sel == 0) (

Ако нищо не е избрано, минималната дебелина ще бъде зададена чрез диалоговия прозорец. Нека го покажем с помощта на стандартната JavaScript функция - подкана. Отваря прозорец с поле, в което можете да въведете стойност и да я използвате по-късно. Синтаксисът на функцията е следният: първо има подсказка, която ще се покаже в прозореца (като се има предвид унификацията на скрипта, няма да използваме кирилицата, тъй като често се показва неправилно), след това следва стойността, която ще бъде в полето за въвеждане по подразбиране. Има две предимства: възможността незабавно да зададете минималната приемлива дебелина и да посочите всяка стойност. Като създадете променлива, на която е присвоена стойността на функцията за подкана, след това можете да я използвате за свои собствени цели.

Гледайки напред, ще отбележа, че Illustrator не предоставя пълен достъп до всички типове обекти - някои са пропуснати. Затова ще предоставим визуализация не само на коригираните елементи, но и на тези, които са недостъпни за скрипта, за да не ги търсим ръчно - в крайна сметка те също могат да съдържат проблемни обекти. За да не показваме два диалогови прозореца (за стойността на дебелината и за определяне кои елементи да маркирате), ще използваме възможностите за обработка на низове на JavaScript. Факт е, че съдържанието на полето, попълнено от потребителя, е „низ“ (блок от информация), който може да съдържа произволен брой параметри (чрез разделители). Познавайки разделителя, стойностите на отделните параметри могат лесно да бъдат извлечени от низа.

Съответно подканващият текст на диалоговия прозорец ще бъде както следва: задаване на минималната дебелина на границата и условно число: „1“, ако искате скриптът да маркира коригираните елементи, „2“ - тези, които не могат да бъдат „ достигнат”.

стойност = подкана („Посочете прага на ширината на линията (в pt),\n Какво да изберете: коригирани обекти (1) или недостъпни (2)“, „0,25, 1“)

Първоначално ще зададем полето на 0,25 точки (мерните единици по подразбиране в Illustrator), но при промяната ще се използва новата стойност и „1“. „2“ трябва да се посочи само ако скриптът открие недостъпни обекти (ще се уверим, че той сигнализира за това в края на работата). И те ще станат подчертани, което ще ни спести от ръчно търсене (както знаете, вграденото търсене на Illustrator оставя много да се желае).

Подредихме стойностите за четене от персонализирано поле, нека да преминем към обработката им. Нека проверим дали полето наистина не е празно (знакът "!" обозначава отрицание, т.е. "!=" е еквивалентно на "не е равно", null е регистрирана дума за празна стойност). Ако има нещо в него, разделяме реда на отделни блокове с помощта на функцията за разделяне на JavaScript (ще дефинираме комбинация от знаци „,“ като разделител) и въвеждаме получените стойности в масива splitString. След това ще дадем на стойностите от масива описателни имена (първото ще определи дебелината, второто ще определи режима на работа).

ако (стойност!= нула) (
splitString = value.split(“, “);
тегло = splitString;
тип = splitString; )

Ако няма нищо в потребителското поле, спираме изпълнението на скрипта. Последната затваряща скоба е знак за изпълнение на условието, което сме задали в началото („ако нищо не е избрано в документа“).

иначе (go = false)

Ако референтният обект е специално избран

Сега нека напишем последователност от действия, ако умишлено сме избрали елемент, чиято дебелина на границата искаме да използваме като прагова стойност. Ще покажем предупреждение за по-нататъшни действия на скрипта, като използваме стандартната функция за потвърждение (създава диалогов прозорец с два бутона - и). Ако натиснете<Сancel>, работата спира, но ако сте съгласни, скриптът ще продължи да работи.

else ( selectedMsg = потвърждение („Ширината на щриха на избрания обект ще се използва като праг“)
if (selectedMsg != true) (
отидете = невярно;
) иначе (

Да преминем към основната част от сценария. Съзнателно не разглеждаме ситуацията, когато са избрани няколко обекта - в края на краищата, за да зададете дебелината на границата, е достатъчно да изберете само един. И каква стойност трябва да се използва, ако се окаже, че е различна за елементите? Както вече знаем, единственият избран обект ще има индекс „0“ и за да получи дебелината на рамката, Illustrator има свойството strokeWidth. Нека вземем предвид, че по принцип селекцията може да съдържа не само отделни елементи, но и част от текста (например произволно избран), който не е включен в нашите планове, така че преди да започнем работа, нека проверим с възможностите на JavaScript за да видите дали типът на избрания елемент принадлежи към масив:

if (sel isArray) (
тегло = sel.strokeWidth;

Тъй като се съгласихме да изберем само променени обекти, трябва да премахнем отметката от самата препратка (препращаме към нейното избрано свойство):

sel.selected = невярно; ) ) )

Сега сме напълно готови да изпълним основната задача на скрипта - търсене на обекти: стойността, която ще се използва като минимално допустима дебелина, се съхранява в променливата wei.

Обстоятелства

Нека го сравним с подобно свойство за всички обекти в документа. Можете веднага да преминете към търсенето, но използването на скрипта в ежедневната работа изисква да се вземат предвид допълнителни обстоятелства - оформленията често съдържат както заключени слоеве, така и отделни обекти. Следователно, въпреки че търсенето работи в тях, промени не могат да бъдат направени. За да осигурим цялостна проверка, ще добавим няколко операции към скрипта: проверка на елементите за съответствие с даден критерий, като същевременно ги отключваме, ако е необходимо, и запомняме индекса, за да ги върнем в предишното им състояние след проверката е завършена. Въвеждаме две променливи: първата за съкратен достъп до всички слоеве в документа, а с помощта на втората получаваме достъп само до заключените. Серийните номера на последните ще съхраняваме в масив, който ще създадем с JavaScript функцията new Array().

var dL = activeDocument.layers;
var blockedLayers = нов масив();

След това ще прегледаме всички слоеве и ще добавим поредния номер на заключените (свойство locked=true) към масива blockedLayers (използвайки функцията push от JavaScript), след което ще им позволим да бъдат редактирани (locked=false) .

if (go == true) (
for (i=0; i if (dL[i].locked == true) (
blockedLayers.push(i);
dL[i].locked = невярно; Преди това се съгласихме да изберем коригираните обекти, но след като скриптът приключи на заключени слоеве, няма да можем да направим това - трябва да покажем подходящо предупреждение. За целта използваме атрибута lockedPresence, който задаваме, ако поне един слой е заключен.

lockedPresence = вярно;

Ще повторим същото с отделни блокирани елементи. В най-простия случай е достатъчно да проверите всички векторни елементи (клас pathItems), които включват съставни пътища като подклас, така че нищо да не убегне от всевиждащото око на скрипта.

Подводни скали

В допълнение към разглежданата ситуация с блокиране има още един капан. Както вече беше отбелязано, някои елементи (по-специално Blend Group и Envelope) не са „местни“ за Illustrator, те принадлежат към специален тип pluginItem. Достъпът до такива обекти обаче не е предоставен в Illustrator; те са „неща сами по себе си“. Можем да ги „достигнем” само чрез клас от по-високо ниво – pageItems, чрез който най-малкото да установим наличието им и да изведем съответното предупреждение накрая. Той ще каже, че чрез стартиране на скрипта отново и указване на „2“ като втори параметър в полето за въвеждане, той ще маркира тези „черни кутии“.

pgI = activeDocument.pageItems;

За да съхраняваме индексите на блокираните обекти, ще създадем масив blockedPathes, а за да броим броя на променените, ще въведем коригираната променлива.

blockedPathes = нов масив();
коригирано = 0;

За всички обекти ще проверим дали принадлежат към типа PluginItem (свойство typename): ако присъстват, ще зададем атрибута pluginItemExist (състоянието му ще определи дали се показва предупреждение за наличието на такива елементи). В случай на повторна проверка (когато вторият параметър в полето за въвеждане е „2“) ще ги маркираме:

за (i=0; i< pgI.length; i++) {
if (pgI[i].typename==“PluginItem”) (
pluginItemExist = вярно
ако (тип ==“2”) ( pgI[i].selected = true)

И така, ние сме предвидили всички (или почти всички) възможни ситуации, които възникват по време на работа, и сме определили действия за тях.

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

Сега е време действително да проверите оформлението за съответствие с посочения критерий за кантиране. Нека вземем предвид, че сред обектите може да има такива, които изобщо нямат кант (определено от състоянието на атрибута щрих) - следователно те трябва да бъдат изключени от проверката.

if((pgI[i].strokeWidth< weight)&&(pgI[i].stroked)) {
if (pgI[i].locked == true) (
blockedPathes.push(i);
pgI[i].locked = невярно;

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

След това записваме наличието на заключени обекти (настройваме атрибута lockedPresence да показва предупреждение в бъдеще, че не всички променени могат да бъдат избрани) и избираме коригирания и присвояваме прагова стойност на границата му - и така нататък за всички елементи. За статистика, ние ще броим едновременно броя на променените обекти.

lockedPresence = вярно;
pgI[i].selected = true;
pgI[i].strokeWidth = тегло;
правилно++;

По-рано бяха обсъдени действия за маркиране на немаркирани елементи (тип ="2"). Сега нека да определим какво трябва да се случи в стандартна ситуация - по време на нормално търсене на потенциално проблемни обекти.

ако (тип =“1”) ( pgI[i].selected = true)

Възстановяване на състоянието на блокирани елементи

Изпълнихме основната задача - проблемните обекти бяха коригирани и маркирани. Остава само да се възстанови статуквото - да се върне всичко, което първоначално е било блокирано, в предишното му състояние. За да направим това, в текущия цикъл четем съдържанието на масива, където се съхраняват индексите на заключените обекти, и задаваме атрибута locked = true на всеки съответен елемент (методът shift показва последната въведена в него стойност от масива ). Тъй като общият брой на обектите е по-голям от заключените, трябва да се внимава цикълът на проверка да приключи след изпразването на масива.

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

След това ще предприемем подобни действия по отношение на слоевете:

for (i=0; i if (blockedLayers.length >0) (
извлечено = blockedLayers.shift();
dL.locked = вярно; ) ) Всъщност за подобни операции е много по-удобно да се използват функции. Предимството им е, че след като опишете определени действия, можете да ги повторите изцяло, просто като извикате функция на правилните места; Това гарантира компактност и четливост на скрипта. За да се увеличи гъвкавостта, на функциите се предават стойностите (параметрите), които използват. Ако не искате да използвате функциите, пропуснете следващите два параграфа.

Нека създадем две функции: първата е за отключване на слоеве и обекти, втората е за възстановяване на техните атрибути. В тях ще се променят само типовете обекти (класът Layers и pageItems) и масивите за записване на интересуващите ни елементи (blokedLayers и blockedPathes) - те ще се показват като параметри на функцията. Нека напишем първия така:

отключване на функция (масив, тип елемент)
if (itemType[i].locked == true) (
array.push(i);
itemType[i].locked = false;
заключено = невярно;
}

Вместо array ще заместим масив, а вместо itemType ще заместим необходимия клас. След това получаваме две извиквания - отключване (blockedLayers, dL) и отключване (blockedPathes, pgI). Нека напишем функция за възстановяване на състоянието по подобен начин:

възстановяване на функцията (масив, тип елемент)
if (array.length > 0) (
извлечено = array.shift();
itemType.locked = true;
}

Показване на информация за резултатите от сканирането

Това е последният етап от сценария. Първо ще дефинираме условието за показване на съобщение, ако е избрано търсенето на нередактируеми обекти, след това условието за появата на предупреждение, че такива обекти са открити:

ако (тип == “2”) ( b = “\nПроверете избраното!”)
if (pluginItemExist == true) (
предупреждение („Поради ограничения на скриптовете някои обекти не могат да бъдат засегнати“ + b) )

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

if ((lockedPresence == true) && (pluginItemExist == false)) (
предупреждение= “\nТъй като някои от тях са заключени, те не могат да бъдат показани като избрани” )

След това показваме крайните резултати:

предупреждение („Броят коригирани обекти е: “ + коригирани + предупреждение)

Ето всъщност и целия сценарий. Както можете да видите, тези няколко реда извършват колосална работа, която едва ли някой би се осмелил да направи ръчно. Скриптът се изпълнява незабавно (при мащабни проекти, с брой елементи от порядъка на няколко хиляди, производителността на процесора започва да се отразява). Всичко, което трябва да направите, е да го изберете от списъка с налични (дори не е нужно да правите това - Illustrator позволява на скриптовете да присвояват „горещи клавиши“) с командата Edit.Keyboard shortcuts.Menu commands.Scripts. Но имайте предвид: имената на скриптовете са сортирани по азбучен ред, така че добавянето на нови или премахването на стари може да доведе до пренасочване на ключове към съседни скриптове. Заключение: след като направите промени в папката Presets\Scripts, проверете съответствието на ключовете.

Опитахме се да направим сценария универсален, което се отрази на неговия обем. В най-примитивната версия (без да се вземат предвид функциите и капаните, описани по-горе), тя заема буквално няколко реда:

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

А десерт?

Ще посветим следващия брой на визитките: ще напишем скрипт, който автоматизира тяхното оформление на лист. Въпреки това ще бъде полезно за повече широк обхватзадачи, тъй като не е обвързано с размера на обектите. Както се очаква, ще предвидим създаването на издания, за да избегнем проблеми с неточно изрязване на листа, както и завъртане на визитни картички (ако горната и долната им страна са значително различни). В същото време ще засегнем въпроса за търсенето на обекти, чийто цветови модел се различава от дадения, което също не е необичайно при такава работа.

Списанията са свободно достъпни.

По същата тема:

    Новини 2019-04-03

    Как опционалното бяло мастило помага за създаването на нови приложения за широкоформатен печат.

    Днес редица модели широкоформатни и ултраширокоформатни принтери могат да печатат с допълнителен цвят мастило - бяло, което създава нови възможности за използване на тези устройства. Но принтерите могат да прилагат различни технологии за печат с бяло мастило и различни технологии- вашите възможности и ограничения.

Illustrator разполага с цял куп инструменти, но дори и с цялото това изобилие, винаги ще има нещо, което липсва. Тук на помощ идват скриптовете и плъгините. Използвайки ги, можете да изпълнявате задачи, които самият Illustrator не може да направи. В тази статия ще се запознаете с 10 безплатни и най-полезни скрипта (скриптове) за Illustrator!

Скриптове?

Illustrator поддържа скриптове от AppleScript, Visual Basic, JavaScript и ExtendScript. Когато се активират, те изпълняват различни операциив рамките на Illustrator и може да включва и други програми, като програми за текстообработка, бази данни и електронни таблици. Можете да използвате както стандартните, така и нечии готови скриптове или да създадете свои собствени. За повече информация относно скриптовете в Illustrator вижте документацията в папката Adobe Illustrator CS3/Scripting.

Инсталиране на скриптове

Изтеглете желания скрипт. След това го поставете в папката Adobe Illustrator CS3/Presets/Scripts и той ще се появи в подменюто за скриптове. За да стартирате необходимия скрипт в Illustrator, щракнете върху Файл > Скриптове и го изберете от падащия списък.


1) Затваряне на всички пътища Затваряне на всички избрани пътища (Затваряне на всички пътища / Затваряне на всички избрани пътища)

Прост, но много мощен скрипт. С него можете да разделяте многоредови текстови полета в отделни обекти с текстови рамки, което улеснява разделянето на списъци, елементи за навигация и др.


3) Присъединете текстови рамки

Този скрипт може да обедини отново разделени текстови рамки. Много полезно, ако трябва да отворите файл на илюстратор преди CS или трябва да комбинирате няколко текстови рамки заедно.


Този скрипт може да създава форми на цветя от обикновени форми. Чудесно за създаване на необичайни модели, лога и просто за експериментиране.


Този скрипт може да създава свързващи арки от форми, които създавате. Много полезно за свързване на общи форми за създаване на по-сложни форми за лога, икони и илюстрации.


6) Конвертиране на CMYK в Pantone v.2 (CMYK в Pantone v.2)

Този скрипт ще избере за вас най-точното съвпадение на pantone от даден CMYK цвят.


7) Смяна на нюанси Случайни цветове (Промяна на нюанси / Случайни цветове

Този скрипт ще създаде елипса с посочения брой ключови точки. Може да изглежда просто, но операцията значително опростява процеса на редактиране на кръгове, създаване на четки, сложни форми и много други. Illustrator има функция, която добавя повече ключови точки към фигура, но не можете да посочите точно колко ключови точки искате да добавите.



Свързани публикации