Scripting Illustrator - Konvertieren Sie eine flache Prozessfarbe in einen passenden Farbverlauf

Wir alle kennen Adobe Illustrator und seine Benutzeroberfläche. In unseren täglichen kreativen Aufgaben verwenden wir viele Funktionen, wie zum Beispiel: Menü, Paletten, Farben, Plug-Ins und Werkzeuge. Wir verwenden diese Funktionen in Form einer Benutzeroberfläche. Diese Funktionen der Benutzeroberfläche werden durch verschiedene Skripts und Plug-Ins an uns weitergegeben.

In einer einfacheren Art und Weise können wir Skripts codieren, um Aufgaben zu automatisieren oder in Illustrator einige Effekte zu erzielen. Folgen Sie den Anweisungen, um zu erfahren, wie das geht. In diesem Lernprogramm werden Sie in Javascript ein Skript programmieren, das ein mit einem flachen Prozess gefülltes Objekt in seinen zugehörigen Verlauf umwandelt.

Vektor Plus

Möchten Sie auf die vollständigen Vector Source-Dateien und herunterladbaren Kopien jedes Tutorials zugreifen, einschließlich dieses Tutorials? Nehmen Sie an Vector Plus für nur 9 € pro Monat teil.

Tutorial-Details

  • Programm: Adobe Illustrator CS3 und ExtendedScript Toolkit
  • Schwierigkeit: Mittelstufe
  • Geschätzte Fertigstellungszeit: 3 bis 4 Stunden

ZIEL des Skripts

Wir möchten, dass dieses Skript eine sehr einfache Aufgabe ausführt. Wenn ein Benutzer in Adobe Illustrator Objekte auswählt, die mit einer flachen CMYK-Farbe gefüllt sind, und dieses Skript ausführt; Die Objekte werden in eine entsprechende CMYK-Farbverlaufsfüllung umgewandelt. Der Ausgabegradient ist etwas ähnlich einem Gradientenüberlagerungseffekt, der im Multiplikationsmodus zu sehen ist. Dies ist in der Abbildung unten dargestellt.

Ziel unseres Skripts ist es daher, ein flaches, mit CMYK gefülltes Objekt in einen Dunkel-zu-Licht-Übereinstimmungsgradienten umzuwandeln. Dies ist eine einfache Aktion, die eine gute Übung ist, um zu lernen, wie Sie ein Skript für Illustrator erstellen.

Logik und Algorithmus

Die Logik zum Umwandeln einer flachen Farbe in einen Dunkel-zu-Licht-Gradienten lässt sich in fünf einfachen Schritten verstehen:

  • Schritt 1: Wählen Sie die Farbe des aktuellen Objekts. also currentColor = Farbe des aktuell ausgewählten Objekts.
  • Schritt 2: Erstellen Sie eine neue Verlaufsfarbe mit zwei Rampstops: startColor und endColor.
  • Schritt 3: startColor = currentColor - gShift, d. h. die Originalfarbe aufhellen.
  • Schritt 4: endColor = currentColor + gShift, d. h. dunkle die Originalfarbe.
  • Schritt 5: Wenden Sie den neuen Farbverlauf mit startColor und endColor auf das Objekt an.

Woher, gShift ist der Betrag der Gradientenverschiebung, der vom Benutzer eingegeben wird. Der obige Algorithmus kann leicht aus der unten gezeigten bildlichen Darstellung verstanden werden.

Neben der Kernlogik werden wir einige Validierungen implementieren und prüfen, ob das Skript ordnungsgemäß funktioniert. Diese Validierungen werden in verschiedenen Phasen dieses Tutorials behandelt. Bevor wir uns dem eigentlichen Tutorial zuwenden, sollten wir uns mit einigen Voraussetzungen vertraut machen.

Einführung in das Scripting

Dieses Tutorial erfordert einige Grundkenntnisse in Bezug auf Skripte und deren Umgebung. Um sich mit der Skriptumgebung von Illustrator vertraut zu machen, können Sie einen kurzen Einblick in die Dokumentation des Installationsordners von Illustrator erhalten. Gehen Sie zu Installationsverzeichnis \ Adobe \ Adobe Illustrator CS3 \ Scripting \ Documentation. Hier finden Sie die folgenden Dokumente, um mit JavaScript zu beginnen:

  • Adobe Einführung in Scripting.pdf
  • Illustrator CS3-Skripthandbuch.pdf
  • Illustrator CS3 JavaScript Reference.pdf
  • JavaScript-Tools-Handbuch CS3.pdf

