Tagga molnskript i illustratör. Hur man installerar skript i Adobe Illustrator

Adobe Illustrator har många verktyg och funktioner för att implementera alla idéer. Men även med så många möjligheter i sitt arsenal kommer något säkert att missa. På Internet kan du nu hitta många skript och plugins för Adobe Illustrator och utvidga dess funktionalitet. Utan dessa tillägg kan Adobe Illustrator kanske inte klara några uppgifter eller lägga till extra arbete för artisten. Därför kommer vi idag att överväga några användbara och gratis skript för Adobe Illustrator.

Skriptinstallation

För att skriptet ska fungera i Adobe Illustrator måste vi placera det i mappen Skript som finns i Adobe Illustrator-katalogen. I mitt fall är det ... / Adobe / Adobe_Illustrator_CS5 / Förinställningar / sv_SE / Skript. Om du använder en tidigare version av programmet istället för Adobe_Illustrator_CS5, kan det i ditt fall finnas Adobe_Illustrator_CS4, Adobe_Illustrator_CS3, etc.
  Om du laddade ner skript som komprimeras till ett arkiv, glöm inte att packa upp dem. Efter installationen måste du starta om Adobe Illustrator.

Tillgängliga skript kan hittas på fliken Arkiv i undermenyn Skript.

Välj öppen väg

Detta skript hittar och väljer alla former med en öppen väg. Detta skript kommer att vara användbart när du skapar en vektor för mikrostock, eftersom closed loops är ett av kriterierna för att acceptera ditt arbete i microstock-databasen.

Stäng alla sökvägar / Stäng alla markerade sökvägar

Det här skriptet stänger konturen för alla former eller för utvalda former. Så till exempel, efter att du sökt efter öppna kretsar med hjälp av Välj öppen sökväg, kan du göra dem stängda.

Dela textramar

Med det här skriptet kan du dela upp ett enda textfält i mindre, där övergången till en ny rad är platsen för separationen.

Gå med i textramar

Detta skript kommer att kombinera flera textfält i ett.

Fleurify

Tack vare detta manus kommer figurerna att dekoreras med vackra blommor kurvor.

Metaball

När du har använt detta skript kommer flera enkla former att bli mer komplexa.

CMYK till Pantone v. 2

Detta skript konverterar CMYK-färgläge till Pantone

Circle

Tack vare det här skriptet kan du skapa cirkelformer med önskat antal poäng på det.

Ta bort förankringar

Detta skript raderar de valda punkterna på figuren.

Runda om alla hörn

När du har använt detta skript konverteras de skarpa hörnen på formen till rundade.

Byt objekt

Detta skript kommer att ge ett objekt egenskaperna för det andra, och det andra - egenskaperna hos det första. Som egenskaper används storlek och plats på arbetsytan.

Välj sökväg efter storlek

Plugin hjälper dig att hitta siffror av en viss storlek.

Vanligtvis när det gäller program för designers prioriteras de konstnärliga möjligheterna för applikationer - ritverktyg, filter etc. Men i vardagen måste du hantera rutin. Lyckligtvis började programvara från Adobe (inklusive Illustrator) att stödja skrivning av skript (manus), så att du kan flytta det monotona arbetet på maskinens axlar. Och du arbetar inte längre i Illustrator - du klarar det, och det är som de säger i Odessa, två stora skillnader!

Jag inser att den stora majoriteten av Illustrator-användare är konstnärer och designers som inte har stött på programmering och jag kommer att försöka bygga en översikt över skriptfunktioner så att läsarna inte får intrycket att den här lektionen behöver någon form av "special" mentalitet och en lång specialutbildning. Samtidigt ber jag om ursäkt till proffsen för några förenklingar i formuleringen för att materialet är tillgängligt. Författaren själv var en gång i en liknande situation och betraktade till en början inte denna sfär som sitt stift. Men jag tillbringade mindre än två veckor på att studera det och nu bekräftar jag: att ha minimal förståelse för programmering, att behålla skript är en helt genomförbar uppgift.

Skript för Illustrator kan skrivas på valfritt språk: JavaScript, Visual Basic (Windows) och AppleScript (Mac OS). Eftersom majoriteten av läsarna är bekanta med den första (många designers för att trycka framgångsrikt klarar skapandet av internetsidor där det används) kommer vi att lita på det. Dessutom är JavaScript plattformsoberoende: skript skrivna på det kommer att fungera i båda operativsystemen - Windows och Mac OS. Sättet att få tillgång till elementen är objektorienterat: för att ta reda på exempelvis gränstjockleken för det andra vektorelementet på det första lagret måste du skriva följande konstruktion:

app.activeDocument.Layer.pathItems.strokeWidth

Detta kan tolkas enligt följande: först anges det högsta nivåobjektet i Illustrator-hierarkin (app är en applikation som är kort för applikation), och sedan markeras markeringen gradvis till ett specifikt element (i det aktiva dokumentet, arbeta på det första lagret; välj sedan den andra djupvektorn objekt och ta reda på gränstjockleken). En sådan metod för att komma åt element är mycket bekvämt, eftersom det gör att du enkelt kan navigera i hela deras sortiment som finns i redigeraren. En komplett relationsmodell finns i en välskriven beskrivning (ingår i Illustartor).

Fyrkantiga parenteser indikerar att elementet är en del av matrisen. En matris är en samling av flera objekt som förenas av ett visst attribut. Till exempel är lager, sökvägar, RasterItems, GroupItems, Selection, etc. matriser som består av objekt av samma typ (dokumentlager, vektorbanor, rasterbilder, grupper etc.). I parentes anger indexet (serienummer) för det obligatoriska elementet i matrisen. Så lagerbeteckningen anger det första lagret, eftersom det första indexet alltid är “0”.

Objekt kan också nås med namnet Layer [“Chart”]. För att göra detta måste elementet uttryckligen namnges - manuellt med hjälp av paletten Lager (dubbelklicka på objektets namn öppnar ett fönster med dess egenskaper), eller från ett skript. För att inte skriva en besvärlig konstruktion varje gång du listar upp hela "stamtavlan", använd referenserna:

