Scissor

Automation

Drei Werkzeuge in Scissor erledigen die wiederkehrende Arbeit für Sie: Aktionen zeichnen eine Sequenz von Befehlen auf und spielen sie ab, Variablen tauschen Text und Sichtbarkeit aus einer Datentabelle, sodass ein Design zu vielen wird, und Skripte steuern den ganzen Editor von JavaScript aus. Keines davon braucht ein Konto oder einen Server – wie der Rest von Scissor laufen sie auf Ihrem eigenen Gerät.

Aktionen: einmal aufzeichnen, überall wiedergeben

Das Aktionen-Panel (Fenster › Aktionen) zeichnet auf, was was Sie tun, und spielt es auf einer neuen Auswahl ab. Drücken Sie Aufzeichnen, führen Sie die Befehle aus, die Sie erfassen möchten – ausrichten, versetzen, einen Schatten hinzufügen, was auch immer die Sequenz ist – dann drücken Sie Stopp und geben Sie der Aktion einen Namen. Sie tritt der Liste bei und zeigt, wie viele Schritte sie hält.

Klicken Sie auf eine Aktion, um sie auf das, was jetzt ausgewählt ist, abzuspielen; ⌥-Klick auf eine, um sie zu löschen. Weil eine Aktion nur eine Liste von Befehlen ist, wiederholt sie eine genaue Routine über viele Objekte, ohne dass Sie jedes Mal durch sie klicken müssen.

Variablen: ein Design, viele Versionen

Das Variablen-Panel (Fenster › Variablen) verwandelt ein festes Design in eine Vorlage, die von Daten gesteuert wird. Zwei Dinge an einem Objekt können dynamisch gemacht werden:

Text dynamisch machen
Bindet die Wörter eines Textobjekts an eine Variable, sodass verschiedene Datensätze unterschiedlichen Text an derselben Stelle setzen können.
Sichtbarkeit dynamisch machen
Bindet, ob ein Objekt angezeigt wird, sodass ein Satz Teile des Designs ein- oder ausschalten kann.

Bindung lösen macht ein gebundenes Objekt wieder fest.

Datensätze

Ein Datensatz ist eine Reihe von Werten für diese Variablen – ein Badge, eine Karte, ein Rahmen. Erfassen speichert die aktuellen Werte als neuen Satz; die Pfeile schalten von einem Satz zum nächsten, und das Design aktualisiert sich, um zu passen. CSV importieren… liest einen ganzen Batch auf einmal – eine Spalte pro Variable, eine Reihe pro Satz – und CSV exportieren schreibt die Sätze zurück, um in einer Tabellenkalkulation bearbeitet zu werden.

Jeden Satz auf einmal exportieren

Datensätze exportieren… rendert das aktive Board einmal für jeden Datensatz und schreibt sie alle in einem Durchgang, als PNG, JPEG, WebP oder SVG. Ein Blatt Namensschilder, ein Satz lokalisierter Banner oder eine Reihe von Social-Media-Karten kommt als ein ordentlicher Batch von Dateien heraus, jede mit ihren eigenen Daten gefüllt.

Skripte: Scissor von JavaScript aus steuern

Für alles, was ein Menü nicht ausdrücken kann, kann ein Skript. Datei › Skripte › Skript-Konsole… öffnet einen Editor, in dem Sie JavaScript schreiben und es gegen das geöffnete Dokument ausführen; Anderes Skript… (⌘F12) führt eine .js-Datei von der Festplatte aus. Ein Skript läuft in einem Web Worker, weg von der Seite, also kann es nicht die Oberfläche oder Ihre Dateien berühren, außer durch das scissor-Objekt, das es bekommt – jeder Aufruf wird an die Engine getragen und zurück beantwortet.

Das scissor-Objekt deckt den gemeinsamen Boden ab:

Formen und Text erstellen
scissor.rect, roundedRect, ellipse, polygon, star, path und text zeichnen Grafik; jeder nimmt eine Position und Größe und ein Options-Objekt für fill, stroke und strokeWidth (Farben sind beliebige CSS-Farben).
Das Dokument lesen
await scissor.document() gibt die App, Auswahl, Ebenen und Artboards so zurück, wie die Panels sie sehen; scissor.selection() gibt nur das zurück, was ausgewählt ist.
Darauf wirken
scissor.select, group und undo und scissor.run(command) für jeden Engine-Befehl überhaupt – dieselben Befehle, die die Menüs senden.
Zurücksprechen
scissor.log druckt auf die Konsole; scissor.alert zeigt eine Nachricht.

Ein kurzes Beispiel – ein Ring aus farbigen Punkten und eine Beschriftung:

const doc = await scissor.document();
scissor.log('Boards:', doc.artboards.length);
for (let i = 0; i < 12; i++) {
  const a = (i / 12) * Math.PI * 2;
  await scissor.ellipse(300 + Math.cos(a) * 120, 260 + Math.sin(a) * 120, 36, 36,
    { fill: `hsl(${i * 30} 80% 60%)` });
}
await scissor.text(230, 270, 'Hallo, Scissor', { size: 24 });

Die Skript-Konsole behält den letzten Code, den Sie ausgeführt haben, also ist ein funktionierendes Skript da, wenn Sie zu ihm zurückkehren.