Arten von Skripten

Es gibt drei Arten von Skripts, die wir für Illustrator schreiben können. Diese sind: AppleScript, JavaScript und VBScript. Da JavaScript sowohl unter Windows als auch unter Mac OS unterstützt wird, werden wir unsere Logik in JavaScript codieren. Die Syntax und Notationen sind dem Standard-JavaScript sehr ähnlich. Der einzige Unterschied besteht in der Erweiterung. Bei Illustrator bezeichnen wir alle JavaScript-Dateien mit einer Erweiterung .jsx anstelle des gewöhnlichen .js Erweiterung.

notwendige Werkzeuge

Sie können zwar das gesamte JavaScript in einem beliebigen bevorzugten Texteditor codieren. Es ist ratsam, die Adobe ExtendedScript Toolkit. Mit dieser Anwendung können wir unseren Code synchron mit Illustrator ausführen, debuggen, testen und prüfen.

Hinweis: In diesem Lernprogramm wird das ExtendedScript Toolkit mit einem kurzen Formular (ESTK) gekennzeichnet.

Schritt 1

Öffnen Sie Adobe ExtendedScript Toolkit und erstellen Sie eine neue JavaScript-Datei. Wählen Sie als Nächstes Adobe Illustrator aus der Dropdown-Liste für die Zielanwendung aus. Dies teilt der ESTK mit, dass wir JavaScript für eine bestimmte Anwendung, z. B. Adobe Illustrator, schreiben.

Schritt 2 - Schreiben Sie ein Simple Code Snippet

Fügen Sie im Code-Bearbeitungsbereich die folgenden Codezeilen ein:

if (app.documents.length> 0) alert ("Dokumente sind verfügbar"); else alert ("Keine Dokumente verfügbar");

Im obigen Code prüfen wir, ob in Illustrator aktuell geöffnete Dokumente vorhanden sind. Dies erfolgt über

app.documents.length. Das oberste Objekt in einem beliebigen Adobe Application DOM ist das Anwendungsobjekt. Als Nächstes folgt das Dokumentobjekt, das Objekte wie Farben, Ebenen, Text, Seiten usw. enthält. Speichern Sie diese Datei auf Ihrer Festplatte als "test.jsx".

Schritt 2.1 - Ausführen des Skripts

Es gibt zwei Möglichkeiten, das Skript auszuführen:

1. Ausführen von ESTK

Wenn Sie Ihr Skript über ESTK ausführen möchten, drücken Sie die Wiedergabetaste (siehe unten).

Dadurch wird automatisch die Adobe Illustrator-Anwendung gestartet und die Warnmeldung generiert. Sie können die Ausführung anhalten oder stoppen, indem Sie die Pause- bzw. Stop-Taste drücken.

2. Von Illustrator aus ausführen

Um dieses Skript in Illustrator auszuführen, gehen Sie zu Datei> Skripts> Anderes Skript (Befehl + F12) und suchen Sie die neu erstellte Datei "test.jsx". Nachdem Sie auf Öffnen geklickt haben, wird das Skript ausgeführt.

Was hast du gesehen? Eine Warnmeldung "Keine Dokumente verfügbar."

Erstellen Sie als Nächstes ein paar neue Dokumente in Illustrator und führen Sie dieses Skript erneut aus. Diesmal wird eine Warnmeldung angezeigt: "Dokumente sind verfügbar."

Bis zu diesem Punkt haben wir ein kleines Stück Code geschrieben und getestet. Dies wurde als Aufwärmübung durchgeführt, um sich mit ESTK und Illustrator vertraut zu machen. In den nächsten Schritten werden wir an dem eigentlichen Skript arbeiten.

Schritt 3 - Die Codestruktur

