Estoy tratando de crear un script para "pegar en su lugar" todos los objetos seleccionados en todas las capas desbloqueadas. Mi intento probablemente esté cerca, pero algo no funciona.
var myDoc = app.activeDocument;
var al=myDoc.activeLayer.name; // remembers current layer name
app.copy(); // copies whatever is selected
// paste in place for all unlocked layers, excepting source layer
for (var i=0;i<myDoc.layers.length;i++) {
if ((myDoc.layers[i].locked=false) && (myDoc.layers[i].name!=al)) {
myDoc.activeLayer=myDoc.layers[i];
app.pasteInPlace();
}
}
A su verificación si la capa está bloqueada le falta un =
(está asignando en lugar de evaluar de otra manera). Debería ser;
if ( myDoc.layers[i].locked == false ) ...
Acabo de probar y el script funciona perfectamente con eso corregido.
El script de trabajo completo es entonces:
var myDoc = app.activeDocument;
var al = myDoc.activeLayer.name; // remembers current layer name
app.copy(); // copies whatever is selected
// paste in place for all unlocked layers, excepting source layer
for ( var i = 0; i < myDoc.layers.length; i++ ) {
if ( myDoc.layers[i].locked == false && myDoc.layers[i].name != al ) {
myDoc.activeLayer = myDoc.layers[i];
app.pasteInPlace();
}
}
Script variante para pegar en su lugar los objetos seleccionados en todas las demás capas bloqueadas:
var myDoc = app.activeDocument;
var al=myDoc.activeLayer.name; // remembers current layer
app.copy(); // copies whatever is selected
for (var i=0;i<myDoc.layers.length;i++) {
if ((myDoc.layers[i].locked==true) && (myDoc.layers[i].name!=al)) {
myDoc.activeLayer=myDoc.layers[i]; // select next layer
myDoc.layers[i].locked=false; // unlock it
app.pasteInPlace(); // paste in place
myDoc.layers[i].locked=true; // relock it
}
}
myDoc.activeLayer=al; // Go back to original layer
Luciano
Caí