Script de Illustrator para liberar todas las máscaras de recorte y agrupaciones, etc.

¿Hay una secuencia de comandos disponible para Illustrator que permita liberar todas las máscaras de recorte, agrupaciones y trazados compuestos? Esencialmente, un script que podría dividir un archivo en sus partes originales.

¿Seleccionar todo, Objeto > Máscara de recorte > Liberar, Objeto > Desagrupar no hace esto?
Sí, pero el archivo en el que estoy trabajando tiene al menos 50 instancias de máscara de recorte aplicadas al archivo. Estoy buscando una solución de un clic para acelerar el proceso.
¿No sería suficiente poner esto en acción? Es más fácil que escribir scripts y no hay ningún beneficio real en escribir esto.
No, porque cada archivo podría tener una cantidad diferente de máscara de recorte. Me doy cuenta de que seleccionar todo y liberar la máscara de recorte no libera todas las máscaras de recorte a la vez. Hay capas de máscaras de recorte.

Respuestas (4)

No necesita un script para liberar toda la máscara de recorte en un solo paso, solo haga lo siguiente:

  • Seleccionar->Objeto->Máscara de recorte
  • Editar->Borrar

Pero también se puede hacer a través de script:

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

Lo mismo para desagrupar todos los objetos y liberar todas las rutas compuestas:

app.executeMenuCommand("selectall"); 
app.executeMenuCommand("ungroup");
app.executeMenuCommand("noCompoundPath");
Pero, ¿eso se encarga de los grupos y las rutas compuestas?
Sí, se ocupa de grupos y caminos compuestos, vea las últimas 4 filas de mi respuesta.

Aquí tienes (esto no se ha probado muy a fondo si tiene un error, avísame y te ayudaré):

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

    }

}

})();

Sin embargo, personalmente no usaría este tipo de cosas. Hacer un aplanamiento selectivo es mejor y tiene más beneficios de sinergia.

Nota : Esto se aplica a todo el archivo. si desea que solo se aplique a una selección, cambie la línea var objs = app.activeDocument.pageItems;avar objs = app.activeDocument.selection;

Gracias era todo lo que necesitaba :)

No creo que sea tan difícil usar los comandos de teclado CMD-A y CMD-8 alternativamente tanto como sea necesario, pero si lo desea, puede lanzar 10 iteraciones en una acción y reproducirla tanto como sea necesario.

Aquí hay una secuencia de comandos para eliminar todas las máscaras de recorte en un archivo.

Quizás si reemplazó .remove con .release, realizará la función deseada.

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

Pero luego, la micro máquina describe exactamente el caso de uso en el que una acción llamada 10 veces haría el trabajo.
No entiendo. Al realizar 1 acción (iniciar el guión), se pueden liberar todos los clips. Es posible que se deban crear otros 2 scripts para Desagrupar y Liberar ruta compuesta, o este 1 script se puede modificar para manejar las tres acciones en el archivo, sin importar cuántos clips, grupos o máscaras, a través de la iteración.
Una acción puede hacer todas esas cosas de una sola vez, incluso sin un guión. No hay inconveniente en llamar a desagrupar una cantidad adicional de veces. Pero una secuencia de comandos no se puede vincular a una tecla de acceso rápido persistente, porque una vez que se reinicia ai, el enlace a la secuencia de comandos desaparece. Las acciones pueden.