Kehren Sie zu ESTK zurück und löschen Sie den in Schritt 2 erstellten Testcode. Fügen Sie anschließend die folgenden Codezeilen in "test.jsx:" ein.

 / * Um sicherzustellen, dass mindestens ein Dokument in Illustrator verfügbar ist und mindestens ein Objekt in diesem Dokument zur Bearbeitung von * / if (app.documents.length> 0 && app.activeDocument.pathItems.length> 0) // To vorhanden ist Stellen Sie sicher, dass der Dokumentfarbmodus CMYK ist, wenn (app.activeDocument.documentColorSpace == DocumentColorSpace.CMYK) convertToGrad (); // Aufruf einer tatsächlichen Funktion, die die gesamte Logik enthält else alert ("Dokumentfarbraum ist nicht CMYK. Ändern Sie den Dokumentfarbmodus in CMYK-Modus", "CMYK-Dokument erforderlich");  else alert ("Entweder ist kein Dokument verfügbar oder das Dokument ist leer");  function convertTograd () // Logik zum Konvertieren einer flachen Farbe in einen Farbverlauf

In der obigen Codestruktur erstellen wir einfach eine Voraussetzungsprüfung für unsere logische Hauptfunktion - converToGrad (). Die Hauptlogik sollte nur ausgeführt werden, wenn die folgenden Bedingungen erfüllt sind:

  1. Es existiert mindestens ein Dokument mit einem Objekt, damit wir daran arbeiten können.
  2. Der Dokumentfarbraum sollte CMYK sein, da die gesamte Logik auf CMYK-Farben basiert.

Schritt 3.1 - Verstehen der DOM-Entitäten

app.documents.length gibt die Gesamtzahl der in Illustrator geöffneten Dokumente zurück.

Ein activeDocument Objekt bezieht sich auf das aktuelle (aktive) Dokument, in dem Sie arbeiten.

pathItems verweist auf eine Sammlung aller pathItem Objekte in einem Illustrator-Dokument. Jedes grafische Element wie Rechteck, Ellipse, Polygon, Linie, benutzerdefinierte Formen usw. wird als bezeichnet pathItem; und eine Sammlung von all diesen pathItem werden als bezeichnet pathItems. Daher, app.activeDocument.pathItems.length gibt die Anzahl der grafischen Elemente im aktuellen Dokument zurück.

Das documentColorSpace Objekt definiert den Farbmodus des Dokuments. Wir nehmen diese Überprüfung vor, da die gesamte Logik in diesem Skript auf dem CMYK-Farbraum basiert.

Die grundlegende Codestruktur ist vollständig festgelegt. Als nächstes werden wir eingehen convertToGrad () Funktion.

Schritt 4 - Beginnen Sie mit der Hauptlogik

Die wichtigste Voraussetzung unserer Hauptlogik ist das Abrufen der Gesamtzahl der ausgewählten Elemente. Wenn keine Elemente ausgewählt sind, weist das Skript Sie an, mindestens ein Objekt auszuwählen. Fügen Sie dazu die folgenden Codezeilen hinzu convertToGrad () Funktion:

Funktion convertToGrad () var items = Auswahl; var totalSelected = items.length; if (totalSelected> 0) // mit der Hauptlogik fortfahren else alert ("Bitte wählen Sie mindestens ein Objekt aus");  // convertToGrad beenden

var items = Auswahl erstellt eine neue Variable Artikel und ordnet ihm die gesamte Auswahl zu. In der nächsten Zeile, Einzelteile.Länge gibt die Gesamtzahl der ausgewählten Elemente zurück, denen zugewiesen ist totalSelected.

Schritt 5 - Abrufen der Benutzerdaten

Um eine flache Farbe in einen Verlauf umzuwandeln, werden wir den Benutzer dazu auffordern, einige Werte für die Verlaufsverschiebung und den Verlaufswinkel einzugeben. Aber vorher wollen wir noch einmal überprüfen, was sie sind.

Farbverlaufsverschiebung: Dies ist ein numerischer Wert, der bestimmt, wie viel Farbe der Originalfarbe hinzugefügt oder aus ihr entfernt wird. Dies ist der Kern unserer Logik bei der Umwandlung einer flachen Farbe in einen Farbverlauf.

