Я пытаюсь создать скрипт для «вставки на место» всех выбранных объектов во все разблокированные слои. Моя попытка, вероятно, почти завершена, но что-то не работает.
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 =
(в противном случае он назначает, а не оценивает). Должен быть;
if ( myDoc.layers[i].locked == false ) ...
Я только что проверил, и скрипт отлично работает с этим исправленным.
Тогда полный рабочий скрипт:
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();
}
}
Вариант скрипта для вставки выделенных объектов на все остальные заблокированные слои:
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
Люциан
Кай