pI \u003d activeDocument.Layer.pathItems;

Då kommer kodavsnittet ovan att se ut: pI.strokeWidth.

Det är tillåtet att inte hänvisa till skiktet som ett objekt varje gång om alla operationer sker på samma aktiva lager. Och observera att namnen på variablerna har ett fall: om du skriver pI för första gången och pi för den andra, kommer skriptet att kasta ett fel och fungerar inte.

I en objektorienterad modell finns det: själva applikationen, klasser (typer av objekt, eller med hjälp av ett mer känt begrepp, substantiv: lager, vektorobjekt, grupper etc.), metoder (sätt att interagera med dem - verb: flytta, duplicera och etc.) och egenskaper (adjektiv: strokeWidth, fillColor, vald, etc.). För att göra det lättare att navigera, föreställ dig att en applikation är ett hus där det finns olika föremål - en analog klasser (fönster, dörrar) som har vissa egenskaper (plast, trä) som de utför vissa åtgärder - metoder (öppna, stäng). Att förstå kärnan i en sådan hierarki är det mycket lättare att förstå skript.

På den högsta nivån är applikationen, och bokstavligen efter regeln om underordning av objekt, måste den anges i alla åtgärder. För att förenkla kan länken till applikationen utelämnas - utom i de fall du verkligen behöver känna till några av dess egenskaper (till exempel tillgängliga teckensnitt - app.fonts).

Klasserna Layer, Group, Text kan innehålla objekt i samma klass, som också kan ha barn. En användbar funktion i objektmetoden är arv   egenskaper. Så alla vektorvägar (pathItems) är barn i en mer generell klass - sidelement (pageItems). Genom att tilldela vissa egenskaper till pageItems tilldelar vi det automatiskt och pathItems.

Trots deras likhet är lagren och lagerklasserna fortfarande olika. Den första är en samling av alla lager i dokumentet, den andra är bara en specifik, och därför varierar deras metoder och egenskaper. Du kan tillämpa tillägg, ta bort alla metoder på det första och på det andra, alla operationer som är tillgängliga för ett separat lager. Objektet i sig åtkoms som ett element i motsvarande array - i vårt fall genom lager, lager etc.

Det valda elementet motsvarar en separat klassval, som också är en matris (en grupp objekt kan väljas). På ett speciellt konto i Illustrator finns klasserna pluginItems, Colors, Views. Den första har många begränsningar förknippade med det faktum att objekt av denna typ inte är ursprungliga för Illustrator. Dessa inkluderar elementen Blandning, kuvert, nät och liknande. Vi kommer att överväga funktionerna hos resten när de används.

För att skriptet ska vara "synligt" placeras det i mappen Presets.Scripts som finns i den där applikationen är installerad. Vi kommer att överväga verkliga exempel (detta kommer omedelbart att känna till användbarheten hos skript) och skriva dem under Illustrator CS, eftersom dess skript är mer flexibel än tidigare versioner.

Exempel 1: kombinera objekt

Låt oss börja med det enklaste - vi kommer att skriva ett skript som förbinder rader med underordnade objekt till det huvudsakliga (en vanlig uppgift när du skapar flödesscheman, teknisk dokumentation och liknande verk). Och vi kommer att beröra sådana grundläggande problem som att arbeta med utvalda objekt, skapa nya lager, placera objekt, ändra deras ordning, skapa och inkludera kurvor i en sammansatt sökväg.

Att arbeta med sådana dokument innebär utbredd användning av symboler (symboler) - genom att göra ändringar i dem uppdateras automatiskt alla skapade kopior. Illustrator fungerar dock inte alltid korrekt med sådana element: det händer att det inte läser namnen på objekt som är kopior av tecken. Som ett resultat är deras val efter namn inte genomförbart. Att bearbeta alla element av denna typ i det aktuella lagret är inte praktiskt användbart. Som ett resultat lutade jag mig för ett alternativt alternativ, där du först måste välja önskade objekt (det enklaste sättet är att välja ett tecken och söka efter dess kopior genom kommandot Select.Same Instances) och sedan välja referenselementet som de kommer att anslutas till.

Så här går vi. För att förkorta introducerar vi sel-variabeln, som vi kommer att referera till när vi behöver utföra några åtgärder på det valda objektet. Sedan kontrollerar vi hur många element som är markerade (även om alla markerade tecken i texten också tillhör markeringsfältet, kommer vi inte att kontrollera om den valda texten inte är vald). Skriv if (sel.length)<2) означает, что мы сравниваем значение length (количество объектов класса sel) с двойкой — минимальным количеством для работы сценария. Если выделенных элементов меньше, будут выполняться действия, заключённые в первые идущие за оператором if фигурные скобки, иначе — идущие после else. При этом логично предусмотреть выдачу сообщения, чтобы сориентироваться в ситуации и понять, что нужно сделать.