Wie funktioniert ein Gradient Shift? Um zu verstehen, wie es funktioniert, betrachten Sie ein einfaches Beispiel eines Objekts, das mit CMYK-Werten gefüllt ist: C = 50, M = 20, Y = 100 und K = 30.

Als Nächstes bitten wir den Benutzer, einen Wert für Gradient Shift einzugeben. Bezeichnen wir diesen Wert mit gShift, und der Benutzer hat 10 für eingegeben gShift.

Sobald wir die haben gShift Wert erstellen wir zwei Farbverlaufsanschläge für unser Objekt. Der erste Stopp, d. H. Der leichtere; werden alle CMYK-Werte um, verringert gShift. Während der letzte Stopp, d. H. Der dunklere, alle CMYK-Werte erhöht, werden gShift.

Auf diese Weise wird aus der tatsächlichen Füllfarbe ein Dunkel-Hell-Farbverlauf erzeugt. Wir werden auch einige Validierungen durchführen, um die CMYK-Werte auf 0 und 100 zu beschränken, da a addiert oder subtrahiert wird gShift value kann die CMYK-Werte über 0 oder 100 hinaus verschieben.

Steigungswinkel: Obwohl dies nicht Teil der Kernlogik ist, werden wir diese Funktion verwenden, um einen gewissen Zugang und die Freiheit zu bieten, einen benutzerdefinierten Winkel für den resultierenden Gradienten auszuwählen. Die Verwendung des Gradientenwinkels wird in der späteren Phase dieses Tutorials erläutert.

Kehren wir zum Code zurück und holen Sie die Benutzerdaten ab.

Schritt 6

Um die Benutzerdaten abzurufen, geben Sie die folgenden Codezeilen in ein if (totalSelected> 0) Block:

if (totalSelected> 0) var gShift = Math.round (Eingabeaufforderung ("Geben Sie einen Wert für die Gradientenverschiebung ein", "10", "Gradient Shift")); if (gShift == null || gShift <=0) gShift=0; if(gShift >= 100) gShift = 100; var gradAngle = Eingabeaufforderung ("Vektorwinkel für Gradient", "0.0", "Gradient Angle") if (gradAngle == null) gradAngle = 0;  // endif

In den obigen Codezeilen fordern wir einen Benutzer auf, einen Wert für die Gradientenverschiebung und den Gradientenwinkel einzugeben. Das Math.round () Die Funktion rundet den eingegebenen Wert in eine ganze Zahl. (Hinweis: Sie können überspringen Math.round () wenn Sie möchten, dass Dezimalwerte akzeptiert werden.) Die Standardwerte für gShift und gradAngle werden auf "10" bzw. "0.0" gesetzt.

Beachten Sie, dass wir auch die eingegebenen Werte für Null und Null überprüfen. Null wird gefunden, wenn ein Benutzer auf die Schaltfläche Abbrechen klickt. Auch schränken wir das ein gShift Wert innerhalb von 0 und 100.

Sobald wir die haben gShift und gradAngle Werte können wir für den Rest des Codes weitermachen.

Schritt 7 - Arbeiten an den ausgewählten Objekten

Gleich nach dem gradAngle Geben Sie die folgenden Codezeilen ein:

 für (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] gibt das ausgewählte Objekt für jede Wiederholung von einzeln zurück j.

Für jedes ausgewählte Objekt führen wir einige Validierungen und Prüfungen durch. Diese Kontrollen sind zu diesem Zeitpunkt von entscheidender Bedeutung. Zunächst wird geprüft, ob es sich bei dem Objekt um ein zusammengesetztes Element oder um ein Gruppenelement handelt. Da dieses Skript nicht direkt auf Gruppen oder zusammengesetzte Objekte angewendet werden kann, ist diese Prüfung obligatorisch.

In der nächsten Ebene prüfen wir, ob das ausgewählte Objekt bereits ein Verlauf, Muster oder eine Schmuckfarbe ist. Wenn ja, werden diese Objekte übersprungen.

Es gibt noch eine Prüfung für die GrayColor-Spezifikation. GrayColor unterscheidet sich geringfügig von den CMYK-Farbspezifikationen.

