Tagg molnskript i Illustrator. 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 din arsenal kommer något definitivt att saknas. På Internet kan du nu hitta många skript och plugins för Adobe Illustrator som utökar dess funktionalitet. Utan dessa tillägg kanske Adobe Illustrator inte kan hantera vissa uppgifter, eller så kan det lägga till extra arbete för artisten. Så idag ska vi titta på några användbara och gratis skript för Adobe Illustrator.

Installerar skript

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

Skript som är tillgängliga för användning finns på fliken Arkiv i undermenyn Skript.

Välj Öppna sökväg

Detta skript kommer att hitta och välja alla former med en öppen sökväg. Detta skript kommer att vara användbart när du skapar en vektor för mikrostockar, eftersom slutna slingor är ett av kriterierna för att acceptera dina verk i microstock-databasen.

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

Detta skript stänger konturen av alla former eller valda former. Så, till exempel, efter att ha sökt efter öppna sökvägar med Välj öppen sökväg, kan du stänga dem.

Dela upp textramar

Med det här skriptet kan du dela upp ett enstaka textfält i mindre, och delningspunkten blir en övergång till en ny rad.

Gå med i textramar

Detta skript kommer att slå samman flera textfält till ett.

Fleurify

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

Metaball

Efter att ha använt det här skriptet kommer flera enkla former att förvandlas till mer komplexa.

CMYK till Pantone v.2

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

Cirkel

Tack vare detta skript kan du skapa cirkelformer med det antal punkter som krävs.

Ta bort ankare

Detta skript kommer att ta bort valda punkter på figuren.

Runda alla hörn

Efter att ha använt det här skriptet kommer formens skarpa hörn att omvandlas till rundade.

Byt objekt

Detta skript kommer att ge ett objekt egenskaperna för det andra, och det andra - egenskaperna för det första. Fastigheterna kommer att vara storlek och läge på scenen.

Välj Sökväg efter storlek

Insticksprogrammet hjälper dig att hitta former av en viss storlek.

Vanligtvis, när det gäller program för designers, ägnas primär uppmärksamhet åt applikationernas konstnärliga kapacitet - ritverktyg, filter, etc. Men i Vardagsliv Du måste också hantera rutin. Lyckligtvis har programvara från Adobe (inklusive Illustrator) börjat stödja skrivning av skript (skript) som låter dig flytta monotont arbete över på en maskins axlar. Och du arbetar inte längre i Illustrator - du klarar det, och det är, som man 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 skapa en översikt över funktionaliteten hos skript så att läsarna inte får intrycket att denna aktivitet kräver något slags "speciellt" sätt att tänkande och långsiktig specialpedagogik. Samtidigt ber jag de professionella om ursäkt för vissa förenklingar i formuleringen för materialets tillgänglighet. Författaren själv var en gång med liknande situation och till en början ansåg han inte detta område som sitt stift. Men jag tillbringade mindre än två veckor med att studera och nu kan jag säga: att ha en minimal förståelse för programmering, att behärska manus är en helt genomförbar uppgift.

Skript för Illustrator kan skrivas på alla språk: JavaScript, Visual Basic(Windows) och AppleScript (Mac OS). Eftersom de flesta läsare är bekanta med den första (många tryckeridesigners skapar också framgångsrikt internetsidor som använder den), kommer vi att lita på den. Dessutom är JavaScript plattformsoberoende: skript som skrivs i det fungerar i båda operativsystemen - Windows och Mac OS. Sättet att komma åt element är objektorienterat: för att ta reda på, till exempel, tjockleken på gränsen 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 på följande sätt: först indikeras objektet på högsta nivån i Illustrator-hierarkin (app - applikation, förkortning för applikation), och sedan begränsas valet gradvis till ett specifikt element (i det aktiva dokumentet, arbeta med första lagret; välj sedan det näst djupaste vektorobjektet i det angivna lagret och ta reda på tjockleken på kanten från det). Denna metod för att komma åt element är mycket bekväm, eftersom den gör att du enkelt kan navigera genom de olika typerna som finns i redigeraren. Den fullständiga modellen av relationer finns i den välskrivna beskrivningen (ingår i Illusstartor-paketet).

Hakparenteser indikerar att elementet är en del av en array. En array är en samling av flera objekt förenade av en viss egenskap. Till exempel är Layers, pathItems, RasterItems, GroupItems, Selection, etc. arrayer som består av objekt av samma typ (dokumentlager, vektorkonturer, rasterbilder, grupper etc.). Indexet (ordningsnumret) för det nödvändiga elementet i arrayen anges inom parentes. Således betecknar posten Layer det första lagret, eftersom det första indexet alltid är "0".

