Illustrator-Skript zum Freigeben aller Schnittmasken und Gruppierungen usw

Gibt es ein Skript für Illustrator, mit dem alle Schnittmasken, Gruppierungen und zusammengesetzten Pfade freigegeben werden können? Im Wesentlichen ein Skript, das eine Datei in ihre ursprünglichen Teile zerlegen kann.

Tut das nicht Alles auswählen, Objekt > Schnittmaske > Freigeben, Objekt > Gruppierung aufheben?
Ja, aber die Datei, an der ich arbeite, hat mindestens 50 Instanzen von Schnittmasken, die auf die Datei angewendet wurden. Ich suche nach einer Ein-Klick-Lösung, um den Prozess zu beschleunigen.
Würde es nicht ausreichen, dies in eine Aktion umzusetzen? Es ist einfacher als Scripting und es gibt keinen wirklichen Vorteil darin, dies zu scripten.
Nein, da jede Datei eine andere Menge an Schnittmaske haben könnte. Ich stelle fest, dass das Auswählen von allem und das Freigeben der Schnittmaske nicht alle Schnittmasken auf einmal freigibt. Es gibt Schichten von Schnittmasken.

Antworten (4)

Sie brauchen kein Skript, um alle Schnittmasken in einem Schritt freizugeben, tun Sie einfach:

  • Wählen Sie -> Objekt -> Schnittmaske
  • Bearbeiten->Löschen

Es geht aber auch per Script:

app.executeMenuCommand("Clipping Masks menu item"); 
app.executeMenuCommand("clear");

Dasselbe gilt für das Aufheben der Gruppierung aller Objekte und das Freigeben aller zusammengesetzten Pfade:

app.executeMenuCommand("selectall"); 
app.executeMenuCommand("ungroup");
app.executeMenuCommand("noCompoundPath");
Aber kümmert sich das um Gruppen und zusammengesetzte Pfade?
Ja, es kümmert sich um Gruppen und zusammengesetzte Pfade, siehe die letzten 4 Zeilen meiner Antwort.

Bitte schön (dies ist nicht besonders gründlich getestet, wenn es einen Fehler hat, lassen Sie es mich wissen, und ich werde Sie unterstützen):

 #target illustrator

// releaseEverything.jsx
//
// Copyright (c) 2017 Janne Ojala
//
// Licence: https://opensource.org/licenses/MIT

(function(){


var objs = app.activeDocument.pageItems;
// or if you want only selection use app.activeDocument.selection
traverseSceneObjects(objs);


function traverseSceneObjects(pageItems){

    for (var iter=0 ; iter<pageItems.length; iter++ ){
        var item = pageItems[iter];
        var typename = item.typename;

        // apply action or get the subitems of object
        if (typename === "PathItem"){
            item.clipping = false;

        } else if (typename === "GroupItem") {
            traverseSceneObjects( item.pageItems );
            release( item, "pageItems" ); 

        } else if (typename === "CompoundPathItem" ) {
            traverseSceneObjects( item.pathItems );
            release( item, "pathItems" );
        }

    }

}


function release(obj, action) {

    for (var i=obj[action].length-1 ; i>=0; i--){
        obj[action][i].move( obj, ElementPlacement.PLACEAFTER );

    }

}

})();

Allerdings würde ich persönlich so etwas nicht verwenden. Selektives Flattening ist besser und hat mehr Synergievorteile.

Hinweis : Dies gilt für die gesamte Datei. Wenn Sie möchten, dass es nur für eine Auswahl gilt, ändern Sie die Zeile var objs = app.activeDocument.pageItems;invar objs = app.activeDocument.selection;

Danke das war alles was ich brauchte :)

Ich denke nicht, dass es so schwierig ist, die Tastenbefehle CMD-A und CMD-8 abwechselnd so oft wie nötig zu verwenden, aber wenn Sie möchten, können Sie 10 Iterationen in eine Aktion werfen und so oft wie nötig spielen.

Hier ist ein Skript zum Entfernen aller Schnittmasken in einer Datei.

Wenn Sie .remove durch .release ersetzen, wird es vielleicht Ihre gewünschte Funktion ausführen.

https://forums.adobe.com/thread/287643

Aber dann beschreibt die Mikromaschine genau den Anwendungsfall, bei dem eine Aktion, die 10 Mal aufgerufen wird, die Arbeit erledigen würde.
Ich verstehe nicht. Durch Ausführen einer Aktion (Initiieren des Skripts) können alle Clips freigegeben werden. Möglicherweise müssen zwei weitere Skripts erstellt werden, um die Gruppierung aufzuheben und den zusammengesetzten Pfad freizugeben, oder dieses eine Skript kann geändert werden, um alle drei Aktionen für die Datei durch Iteration zu handhaben, unabhängig davon, wie viele Clips, Gruppen oder Masken vorhanden sind.
Eine Aktion kann all diese Dinge auch ohne Skript auf einmal erledigen. Es gibt keinen Nachteil, wenn Sie Gruppierung aufheben mehrmals aufrufen. Ein Skript kann jedoch nicht an einen dauerhaften Hotkey gebunden werden, da nach einem Neustart von ai der Link zum Skript weg ist. Aktionen können.