Für die Behandlung von Objekten mit der grayColor-Spezifikation handelt es sich um eine detaillierte Technik, die ich in dieser Phase des Tutorials nicht einbeziehe. Diese Technik ist jedoch für Ihr Interesse in den Quelldateien enthalten.

Schritt 8 - Farbe auswählen und teilen

Gemäß unserer Logik und unseres Algorithmus wählen wir die Farbe für jedes ausgewählte Objekt aus und teilen seine CMYK-Werte in vier verschiedene Variablen auf (siehe unten):

 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);

Hinweis: Alle diese Codezeilen müssen sich im Block "Farbkonvertierung durchführen" befinden, wie in Schritt 7 gezeigt.

pathItem.fillColor gibt die Füllfarbe eines bestimmten Pfadelements zurück. In unserem Fall lautet das pathItem currentObject. Wir benutzen color.cyan, color.magenta, Farbe Gelb und Farbe schwarz Eigenschaften zum Abrufen der C-, M-, Y- und K-Werte in vier verschiedenen Variablen. Sobald wir diese Werte eingestellt haben, können wir sie leicht mit versetzen gShift.

Schritt 9 - Deklarieren Sie die Farben für Farbverlaufsrampen

Unser resultierender Gradient wird zwei Gradientenanschläge haben. Bezeichnen wir sie mit startColor und endColor. Die Variablendeklaration für diese beiden Rampstop-Farben sieht wie folgt aus:

var startColor = new CMYKColor (); var endColor = new CMYKColor ();

Das CMYKColor ist eine CMYK-Farbspezifikation, die für Farbobjekte verwendet wird. Hier die startColor und endColor werden als neue CMYK-Farben deklariert.

Schritt 10 - StartColor und EndColor ausgleichen

Zu diesem Zeitpunkt verfügen wir über alle notwendigen Ressourcen, um einen neuen Gradienten zu erstellen. Wir haben currentColor (mit separaten CMYK-Werten), startColor, endColor und gShift. Wir können jetzt die endgültigen Farbwerte für festlegen startColor und endColor unter Verwendung der Offset-Technik.

Schritt 10.1 - Startfarbe einstellen

Das startColor wird der hellere Teil des Farbverlaufs sein. Daher werden wir subtrahieren gShift von C-, M-, Y- und K-Werten von currentColor, ergebend startColor.

startColor.cyan = currentCyan - gShift; startColor.magenta = currentMagenta - gShift; startColor.yellow = currentYellow - gShift; startColor.black = currentBlack - gShift;

Dies ist einfach, aber wir müssen einige Prüfungen durchführen. Zum Beispiel, was passiert, wenn die currentCyan ist schon weniger als gShift? Sagen, currentCyan ist 10 und gShift ist 20. Der resultierende Cyanwert für startColor wird 10-20 = (-) 10. Um dieses Problem zu lösen, werden wir den obigen Code in die folgenden Codezeilen ändern:

 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;

Schritt 10.2 - endColor einstellen

Das endColor wird der dunklere Teil des Farbverlaufs sein. Daher werden wir hinzufügen gShift zu C, M, Y und K Werten oder currentColor beziehungsweise. Nach dem einfachen Hinzufügen sollte der Code folgendermaßen aussehen:

 endColor.cyan = currentCyan + gShift; endColor.magenta = currentMagenta + gShift; endColor.yellow = currentYellow + gShift; endColor.black = currentBlack + gShift;

Wieder sieht alles gut aus. Es gibt jedoch eine Komplikation: Was passiert, wenn der Zusatz von gShift ergibt einen Wert größer als 100? Zum Beispiel, currentCyan ist 95 und gShift ist 20. Das Addieren dieser beiden ergibt als endColor.cyan = 115; das ist nicht akzeptabel. Wir werden dies mit einigen Validierungen ausgleichen.

Lassen Sie uns eine neue Variable erstellen gShiftEnd, das ist gleich 100-g-Schicht. Als Nächstes prüfen wir, ob der aktuelle C-, M-, Y- oder K-Wert größer als ist gShiftEnd. Wenn ja, setzen wir den C-, M-, Y- oder K-Wert des endColor auf 100; Andernfalls setzen wir den C-, M-, Y- oder K-Wert von endColor durch Addieren gShift zu den aktuellen Werten C, M, Y oder K. Dies lässt sich aus dem oben beschriebenen Beispiel ableiten.

