Duplizieren Sie die Zeichenfläche mit dem Skript Illustrator CC

Ich habe versucht, eine Aktion zum Automatisieren von „Zeichenfläche duplizieren“ in Illustrator CC zu erstellen, aber es war nicht möglich. Ich würde gerne wissen, ob es dafür ein Skript gibt.Geben Sie hier die Bildbeschreibung ein

Danke

Antworten (2)

Ja, das Problem ist, dass es sich nicht um eine aufzeichenbare Aktion handelt, und obwohl es oberflächlich einfach erscheint, gibt es anscheinend viel zu tun, um eine Zeichenfläche zu duplizieren. Sie können den Code jedoch mit Ihren Anforderungen erweitern. Dieses Snippet erstellt eine neue Zeichenfläche und verwendet Kopieren/Einfügen, um die Elemente auf der neuen Zeichenfläche zu platzieren. Wenn die neue Zeichenfläche seitlich von der Zwischenablage abweicht, handelt es sich um eine Codebearbeitung. Wenn Sie bereits 1000 Zeichenflächen haben und das Hinzufügen der nächsten einen Fehler auslöst oder einen Absturz verursacht, ist dies eine Codebearbeitung. Wenn Sie ein Problem damit haben, wie Ihre vorhandene Auswahl oder Zwischenablage zerstört wird, glauben Sie besser, dass dies eine Codebearbeitung ist!

Aber hier ist mein einfaches Beispiel!

#target illustrator
function test(){
    var doc = app.activeDocument;
    var thisBoardIndex = doc.artboards.getActiveArtboardIndex();
    var thisBoard = doc.artboards[thisBoardIndex];
    var thisRect = thisBoard.artboardRect;
    var lastBoard = doc.artboards[doc.artboards.length - 1];
    var lastRect = lastBoard.artboardRect;
    doc.selectObjectsOnActiveArtboard();
    app.copy();
    var newBoard = doc.artboards.add(thisRect);
    var offsetH = 20;
    newBoard.artboardRect = [
        lastRect[2] + offsetH,
        lastRect[1],
        lastRect[2] + offsetH + (thisRect[2] - thisRect[0]),
        lastRect[3]
    ];
    newBoard.name = thisBoard.name + " copy";
    app.executeMenuCommand("pasteFront");
    doc.selection = null;
};
test();
Mein Freund, was du getan hast, funktioniert perfekt für mich. Ich habe versucht, den Inhalt in eine neue Ebene einzufügen, aber es hat nicht funktioniert. Haben Sie dafür eine Lösung? Wenn Sie nicht haben, kein Problem, Sie haben viel geholfen. Ich fügte hinzutargetLayer = doc.layers.add();
Dann müssten Sie eine Schleife machen und die gesamte Auswahl in die neue Ebene verschieben, nachdem der Befehl pasteFront ausgeführt wurde und bevor Sie die Auswahl aufheben. Die Schleife muss möglicherweise rückwärts gehen: for(var i = doc.selection.length - 1; i > -1; i--), und der move-Befehl lautet wie folgt: doc.selection[i].move(targetLayer, Elementplatzierung.PLACEATEND);
@Silly-V Wirft den folgenden Fehler, wenn ich das Skript ausführe: Error 1200: an illustrator error occured.... Line 13: -> newBoard.artboardRect = [. Ist es möglich, dies zu beheben?
Leider kann ich diesen Fehler überhaupt nicht reproduzieren. Vielleicht hat es etwas mit der Art und Weise zu tun, wie Ihr Dokument angelegt ist?

Zum Bewältigen der Ebene, so verrückt es auch ist, dass es sich um eine aufzeichenbare Aktion handelt, können Sie diese zum Kopieren der Ebene verwenden und die Aktion dann als Stapel für den erforderlichen Ordner ausführen.