Scripting Illustrator Del 1

Scripting Illustrator Del 1 - Hvor å konvertere en Flat Process Color til sin matchende Gradient

Vi er ganske kjent med Adobe Illustrator og dets brukergrensesnitt. I vårt daglige kreative oppgaver bruker vi en rekke funksjoner, for eksempel: meny, paller, farger, plug-ins og verktøy. Vi bruker disse funksjonene i form av et brukergrensesnitt. Disse UI funksjonene er brakt frem til oss gjennom ulike skript og plug-ins.

I en enklere måte, kan vi kode skript for å automatisere oppgaver eller å få noen effekt i Illustrator. Følg med for å lære hvordan du gjør det. I denne opplæringen vil vi kode i Javascript et skript som vil konvertere en flat prosess fylt objekt i sin matchende gradient.



Vector Plus

Vil tilgang til hele Vector kilde~~POS=TRUNC filer~~POS=HEADCOMP og nedlastbare kopier av hver tutorial, inkludert denne? Bli Vector Plus for bare 9 $ i måneden

Tutorial Detaljer

Program:. Adobe Illustrator CS3 og ExtendedScript Toolkit

Vanskelighetsgrad: Middels

Beregnet Fullføringstidspunkt: 3 til 4 timer

AIM av script

Vi ønsker at dette skriptet til å utføre en svært enkel oppgave. I Adobe Illustrator, når en bruker velger noen objekter fylt med en Flat CMYK farge, og utfører dette Script; objektene skal bli omgjort til en tilsvarende CMYK Gradient fyll. Utgangen gradient vil bli noe som ligner på en gradient overlay effekt sett i formere modus. Dette er vist i bildet nedenfor.

Derfor er målet med våre skriptet er å konvertere en flat CMYK fylt objekt i en mørk til lys matching gradient. Dette er en enkel handling som er en god øvelse for å lære hvordan å script for Illustrator.

Logikk og Algoritme

Logikken for å konvertere en flat farge inn i en mørk-til-lys gradient kan være forstått i fem enkle trinn:

trinn 1: Velg farge på det aktuelle objektet. dvs. current = fargen markerte objektet

Trinn 2: Opprett en ny gradient farge med to rampstops: startColor og endColor

Trinn 3:.. startColor = current - gShift dvs. lette den opprinnelige fargen .

Trinn 4:. endColor = current + gShift dvs. mørkere opprinnelige fargen

Trinn 5: Påfør ny gradient med startColor og endColor til objektet.

Hvor gShift
er mengden av gradient skift som legges inn av brukeren. Ovennevnte Algoritmen kan lett forstås fra billedlig fremstilling vist nedenfor.

Bortsett fra kjernen logikken, vil vi gjennomføre noen valideringer og sjekker for riktig funksjon av dette skriptet. Disse valideringer vil bli dekket på ulike stadier av denne opplæringen. Før du drar mot selve opplæringen, la oss bli kjent med noen forutsetninger.

Introduksjon til Scripting

Denne opplæringen krever noen grunnleggende kunnskaper om scripting og dens omgivelser. Å bli kjent med Illustrator er Scripting Environment, kan du ta en rask titt inn dokumentasjonen tilgjengelig i Illustrator installasjonsmappen gå til installation_Directory \\ Adobe \\ Adobe Illustrator CS3 \\ Scripting \\ Dokumentasjon. Her vil du finne følgende dokumenter å komme i gang med Javascript:

Adobe Intro til Scripting.pdf

Illustrator CS3 Scripting Guide.pdf

Illustrator CS3 Java Reference.pdf

Java guide Tools CS3.pdf

typer scripts

Det er tre typer skript vi kan skrive for Illustrator. Disse er: Applescript Hotell og VBScript
. Siden Javascript støttes på både Windows og Mac OS, vil vi kode vår logikk i Javascript. Syntaksen og notasjoner er svært lik standard Javascript. Den eneste forskjellen er om forlengelse. For Illustrator, vil vi betegne alle Javascript-filer de med en forlengelse .jsx
i stedet for den vanlige JS
forlengelse.