sel \u003d activeDocument.selection
   if (sel.length)<2) {br>   varning ("Inte tillräckligt med objekt för att fortsätta! \\ nVälj minst två objekt och det sista - målobjektet!")
   annat (

Alert är en standard JavaScript-funktion som visar ett fönster med den angivna texten och OK-knappen. "\\ N" betyder att gå till en ny rad och används för att hålla fönstret litet. Texten som visas i fönstret måste bifogas med citattecken.

Förberedande fas

Skaffa koordinaterna för referensobjektets centrum. Eftersom vi enades om att han är den högsta är hans nummer (index) “0” (sel). För att beräkna koordinaterna använder vi objektets egenskaper som position (position), bredd och höjd (höjd och bredd). Positionvärdena lagras i en matris bestående av ett par värden - koordinaterna längs X- och Y-axeln. Därför måste alla tas upp som ställning och ställning.

refObj_x \u003d sel.position + (sel.width / 2);
   refObj_y \u003d sel.position - (sel.höjd / 2);

Vi fick koordinaterna för referensobjektets centrum och tilldelade dem två variabler för vidare användning. Den andra raden innehåller ett "-" -tecken, eftersom Illustrator accepterar dokumentets nedre vänstra hörn som referenspunkt, och positionen ger koordinaterna för elementets övre vänstra hörn.

Eftersom bekvämlighet spelar en viktig roll när vi arbetar med ett dokument kommer vi att se till att de rader som skapats finns på ett separat lager - en sådan strukturering hjälper till att upprätthålla ordningen i en layout med varierande komplexitet.

Skapa ett nytt lager - det, som alla Illustrator-element, skapas med metoden add () som tillämpas på motsvarande klass av objekt. I parenteser kan du ange åtgärdens parametrar: ange destinationsobjektet (det kan till exempel vara ett lager eller till och med ett nytt dokument, samt positionen vid destinationen). Till skillnad från de flesta metoder tillhandahålls inga ytterligare parametrar för att lägga till, därför för att överföra till den högsta nivån kommer vi att använda en speciell metod - zOrder, som vi kommer att ange BRINGTOFRONT som en parameter (en reserverad konstant, en fullständig lista som ges i dokumentationen). I princip, om dokumentet bara har ett lager, är det inte nödvändigt att specifikt ange positionen för det nya, eftersom Illustrator alltid placerar det över det nuvarande. Om objekten som ska anslutas inte är belägna på den högsta nivån behövs den andra raden.

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

Den första raden kan läsas så här: skapa ett nytt element genom att öka (lägga till) antalet objekt av önskad typ (lager) och tilldela en länk till det nyskapade elementet till den nya lagersvariabeln. I det första ögonblicket är skiktet tomt, för ingenting har placerats i det ännu. För att förenkla orientering i en komplex layout, ge lagret ett namn "Connectors" (med namnet metoden) - som du kan se, namnen på metoderna tydligt anger de utförda åtgärderna.

newlayer.name \u003d “Connectors”;

För utbildningsändamål skapar vi inte separata linjer, utan kombineras till ett objekt av typen Compound Path för att underlätta redigering. Skapa ett sådant objekt upprepar den redan kända proceduren, den här gången tillämpas på klassen compoundPathItems:

newCompoundPath \u003d activeDocument.compoundPathItems.add ();

Eftersom vi i det sista steget skapade ett nytt lager är det aktivt - följaktligen kommer de skapade objekten att finnas på det, och det finns inget behov att specifikt ange det (activeDocument.newlayer).

Bestämma koordinaterna för underordnade element

Vi kombinerar denna process med utgången från själva anslutande linjer, eftersom deras antal bör motsvara antalet objekt. I tur och ordning börjar vi sortera igenom alla de markerade elementen (“i ++” innebär ökning med en) och läsa deras koordinater. Vi kommer att starta sökningen inte från det allra första objektet från markeringsfältet (som ni kommer ihåg, referensobjektet fungerar som det), utan från det andra (sel). Följande rader är redan bekanta för oss:

för (i \u003d 1; i< sel.length; i++) {
   obj_x \u003d sel [i] .position + sel [i]. bredd
   obj_y \u003d sel [i] .position - sel [i]. höjd

Efter att ha fått koordinaterna för barnets mitt fortsätter vi att skapa en linje som förbinder den med referensen. Skapa ett nytt objekt för varje valt element - en vektorbana som ingår i klassen CompoundPath, vilket ökar det totala antalet vägar:

newPath \u003d newCompoundPath.pathItems.add ();

För att ställa in enkla konturer i Illustrator finns det en setEntirePath-metod, vars parametrar är en rad koordinater för start- och slutpunkterna - som, som vi redan vet, i sin tur specificeras som matriser med två värden (positioner längs två axlar). Slutligen avslutar vi villkoret ”om något är markerat” infört i början.

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

Skriptet är klart. Som ni ser är det inget komplicerat i det: namnen på metoderna avslöjar deras väsen, och den objektorienterade modellen hjälper till att tydligt förstå hierarkin för Illustrator-objekt. Skriptet har inget speciellt praktiskt värde (det är mer troligt att det kommer att undervisa), men på dess exempel har många grundläggande begrepp beaktats, som vi kommer att förlita oss på i framtiden (arbeta med utvalda objekt, principen om deras numrering i urvalsfältet, bestämma koordinater, skapa nya lager, output linjer).

Exempel 2: upptäcka för tunna konturer

Skalningsoperationer i vektorgrafik är mycket aktiva. Därför, när du minskar storleken på objekt med tunna linjer (om parametern Skala streck är aktiverad) blir tjockleken på deras streck ofta lägre än 0,25 pt (värdet efter vilket linjerna blir dåligt synliga) och det får dem att försvinna när de skrivs ut på en bläckstråleskrivare. Illustratörens inbyggda sökfunktioner för objekt med streckvärden mindre än det angivna värdet tillhandahålls inte. Att hitta dem manuellt är mycket svårt - du måste välja varje objekt individuellt, vilket snabbt avskräcker önskan att delta i sådana kontroller. Skriptet kommer att förenkla åtgärden kraftigt.

Själva skriptet i den enklaste versionen är litet, men vi kommer att sätta ett mål för att göra det mer universellt - vi kommer att utöka funktionaliteten på grund av förmågan att ange minsta tjocklek i dialogrutan. Naturligtvis kan du styra detta värde i själva skriptet och vid behov justera det varje gång, men du förstår att det är obekvämt. Vi ger också en indikation på det valda elementet som ett referensobjekt med det minsta acceptabla gränsvärdet. Parallellt beräknar vi antalet element med förändrad tjocklek för statistik och väljer dem för tydlighet.

Hela skriptet är uppdelat i två delar: det initiala (läser värdet från dialogrutan eller det valda objektet) och det slutliga (söker bland alla objekt i dokumentet och omordnar gränstjockleken). Förutom att visa tillgång till Illustrator-objekt överväger vi att skapa ett mini-gränssnitt för att ange anpassade värden.

Ange värden

De två första raderna kommer att vara identiska med föregående exempel, förutom att istället för “2” “0” kommer att visas, för innan manus måste vi avgöra om det finns några valda objekt. Jämförelse ges med ett dubbelt lika tecken (enhet tilldelar ett värde).

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

Om inget är valt, kommer minsta tjocklek att ställas in i dialogrutan. Vi härleder den med hjälp av standard JavaScript-funktionen - prompt. Det öppnar ett fönster med ett fält där du kan ange ett värde och använda det senare. Syntaxen för funktionen är som följer: först finns det en antydningstext som kommer att visas i fönstret (med beaktande av enhetens skript, kommer vi inte att använda det kyrilliska alfabetet, eftersom det ofta visas felaktigt), sedan följer värdet som standard för inmatningsfältet. Det finns två plussmål: möjligheten att omedelbart ställa in den minsta tillåtna tjockleken och ange vilket värde som helst. Genom att skapa en variabel som tilldelas värdet på snabbfunktionen kan du sedan använda den för dina egna ändamål.

Med tanke på framåt noterar jag att Illustrator inte ger full tillgång till alla typer av objekt - några är överbord. Därför tillhandahåller vi visualisering av inte bara fasta element utan också otillgängliga för skriptet för att inte leta efter dem manuellt - eftersom de också kan innehålla problemobjekt. För att inte visa två dialogrutor (för tjockleksvärdet och bestämma vilka element som ska väljas) använder vi JavaScript: s strängbehandlingsfunktioner. Faktum är att innehållet i ett användarfylt fält är en "sträng" (ett informationsblock) som kan innehålla valfritt antal parametrar (genom avgränsare). Genom att känna till separatorn kan värdena på enskilda parametrar enkelt extraheras från strängen.

Därför kommer texten som uppmanar till dialogrutan att vara följande: ställa in minsta gränstjocklek och ett villkorat nummer: "1", om du vill att skriptet ska markera de korrigerade elementen, "2" - de som du inte kunde "nå".

value \u003d prompt ("Ange tröskeln för slagbredd (i pt), \\ n Vad du ska välja: korrigerade objekt (1) eller otillgängliga (2)", "0,25, 1")

Ställ in fältet till 0,25 punkter (måttenheter i Illustrator som standard), men när du ändrar det kommer det nya värdet att användas och "1". "2" bör endast anges om skriptet hittar otillgängliga objekt (vi kommer att se till att det signalerar detta i slutet av arbetet). Och de kommer att bli markerade, vilket kommer att rädda oss från manuell sökning (som du vet, den inbyggda Illustrator-sökningen lämnar mycket att önska).

Efter att ha läst värdena från användarfältet, räknade vi ut, fortsätter vi med deras bearbetning. Kontrollera om fältet verkligen är tomt ("!" -Tecknet indikerar negation, det vill säga "! \u003d" Motsvarar "inte lika", null är det registrerade ordet för ett tomt värde). Om det finns något i det, bryter vi strängen i separata block med hjälp av JavaScript-delningsfunktionen (vi definierar kombinationen av tecken "," som en separator) och lägger de resulterande värdena i splitString-arrayen. Efter det kommer vi att ge beskrivande namn på värdena från matrisen (den första bestämmer tjockleken, den andra - driftsläget).

if (värde! \u003d null) (
   splitString \u003d value.split (“,“);
   vikt \u003d splitString;
   typ \u003d splitString; )

Om det inte finns något i användarfältet stoppar vi skriptet. Den sista stängningsfästet är ett tecken på att det villkor som vi ställde i början är slutfört ("om inget markeras i dokumentet").

annat (gå \u003d falskt)

Om referensobjektet är speciellt valt

Nu kommer vi att skriva en sekvens av åtgärder om vi avsiktligt valde ett element vars gränstjocklek vi vill använda som ett tröskelvärde. Vi kommer att visa en varning om ytterligare åtgärder för skriptet med hjälp av standard bekräfta funktionen (skapar en dialogruta med två knappar - och). Om du klickar<Сancel>, jobbet slutar, om du håller med kommer skriptet att fortsätta att fungera.

annat (valdMsg \u003d bekräfta (“Slagbredd för valt objekt kommer att användas som tröskel”)
   if (valdMsg! \u003d sant) (
   gå \u003d falsk;
   ) annat (

Vi går till huvuddelen av manuset. Vi beaktar inte medvetet situationen när flera objekt är markerade, för för att ställa in gränstjockleken räcker det att välja bara ett. Och vad är värdet att använda om det skiljer sig åt elementen? Som vi redan vet kommer det enda valda objektet att ha ett index på "0", och för att få kanttjockleken har Illustrator en strokeWidth-egenskap. Vi kommer att ta hänsyn till att urval i princip inte bara kan innehålla enskilda element utan också en del av texten (till exempel valt av en slump), vilket inte ingår i våra planer, så innan du börjar arbeta, kontrollera JavaScript-funktionerna för att välja typen av det valda elementet som tillhör en array:

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

Eftersom vi enades om att bara välja de ändrade objekten, måste vi ta bort markeringen från den mest referens (se den valda egenskapen):

sel.selected \u003d falsk; )))

Nu är vi helt beredda att utföra skriptets huvuduppgift - sök efter objekt: värdet som kommer att användas som minsta tillåtna tjocklek lagras i wei-variabeln.

omständigheter

Jämför den med en liknande egenskap för alla objekt i dokumentet. Du kan genast gå vidare till sökningen, men användningen av skriptet i det dagliga arbetet krävs med hänsyn till ytterligare omständigheter - i layouter finns det ofta både låsta lager och enskilda objekt. Därför kan du inte göra ändringar, även om sökningen fungerar i dem. För att säkerställa fullständig verifiering lägger vi till flera operationer i skriptet: kontrollera elementen för överensstämmelse med det angivna kriteriet, samtidigt lås upp dem, om det behövs, och kom ihåg indexet så att efter verifieringen är klar, återlämna dem till sitt tidigare tillstånd. Vi introducerar två variabler: den första för reducerad tillgång till alla lager i dokumentet, och med den andra får vi bara åtkomst till de låsta. Vi lagrar serienumren till det senare i en matris, som vi skapar med JavaScript-funktionen - ny Array ().

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

Sedan tittar vi på alla lager och för de låsta (egenskapen låst \u003d sann) kommer vi att placera sekvensnumret i blokedLayers-arrayen (med push-funktionen från JavaScript), varefter vi tillåter deras redigering (låst \u003d falsk).

if (go \u003d\u003d true) (
   för (i \u003d 0; i if (dL [i]. låst \u003d\u003d true) (
   blokedLayers.push (i);
   dL [i] .locked \u003d falsk; Tidigare enades vi om att markera fasta objekt, men efter att skriptet har slutat arbeta på låsta lager kan vi inte göra det - vi måste visa en lämplig varning. För att göra detta använder du attributet lockPresence, som kommer att ställas in om minst ett lager är låst.

lockPresence \u003d true;

Vi kommer att upprepa samma sak med individuella låsta element. I det enklaste fallet är det tillräckligt att kontrollera alla vektorelement (klass pathItems), som innehåller sammansatta banor som en underklass - så att ingenting undviker skriptets allasyn.

fallgropar

Förutom den övervägda situationen med blockering finns det en annan "fallgrop". Som redan nämnts är vissa element (särskilt blandningsgruppen och kuvertet) inte "ursprungliga" till Illustrator, de tillhör ett pluginItem av specialtyp. Samtidigt ger Illustrator inte tillgång till sådana objekt, de är en "sak i sig". Du kan bara "nå ut" till dem genom en klass på en högre nivå - sidobjekt, genom vilka vi åtminstone kan bestämma deras närvaro och visa en varning i slutet. Det kommer att säga att genom att köra skriptet igen och ange "2" som den andra parametern i inmatningsfältet kommer det att markera dessa "svarta rutor".

pgI \u003d activeDocument.pageItems;

För att lagra index för blockerade objekt, skapa en matris som heter blokedPathes och för att beräkna antalet ändrade objekt introducerar vi variabeln korrigerad.

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

För alla objekt kommer vi att kontrollera om de tillhör PluginItem-typen (egenskapen typnamn): om det finns några, ställ in pluginItemExist-flaggan (dess tillstånd avgör varningsutgången om förekomsten av sådana element). Vid en upprepad kontroll (när den andra parametern i inmatningsfältet är "2") väljer vi dem:

för (i \u003d 0; i< pgI.length; i++) {
   if (pgI [i] .typename \u003d\u003d “PluginItem”) (
   pluginItemExist \u003d sant
   if (typ \u003d\u003d “2”) (pgI [i] .selected \u003d true)

Så alla (eller nästan alla) möjliga situationer som uppstår i arbetet, vi har förutspått och identifierat åtgärder för dem.

Grundläggande kontroll

Nu är det dags att faktiskt kontrollera layouten för överensstämmelse med de angivna fransningskriterierna. Vi tar hänsyn till att bland objekten kan det också finnas de för vilka det inte finns någon kantning alls (bestäms av tillståndet för det streckade attributet) - därför måste de uteslutas från skanningen.

if ((pgI [i]. strömbredd< weight)&&(pgI[i].stroked)) {
   if (pgI [i] .låst \u003d\u003d true) (
   blokedPathes.push (i);
   pgI [i] .låst \u003d falsk;

Detta kodfragment kan tolkas på följande sätt: vi bestämmer närvaron av en gräns och dess tjocklek för varje element. Om det är mindre än minimum (om (pI [i]. Strömbredd)< weight), и объект заблокирован, его индекс занести в специально созданный для такой цели массив blokedPathes, после чего разблокировать для внесения возможных изменений. Знак && обозначает логическое «И» (обязательное совпадение двух условий) — толщины меньше минимальной и присутствия окантовки.

Sedan fixar vi närvaron av blockerade objekt (vi ställer in låstPresence-flaggan för att visa en varning i framtiden att inte alla ändrade kan markeras) och väljer det korrigerade och tilldelar ett tröskelvärde till dess gräns - och så vidare för alla element. För statistik kommer vi samtidigt att beräkna antalet ändrade objekt.

lockPresence \u003d true;
   pgI [i] .selected \u003d true;
   pgI [i]. sträckbredd \u003d vikt;
   korrigerad ++;

Stegen för att markera overifierade element (typ \u003d "2") har tidigare beaktats. Nu definierar vi vad som ska hända i standardsituationen - med den vanliga sökningen efter potentiellt problematiska objekt.

if (typ \u003d “1”) (pgI [i] .selected \u003d true)

Återställ status för blockerade objekt

Vi slutförde huvuduppgiften - de problematiska objekten fixades och lyfts fram. Det återstår att återställa status quo - alla blockerade först för att återgå till sitt tidigare tillstånd. För att göra detta läser vi i den aktuella cykeln innehållet i matrisen, där indexen för de blockerade objekten lagras och ställer in attributet låst \u003d sant för varje motsvarande element (skiftmetoden visar det sista värdet som matats in i arrayen från arrayen). Eftersom det totala antalet objekt är mer än blockerat måste man vara noga med att slutföra skanningscykeln efter att arrayen har tömts.

if (blokedPathes.length\u003e 0) (
   retrivedPathes \u003d blokedPathes.shift ();
   pI.låst \u003d sant;))

Då kommer vi att vidta liknande åtgärder med avseende på lagren:

för (i \u003d 0; i if (blokedLayers.length\u003e 0) (
   hämtad \u003d blokedLayers.shift ();
   dL.låst \u003d sant; )) För liknande operationer är det faktiskt mycket bekvämare att använda funktioner. Deras fördel är att när du beskriver vissa handlingar kan du upprepa dem helt, helt enkelt genom att kalla funktionen på rätt plats; på detta sätt uppnås skriptets kompakthet och läsbarhet. För att öka funktionens flexibilitet passeras värdena (parametrarna) som används i den. Om du inte vill använda funktionerna hoppar du över de nästa två styckena.

Låt oss göra två funktioner: den första - för att låsa upp lager och objekt, den andra - för att återställa deras attribut. Endast objekttyper (klassen Layers and pageItems) och matriser för att spela in de element som är intressanta för oss (blokedLayers och blokedPathes) kommer att ändras i dem - de kommer att visas som funktionsparametrar. Vi skriver den första så här:

funktionslåsning (array, itemType)
   if (itemType [i] .locked \u003d\u003d true) (
   array.push (i);
   itemType [i] .locked \u003d falsk;
   låst \u003d falsk;
}

I stället för array kommer vi att ersätta en matris, istället för itemType - den nödvändiga klassen. Sedan får vi två samtal - låsa upp (blockerade lagare, dL) och låsa upp (blokedPathes, pgI). På liknande sätt skriver vi en funktion för att återställa status:

funktionsåterställning (array, itemType)
   if (array.length\u003e 0) (
   hämtad \u003d array.shift ();
   itemType.locked \u003d true;
}

Visa information om resultaten av verifieringen

Detta är det sista steget i manuset. Först definierar vi villkoret för att visa meddelandet om sökningen efter icke redigerbara objekt väljs, sedan villkoret för varning om att sådana objekt upptäcktes:

if (typ \u003d\u003d “2”) (b \u003d “\\ nKontrollera vald!”)
   if (pluginItemExist \u003d\u003d true) (
   varning (“På grund av skriptbegränsningar kan vissa objekt" inte påverkas "+ b))

Logiken för att utfärda en varning om att inte alla korrigerade kan markeras är följande:

if ((lockPresence \u003d\u003d true) && (pluginItemExist \u003d\u003d false)) (
   varning \u003d “\\ n Eftersom vissa av dem är låsta kan de inte" visas som vald ")

Sedan får vi de slutliga resultaten:

varning ("Antal korrigerade objekt är:" + korrigerat + varning)

Här är faktiskt hela skriptet. Som ni ser, gör dessa få rader enormt mycket arbete, vilket knappast någon skulle våga göra manuellt. Skriptet körs direkt (i storskaliga projekt, med antalet element i storleksordningen flera tusen, börjar processorprestanda att påverka). Du behöver bara välja den i listan över tillgängliga (du kan inte ens göra det - Illustrator tillåter skript att tilldela "snabbtangenter") med kommandot Redigera.Korttavlar. Menykommandon.Skriptkommando. Men Observera: namnen på skript sorteras alfabetiskt, så att lägga till nya eller ta bort gamla kan leda till tilldelning av nycklar till angränsande skript. Slutsats: Kontrollera korrespondensen mellan nycklarna efter ändringar i mappen Förinställningar \\ Skript.

Vi försökte göra manuset universellt, vilket påverkade dess volym. I den mest primitiva versionen (utan att ta hänsyn till funktionerna och fallgroparna som beskrivs ovan) tar det bokstavligen ett par rader:

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

Vad sägs om efterrätten?

Vi kommer att ägna nästa nummer till visitkort: vi skriver ett skript som automatiserar deras layout på ett ark. Det är emellertid användbart för ett större antal uppgifter, eftersom det inte har en referens till storleken på objekt. Som förväntat kommer vi att tillhandahålla skapande av problem för att undvika problem med felaktig skärning av arket samt rotation av visitkort (om deras topp och botten skiljer sig väsentligt). Samtidigt kommer vi att ta upp frågan om att söka efter objekt vars färgmodell skiljer sig från den givna, vilket inte heller är ovanligt vid liknande verk.

Tidningar är fritt tillgängliga.

På samma ämne:

    Nyheter 2019-04-03

    Hur extra vitt bläck hjälper dig att skapa nya applikationer för storformatutskrift.

    Idag kan ett antal modeller av storformat- och ultrabrettformatskrivare skriva ut med bläck med en extra färg - vitt, vilket skapar nya möjligheter att använda dessa enheter. Men skrivare kan implementera olika tekniker för utskrift med vitt bläck, och olika tekniker har sina egna kapaciteter och begränsningar.

Funktionen hos Adobe Illustrator är enorm, men det finns också några nackdelar. Fördelen med detta program är skriptning, vilket förenklar och till och med utvidgar programmets förmåga. Förutom skript finns det tillägg - anpassade paneler för att utöka programmet, men det är något annorlunda ämne.

Skriptinstallation

Om du aldrig har använt skript i Adobe Illustrator, här är en snabbguide om hur du kör ett skript.

Först måste vi lägga till skript som du vill använda i mappen "Skript". Hur hittar du sökvägen till den här mappen? Det är enkelt, vi går till roten till mappen där själva programmet Adobe Illustrator finns, sedan "Förinställningar -\u003e sv_US -\u003e Skript", istället för en_US kan det finnas en annan mapp med lokalisering, vilken typ av lokalisering Illustrator har, välj en sådan mapp.

När du har placerat skript i mappen kan du köra dem med standardmetoden - detta startas genom "File -\u003e Scripts", listan över dina skript kommer att finnas i listrutan, klicka på något av dem och du kommer att köra skriptet. Även om dina skript finns i en annan mapp kan du också köra dem och på flera sätt:

  1. Gå till menyn "File -\u003e Scripts -\u003e Other Script ...", explorer öppnas, varefter du måste hitta skriptfilen och sedan köra skriptet
  2. Du kan helt enkelt dra och släppa skriptet från Explorer till Illustrator, varefter skriptet startas
  3. Du kan använda tillägg för att köra skript - det här är panelen för Illustrator, som låter dig köra skript direkt från programmet. Det finns flera sådana förlängningar. Jag rekommenderar att du använder LAScripts.

Harmonizer

Manus för att ordna element på ett rutnät

Välj objekt, kör skriptet, välj antalet kolumner (raderna kommer att beräknas automatiskt), välj avståndet mellan elementen och deras centrering (som standard är det största elementet valt).

ArtboardsResizeWithObjects

Ett skript för att ändra storlek på en tavla tillsammans med innehåll.

I Adobe Photoshop finns en funktion "Bildstorlek" för att ändra tavlan tillsammans med innehållet, men i Adobe Illustrator finns det ingen sådan funktion utanför rutan. Ibland kan det vara nödvändigt att ändra tavlan tillsammans med innehållet, så att alla tillstånd efter ändringen bevaras.

Anta att du bestämmer dig för att byta tavlan med dina händer, ordningen på dina handlingar: Ändra tavlan, sedan väljer du alla element på tavlan och ändrar storleken, men bara ett problem dyker upp här. Om du har element med en stroke, då om du byter händer, kommer inte stroke att minska tillsammans med minskningen av objektet, men du kan komma runt detta genom att kryssa i rutan "Scale stroke and effects", men vad händer om du behöver ändra storlek på flera tavlor? För att förenkla och spara tid använder du teckensnitten ResizeWithObjects.jsx


  • Ny skalfaktor   - skalbordets skala i procent
  • Ny tavlabredd   - nybredd på tavlan, höjden kommer att förändras proportionellt
  • Ny artboardhöjd   - ny höjd på tavlan, bredden kommer att förändras proportionellt
  • Endast aktivt tavla   - ändra bara den aktiva tavlan
  • Alla tavlor   - ändra alla tavlor
  • Anpassade tavlor   - ändra godtyckliga tavlor, du kan skriva antingen som komma eller som bindestreck (som när du anger sidor när du skriver ut)
  • Inkludera dolda och låsta objekt   - ta hänsyn till låsta och dolda element
  • Inmatningsfält för storlek   - Som standard tas bredden på det aktiva tavlan.

ArtboardsRotateWithObjects

Ett skript för att rotera tavlan tillsammans med innehållet.

I Adobe Photoshop kan du rotera tavlan och innehållet roteras också, men i Adobe Illustrator finns ingen sådan funktion från rutan.

Detta skript kommer att vara användbart om du behöver rotera flera tavlor eller om du inte vill slösa tid på att justera positionen relativt tavlan efter att den har roterats.


En kort beskrivning av var och en av artiklarna i skriptet:

  • Aktivt tavla #   - rotera bara den aktiva tavlan
  • Alla tavlor   - rotera alla tavlor
  • Rotationsvinkel 90 CW   - vrid monteringsområdet medurs
  • Rotationsvinkel 90 CCW   - vrid monteringsområdet moturs

InlineSVGToAI

Ett skript för att infoga svg (och konvertera svg-kod) till ett dokument.

I versionen av Adobe Illustrator CC 2018 v.22.1 (mars 2018) har möjligheten att infoga ett svg-objekt lagts till, skriptet i det här fallet behöver inte användas.

Jag var alltid irriterad över att svg inte kan klistras in i ett program som är specialiserat på vektor, jag menar, om vi kopierade svg-kod från en redaktör eller från någon annanstans, men i form av text kommer vi inte att kunna klistra in den i ett program. Du måste först spara koden i en fil, först efter det att du öppnar filen i Illustraor, kopiera innehållet och klistra in i önskat dokument. Många onödiga åtgärder, eller hur?

För att bli av med denna missförståelse skrev jag ett skript som automatiskt skapar en fil, importerar innehållet i ditt dokument och sedan tar bort den. dvs manuset gör samma sak, men bara utan vårt deltagande och det finns inget behov av att spendera tid på det.


En kort beskrivning av var och en av artiklarna i skriptet:

  • Det är enkelt - klistra in innehållet i fältet och klicka på "Klistra in"

Pusselklippare


Manus för att skapa pussel baserade på objekt.

Skriptet skapar grupper med klippmasker, elementet som kommer att "sagas" är det lägsta objektet för de valda. Driftslägen, om du har en grupp på toppen och ett objekt i botten, kommer alla element i gruppen att konverteras till grupper med en klippmask och ett objekt från botten av de valda. Skriptet har inget gränssnitt, välj bara de element du behöver och kör skriptet.


ReplaceItems

Ett skript för att ersätta objekt med originalet, objekt från en grupp eller från urklipp.

Till exempel måste du byta ut vissa element i layouten, men ersätta dem med dina händer under lång tid, du kan använda det här skriptet för att ersätta det, välj bara det element du behöver, kopiera det, kör sedan skriptet, välj "Objektbuffert".

Dessutom kan skriptet oavsiktligt rotera vart och ett av elementen, ta storleken på det ersatta elementet, ta en fyllning och du kan inte heller ta bort det ursprungliga elementet.


En kort beskrivning av var och en av artiklarna i skriptet:

  • Objekt i buffert - objektet finns på Urklipp
  • Toppobjekt - objektet är det första från listan över valda
  • Allt i grupp (slumpmässigt) - väljer ett objekt från gruppen slumpmässigt
  • Skala fält - skala för det infogade elementet
  • Byt ut artiklar i en grupp? - Är de ersatta artiklarna i gruppen? (om elementen som behöver ersättas finns i gruppen, kryssa i denna ruta, annars kommer hela gruppen att ersättas, och inte alla element från gruppen)
  • Kopiera bredd och höjd - Kopiera bredd- och höjdvärdena från det ersatta elementet
  • Spara originalelement - spara (ta inte bort) ersatt element
  • Kopiera färger från elementet - kopiera fyllningen från det ersatta elementet
  • Slumpmässig elementrotation - rotera slumpmässigt varje element

CreateArtboardsFromTheSelection

Ett skript för att skapa tavlor baserat på utvalda element.

Skriptet skapar en tavla baserad på de valda elementen, såväl som för var och en av de valda.


En kort beskrivning av var och en av artiklarna i skriptet:

  • Var och en i urvalet - skapa för varje samling av utvalda element
  • Endast markeringsgränser - skapa en tavla baserad på ett urval.
  • Objektgränser Vsible - Synliga objektgränser
  • Objektgränser Geometrisk - gränserna för det geometriska elementet

TransferSwatches

Ett skript för att importera färgrutor från ett dokument till ett aktivt dokument.

Kör skriptet, välj ett dokument från listan, du kan också markera rutan så att färger med samma namn ersätts.


ArtboardItemsMoveToNewLayer

Ett skript som sätter innehållet på tavlan på ett nytt lager.

Kör skriptet, välj teckensidor, du kan också välja "ta bort tomma lager och underlag" och "Skiktnamn från tavlan namn".


Adobe Illustrator har många verktyg och funktioner, men det saknas alltid något för en avancerad användare. Därför skapar utvecklare skript och plugins som hjälper till att lösa en mängd olika uppgifter och påskynda arbetsintensiva processer. Idag har vi förberett en översikt över de bästa gratis skript för Illustrator. Deras lista systematiseras och delas in i flera grupper beroende på funktionalitet. Detta arbete med banor och punkter, olika typer av distribution av former, generering av objekt, arbete med panelen Lager, textobjekt, färg etc.

Installera och köra skript

Du måste installera skriptet i följande mappar:

för Windows: C: \\ Programfiler \\ Adobe \\ Adobe Illustrator CC 2014 \\ Förinställningar \\ sv_SE \\ Skript

för Mac OS: Applications / Adobe \\ Adobe Illustrator CC 2014 \\ Förinställningar \\ sv_SE \\ Skript

För att köra skriptet, gå till Arkiv\u003e Skript\u003e ...

Du kan också placera skript på någon annan bekväm plats på din hårddisk. I detta fall går du till Arkiv\u003e Skript\u003e Annat skript ... (Cmd / Ctrl + F12) för att köra skriptet.

Om du ofta använder skript kommer du till hands för en bekväm start. Detta gratis plugin ger dig åtkomst till skriptet från panelen, som alltid kan placeras på ett bekvämt ställe.

Låt oss nu titta på listan med skript som är indelade i funktionalitet:

Skript för att arbeta med banor, punkter och handtag

Detta skript roterar handtagen på kontrollpunkter och ändrar deras längd lika. När du har kört skriptet har du möjlighet att välja en av fem typer av handtag och sedan ställa in parametrarna för längder och vinklar.

Detta manus skapar blommor från vanliga former. Perfekt för att skapa intressanta mönster, logotyper etc.

Skriptet tar bort överlappande punkter och rapporterar hur många som har tagits bort.

Skriptet stänger öppna sökvägar i det aktuella dokumentet. Ansluter inte beröringsvägar.

Skriptet ändrar riktningen för de valda banorna i enlighet med riktningen för det övre segmentet. Det vill säga att efter valda skript har alla valda vägar en riktning.

Skriptet kopierar det översta objektet vid placering och storlek på andra objekt. Det är svårt att beskriva, det är lättare att titta på bilden nedan.

Skript som distribuerar objekt

Skriptet fyller formen med cirklar.

Skriptet placerar objekt på samma avstånd längs den valda sökvägen. Du kan omfördela objekt som finns i en eller flera grupper.

Skriptet duplicerar det översta objektet och placerar kopiorna på de valda punkterna.

Skriptet roterar objekten till mitten av det övre objektet.

Skriptet roterar alla objekt till positionen för det övre objektet.

Skriptet gör det möjligt att dela området för ett vektorobjekt i enlighet med data som kan representeras i absoluta eller procentuella termer.

Skriptet skapar en spegelbild i enlighet med den valda typen från panelen.

Skript som genererar objekt baserat på andra objekt eller data

Manuset kombinerar former i form av en metaboll (känner du det ryska namnet för en sådan form? Jag vet inte).

Skriptet skapar vanliga (alla möjliga) tangenser till de valda objekten.

Skriptet skapar guider från den valda punkten till de valda böjda segmenten.

Skriptet låter dig generera en QR-kod i Illustrator.

Med detta skript kan du automatiskt skapa ett kalendernät med bara några klick. Språk som stöds: EN, RU, DE, UA.

Skript med en slumpmässig parameter

Skriptet väljer objekt i slumpmässig ordning enligt det angivna numret.

RandomSwatchesFill-skriptet färgar slumpmässigt de valda objekten i de färger som valts i paletten Swatches.

RandOpacity-skriptet ändrar transparensen för utvalda objekt slumpmässigt inom området från 0% till 100% av objektens ursprungliga transparens.

Skriptet ändrar den linjära gradientvinkeln för alla valda objekt i slumpmässig ordning.

Random Order-skriptet låter dig distribuera objekt i slumpmässig ordning i panelen Lager. Jag använde det här skriptet när jag skrev

Skript för att arbeta i panelen Lager

Skriptet raderar alla tomma lager i det aktuella dokumentet.

Du har en unik möjlighet att expandera Adobe Illustrators funktionalitet. Det finns inget enklare än att använda skript (skriptfiler), välj bara objektet och kör skriptet du behöver. Skript som presenteras i den här artikeln sparar dig mycket tid, gör ditt arbete roligare och effektivare. Tro mig, de är värda din uppmärksamhet. Alla skript testades i Illustrator-versionerna CS3 och CS4.

Om du behöver Illustrator-tillägg av premiumkvalitet, kan du hitta dem i avsnittet Illustratoråtgärder och skript i vår grafikRiver-resurs, till exempel: Isometriska guider rutnätsåtgärd (isometrisk nätverksåtgärd), Mönsterframställare och lång Shadow Action.

   Bästa åtgärder (operationer) och manus för Illustrator på Graphic River.

Använd annars de gratis "godbitarna" som vi nu kommer att berätta om. Men låt oss först se hur man installerar skript för Illustrator.

Skriptinstallation

Det är tillrådligt att alltid spara skript som du ska använda på samma plats, till exempel i skriptkatalogen. För att köra skriptet, gå till Arkiv\u003e Skript\u003e Ett annat skript (Kommando + F12) (Fil\u003e Skript\u003e Andra skript).

Öppna katalogen med skript och kör önskad fil.

Dela detta