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.
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.
(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).
Janus Bahs Jacquet