Nødvendig verktøy

Selv om kan du kode hele Javascript i noen av dine favoritt teksteditor; det er tilrådelig å bruke Adobe ExtendedScript Toolkit
. Ved å bruke dette programmet, kan vi kjøre, feilsøke, test og sjekk vår kode synkront med Illustrator

Merk:.. I denne opplæringen, vil vi betegne ExtendedScript Toolkit med et kort skjema - ESTK


Trinn 1

Åpne Adobe ExtendedScript Toolkit og opprette en ny Javascript-fil. Deretter velger du Adobe Illustrator fra rullegardinlisten for målet søknad. Dette forteller ESTK at vi skriver Javascript for et bestemt program, dvs. Adobe Illustrator

Trinn 2 -. Skrive en enkel kodebit

I koden redigeringsområdet, setter følgende linjer med kode :
if (app.documents.length > 0) alert ( "dokumenter er tilgjengelige"), ellers alert ( "Ingen dokumenter tilgjengelige");

i koden ovenfor, vi sjekker om det er noen dokumenter i dag åpnet i Illustrator. Dette gjøres via

app.documents.length. dvs. Det øverste nivået objekt i en hvilken som helst Adobe Application DOM er programmet objektet. Neste er dokumentobjekt, noe som ytterligere har objekter som farger, lag, tekst, sider osv Lagre denne filen på harddisken som

Trinn 2.1 "test.jsx." - Gjennomføring av Script
< p> det er to måter å utføre skriptet:

1. Utfører fra ESTK

Hvis du ønsker å kjøre skriptet gjennom ESTK, trykk på Play-knappen som vist nedenfor.

Dette vil automatisk starte Adobe Illustrator programmet og vil generere varselmeldingen. Du kan stoppe eller stoppe kjøringen ved å trykke på pause eller stoppe knapper hhv.

2. Utfører fra Illustrator

For å utføre dette skriptet fra Illustrator, gå til Fil > Scripts > Andre Script (Command + F12) og finn din nyopprettede filen "test.jsx." Når du har klikket Open, vil skriptet bli henrettet.

Så hva fikk du? En varselmelding, "Ingen dokumenter tilgjengelige."

Deretter oppretter du et par nye dokumenter i Illustrator og kjøre dette skriptet på nytt. Denne gangen, vil du se et varsel, "Dokumenter er tilgjengelige."

Opp til dette punktet, vi har skrevet og testet en liten kode. Dette ble gjort som en varm-up trening for å bli kjent med ESTK og Illustrator. I våre neste skritt, vi kommer til å jobbe på selve manuset

Trinn 3 -. The Code Structure