Wir haben currentCyan = 95 und gShift = 20. Daher ist gShiftEnd = 100 - 20. d.h. 80. Als nächstes ist currentCyan größer als gShiftEnd; wir werden endColor.cyan auf 100 setzen.

Nach diesem Prinzip wird unser Code folgendermaßen geändert:

 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;

Bis zu diesem Punkt sieht der vollständige Code also so aus:

if (app.documents.length> 0 && app.activeDocument.pathItems.length> 0) if (app.activeDocument.documentColorSpace == DocumentColorSpace.CMYK) convertToGrad ();  else alert ("Der Dokumentfarbraum ist nicht CMYK. Ändern Sie den Dokumentfarbmodus in den CMYK-Modus", "CMYK-Dokument erforderlich");  // end main if else alert ("Entweder ist kein Dokument verfügbar oder das Dokument ist leer");  Funktion convertToGrad () var items = Auswahl; var totalSelected = items.length; if (totalSelected> 0) var gShift = Math.round (Eingabeaufforderung ("Geben Sie einen Wert für die Gradientenverschiebung ein", "10", "Gradient Shift")); if (gShift == null || gShift <=0) gShift=0; if(gShift >= 100) gShift = 100; var gradAngle = Eingabeaufforderung ("Vektorwinkel für Gradient", "0.0", "Gradient Angle") if (gradAngle == null) gradAngle = 0; für (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; // Gradient Declaration Block // endif else alert ("Füllen Sie ein Objekt mit CMYK-Farbe. Alle Objekte, die \ n Gradienten, Muster, Sonderfarben oder leere Füllungen enthalten) werden weggelassen.", "Nur CMYK-Farben zulässig");  else alert ("Dieses Skript funktioniert nur mit nicht zusammengesetzten Objekten oder isolierten Gruppenelementen. \ nAlle Elemente mit Gruppen oder zusammengesetzten Objekten werden weggelassen.", "Gruppieren von Elementen aufheben oder isolieren"));  // endfor // Ende ausgewählt else else alert ("Bitte wählen Sie mindestens ein Objekt aus"); 

Schritt 11 - Erstellen des neuen Farbverlaufs

Jetzt haben wir das eingestellt startColor und endColor; Wir können mit der Erstellung des neuen Farbverlaufs fortfahren.

Schritt 11.1 - Steigung deklarieren

Fügen Sie zum Hinzufügen eines neuen Farbverlaufs die folgenden Codezeilen in das Feld "// Verlaufsdeklarationsblock".

 var newGradient = app.activeDocument.gradients.add (); newGradient.type = GradientType.LINEAR;

Dadurch wird ein neuer linearer Farbverlauf in das aktuell aktive Dokument eingefügt.

Schritt 11.2 - Festlegen der Eigenschaften des neu erstellten Farbverlaufs

Fügen Sie unmittelbar nach der Gradientendeklaration die folgenden Codezeilen hinzu:

 // Ändern Sie den ersten Gradientenanschlag newGradient.gradientStops [0] .rampPoint = 0; newGradient.gradientStops [0] .midPoint = 50; newGradient.gradientStops [0] .color = startColor; // Ändere den letzten Gradientenstopp newGradient.gradientStops [1] .rampPoint = 100; newGradient.gradientStops [1] .color = endColor;

gradientStop [0] ist der erste Gradientenstopp, während, gradientStop [1] ist die letzte Steigung. Wenn Sie mehr Verlaufsanschläge wünschen, können Sie sie als bezeichnen gradientStop [2], gradientStop [3] und so weiter.

rampPoint wird verwendet, um die Rampenpunktposition des zugehörigen Gradientenstops festzulegen. Wir haben den ersten und letzten Anstiegspunkt auf 0 bzw. 100 gesetzt. Mittelpunkt wird verwendet, um die Position des Mittelpunkts zwischen zwei Gradientenstopps festzulegen. Wir haben dies auf 50 gesetzt. Schließlich haben wir die Werte von zugewiesen startColor und endColor auf den ersten und letzten Farbverlauf.