Objekt kan också nås med deras namn Layer[“Chart”]. För att göra detta måste elementet namnges uttryckligen - manuellt, med hjälp av paletten Lager ( dubbelklicka på namnet på objektet öppnas 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 hela "stamtavlan", använd referenser:

pI = activeDocument.Layer.pathItems;

Då kommer ovanstående kodavsnitt att se ut så här: pI.strokeWidth.

Ett lager kanske inte nås varje gång som ett objekt om alla operationer sker på samma aktiva lager. Och kom ihåg att skiftläge är viktigt i variabelnamn: om du skriver pI första gången och pi andra gången kommer skriptet att generera ett fel och kommer inte att fungera.

I en objektorienterad modell finns det: själva applikationen, klasser (typer av objekt, eller, med ett mer bekant koncept, 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 applikationen är ett hus där det finns olika föremål - en analog av klasser (fönster, dörrar) som har vissa egenskaper (plast, trä), med vilka de utför vissa åtgärder - metoder (öppna , stänga). Genom att förstå kärnan i en sådan hierarki är det mycket lättare att förstå skript.

På den översta nivån finns applikationen, och, bokstavligen efter regeln om underordning av objekt, måste den specificeras för alla åtgärder. För enkelhetens skull kan länken till applikationen utelämnas - förutom i de fall du verkligen behöver känna till några av dess egenskaper (till exempel tillgängliga typsnitt - app.fonts).

Klasserna Layer, Group, Text kan innehålla objekt av samma klass, som också kan ha barn. Användbar funktion objekt tillvägagångssätt - arv egenskaper. Således är alla vektorbanor (pathItems) barn av en mer allmän klass - sidelement (pageItems). Därför har utsett vissa fastigheter pageItems tilldelar vi det automatiskt till pathItems.

Trots deras likhet är klasserna lager och lager fortfarande olika. Det första är en samling av alla lager i dokumentet, det andra är bara ett specifikt skikt där deras metoder och egenskaper skiljer sig åt. Add and removeAll-metoderna kan tillämpas på den första, och alla tillgängliga operationer för ett separat lager kan tillämpas på den andra. Objektet nås direkt som ett element i motsvarande array - i vårt fall via Layers, Layers, etc.

Det valda elementet motsvarar en separat klass - urval, som också är en array (en grupp av objekt kan väljas). Av särskild vikt i Illustrator är klasserna pluginItems, Colors och Views. Den första har många begränsningar på grund av att objekt av denna typ inte är "inbyggda" i Illustrator. Dessa inkluderar Blend, Envelope, Mesh och liknande element. Vi kommer att överväga funktionerna i resten när vi använder dem.

För att skriptet ska vara "synligt" placeras det i mappen Presets.Scripts, som finns i mappen där programmet är installerat. Vi kommer att överväga verkliga exempel (detta gör att du omedelbart kan känna nyttan av skript) och skriva dem under Illustrator CS, eftersom dess skript är mer flexibelt än tidigare versioner.

Exempel 1: Sammanfoga objekt

Låt oss börja med det enklaste - vi skriver ett skript som kopplar samman underordnade objekt med linjer till huvudet (en frekvent uppgift när du skapar flödesscheman, teknisk dokumentation och liknande arbete). Och vi kommer att beröra sådana grundläggande frågor som att arbeta med utvalda objekt, skapa nya lager, placera objekt, ändra deras ordning, skapa och inkludera kurvor i en sammansatt bana.

Att arbeta med den här typen av dokument innebär omfattande användning av symboler - genom att göra ändringar i dem uppdateras automatiskt alla skapade kopior. Men Illustrator fungerar inte alltid korrekt med sådana element: det händer att den inte läser namnen på objekt som är kopior av symboler. Som ett resultat är det inte möjligt att välja dem efter namn. Bearbetning av alla element av denna typ har ingen praktisk användning i det nuvarande lagret. Som ett resultat var jag benägen att föredra ett alternativt alternativ, där du först måste välja de önskade objekten (det enklaste sättet är att välja en symbol och söka efter dess kopior med kommandot Select.Same Instances), och sedan välja referenselement som de kommer att kopplas till.

Så låt oss börja. För att förkorta den, låt oss introducera variabeln sel, som vi kommer åt när vi behöver utföra några åtgärder på det valda objektet. Sedan kommer vi att kontrollera hur många element som är markerade (även om urvalsmatrisen även innehåller eventuella markerade texttecken, kontrollerar vi inte att det inte är text som är markerad). Skriv om (sel.längd<2) означает, что мы сравниваем значение length (количество объектов класса sel) с двойкой — минимальным количеством для работы сценария. Если выделенных элементов меньше, будут выполняться действия, заключённые в первые идущие за оператором if фигурные скобки, иначе — идущие после else. При этом логично предусмотреть выдачу сообщения, чтобы сориентироваться в ситуации и понять, что нужно сделать.

sel = activeDocument.selection
om (sel.längd<2) {br>varning ("Inte tillräckligt med objekt för att fortsätta! \nVälj minst 2 objekt och det sista - målobjekt!") )
annan(

Alert är en standard JavaScript-funktion som visar ett fönster med angiven text och en OK-knapp. "\n" betyder en ny rad och används för att hålla fönsterstorleken liten. Texten som visas i fönstret måste vara omgiven av citattecken.

Förberedande skede

Låt oss få koordinaterna för referensobjektets centrum. Eftersom vi var överens om att det är den översta, är dess nummer (index) "0" (sel). För att beräkna koordinater kommer vi att använda objektegenskaper som position, bredd och höjd. Positionsvärden lagras i en array som består av ett par värden - koordinater längs X- respektive Y-axeln. Därför måste var och en tilltalas som position och position.

refObj_x = sel.position + (sel.width/2);
refObj_y = sel.position - (sel.height/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 det nedre vänstra hörnet av dokumentet tas som referenspunkt i Illustrator, och position ger koordinaterna för elementets övre vänstra hörn.

Eftersom bekvämlighet spelar en viktig roll när du arbetar med ett dokument, kommer vi att se till att de skapade linjerna är på ett separat lager - en sådan struktur hjälper till att upprätthålla ordning i layouter av varierande komplexitet.

Vi skapar ett nytt lager - det, som alla Illustrator-element, skapas av metoden add() som tillämpas på motsvarande objektklass. Inom parentes kan du ange parametrarna för åtgärden: ange målobjektet (det kan till exempel vara ett lager eller till och med ett nytt dokument, såväl som positionen vid destinationen). Till skillnad från de flesta metoder finns det inga ytterligare parametrar för att lägga till, så för att överföra den till toppnivån kommer vi att använda en speciell metod - zOrder, till vilken vi specificerar BRINGTOFRONT som en parameter (en reserverad konstant, en fullständig lista över vilken ges i dokumentationen). I princip, om det bara finns ett lager i dokumentet, behöver du inte specifikt specificera positionen för det nya, eftersom Illustrator alltid placerar det ovanför det nuvarande. Om objekten som ska kopplas inte är placerade på översta nivån kommer den andra raden att behövas.

newlayer = 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 variabeln newlayer. I det första ögonblicket är lagret tomt, eftersom inget har placerats i det ännu. För att förenkla orienteringen i en komplex layout, låt oss ge lagret namnet "Anslutningar" (med namnmetoden) - som du kan se indikerar namnen på metoderna tydligt de åtgärder som utförs.

newlayer.name = "Anslutningar";

För utbildningsändamål kommer vi inte att skapa separata förbindelselinjer, utan förenas till ett objekt av typen Compound Path - för att underlätta redigeringen. Att skapa ett sådant objekt upprepar den redan kända proceduren, denna gång tillämpad på klassen compoundPathItems:

newCompoundPath = activeDocument.compoundPathItems.add();

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

Bestämma koordinaterna för underordnade element

Vi kommer att kombinera denna process med utgången av själva anslutningslinjerna, eftersom deras antal måste motsvara antalet objekt. Vi börjar att iterera igenom alla valda element en efter en ("i++" betyder ökning med en) och läser deras koordinater. Låt oss börja sökningen inte med det allra första objektet från urvalsmatrisen (som ni minns är det referensobjektet), utan med det andra (sel). Följande rader är redan bekanta för oss:

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

Efter att ha mottagit koordinaterna för mitten av barnelementet börjar vi skapa en linje som förbinder den med referensen. För varje valt element skapar vi ett nytt objekt - en vektorbana som ingår i CompoundPath-klassen, vilket ökar det totala antalet sökvägar:

newPath = newCompoundPath.pathItems.add();

För att ställa in enkla vägar i Illustrator finns det en setEntirePath-metod, vars parametrar är en uppsättning 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 väljs" som introducerades i början.

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

Manuset är klart. Som du kan se finns det inget komplicerat i det: namnen på metoderna avslöjar deras essens, och den objektorienterade modellen hjälper till att tydligt förstå hierarkin av Illustrator-objekt. Skriptet har inget särskilt praktiskt värde (det är ganska pedagogiskt), men med hjälp av dess exempel ansågs många grundläggande koncept som vi kommer att förlita oss på i framtiden (att arbeta med utvalda objekt, principen för deras numrering i urvalsmatrisen, bestämma koordinater, skapa nya lager, utdatalinjer).

Exempel 2: Upptäcka konturer som är för tunna

Skalningsoperationer i vektorgrafik används mycket aktivt. Därför, när man minskar storleken på objekt med tunna linjer (om alternativet Skala streck är aktiverat), blir deras strecktjocklek ofta under 0,25 pt (värdet efter vilket linjerna blir svagt synliga) och är anledningen till att de försvinner när de skrivs ut på en bläckstråleskrivare. Det finns inga inbyggda funktioner i Illustrator för att söka efter objekt med streckvärden mindre än det angivna. Det är mycket svårt att hitta dem manuellt - du måste välja varje objekt separat, vilket snabbt kommer att avskräcka dig från att delta i sådana kontroller. Skriptet kommer avsevärt att förenkla operationen.

Skriptet i sig är litet i sin enklaste form, men vi kommer att sätta målet att göra det mer universellt - vi kommer att utöka funktionaliteten genom att tillåta oss att ange minsta tjocklek i dialogfönstret. Naturligtvis kan du hårdkoda detta värde i själva skriptet och vid behov justera det varje gång, men du förstår, det är obekvämt. Vi kommer också att tillhandahålla att specificera det valda elementet som ett referensobjekt med det lägsta acceptabla gränsvärdet. Samtidigt kommer vi för statistik att räkna antalet element med ändrad tjocklek och markera dem för tydlighetens skull.

Hela skriptet är uppdelat i två delar: den initiala (läser värdet från dialogfönstret eller från det valda elementet) och den sista (sök bland alla objekt i dokumentet och omtilldela kanttjockleken). Förutom att visa hur man kommer åt Illustrator-objekt, kommer vi att titta på att skapa ett minigrä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 "0" visas istället för "2", eftersom innan skriptet körs måste vi avgöra om det finns några markerade objekt. Jämförelsen anges med ett dubbelt likhetstecken (ett tilldelar ett värde).

var mySel = app.activeDocument.selection;
var go = sant;
om (sel == 0) (

Om inget väljs kommer den minsta tjockleken att ställas in via dialogrutan. Låt oss visa det med standard JavaScript-funktionen - prompt. Den ö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 ledtrådstext som kommer att visas i fönstret (med hänsyn till skriptets enande kommer vi inte att använda det kyrilliska alfabetet, eftersom det ofta visas felaktigt), sedan följer värdet som kommer att finnas i inmatningsfältet som standard. Det finns två fördelar: möjligheten att omedelbart ställa in den minsta acceptabla tjockleken och ange vilket värde som helst. Genom att skapa en variabel som tilldelas värdet för promptfunktionen kan du sedan använda den för dina egna syften.

När jag blickar framåt kommer jag att notera att Illustrator inte ger full tillgång till alla typer av objekt – vissa utelämnas. Därför kommer vi att tillhandahålla visualisering av inte bara korrigerade element, utan också de som är otillgängliga för skriptet, för att inte söka efter dem manuellt - trots allt kan de också innehålla problematiska objekt. För att inte visa två dialogrutor (för tjockleksvärdet och för att bestämma vilka element som ska markeras) kommer vi att använda JavaScripts strängbehandlingsmöjligheter. Faktum är att innehållet i ett fält som fylls i av användaren ä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 för individuella parametrar enkelt extraheras från strängen.

Följaktligen kommer den snabba texten i dialogfönstret att vara som följer: inställning av minsta tjocklek på gränsen och ett villkorligt nummer: "1" om du vill att skriptet ska markera de korrigerade elementen, "2" - de som inte kunde vara " nådde".

värde = prompt ("Ange tröskelvärdet för streckbredden (i pt),\n Vad du ska välja: korrigerade objekt (1) eller otillgängliga (2)", "0.25, 1")

Till en början kommer vi att ställa in fältet till 0,25 poäng (standardmåtten i Illustrator), men när du ändrar det kommer det nya värdet att användas, och "1". "2" ska bara anges om skriptet hittar oåtkomliga objekt (vi ser till att det signalerar detta i slutet av arbetet). Och de kommer att markeras, vilket kommer att rädda oss från manuell sökning (som ni vet lämnar Illustrators inbyggda sökning mycket övrigt att önska).

Vi har sorterat ut läsvärden från ett anpassat fält, låt oss gå vidare till att bearbeta dem. Låt oss kontrollera om fältet verkligen inte är tomt (tecknet "!" betecknar negation, dvs. "!=" motsvarar "inte lika", null är ett registrerat ord för ett tomt värde). Om det finns något i det delar vi raden i separata block med hjälp av JavaScript-delningsfunktionen (vi kommer att definiera en kombination av "," tecken som en separator) och anger de resulterande värdena i splitString-matrisen. Efter detta kommer vi att ge värdena från arrayens beskrivande namn (det första bestämmer tjockleken, det andra bestämmer driftsläget).

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

Om det inte finns något i användarfältet slutar vi köra skriptet. Den sista avslutande parentesen är ett tecken på fullbordandet av villkoret som vi ställde in i början ("om inget är valt i dokumentet").

annat (gå = falskt)

Om referensobjektet är specifikt valt

Låt oss nu skriva en sekvens av åtgärder om vi medvetet valt ett element vars kanttjocklek vi vill använda som ett tröskelvärde. Vi kommer att visa en varning om ytterligare åtgärder av skriptet med hjälp av standardbekräftelsefunktionen (skapar en dialogruta med två knappar - och). Om du trycker på<Сancel>, arbetet stannar, men om du accepterar kommer skriptet att fortsätta att fungera.

annat (selectedMsg = bekräfta ("Strokebredden för det valda objektet kommer att användas som tröskel")
if (selectedMsg != true) (
gå = falskt;
) annat (

Låt oss gå vidare till huvuddelen av manuset. Vi överväger medvetet inte situationen när flera objekt väljs - trots allt, för att ställa in gränstjockleken räcker det att bara välja ett. Och vilket värde ska användas om det visar sig vara olika för elementen? Som vi redan vet kommer det enda markerade objektet att ha ett index på "0", och för att få tjockleken på kanten har Illustrator egenskapen strokeWidth. Låt oss ta hänsyn till att urval i princip inte bara kan innehålla enskilda element, utan också en del av texten (till exempel vald slumpmässigt), som inte ingår i våra planer, så innan vi börjar arbeta, låt oss kontrollera JavaScript-funktionerna för att se om typen av det markerade elementet tillhör en array:

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

Eftersom vi gick med på att endast välja ändrade objekt måste vi avmarkera själva referensen (vi hänvisar till dess valda egenskap):

sel.selected = falskt; ) ) )

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

Omständigheter

Låt oss jämföra det med en liknande egenskap för alla objekt i dokumentet. Du kan omedelbart gå till sökningen, men att använda skriptet i det dagliga arbetet krävs med hänsyn till ytterligare omständigheter - layouter innehåller ofta både låsta lager och enskilda objekt. Därför, även om sökningen fungerar i dem, kan ändringar inte göras. För att säkerställa en total kontroll kommer vi att lägga till flera operationer i skriptet: kontrollera element för överensstämmelse med ett givet kriterium, samtidigt låsa upp dem, om nödvändigt, och komma ihåg indexet för att återställa dem till deras tidigare tillstånd efter kontrollen är klar. Vi introducerar två variabler: den första för förkortad åtkomst till alla lager i dokumentet, och med hjälp av den andra får vi tillgång endast till de låsta. Vi kommer att lagra serienumren för de senare i en array, som vi kommer att skapa med JavaScript-funktionen new Array().

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

Sedan kommer vi att titta igenom alla lager och lägga till sekvensnumret för de låsta (egenskap låst=true) till blockedLayers-arrayen (med push-funktionen från JavaScript), varefter vi tillåter att de redigeras (locked=false) .

om (gå == sant) (
för (i=0; i if (dL[i].låst == sant) (
blockedLayers.push(i);
dL[i].låst = falskt; Tidigare gick vi med på att välja de korrigerade objekten, men efter att skriptet är klart på låsta lager kommer vi inte att kunna göra detta - vi måste visa en lämplig varning. För att göra detta använder vi lockedPresence-attributet, som vi ställer in om minst ett lager är låst.

lockedPresence = sant;

Vi kommer att upprepa samma sak med enskilda blockerade element. I det enklaste fallet räcker det att kontrollera alla vektorelement (pathItems-klassen), som inkluderar sammansatta sökvägar som en underklass, så att ingenting undgår skriptets allseende öga.

Undervattensstenar

Utöver den övervägda situationen med blockering finns det en annan fallgrop. Som nämnts är vissa element (särskilt Blend Group och Envelope) inte "infödda" i Illustrator, de tillhör en speciell pluginItem-typ. Men åtkomst till sådana objekt tillhandahålls inte i Illustrator, de är "saker i sig." Vi kan bara "nå" dem genom en klass på högre nivå - pageItems, genom vilken vi åtminstone kan fastställa deras närvaro och visa en motsvarande 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 = activeDocument.pageItems;

För att lagra index för blockerade objekt kommer vi att skapa en array blockedPathes, och för att räkna antalet ändrade objekt kommer vi att introducera den korrigerade variabeln.

blockedPathes = new Array();
korrigerad = 0;

För alla objekt kommer vi att kontrollera om de tillhör typen PluginItem (typnamnegenskap): om de finns kommer vi att ställa in pluginItemExist-attributet (dess tillstånd avgör om en varning visas om förekomsten av sådana element). I fallet med en upprepad kontroll (när den andra parametern i inmatningsfältet är "2") kommer vi att markera dem:

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

Så vi har tagit hand om alla (eller nästan alla) möjliga situationer som uppstår på jobbet och beslutat om åtgärder för dem.

Grundkontroll

Nu är det dags att faktiskt kontrollera layouten för överensstämmelse med det angivna kantkriteriet. Låt oss ta hänsyn till att det bland objekten också kan finnas de som inte har några kanter alls (bestäms av tillståndet för det streckade attributet) - därför måste de uteslutas från kontrollen.

if((pgI[i].strokeWidth< weight)&&(pgI[i].stroked)) {
if (pgI[i].locked == true) (
blockedPathes.push(i);
pgI[i].låst = falskt;

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

Sedan registrerar vi närvaron av låsta objekt (vi ställer in lockedPresence-attributet för att visa en varning i framtiden att inte alla ändrade kan väljas) och väljer det korrigerade och tilldelar ett tröskelvärde till dess kant - och så vidare för alla element. För statistik kommer vi samtidigt att räkna antalet ändrade objekt.

lockedPresence = sant;
pgI[i].selected = sant;
pgI[i].strokeWidth = vikt;
korrekt++;

Tidigare diskuterades åtgärder för att markera omarkerade element (typ ="2"). Låt oss nu bestämma vad som ska hända i en standardsituation - under en normal sökning efter potentiellt problematiska föremål.

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

Återställer status för blockerade objekt

Vi har slutfört huvuduppgiften - problematiska objekt har korrigerats och markerats. Allt som återstår är att återställa status quo - återställa allt som ursprungligen blockerades till sitt tidigare tillstånd. För att göra detta läser vi i den aktuella cykeln innehållet i arrayen, där indexen för låsta objekt lagras, och ställer in attributet locked = true för varje motsvarande element (skiftmetoden visar det senaste värdet som matades in i det från arrayen ). Eftersom det totala antalet objekt är större än de låsta, måste man se till att kontrollcykeln avslutas efter att arrayen har tömts.

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

Sedan kommer vi att vidta liknande åtgärder i förhållande till lager:

för (i=0; i if (blockedLayers.length >0) (
hämtad = blockedLayers.shift();
dL.låst = sant; )) Faktum är att för liknande operationer är det mycket bekvämare att använda funktioner. Deras fördel är att när du väl beskriver vissa åtgärder kan du upprepa dem i sin helhet, helt enkelt genom att anropa en funktion på rätt ställen; Detta säkerställer kompakthet och läsbarhet för skriptet. För att öka flexibiliteten skickas funktionerna de värden (parametrar) de använder. Om du inte vill använda funktionerna, hoppa över de två följande styckena.

Låt oss skapa två funktioner: den första är för att låsa upp lager och objekt, den andra är för att återställa deras attribut. Endast objekttyperna (klassen Layers och pageItems) och arrayer för att registrera de element som är intressanta för oss (blokedLayers och blockedPathes) kommer att ändras i dem - de kommer att visas som funktionsparametrar. Låt oss skriva den första så här:

funktionsupplåsning (array, itemType)
if (itemType[i].locked == true) (
array.push(i);
itemType[i].locked = false;
låst = falskt;
}

Istället för array kommer vi att ersätta en array, och istället för itemType kommer vi att ersätta den obligatoriska klassen. Sedan får vi två anrop - unlock (blockedLayers, dL) och unlock (blockedPathes, pgI). Låt oss skriva en funktion för att återställa statusen på liknande sätt:

funktion återställ (array, itemType)
if (array.length > 0) (
hämtad = array.shift();
itemType.locked = true;
}

Visar information om skanningsresultat

Detta är det sista steget i manuset. Först kommer vi att definiera villkoret för att visa ett meddelande om sökningen efter icke-redigerbara objekt är vald, sedan villkoret för att en varning ska visas om att sådana objekt har upptäckts:

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

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

if ((lockedPresence == true) && (pluginItemExist == false)) (
warning= “\nEftersom vissa av dem är låsta kan de inte visas som valda” )

Sedan visar vi slutresultatet:

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

Här är faktiskt hela manuset. Som ni ser utför dessa få rader ett kolossalt arbete, som knappast någon skulle våga göra manuellt. Skriptet exekveras omedelbart (i storskaliga projekt, med antalet element i storleksordningen flera tusen, börjar processorprestandan att påverka). Allt du behöver göra är att välja det från listan över tillgängliga (du behöver inte ens göra detta - Illustrator tillåter skript att tilldela "snabbtangenter") med kommandot Edit.Keyboard shortcuts.Menu commands.Scripts. Men var medveten om: skriptnamn sorteras i alfabetisk ordning, så att lägga till nya eller ta bort gamla kan resultera i omtilldelning av nycklar till angränsande skript. Slutsats: efter att ha gjort ändringar i mappen Presets\Scripts, kontrollera nyckelmappningarna.

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

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

Och efterrätt?

Vi kommer att ägna nästa nummer åt visitkort: vi kommer att skriva ett skript som automatiserar deras layout på ett ark. Men det är också användbart för ett bredare utbud av uppgifter, eftersom det inte är knutet till storleken på objekt. Som förväntat kommer vi att tillhandahålla skapandet av utgåvor för att undvika problem med felaktig skärning av arket, samt rotation av visitkort (om deras topp och botten är väsentligt olika). Samtidigt kommer vi att beröra frågan om att söka efter föremål vars färgmodell skiljer sig från den givna, vilket inte heller är ovanligt i sådant arbete.

Tidningar är fritt tillgängliga.

På samma ämne:

    Nyheter 2019-04-03

    Hur valfritt vitt bläck hjälper till att skapa nya applikationer för storformatsutskrifter.

    Idag kan ett antal modeller av bredformats- och ultrabredformatsskrivare skriva ut med en extra färg av bläck - vitt, vilket skapar nya möjligheter att använda dessa enheter. Men skrivare kan implementera olika tekniker för utskrift av vitt bläck, och olika tekniker- dina förmågor och begränsningar.

Funktionaliteten i Adobe Illustrator är enorm, men det finns också några nackdelar här, som tur är, det här programmet har skript, vilket förenklar och till och med utökar programmets möjligheter. Förutom skriptning finns det även tillägg – anpassade paneler för att utöka programmet, men det här är ett lite annorlunda ämne.

Installerar skript

Om du aldrig har använt skript i Adobe Illustrator, här är din guide. snabb guide hur man kör skriptet.

Först måste vi placera de skript du vill använda i mappen "Scripts". Hur hittar jag sökvägen till den här mappen? Det är enkelt, gå till roten av mappen där den finns Adobe programmet Illustrator, sedan “Presets -> en_US -> Scripts”, istället för en_US kan det finnas en annan mapp med lokalisering, vilken lokalisering har Illustrator, välj en sådan mapp.

Efter att du har placerat skripten i mappen kan du köra dem med standardmetoden - detta startas via "Arkiv -> Skript", i rullgardinsmenyn kommer det att finnas en lista över dina skript, 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 "Arkiv -> Skript -> Andra skript...", Utforskaren öppnas, varefter du måste hitta skriptfilen och sedan köra skriptet
  2. Du kan helt enkelt dra skriptet till Illustrator från Utforskaren, varefter skriptet körs
  3. Du kan använda tillägg för att köra skript - det här är en panel för Illustrator som låter dig köra skript direkt från programmet. Det finns flera sådana tillägg. Jag rekommenderar att du använder LAScripts.

Harmoniserare

Skript för att arrangera element på ett rutnät

Välj objekten, kör skriptet, välj antalet kolumner (rader kommer att beräknas automatiskt), välj avståndet mellan elementen, såväl som deras centrering (som standard tas det största elementet från de valda).

ArtboardsResizeWithObjects

Skript för att ändra storlek på en rityta tillsammans med dess innehåll.

I Adobe Photoshop Det finns en "Bildstorlek"-funktion för att ändra ritytan tillsammans med innehållet, men Adobe Illustrator har inte en sådan funktion direkt. Ibland är det nödvändigt att ändra ritytan tillsammans med innehållet så att alla tillstånd bevaras efter ändringen.

Låt oss säga att du bestämmer dig för att ändra ritytan för hand, ordningen på dina handlingar: Ändra ritytan, sedan väljer du alla element på ritytan och ändrar storleken, men det är här ett problem uppstår. Om du har element med en linje, när du ändrar dem manuellt, kommer linjen inte att minska tillsammans med storleken på objektet, men du kan kringgå den här lösningen genom att markera kryssrutan "Skala linjer och effekter", men vad händer om du behöver ändra storleken på flera ritytor? För att förenkla och spara tid, använd skriptet artboardsResizeWithObjects.jsx


  • Ny skalfaktor- ritytans skala i procent
  • Ny rityta bredd- ny bredd på ritytan, höjden ändras proportionellt
  • Ny rittavlahöjd- ny höjd på ritytan, bredd kommer att ändras proportionellt
  • Endast aktiv rityta- ändra endast den aktiva ritytan
  • Alla rittavlor- ändra alla ritytor
  • Anpassade ritytor- ändra godtyckliga ritytor, du kan skriva antingen kommaavgränsade eller bindestreckseparerade (som när du anger sidor vid utskrift)
  • Inkludera dolda och låsta föremål- ta hänsyn till låsta och dolda element
  • Inmatningsfält för storlek- som standard tas bredden på den aktiva ritytan.

ArtboardsRotateWithObjects

Skript för att rotera ritytan tillsammans med innehållet.

I Adobe Photoshop kan du rotera ritytan och innehållet kommer också att roteras, men i Adobe Illustrator finns ingen sådan funktion out of the box.

Det här skriptet kommer att vara användbart om du behöver rotera flera ritytor, eller om du inte vill slösa tid på att justera positionen i förhållande till ritytan efter att ha roterat den.


Kort beskrivning av varje manusobjekt:

  • Aktiv rityta #- rotera endast den aktiva ritytan
  • Alla rittavlor- rotera alla ritytor
  • Rotationsvinkel 90 CW- rotera ritytan medurs
  • Rotationsvinkel 90 moturs- rotera ritytan moturs

InlineSVGToAI

Skript för att infoga svg (och konvertera svg-kod) i ett dokument.

I Adobe-versioner Illustrator CC 2018 v.22.1 (mars, 2018), lade till möjligheten att infoga ett svg-objekt i det här fallet, det finns inget behov av att använda ett skript.

Det har alltid irriterat mig att man inte kan infoga svg i ett program som är specialiserat på vektorer, jag menar, om vi kopierade svg-koden från en editor eller någon annanstans, men i form av text, då kommer vi inte att kunna. klistra in det i programmet. Du måste först spara koden i en fil, först sedan öppna filen i Illustraor, kopiera innehållet och klistra in det i erforderligt dokument. Många onödiga handlingar, eller hur?

För att bli av med detta missförstånd skrev jag ett skript som automatiskt skapar en fil, importerar innehållet till ditt dokument och sedan raderar det. De där. manuset gör allt på samma sätt, men utan vår medverkan och vi behöver inte slösa tid på det.


Kort beskrivning av varje manusobjekt:

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

PuzzleClipper


Skript för att skapa pussel baserat på objekt.

Skriptet skapar grupper med urklippsmasker, elementet som kommer att "klippas ut" är det lägsta objektet av de valda. Driftlägen, om du har en grupp överst och ett objekt under, så kommer alla element i gruppen att konverteras till grupper med en urklippsmask 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.


Ersätt artiklar

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

Du behöver till exempel byta ut några element på layouten, men det tar lång tid att byta ut dem för hand, du kan använda detta manus för att ersätta, välj bara det element du behöver, kopiera det, kör sedan skriptet, välj "Object Buffer".

Skriptet kan också slumpmässigt rotera vart och ett av elementen, ta måtten på det ersatta elementet, ta fyllningen, och du kan inte heller ta bort det ursprungliga elementet.


Kort beskrivning av varje manusobjekt:

  • Objekt i buffert - objektet finns i klippbordet
  • Toppobjekt - objektet är det första från listan över valda
  • Allt i grupp (slumpmässigt) - ett objekt väljs slumpmässigt från gruppen
  • Skalfält - skala för det infogade elementet
  • Vill du byta ut objekt i en grupp? - Byts elementen ut i en grupp? (om elementen som måste ersättas finns i en grupp, markera den här rutan, annars kommer hela gruppen att ersättas, och inte varje element från gruppen)
  • Kopiera bredd och höjd - Kopiera bredd- och höjdvärdena från elementet som ersätts
  • Spara originalelement - spara (ta inte bort) elementet som ersätts
  • Kopiera färger från element - kopiera fyllningen från elementet som ersätts
  • Slumpmässig rotationselement - rotera slumpmässigt varje element

Skapa ArtboardsFromTheSelection

Skript för att skapa ritytor baserat på utvalda element.

Skriptet skapar en rityta baserat på de valda elementen, såväl som för vart och ett av de valda.


Kort beskrivning av varje manusobjekt:

  • Var och en i urvalet - skapa en samling av valda element för varje
  • Endast urvalsgränser - skapa en rityta baserat på ett urval.
  • Objektgränser Vsible - gränser för elementet "Visible".
  • Objektgränser Geometrisk - gränser för elementet "geometrisk"

TransferSwatches

Skript för att importera färgprover (swatches) från ett dokument till det aktiva dokumentet.

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


ArtboardItemsMoveToNewLayer

Ett skript som placerar innehållet i en rityta på ett nytt lager.

Kör skriptet, välj ritytor, du kan också välja "ta bort tomma lager och underlager" och "Layer name from artboard name".


Adobe Illustrator har många verktyg och funktioner, men den avancerade användaren kommer alltid att sakna något. Därför skapar utvecklare skript och plugins som hjälper till att lösa olika problem och påskynda arbetsintensiva processer. Idag har vi förberett för dig en recension av de bästa gratis skripten för Illustrator. Deras lista är systematiserad och indelad i flera grupper efter funktionalitet. Det här är att arbeta med stigar och punkter, Olika typer distribution av former, generering av objekt, arbete med panelen Lager, textobjekt, färg osv.

Installera och köra skript

Skriptet måste installeras i följande mappar:

För Windows: C:\Program Files\Adobe\Adobe Illustrator CC 2014\Presets\en_GB\Scripts

För Mac OS: Applications/Adobe\Adobe Illustrator CC 2014\Presets\en_GB\Scripts

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

Du kan också placera skripten på valfri annan lämplig plats på din hårddisk. I det här fallet, för att köra skriptet, gå till Arkiv > Skript > Annat skript... (Cmd/Ctrl + F12).

Om du ofta använder skript, kommer du att finna det användbart för bekväm start. Detta gratis plugin ger åtkomst till skriptet från panelen, som alltid kan placeras på en bekväm plats.

Låt oss nu ta en titt på listan över skript, som är uppdelade efter funktionalitet:

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

Detta skript roterar handtagen på ankarpunkterna och ändrar deras längd lika mycket. Efter att ha kört skriptet har du möjlighet att välja en av fem handtagstyper och sedan ställa in alternativ för längder och vinklar.

Detta skript 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 tagits bort.

Skriptet stänger öppna sökvägar i det aktuella dokumentet. Kopplar inte ihop tangentbanor.

Skriptet ändrar riktningen för de valda banorna enligt riktningen för det översta segmentet. Det vill säga, efter att ha tillämpat skriptet kommer alla valda sökvägar att ha samma riktning.

Skriptet kopierar det översta objektet till positioner och storlekar för andra objekt. Det är svårt att beskriva, det är lättare att titta på bilden nedan.

Skript som distribuerar objekt

Manuset fyller formuläret med cirklar.

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

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

Skriptet roterar objekt till mitten av det översta objektet.

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

Skriptet gör det möjligt att dela upp arean av ett vektorobjekt i enlighet med data som kan presenteras i absoluta eller procentuella termer.

Manuset skapar spegelreflektion i enlighet med den valda typen från panelen.

Skript som genererar objekt baserat på andra objekt eller data

Manuset kopplar samman former i meta-ball-stilen (vet du det ryska namnet på denna form? Jag vet inte).

Skriptet skapar gemensamma (alla möjliga) tangenter till de markerade objekten.

Skriptet skapar guider från den valda punkten till de valda krökta segmenten.

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

Med det här skriptet kan du automatiskt skapa ett kalenderrutnät med bara några få klick. Stöder språk: EN, RU, DE, UA.

Skript med slumpmässiga parametrar

Skriptet allokerar objekt i slumpmässig ordning enligt den angivna kvantiteten.

RandomSwatchesFill-skriptet målar slumpmässigt valda objekt i de färger som valts i paletten Swatches.

RandOpacity-skriptet ändrar genomskinligheten för de markerade objekten slumpmässigt i intervallet från 0 % till 100 % av objektens initiala genomskinlighet.

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

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

Skript för att arbeta i panelen Lager

Skriptet tar bort alla tomma lager i det aktuella dokumentet.

Du har unikt tillfälle utöka funktionaliteten i Adobe Illustrator. Det finns inget enklare än att använda skript (skriptfiler), välj bara ett objekt och kör det skript du behöver. Skripten som presenteras i den här artikeln kommer att spara mycket tid och göra 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 letar efter premium Illustrator-tillägg kan du hitta dem i avsnittet Illustrator Actions and Scripts i vår GraphicRiver, till exempel: Isometric Guides Grid Action, Pattern Maker och Long Shadow Action (Åtgärd för att skapa en lång skugga) .

De bästa åtgärderna (operationerna) och skripten för Illustrator på Graphic River.

Annars kan du dra nytta av de gratis "godsakerna" som vi kommer att berätta om nu. Men först, låt oss ta reda på hur man installerar skript för Illustrator.

Installation av skript

Det är lämpligt att alltid spara skripten som du ska använda på samma plats, till exempel i katalogen Scrips. För att köra skriptet måste du gå till Arkiv > Skript > Andra skript (Kommando + F12) (Arkiv > Skript > Andra skript).

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

Dela med sig