Gå tilbake til ESTK og slett testing koden som vi opprettet i trinn 2. Neste Legg til følgende linjer med kode inn i "test.jsx:" Twitter /* for å sørge for at det er minst ett dokument tilgjengelig i Illustrator og atleast ett objekt i dokumentet for å jobbe på * /if (app.documents.length > 0 & & app.activeDocument.pathItems.length > 0) {//For å være sikker på dokumentfargemodus er CMYK if (app.activeDocument.documentColorSpace == DocumentColorSpace.CMYK) {convertToGrad (); //Ring til faktiske funksjon som vil inneholde all logikk} else {alert ( "Document Color Space er ikke CMYK Endre dokumentfargemodus til CMYK-modus.", "CMYK Document kreves"); }} Else {alert ( "Enten ingen dokumenter er tilgjengelig eller dokumentet er tom"); } Funksjon convertTograd () {//Logic for å konvertere flat farge inn gradient}

I koden ovenfor struktur, er vi rett og slett å skape en forutsetning sjekk for vår hoved logisk funksjon - converToGrad (). dvs. Hoved logikken bør utføres bare dersom følgende vilkår er oppfylt:.


    Minst ett dokument med ett objekt eksisterer, slik at vi kan jobbe med det

    Dokumentet fargerom bør være CMYK, fordi hele logikken er basert på CMYK-farger

    Trinn 3,1 -. Forstå DOM Entities

    app.documents.length returnerer det totale antallet dokumenter åpnet i Illustrator .

    en activeDocument objekt refererer til gjeldende (aktive) dokument der du arbeider.

    pathItems refererer til en samling av alle pathItem objekter innenfor en Illustrator document.Any grafisk element som rektangel , ellipse, polygon, linje, tilpassede former osv er betegnet som pathItem; og en samling av alle disse pathItem betegnes som pathItems. Derfor vil app.activeDocument.pathItems.length returnere antall grafiske enheter som finnes i det gjeldende dokumentet.

    documentColorSpace objekt definerer fargemodusen i dokumentet. Vi gjør denne valideringen fordi all logikk i dette skriptet vil være basert på CMYK fargerom.

    Den grunnleggende kodestrukturen er alle satt og gjort. Deretter vil vi gå inn i convertToGrad () -funksjonen

    Trinn 4 -. Fra og med hoved Logic

    Den første og fremst kravet om vår viktigste logikk er å hente det totale antallet valgte elementer. Hvis ingen elementer er valgt, skal skriptet varsle deg om å velge minst ett objekt. For dette, legge til følgende linjer med kode inn convertToGrad () -funksjonen:
    funksjon convertToGrad () {var elementer = valg; Var totalSelected = items.length; if (totalSelected > 0) {//fortsette med hoved logikken} else {alert ( "Velg minst ett objekt"); }} //End convertToGrad

    Var elementer = valg skaper en ny variable elementer og tildeler hele utvalget til det. I neste linje, returnerer items.length det totale antall utvalgte elementer, som er tildelt totalSelected

    Trinn 5 -. Å få brukerdata

    For å konvertere en flat farge i en gradient, vi vil be brukeren om å angi noen verdier for Gradient Shift og Gradient Angle. Men før det, la oss se hva de er

    Gradient Shift. Dette er en tallverdi som avgjør hvor mye farge vil bli lagt til eller fjernet fra den opprinnelige fargen. Dette er den viktigste delen av vår logikk i å konvertere en flat farge i en gradient.

    Hvordan virker en Gradient Skiftarbeid? For å forstå hvordan det fungerer, bør du vurdere et enkelt eksempel på et objekt fylt med CMYK-verdier: C = 50, M = 20, Y = 100 og K henholdsvis = 30.

    Deretter ber vi brukeren om å taste inn en verdi for Gradient Shift. La oss betegne denne verdien ved gShift, og brukeren har skrevet 10 for gShift.

    Når vi har fått gShift verdi, vil vi lage to gradient stopp for vår objekt. Første stopp, dvs. lettere en; vil ha alle CMYK-verdiene reduseres med gShift. Mens, siste stopp, dvs. mørkere, vil ha alle CMYK-verdier økes med gShift.

    På denne måten en mørk til lys gradient vil bli generert fra selve fyllfarge. Vi vil også utføre noen valideringer for å begrense CMYK-verdiene innenfor 0 og 100, fordi legge til eller trekke en gShift verdi kan flytte CMYK-verdiene utover 0 eller 100.

    Gradient Angle: Selv ikke en del av kjernen logikken vil vi bruke denne funksjonen til å gi noen tilgjengelighet og frihet til å velge en tilpasset vinkel for den resulterende gradient. Bruken av gradient vinkelen vil bli sett i den senere stadium av denne opplæringen.

    La oss gå tilbake til kode og hente brukerdata.

    Trinn 6

    For å hente brukerdataene, skriver du inn følgende linjer med kode i if (totalSelected > 0) blokk:
    if (totalSelected > 0) {var gShift = Math.round (ledetekst ( "Angi en verdi for gradient shift", "10", "Gradient Shift")); if (gShift == null || gShift < = 0) gShift = 0; if (gShift > = 100) gShift = 100; Var gradAngle = prompt ( "Vector vinkel for Gradient", "0.0", "Gradient Angle") if (gradAngle == null) gradAngle = 0;} //endif

    I de ovennevnte linjer med kode, er vi spørre en brukeren må taste inn noen verdi for gradient skift og gradient vinkel. Den Math.round () -funksjonen runder oppgitte verdien til et helt tall. (. Merk: Du kan hoppe Math.round () hvis du ønsker å ha desimalverdier akseptert
    ). Standardverdiene for gShift og gradAngle er satt til "10" henholdsvis "0,0"
    < p> Merk at vi også validere de angitte verdiene for null og null. er oppstått null når en bruker klikker på Avbryt. Dessuten er vi begrense gShift verdi innen 0 og 100.

    Når vi har gShift og gradAngle verdier, vi kan fortsette fremover for resten av koden

    Trinn 7 -. Arbeid på de valgte objektene

    Like etter gradAngle erklæringen, skriv følgende linjer med kode:
    for (var j = 0; j < totalSelected; j ++) {var currentObject = app.activeDocument.selection [j ]; if (currentObject.typename = "CompoundPathItem" &! &! currentObject.typename = "GroupItem") {if (currentObject.filled == true & &! currentObject.fillColor.typename = "GradientColor" & & currentObject.fillColor.typename = "PatternColor" &! & currentObject.fillColor.typename = "SpotColor" &! &) currentObject.fillColor.typename = "GrayColor" {//utføre fargekonvertering her} else {alert ( "Fyll et objekt med CMYK farge gjenstander som inneholder \\ ngradients, mønstre, spotfarger eller tomme fyll vil bli utelatt..", "Bare CMYK farger tillatt"); }} Else {alert ( "Dette skriptet fungerer bare med ikke-sammensatte objekter eller isolert gruppe elementer \\ nany elementer med grupper eller sammensatte objekter vil bli utelatt..", "Dele eller isolering av gruppeelementer"); }} //EndFor

    app.activeDocument.selection [j] returnerer det valgte objektet én etter én for hver iterasjon av j.

    For hvert valgte objektet, vi gjør noen valideringer og sjekker. Disse kontrollene er avgjørende på dette stadiet. Den første sjekken er å fastslå om gjenstanden er et sammensatt element eller en gruppe element. Siden dette skriptet ikke vil arbeide direkte på grupper eller sammensatte objekter, er denne kontrollen obligatorisk.

    I neste nivå, er vi sjekker om det valgte objektet er allerede en gradient, mønster eller spotfarge. I så fall vil disse objektene bli hoppet over.

    Det er ett mer sjekk for grayColor spesifikasjonen. GrayColor er litt annerledes enn CMYK Color spesifikasjonen.

    En detaljert teknikk er involvert for å behandle objekter med grayColor spesifikasjonen, som jeg ikke er inkludert i denne fasen av opplæringen. Imidlertid er denne teknikken inkludert i kildefilene for din interesse

    Trinn 8 -. Plukk og Split Color

    I henhold til vår logikk og algoritme, vil vi velge den fargen for hvert valgte objektet og dele sine CMYK-verdiene inn i fire ulike variabler, som vist nedenfor:
    Var current = currentObject.fillColor; Var currentCyan = Math.round (currentColor.cyan); Var currentMagenta = Math.round (currentColor.magenta); Var currentYellow = Math.round (currentColor.yellow); Var currentBlack = Math.round (currentColor.black);

    Merk: Alle disse linjer med kode skal komme innenfor "Utfør fargekonvertering" block, som vist i trinn 7.

    pathItem.fillColor returnerer fyllfargen på en bestemt bane element. I vårt tilfelle er det pathItem currentObject. Vi bruker color.cyan, color.magenta, color.yellow og color.black egenskaper for å hente C, M, Y og K-verdier på henholdsvis inn i fire ulike variabler. Når vi setter disse verdiene, kan vi lett oppveie dem med gShift

    Trinn 9 -. Erklærer Farger for Gradient Rampstops

    Vår resulterende gradient vil ha to gradient stopp. La oss betegne dem med startColor og endColor. Den variable erklæring for disse to rampstop fargene vil være som vist nedenfor:
    Var startColor = new CMYKColor (); Var endColor = new CMYKColor ();

    CMYKColor er en CMYK fargespesifikasjonen brukes til farge stedene. Her er det startColor og endColor erklært som nye CMYK-farger

    Trinn 10 -. Utligne startColor og endColor

    På dette stadiet, vi har alle de nødvendige ressurser for å skape en ny stigning. Vi har current (med separate CMYK-verdier), startColor, endColor og gShift. Vi kan nå sette de endelige fargeverdiene for startColor og endColor bruker offset teknikk

    Trinn 10.1 -. Stille startColor

    startColor vil være i den lyse delen av graderingen. Derfor vil vi trekke gShift fra C, M, Y og K verdier av current, noe som resulterer i startColor
    startColor.cyan = currentCyan - gShift;. StartColor.magenta = currentMagenta - gShift; startColor.yellow = currentYellow - gShift; startColor .Black = currentBlack - gShift;

    Dette er enkelt, men vi trenger å foreta enkelte kontroller. For eksempel, hva vil skje hvis currentCyan er allerede mindre enn gShift? Si, er currentCyan 10 og gShift er 20. Den resulterende cyan verdi for startColor vil bli 10-20 = (-) 10. For å overvinne dette problemet, vil vi endre ovenfor sett koden inn følgende linjer med kode:
    if (currentCyan < gShift) startColor.cyan = 0; annet startColor.cyan = currentCyan - gShift; if (currentMagenta < gShift) startColor.magenta = 0; annet startColor.magenta = currentMagenta - gShift; if (currentYellow < gShift) startColor.yellow = 0; annet startColor.yellow = currentYellow - gShift; if (currentBlack < gShift) startColor.black = 0; annet startColor.black = currentBlack - gShift;
    Trinn 10.2 - Stille endColor

    endColor vil være den mørkere delen av graderingen. Derfor vil vi legge gShift til C, M, Y og K-verdier eller current hhv. Etter enkle tillegg koden skal se slik ut:
    endColor.cyan = currentCyan + gShift; endColor.magenta = currentMagenta + gShift; endColor.yellow = currentYellow + gShift; endColor.black = currentBlack + gShift;

    Igjen, alt ser greit. Men det er en komplikasjon: Hva vil skje hvis tillegg av gShift resulterer i en høyere verdi enn 100? For eksempel er currentCyan 95 og gShift er 20. Legge til disse to vil resultere i endColor.cyan = 115; som ikke er akseptabelt. Så vil vi kompensere dette med noen valideringer.

    La oss lage en ny variabel gShiftEnd, som er lik 100-gShift. Deretter vil vi sjekke om den nåværende C, M, Y eller K-verdien er større enn gShiftEnd. I så fall vil vi sette endColor er C, M, Y eller K-verdien til 100; ellers vil vi sette endColor er C, M, Y eller K-verdi ved å legge gShift til dagens C, M, Y eller K. Dette kan utdypes fra eksempelet vi så ovenfor.

    Vi har currentCyan = 95 og gShift = 20. Derfor gShiftEnd = 100 - 20. dvs. 80. Deretter er currentCyan større enn gShiftEnd; så vi vil sette endColor.cyan til 100.

    Etter dette prinsippet, vår kode vil bli endret til følgende:
    gShiftEnd = 100-gShift; if (currentCyan > gShiftEnd) endColor.cyan = 100; annet endColor.cyan = currentCyan + gShift; if (currentMagenta > gShiftEnd) endColor.magenta = 100; annet endColor.magenta = currentMagenta + gShift; if (currentYellow > gShiftEnd) endColor.yellow = 100; annet endColor.yellow = currentYellow + gShift; if (currentBlack > gShiftEnd) endColor.black = 100; annet endColor.black = currentBlack + gShift;

    Så, opp til dette punktet, hele koden vil se slik ut:
    if (app.documents.length > 0 & & app.activeDocument.pathItems. lengden > 0) {if (app.activeDocument.documentColorSpace == DocumentColorSpace.CMYK) {convertToGrad (); } Else {alert ( "Document Color Space er ikke CMYK Endre dokumentfargemodus til CMYK-modus.", "CMYK Document kreves"); }} //Slutt hoved hvis else {alert ( "Enten ingen dokumenter er tilgjengelig eller dokumentet er tom"); } Funksjon convertToGrad () {var elementer = valg; Var totalSelected = items.length; if (totalSelected > 0) {var gShift = Math.round (ledetekst ( "Angi en verdi for gradient shift", "10", "Gradient Shift")); if (gShift == null || gShift < = 0) gShift = 0; if (gShift > = 100) gShift = 100; Var gradAngle = prompt ( "Vector vinkel for Gradient", "0.0", "Gradient Angle") if (gradAngle == null) gradAngle = 0; for (var j = 0; j < totalSelected; j ++) {var currentObject = app.activeDocument.selection [j]; if (currentObject.typename = "CompoundPathItem" &! &! currentObject.typename = "GroupItem") {if (currentObject.filled == true & &! currentObject.fillColor.typename = "GradientColor" & & currentObject.fillColor.typename = "PatternColor" &! & currentObject.fillColor.typename = "SpotColor" &! &! currentObject.fillColor.typename = "GrayColor") {var current = currentObject.fillColor; Var currentCyan = Math.round (currentColor.cyan); Var currentMagenta = Math.round (currentColor.magenta); Var currentYellow = Math.round (currentColor.yellow); Var currentBlack = Math.round (currentColor.black); //Opprett en farge for begge ender av gradient Var startColor = new CMYKColor (); Var endColor = new CMYKColor (); if (currentCyan < gShift) startColor.cyan = 0; annet startColor.cyan = currentCyan - gShift; if (currentMagenta < gShift) startColor.magenta = 0; annet startColor.magenta = currentMagenta - gShift; if (currentYellow < gShift) startColor.yellow = 0; annet startColor.yellow = currentYellow - gShift; if (currentBlack < gShift) startColor.black = 0; annet startColor.black = currentBlack - gShift; gShiftEnd = 100 - gShift; if (currentCyan > gShiftEnd) endColor.cyan = 100; annet endColor.cyan = currentCyan + gShift; if (currentMagenta > gShiftEnd) endColor.magenta = 100; annet endColor.magenta = currentMagenta + gShift; if (currentYellow > gShiftEnd) endColor.yellow = 100; annet endColor.yellow = currentYellow + gShift; if (currentBlack > gShiftEnd) endColor.black = 100; annet endColor.black = currentBlack + gShift; //Gradient Erklæring Block} //endif else {alert ( "Fyll et objekt med CMYK farge Gjenstander som inneholder \\ ngradients, mønstre, spotfarger eller tomme fyll vil bli utelatt..", "Bare CMYK farger tillatt"); }} Else {alert ( "Dette skriptet fungerer bare med ikke-sammensatte objekter eller isolert gruppe elementer \\ nany elementer med grupper eller sammensatte objekter vil bli utelatt..", "Dele eller isolering av gruppeelementer"); }} //EndFor} //end valgt else {alert ( "Velg minst ett objekt"); }}
    Trinn 11 - Opprette nye Gradient

    Nå som vi har satt startColor og endColor; vi kan gå videre med etableringen av den nye graderingen

    Trinn 11.1 -. Erklærer Gradient

    For å legge til en ny gradient, setter følgende linjer med kode i " //Gradient erklæring Block
    "
    Var newGradient = app.activeDocument.gradients.add (.); newGradient.type = GradientType.LINEAR;.

    Dette vil legge til en ny lineær typen Gradient i det aktive dokumentet

    Trinn 11.2 - Innstilling Egenskaper for nyopprettede Gradient

    Legg til følgende linjer med kode rett etter gradient erklæring:
    //Endre de første gradient stopp newGradient.gradientStops [0] .rampPoint = 0; newGradient.gradientStops [0] .midPoint = 50; newGradient.gradientStops [0] Color = startColor; //Endre siste gradient stopp newGradient.gradientStops [1] .rampPoint = 100; newGradient.gradientStops [1] Color = endColor;

    gradientStop [0] er den første gradient stopp, mens gradientStop [1] er den siste gradient stopp. Hvis du ønsker å ha flere graderings stopper, kan du betegne dem som gradientStop [2], gradientStop [3] og så videre.

    rampPoint brukes til å stille rampen punktposisjon på den tilhørende gradientStop. Vi har satt den første og siste oppkjørings punkt som 0 og 100 kroner. midtpunktet brukes til å angi posisjonen til midtpunktet mellom to gradient stopp. Vi har satt denne til 50. Til slutt, vi har tildelt verdiene av startColor og endColor til den første og siste gradientStops henholdsvis

    Trinn 12 -. Lag en Gradient Color Object

    Vi er nesten ferdig med fargekonvertering og gradient formasjon. Deretter må vi anvende denne nyopprettede gradient til gjeldende valgte objektet. For å gjøre det, vil vi lage en Gradient Color Object henviser til den nyopprettede gradient

    . Merk: Vi kan ikke søke den nyopprettede gradient direkte som en fyllfarge til objektet. For å kunne bruke denne gradienten, må vi lage en ny Gradient Color objekt, som vist nedenfor:
    //konstruere en Illustrator.GradientColor objekt henvise til //nyopprettede gradient Var colorOfGradient = new GradientColor ( ); colorOfGradient.gradient = newGradient;
    Steg 13 - Påfør Gradient

    Til slutt vil vi fylle currentObject med colorOfGradient, som vist nedenfor:
    //få aktuelle banen element, påfør ny gradient som sin fill currentObject.fillColor = colorOfGradient; currentObject.rotate (gradAngle, falsk, falsk, sann, usann Transformation.CENTER);

    Vi har søkt en rotasjon matrise på det aktuelle objektet. Denne dreining matrise gjør bruk av gradienten vinkel for å transformere gradient. Syntaksen til rotasjon is:


    rotate
    (angle
    [,changePositions]
    [,changeFillPatterns]
    [,changeFillGradients]
    [,changeStrokePattern]
    [,rotateAbout])

    Here, Vi har satt changeFillgradients til "true" og resten til "false". Dette er en vanskelig vei å rotere gradient farge i en bestemt vinkel. Takk til John Wundes for å foreslå for meg denne intelligente teknikken

    Trinn 14 - The Final Script

    Den endelige manuset etter fullstendig koding er vist nedenfor.
    Hvis (app.documents.length > 0 & & app.activeDocument.pathItems.length > 0) {if (app.activeDocument.documentColorSpace == DocumentColorSpace.CMYK) {convertToGrad (); } Else {alert ( "Document Color Space er ikke CMYK Endre dokumentfargemodus til CMYK-modus.", "CMYK Document kreves"); }} //Slutt hoved hvis else {alert ( "Enten ingen dokumenter er tilgjengelig eller dokumentet er tom"); } Funksjon convertToGrad () {var elementer = valg; Var totalSelected = items.length; if (totalSelected > 0) {var gShift = Math.round (ledetekst ( "Angi en verdi for gradient shift", "10", "Gradient Shift")); if (gShift == null || gShift < = 0) gShift = 0; if (gShift > = 100) gShift = 100; Var gradAngle = prompt ( "Vector vinkel for Gradient", "0.0", "Gradient Angle") if (gradAngle == null) gradAngle = 0; for (var j = 0; j < totalSelected; j ++) {var currentObject = app.activeDocument.selection [j]; if (currentObject.typename = "CompoundPathItem" &! &! currentObject.typename = "GroupItem") {if (currentObject.filled == true & &! currentObject.fillColor.typename = "GradientColor" & & currentObject.fillColor.typename = "PatternColor" &! & currentObject.fillColor.typename = "SpotColor" &! &! currentObject.fillColor.typename = "GrayColor") {var current = currentObject.fillColor; Var currentCyan = Math.round (currentColor.cyan); Var currentMagenta = Math.round (currentColor.magenta); Var currentYellow = Math.round (currentColor.yellow); Var currentBlack = Math.round (currentColor.black); //Opprett en farge for begge ender av gradient Var startColor = new CMYKColor (); Var endColor = new CMYKColor (); if (currentCyan < gShift) startColor.cyan = 0; annet startColor.cyan = currentCyan - gShift; if (currentMagenta < gShift) startColor.magenta = 0; annet startColor.magenta = currentMagenta - gShift; if (currentYellow < gShift) startColor.yellow = 0; annet startColor.yellow = currentYellow - gShift; if (currentBlack < gShift) startColor.black = 0; annet startColor.black = currentBlack - gShift; gShiftEnd = 100 - gShift; if (currentCyan > gShiftEnd) endColor.cyan = 100; annet endColor.cyan = currentCyan + gShift; if (currentMagenta > gShiftEnd) endColor.magenta = 100; annet endColor.magenta = currentMagenta + gShift; if (currentYellow > gShiftEnd) endColor.yellow = 100; annet endColor.yellow = currentYellow + gShift; if (currentBlack > gShiftEnd) endColor.black = 100; annet endColor.black = currentBlack + gShift; //Opprett en ny gradient //En ny gradient har alltid to stopper Var newGradient = app.activeDocument.gradients.add (); newGradient.type = GradientType.LINEAR; //Endre de første gradient stopp newGradient.gradientStops [0] .rampPoint = 0; newGradient.gradientStops [0] .midPoint = 50; newGradient.gradientStops [0] Color = startColor; //Endre siste gradient stopp newGradient.gradientStops [1] .rampPoint = 100; newGradient.gradientStops [1] Color = endColor; //Konstruere en Illustrator.GradientColor objekt henvise til //nyopprettede gradient Var colorOfGradient = new GradientColor (); colorOfGradient.gradient = newGradient; //Få nåværende banen element, påfør ny gradient som sin fill currentObject.fillColor = colorOfGradient; currentObject.rotate (gradAngle, falsk, falsk, sann, usann Transformation.CENTER); } //Endif else {alert ( "Fyll et objekt med CMYK farge Gjenstander som inneholder \\ ngradients, mønstre, spotfarger eller tomme fyll vil bli utelatt..", "Bare CMYK farger tillatt"); }} Else {alert ( "Dette skriptet fungerer bare med ikke-sammensatte objekter eller isolert gruppe elementer \\ nany elementer med grupper eller sammensatte objekter vil bli utelatt..", "Dele eller isolering av gruppeelementer"); }} //EndFor} //end valgt else {alert ( "Velg minst ett objekt"); }}
    Trinn 15 - Kjør Script

    Lagre skriptet og opprette et nytt dokument i Adobe Illustrator. Deretter oppretter noen objekter med flate CMYK-farger. Velg noen av disse objektene og utføre skriptet ved å følge metodene som er beskrevet i trinn 2.1.

    Du vil bli bedt om å angi Gradient Shift. Skriv inn en verdi for gShift.

    Deretter vil du bli spurt om gradient vinkel. Skriv inn noen verdi for gradAngle.

    Til slutt vil du se resultatet vist nedenfor.

    Konklusjon og Scope

    Vi har lært å skrive skript for å automatisere eller genererer en effekt . Eksempelet vist i denne opplæringen var en enkel demonstrasjon av hva vi kan utføre gjennom skript. Med dette eksempelet har vi lært hvordan CMYK farger er representert i skript, hvordan de fungerer og hvordan objekter oppfører seg i DOM av Adobe Illustrator. I vår neste del, vil vi dekke et skript som smelter tilgjengelig gradient farge i en flat CMYK farge. Håper du likte denne innledende opplæringen for å skript.

    Abonner på Vectortuts + RSS-feed for å holde deg oppdatert med de nyeste vektor tutorials og artikler.