Schritt 12 - Erstellen Sie ein Farbverlaufsobjekt

Wir sind fast fertig mit der Farbkonvertierung und der Gradientenbildung. Als Nächstes müssen wir diesen neu erstellten Farbverlauf auf das aktuell ausgewählte Objekt anwenden. Dazu erstellen wir ein Farbverlaufsobjekt, das sich auf den neu erstellten Farbverlauf bezieht.

Hinweis: Wir können den neu erstellten Farbverlauf nicht direkt als Füllfarbe auf das Objekt anwenden. Um diesen Farbverlauf zu verwenden, müssen Sie ein neues Farbverlaufsobjekt erstellen, wie unten gezeigt:

 // ein Illustrator.GradientColor-Objekt erstellen, das sich auf den // neu erstellten Verlauf bezieht var varOfGradient = new GradientColor (); colorOfGradient.gradient = newGradient;

Schritt 13 - Übernehmen Sie den Farbverlauf

Zum Schluss füllen wir die currentObject mit dem colorOfGradient, Wie nachfolgend dargestellt:

 // Aktuelles Pfadelement abrufen, neuen Verlauf als Füllung anwenden currentObject.fillColor = colorOfGradient; currentObject.rotate (gradAngle, false, false, true, false, Transformation.CENTER);

Wir haben eine Rotationsmatrix auf das aktuelle Objekt angewendet. Diese Rotationsmatrix verwendet den Gradientenwinkel, um den Gradienten zu transformieren. Die Rotationssyntax lautet:


drehen
(Winkel
[, changePositions]
[, changeFillPatterns]
[, changeFillGradients]
[, changeStrokePattern]
[, drehenAbout])

Hier haben wir eingestellt changeFillgradients auf "wahr" und der Rest auf "falsch". Dies ist eine schwierige Methode, um die Verlaufsfarbe in einem bestimmten Winkel zu drehen. Danke an John Wundes, der mir diese intelligente Technik vorgeschlagen hat.

Schritt 14 - Das letzte Skript

Das endgültige Skript nach der vollständigen Codierung wird unten gezeigt:

 if (app.documents.length> 0 && app.activeDocument.pathItems.length> 0) if (app.activeDocument.documentColorSpace == DocumentColorSpace.CMYK) convertToGrad ();  else alert ("Der Dokumentfarbraum ist nicht CMYK. Ändern Sie den Dokumentfarbmodus in den CMYK-Modus", "CMYK-Dokument erforderlich");  // end main if else alert ("Entweder ist kein Dokument verfügbar oder das Dokument ist leer");  Funktion convertToGrad () var items = Auswahl; var totalSelected = items.length; if (totalSelected> 0) var gShift = Math.round (Eingabeaufforderung ("Geben Sie einen Wert für die Gradientenverschiebung ein", "10", "Gradient Shift")); if (gShift == null || gShift <=0) gShift=0; if(gShift >= 100) gShift = 100; var gradAngle = Eingabeaufforderung ("Vektorwinkel für Gradient", "0.0", "Gradient Angle") if (gradAngle == null) gradAngle = 0; für (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; // Einen neuen Farbverlauf erstellen // Ein neuer Farbverlauf hat immer zwei Stopps. Var newGradient = app.activeDocument.gradients.add (); newGradient.type = GradientType.LINEAR; // Ändern Sie den ersten Gradientenanschlag newGradient.gradientStops [0] .rampPoint = 0; newGradient.gradientStops [0] .midPoint = 50; newGradient.gradientStops [0] .color = startColor; // Ändere den letzten Gradientenstopp newGradient.gradientStops [1] .rampPoint = 100; newGradient.gradientStops [1] .color = endColor; // ein Illustrator.GradientColor-Objekt erstellen, das sich auf den // neu erstellten Verlauf bezieht var varOfGradient = new GradientColor (); colorOfGradient.gradient = newGradient; // Aktuelles Pfadelement abrufen, neuen Verlauf als Füllung anwenden currentObject.fillColor = colorOfGradient; currentObject.rotate (gradAngle, false, false, true, false, Transformation.CENTER);  // endif else alert ("Füllen Sie ein Objekt mit CMYK-Farbe. Alle O