Proceso de InDesign a Photoshop [cerrado]

Tengo este Script para distribuir objetos a sus propias capas.

var mySels = app.selection.length;
if (mySels == 0) {
    alert("Select the object and Run the script");
    exit(0)
} else {
    while (mySels--) {
        var objLayer = app.activeDocument.layers.add();
        app.selection[mySels].itemLayer = objLayer;
    }
}

Mi pregunta es cómo hacer que este script seleccione todos los objetos automáticamente, de modo que pueda ejecutarlo en una carpeta de un montón de archivos de InDesign.

¿Qué tiene que ver esto con Photoshop? No veo ninguna mención de nada que no sea InDesign en la pregunta...

Respuestas (1)

No tienes que seleccionar nada en absoluto. Sí: los scripts pueden funcionar con una selección, pero si desea mover todo , entonces no necesita decirle a un script qué es ese 'todo'.

De modo que puede recorrer todos los elementos de la página y moverlos a una nueva capa. Sin embargo, esto fallará en los objetos agrupados: el grupo en sí es un objeto, pero todas sus partes constituyentes también se enumeran como elementos de página separados. El truco, entonces, es verificar si el padre de un objeto es 'grupo'.

doc = app.activeDocument;
for (obj=0; obj<doc.allPageItems.length; obj++)
{
    if (doc.allPageItems[obj].parent instanceof Group)
        continue;
    var objLayer = doc.layers.add();
    doc.allPageItems[obj].itemLayer = objLayer;
}

Antes (izquierda)/Después (derecha) muestra todo en la misma capa a la izquierda y se mueve a capas separadas a la derecha. Observe cómo las 3 líneas agrupadas se mueven como un solo objeto.

antes y después de distribuir por capas

(Oh, está bien, para seleccionar todos los elementos de la página, agregue app.select(app.activeDocument.allPageItems);al comienzo de su secuencia de comandos actual, y luego funcionará también. Pero la mía es la mejor manera).