Tutti noi abbiamo abbastanza familiarità con Adobe Illustrator e la sua interfaccia utente. Nelle nostre attività creative quotidiane utilizziamo molte funzionalità, quali: menu, pallet, colori, plug-in e strumenti. Utilizziamo queste funzionalità sotto forma di un'interfaccia utente. Queste funzionalità dell'interfaccia utente ci vengono presentate tramite vari script e plug-in.
In un modo più semplice, possiamo codificare gli script per automatizzare le attività o ottenere qualche effetto in Illustrator. Segui insieme per sapere come farlo. In questo tutorial, codificheremo in Javascript uno script che convertirà un oggetto riempito con processo piatto nel suo gradiente di corrispondenza.
Vuoi accedere ai file Vector Source completi e alle copie scaricabili di ogni tutorial, incluso questo? Unisciti a Vector Plus per soli 9 $ al mese.
Vogliamo che questo script esegua un compito molto semplice. In Adobe Illustrator, quando un utente seleziona alcuni oggetti riempiti con un Colore CMYK piatto ed esegue questo Script; gli oggetti devono essere convertiti in un riempimento sfumato CMYK corrispondente. Il gradiente di output sarà in qualche modo simile a un effetto di sovrapposizione del gradiente visto in modalità multiplo. Questo è mostrato nell'immagine qui sotto.
Quindi, lo scopo del nostro script è convertire un oggetto pieno CMYK piatto in un gradiente di corrispondenza scuro-chiaro. Questa è una semplice azione che è un buon esercizio per imparare come script per Illustrator.
La logica per convertire un colore piatto in una sfumatura scura può essere compresa in cinque semplici passaggi:
Dove, gShift è la quantità di spostamento del gradiente che verrà inserito dall'utente. L'algoritmo di cui sopra può essere facilmente compreso dalla rappresentazione pittorica mostrata di seguito.
Oltre alla logica di base, implementeremo alcune convalide e verifiche per il corretto funzionamento di questo script. Queste convalide saranno trattate in varie fasi di questo tutorial. Prima di andare verso il tutorial attuale, acquisiamo familiarità con alcuni prerequisiti.
Questo tutorial richiede alcune conoscenze di base dello scripting e del suo ambiente. Per familiarizzare con l'ambiente di scripting di Illustrator, puoi dare una rapida occhiata alla documentazione disponibile nella cartella di installazione di Illustrator vai su installation_Directory \ Adobe \ Adobe Illustrator CS3 \ Scripting \ Documentation. Qui troverai i seguenti documenti per iniziare con JavaScript:
Esistono tre tipi di script che possiamo scrivere per Illustrator. Questi sono: AppleScript, JavaScript e VBScript. Poiché JavaScript è supportato su Windows e Mac OS, codificheremo la nostra logica in JavaScript. La sintassi e le notazioni sono molto simili allo standard JavaScript. L'unica differenza riguarda l'estensione. Per Illustrator, denoteremo tutti i file JavaScript con un'estensione .JSX invece del comune .js estensione.
Sebbene, puoi codificare l'intero JavaScript in uno qualsiasi dei tuoi editor di testo preferiti; è consigliabile usare il Adobe ExtendedScript Toolkit. Usando questa applicazione, possiamo eseguire, eseguire il debug, testare e verificare il nostro codice in modo sincrono con Illustrator.
Nota: durante questo tutorial, denoteremo ExtendedScript Toolkit con un breve modulo - ESTK.
Apri Adobe ExtendedScript Toolkit e crea un nuovo file JavaScript. Quindi, seleziona Adobe Illustrator dall'elenco a discesa per l'applicazione di destinazione. Questo dice all'ESTK che stiamo scrivendo JavaScript per una particolare applicazione, ad esempio Adobe Illustrator.
Nell'area di modifica del codice, inserisci le seguenti righe di codice:
se (app.documents.length> 0) alert ("Documenti disponibili"); altro avviso ("Nessun documento disponibile");
Nel codice sopra, stiamo controllando se ci sono documenti attualmente aperti in Illustrator. Questo è fatto tramite
app.documents.length
. Ad esempio, l'oggetto di livello superiore in qualsiasi DOM dell'applicazione Adobe è l'oggetto dell'applicazione. Il prossimo è l'oggetto documento, che contiene inoltre oggetti come colori, livelli, testo, pagine, ecc. Salva questo file sul tuo disco rigido come "test.jsx".
Esistono due modi per eseguire lo script:
Se desideri eseguire la sceneggiatura tramite ESTK, premi il pulsante Riproduci come mostrato di seguito.
Ciò avvierà automaticamente l'applicazione Adobe Illustrator e genererà il messaggio di avviso. È possibile interrompere o interrompere l'esecuzione premendo rispettivamente i pulsanti di pausa o di arresto.
Per eseguire questo script da Illustrator, andare su File> Script> Altro script (comando + F12) e individuare il file appena creato "test.jsx". Dopo aver fatto clic su Apri, lo script verrà eseguito.
Quindi cosa hai visto? Un messaggio di avviso, "Nessun documento disponibile".
Successivamente, crea un paio di nuovi documenti in Illustrator ed esegui nuovamente questo script. Questa volta, vedrai un avviso, "I documenti sono disponibili."
Fino a questo punto, abbiamo scritto e testato un piccolo pezzo di codice. Questo è stato fatto come esercizio di riscaldamento per familiarizzare con ESTK e Illustrator. Nei prossimi passi, lavoreremo sullo script attuale.
Torna a ESTK ed elimina il codice di test che abbiamo creato nel passaggio 2. Successivamente, aggiungi le seguenti righe di codice in "test.jsx:"
/ * Per assicurarsi che ci sia almeno un documento disponibile in Illustrator e almeno un oggetto in quel documento funzioni su * / if (app.documents.length> 0 && app.activeDocument.pathItems.length> 0) // A assicurati che la Modalità colore documento sia CMYK se (app.activeDocument.documentColorSpace == DocumentColorSpace.CMYK) convertToGrad (); // Chiama la funzione effettiva che conterrà tutta la logica else alert ("Spazio colore del documento non è CMYK. Cambia la Modalità colore documento in Modalità CMYK", "Documento CMYK richiesto"); else alert ("Nessun documento è disponibile o il documento è vuoto"); function convertTograd () // Logica per convertire il colore piatto in sfumatura
Nella precedente struttura di codice, stiamo semplicemente creando un controllo pre-requisito per la nostra funzione logica principale: converToGrad (). Ad esempio, la logica principale dovrebbe essere eseguita solo se sono soddisfatte le seguenti condizioni:
app.documents.length
restituisce il numero totale di documenti aperti in Illustrator.
Un ActiveDocument
oggetto si riferisce al documento corrente (attivo) in cui si sta lavorando.
pathItems
si riferisce a una raccolta di tutti i pathItem
oggetti all'interno di un documento di Illustrator. Qualsiasi elemento grafico come rettangolo, ellisse, poligono, linea, forme personalizzate ecc. sono indicati come pathItem
; e una raccolta di tutti questi pathItem
sono indicati come pathItems
. Quindi, app.activeDocument.pathItems.length
restituirà il numero di entità grafiche contenute nel documento corrente.
Il documentColorSpace
oggetto definisce la modalità colore del documento. Stiamo facendo questa convalida perché tutta la logica in questo script sarà basata sullo spazio colore CMYK.
La struttura di base del codice è stata impostata e completata. Successivamente, entreremo in convertToGrad ()
funzione.
Il primo e più importante requisito della nostra logica principale è quello di recuperare il numero totale di elementi selezionati. Se nessun elemento è selezionato, lo script ti avviserà di selezionare almeno un oggetto. Per questo, aggiungi le seguenti righe di codice in convertToGrad ()
funzione:
function convertToGrad () var items = selection; var totalSelected = items.length; if (totalSelected> 0) // procedi con la logica principale else alert ("Please select atleast one object"); // end convertToGrad
var items = selection
crea una nuova variabile elementi
e assegna l'intera selezione ad esso. Nella riga successiva, items.length
restituisce il numero totale di elementi selezionati, che sono assegnati a totalSelected
.
Per convertire un colore piatto in una sfumatura, chiediamo all'utente di inserire alcuni valori per Gradient Shift e Gradient Angle. Ma prima di ciò, rivediamo quello che sono.
Sfumatura sfumatura: Questo è un valore numerico che decide quanto colore sarà aggiunto o rimosso dal colore originale. Questa è la parte centrale della nostra logica nella conversione di un colore piatto in un gradiente.
Come funziona un cambiamento graduale? Per capire come funziona, prendi in considerazione un semplice esempio di un oggetto riempito con valori CMYK: C = 50, M = 20, Y = 100 e K = 30 rispettivamente.
Successivamente, chiediamo all'utente di inserire un valore per Gradient Shift. Denotiamo questo valore di gShift
, e l'utente ha inserito 10 per gShift
.
Una volta che abbiamo il gShift
valore, creeremo due gradienti per il nostro oggetto. La prima fermata, cioè la più leggera; avrà tutti i valori CMYK decrementati da gShift
. Mentre l'ultima fermata, cioè la più scura, avrà tutti i valori CMYK incrementati di gShift
.
In questo modo, verrà generato un gradiente da scuro a chiaro dal colore di riempimento effettivo. Eseguiremo anche alcune convalide per vincolare i valori CMYK compresi tra 0 e 100, in quanto aggiungendo o sottraendo a gShift
valore può spostare i valori CMYK oltre 0 o 100.
Angolo di pendenza: Sebbene non faccia parte della logica di base, useremo questa funzione per fornire accessibilità e libertà di scegliere un angolo personalizzato per il gradiente risultante. L'uso dell'angolo di sfumatura sarà visto nella fase successiva di questo tutorial.
Torniamo al codice e recuperiamo i dati dell'utente.
Per recuperare i dati dell'utente, immettere le seguenti righe di codice nel file se (totaleSelezionato> 0)
bloccare:
if (totalSelected> 0) var gShift = Math.round (prompt ("Immettere un valore per lo spostamento del gradiente", "10", "Sfumatura sfumatura")); if (gShift == null || gShift <=0) gShift=0; if(gShift >= 100) gShift = 100; var gradAngle = prompt ("Angolo vettoriale per Gradiente", "0.0", "Angolo sfumatura") if (gradAngle == null) gradAngle = 0; //finisci se
Nelle linee di codice precedenti, chiediamo a un utente di inserire un valore per lo spostamento del gradiente e l'angolo del gradiente. Il Math.round ()
la funzione arrotonda il valore inserito in un numero intero. (Nota: puoi saltare Math.round ()
se si desidera che i valori decimali vengano accettati.) I valori predefiniti per gShift
e gradAngle
sono impostati rispettivamente su "10" e "0.0".
Si noti che stiamo anche convalidando i valori immessi per null e zero. Null si verifica quando un utente fa clic sul pulsante Annulla. Inoltre, stiamo limitando il gShift
valore compreso tra 0 e 100.
Una volta che abbiamo il gShift
e gradAngle
valori, possiamo procedere in anticipo per il resto del codice.
Subito dopo il gradAngle
dichiarazione, inserire le seguenti righe di codice:
per (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" //perform color conversion here else alert("Fill an object with CMYK color. Any objects containing\ngradients, patterns, spot colors or empty fills will be omitted."," Only CMYK Colors Allowed"); else alert("This script only works with Non-Compound Objects or Isolated Group items.\nAny items with Groups or Compound Objects will be omitted.", "Ungroup or Isolate the Group Items"); //endfor
app.activeDocument.selection [j]
restituisce l'oggetto selezionato uno per uno per ogni iterazione di j
.
Per ogni oggetto selezionato, stiamo facendo alcune convalide e verifiche. Questi controlli sono cruciali in questa fase. Il primo controllo è determinare se l'oggetto è un oggetto composto o un elemento di gruppo. Poiché questo script non funziona direttamente su gruppi o oggetti composti, questo controllo è obbligatorio.
Nel livello successivo, stiamo controllando se l'oggetto selezionato è già un gradiente, un motivo o un colore spot. In tal caso, questi oggetti verranno saltati.
C'è un altro controllo per le specifiche grayColor. GrayColor è leggermente diverso rispetto alle specifiche CMYK Color.
Una tecnica dettagliata è coinvolta per il trattamento di oggetti con specifiche grayColor, che non includo in questa fase del tutorial. Tuttavia, questa tecnica è inclusa nei file di origine per il tuo interesse.
Secondo la nostra logica e l'algoritmo, selezioneremo il colore per ciascun oggetto selezionato e divideremo i suoi valori CMYK in quattro diverse variabili, come mostrato di seguito:
var currentColor = 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);
Nota: tutte queste righe di codice devono rientrare nel blocco "Esegui conversione colore", come mostrato nel passaggio 7.
pathItem.fillColor
restituisce il colore di riempimento di un particolare oggetto del percorso. Nel nostro caso, il pathItem è currentObject
. Stiamo usando color.cyan
, color.magenta
, color.yellow
e colore nero
proprietà per recuperare rispettivamente i valori C, M, Y e K in quattro diverse variabili. Una volta impostati questi valori, possiamo facilmente compensarli con gShift
.
Il nostro gradiente risultante avrà due stop di gradiente. Indichiamoli con StartColor
e EndColor
. La dichiarazione delle variabili per questi due colori rampstop sarà la seguente:
var startColor = new CMYKColor (); var endColor = new CMYKColor ();
Il CMYKColor
è una specifica di colore CMYK utilizzata per gli oggetti colore. Qui, il StartColor
e EndColor
sono dichiarati come nuovi colori CMYK.
In questa fase, abbiamo tutte le risorse necessarie per creare un nuovo gradiente. abbiamo currentColor
(con valori CMYK separati), StartColor
, EndColor
e gShift
. Ora possiamo impostare i valori del colore finale per StartColor
e EndColor
usando la tecnica offset.
Il StartColor
sarà la parte più leggera del gradiente. Quindi, sottraiamo gShift
dai valori di C, M, Y e K di currentColor
, con il risultato di StartColor
.
startColor.cyan = currentCyan - gShift; startColor.magenta = currentMagenta - gShift; startColor.yellow = currentYellow - gShift; startColor.black = currentBlack - gShift;
Questo è semplice, ma dobbiamo eseguire alcuni controlli. Ad esempio, cosa succederà se il currentCyan
è già meno di gShift
? Dire, currentCyan
è 10 e gShift
20. Il valore cyan risultante per StartColor
diventerà 10-20 = (-) 10. Per superare questo problema, modificheremo il set di codice sopra riportato nelle seguenti righe di codice:
if (currentCyan < gShift) startColor.cyan= 0; else startColor.cyan= currentCyan - gShift; if(currentMagenta < gShift) startColor.magenta= 0; else startColor.magenta = currentMagenta - gShift; if(currentYellow < gShift) startColor.yellow= 0; else startColor.yellow= currentYellow - gShift; if(currentBlack < gShift) startColor.black= 0; else startColor.black = currentBlack - gShift;
Il EndColor
sarà la parte più scura del gradiente. Quindi, aggiungeremo gShift
a C, M, Y e K valori o currentColor
rispettivamente. Dopo la semplice aggiunta, il codice dovrebbe apparire come segue:
endColor.cyan = currentCyan + gShift; endColor.magenta = currentMagenta + gShift; endColor.yellow = currentYellow + gShift; endColor.black = currentBlack + gShift;
Ancora una volta, tutto sembra a posto. Ma c'è una complicazione: cosa accadrà se l'aggiunta di gShift
ha un valore superiore a 100? Per esempio, currentCyan
è 95 e gShift
è 20. L'aggiunta di questi due risulterà come endColor.cyan = 115
; che non è accettabile. Quindi compenseremo questo con alcune convalide.
Creiamo una nuova variabile gShiftEnd
, che è uguale a 100-gShift
. Successivamente, controlleremo se il valore corrente di C, M, Y o K è maggiore di gShiftEnd
. In tal caso, imposteremo il valore C, M, Y o K di endColor su 100; altrimenti imposteremo il valore C, M, Y o K di endColor aggiungendo gShift
all'attuale C, M, Y o K. Questo può essere elaborato dall'esempio che abbiamo appena visto sopra.
Abbiamo currentCyan = 95 e gShift = 20. Pertanto gShiftEnd = 100 - 20. vale a dire 80. Avanti, currentCyan è maggiore di gShiftEnd; quindi imposteremo endColor.cyan su 100.
Seguendo questo principio, il nostro codice verrà modificato come segue:
gShiftEnd = 100-gShift; if (currentCyan> gShiftEnd) endColor.cyan = 100; else endColor.cyan = currentCyan + gShift; if (currentMagenta> gShiftEnd) endColor.magenta = 100; else endColor.magenta = currentMagenta + gShift; if (currentYellow> gShiftEnd) endColor.yellow = 100; else endColor.yellow = currentYellow + gShift; if (currentBlack> gShiftEnd) endColor.black = 100; else endColor.black = currentBlack + gShift;
Quindi, fino a questo punto, il codice completo sarà simile a questo:
if (app.documents.length> 0 && app.activeDocument.pathItems.length> 0) if (app.activeDocument.documentColorSpace == DocumentColorSpace.CMYK) convertToGrad (); else alert ("Spazio colore del documento non è CMYK. Cambia la Modalità colore documento in Modalità CMYK", "Documento CMYK richiesto"); // end main if else alert ("Nessun documento è disponibile o il documento è vuoto"); function convertToGrad () var items = selection; var totalSelected = items.length; if (totalSelected> 0) var gShift = Math.round (prompt ("Immettere un valore per lo spostamento del gradiente", "10", "Sfumatura sfumatura")); if (gShift == null || gShift <=0) gShift=0; if(gShift >= 100) gShift = 100; var gradAngle = prompt ("Angolo vettoriale per Gradiente", "0.0", "Angolo sfumatura") if (gradAngle == null) gradAngle = 0; per (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 currentColor = 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); // Create a color for both ends of the gradient var startColor = new CMYKColor(); var endColor = new CMYKColor(); if(currentCyan < gShift) startColor.cyan = 0; else startColor.cyan = currentCyan - gShift; if(currentMagenta < gShift) startColor.magenta = 0; else startColor.magenta = currentMagenta - gShift; if(currentYellow < gShift) startColor.yellow = 0; else startColor.yellow = currentYellow - gShift; if(currentBlack < gShift) startColor.black= 0; else startColor.black = currentBlack - gShift; gShiftEnd = 100 - gShift; if(currentCyan > gShiftEnd) endColor.cyan = 100; else endColor.cyan = currentCyan + gShift; if (currentMagenta> gShiftEnd) endColor.magenta = 100; else endColor.magenta = currentMagenta + gShift; if (currentYellow> gShiftEnd) endColor.yellow = 100; else endColor.yellow = currentYellow + gShift; if (currentBlack> gShiftEnd) endColor.black = 100; else endColor.black = currentBlack + gShift; // Blocco dichiarazione gradiente // endif else alert ("Riempi un oggetto con il colore CMYK. Tutti gli oggetti contenenti \ ngradienti, motivi, tinte piatte o riempimenti vuoti verranno omessi.", "Sono ammessi solo colori CMYK"); else alert ("Questo script funziona solo con oggetti non composti o gruppi isolati. \ nQualsiasi elemento con gruppi o oggetti composti verrà omesso.", "Separa o isola gli elementi del gruppo"); // endfor // end selected else alert ("Si prega di selezionare almeno un oggetto");
Ora che abbiamo impostato il StartColor
e EndColor
; possiamo procedere con la creazione del nuovo gradiente.
Per aggiungere una nuova sfumatura, inserisci le seguenti righe di codice nella sezione "// Blocco dichiarazione gradiente".
var newGradient = app.activeDocument.gradients.add (); newGradient.type = GradientType.LINEAR;
Questo aggiungerà un nuovo gradiente di tipo lineare nel documento attivo corrente.
Aggiungi le seguenti righe di codice subito dopo la dichiarazione del gradiente:
// Modifica il primo gradiente stop newGradient.gradientStops [0] .rampPoint = 0; newGradient.gradientStops [0] .midPoint = 50; newGradient.gradientStops [0] .color = startColor; // Modifica l'ultimo gradiente di stop newGradient.gradientStops [1] .rampPoint = 100; newGradient.gradientStops [1] .color = endColor;
gradientStop [0]
è il primo gradiente, mentre, gradientStop [1]
è l'ultima fermata del gradiente. Se desideri avere più gradazioni di gradiente, puoi indicarle come gradientStop [2], gradientStop [3]
e così via.
rampPoint
è usato per impostare la posizione del punto di rampa del gradiente associato. Abbiamo impostato il primo e l'ultimo punto di rampa come 0 e 100 rispettivamente. midpoint
viene utilizzato per impostare la posizione del punto centrale tra due arresti del gradiente. Lo abbiamo impostato a 50. Infine, abbiamo assegnato i valori di StartColor
e EndColor
al primo e all'ultimo gradiente, rispettivamente.
Abbiamo quasi finito la conversione del colore e la formazione del gradiente. Successivamente, dobbiamo applicare questo gradiente appena creato all'oggetto attualmente selezionato. Per fare ciò, creeremo un oggetto colore sfumato che si riferisce al gradiente appena creato.
Nota: non è possibile applicare il gradiente appena creato direttamente come colore di riempimento all'oggetto. Per utilizzare questa sfumatura, dovremo creare un nuovo oggetto Color Gradiente, come mostrato di seguito:
// costruisce un oggetto Illustrator.GradientColor che fa riferimento al // gradiente appena creato var colorOfGradient = new GradientColor (); colorOfGradient.gradient = newGradient;
Finalmente, riempiremo il currentObject
con il colorOfGradient
, come mostrato di seguito:
// recupera l'elemento del percorso corrente, applica una nuova sfumatura come riempimento currentObject.fillColor = colorOfGradient; currentObject.rotate (gradAngle, false, false, true, false, Transformation.CENTER);
Abbiamo applicato una matrice di rotazione all'oggetto corrente. Questa matrice di rotazione utilizza l'angolo del gradiente per trasformare il gradiente. La sintassi di rotazione è:
ruotare
(angolo
[, ChangePositions]
[, ChangeFillPatterns]
[, ChangeFillGradients]
[, ChangeStrokePattern]
[, RotateAbout])
Qui, abbiamo impostato changeFillgradients
a "true" e il resto a "false". Questo è un modo complicato per ruotare il colore del gradiente con una particolare angolazione. Grazie a John Wundes per avermi suggerito questa tecnica intelligente.
Di seguito viene mostrato lo script finale dopo la codifica completa:
if (app.documents.length> 0 && app.activeDocument.pathItems.length> 0) if (app.activeDocument.documentColorSpace == DocumentColorSpace.CMYK) convertToGrad (); else alert ("Spazio colore del documento non è CMYK. Cambia la Modalità colore documento in Modalità CMYK", "Documento CMYK richiesto"); // end main if else alert ("Nessun documento è disponibile o il documento è vuoto"); function convertToGrad () var items = selection; var totalSelected = items.length; if (totalSelected> 0) var gShift = Math.round (prompt ("Immettere un valore per lo spostamento del gradiente", "10", "Sfumatura sfumatura")); if (gShift == null || gShift <=0) gShift=0; if(gShift >= 100) gShift = 100; var gradAngle = prompt ("Angolo vettoriale per Gradiente", "0.0", "Angolo sfumatura") if (gradAngle == null) gradAngle = 0; per (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 currentColor = 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); // Create a color for both ends of the gradient var startColor = new CMYKColor(); var endColor = new CMYKColor(); if(currentCyan < gShift) startColor.cyan= 0; else startColor.cyan = currentCyan - gShift; if(currentMagenta < gShift) startColor.magenta = 0; else startColor.magenta = currentMagenta - gShift; if(currentYellow < gShift) startColor.yellow = 0; else startColor.yellow = currentYellow - gShift; if(currentBlack < gShift) startColor.black = 0; else startColor.black = currentBlack - gShift; gShiftEnd = 100 - gShift; if(currentCyan > gShiftEnd) endColor.cyan = 100; else endColor.cyan = currentCyan + gShift; if (currentMagenta> gShiftEnd) endColor.magenta = 100; else endColor.magenta = currentMagenta + gShift; if (currentYellow> gShiftEnd) endColor.yellow = 100; else endColor.yellow = currentYellow + gShift; if (currentBlack> gShiftEnd) endColor.black = 100; else endColor.black = currentBlack + gShift; // Crea un nuovo gradiente // Un nuovo gradiente ha sempre 2 stop var newGradient = app.activeDocument.gradients.add (); newGradient.type = GradientType.LINEAR; // Modifica il primo gradiente stop newGradient.gradientStops [0] .rampPoint = 0; newGradient.gradientStops [0] .midPoint = 50; newGradient.gradientStops [0] .color = startColor; // Modifica l'ultimo gradiente di stop newGradient.gradientStops [1] .rampPoint = 100; newGradient.gradientStops [1] .color = endColor; // costruisce un oggetto Illustrator.GradientColor che fa riferimento al // gradiente appena creato var colorOfGradient = new GradientColor (); colorOfGradient.gradient = newGradient; // recupera l'elemento del percorso corrente, applica una nuova sfumatura come riempimento currentObject.fillColor = colorOfGradient; currentObject.rotate (gradAngle, false, false, true, false, Transformation.CENTER); // endif else alert ("Riempi un oggetto con il colore CMYK. Verranno omessi tutti gli oggetti contenenti \ ngradienti, motivi, tinte piatte o riempimenti vuoti.", "Sono ammessi solo colori CMYK"); else alert ("Questo script funziona solo con oggetti non composti o gruppi isolati. \ nQualsiasi elemento con gruppi o oggetti composti verrà omesso.", "Separa o isola gli elementi del gruppo"); // endfor // end selected else alert ("Si prega di selezionare almeno un oggetto");
Salvare lo script e creare un nuovo documento in Adobe Illustrator. Successivamente, crea alcuni oggetti con colori CMYK piatti. Seleziona alcuni di questi oggetti ed esegui lo script seguendo i metodi