So I am trying to write a script that grabs selected layers and throws them into a new document that matches the origional.
But something strange is happening when I use duplicate several times in a row. It duplicates my duplicated layers.
I start with this selection:
But end up with this result in my new doc:
This has me very confused. I would appreciate someone looking at what I have.
Thanks for looking.
Here is the code:
var FSTdoc = app.activeDocument;
var curPATH = app.activeDocument.path+'/';
var fullNAME = app.activeDocument.fullName;
var ABSOfull = fullNAME.absoluteURI;
var curPATHstr = String(curPATH);
var fullNAMEstr = String(fullNAME);
var theLayers = GetSelectedLayers();
var HLDRdoc = app.documents.add(FSTdoc.width, FSTdoc.height, FSTdoc.resolution, FSTdoc.name, NewDocumentMode.RGB, FSTdoc.initialFill,FSTdoc.pixelAspectRatio, FSTdoc.bitsPerChannel, FSTdoc.colorProfileName);
app.activeDocument = FSTdoc;
lay1 = theLayers[0].duplicate(HLDRdoc, ElementPlacement. PLACEATBEGINNING);
lay2 = theLayers[1].duplicate( HLDRdoc, ElementPlacement. PLACEATBEGINNING);
lay3 = theLayers[2].duplicate(HLDRdoc, ElementPlacement. PLACEATBEGINNING);
// function to get selected layers by paul mr;
function GetSelectedLayers() {
var A=[];
var desc11 = new ActionDescriptor();
var ref9 = new ActionReference();
ref9.putClass( stringIDToTypeID('layerSection') );
desc11.putReference( charIDToTypeID('null'), ref9 );
var ref10 = new ActionReference();
ref10.putEnumerated( charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );
desc11.putReference( charIDToTypeID('From'), ref10 );
// try catch to stop script
try {
executeAction( charIDToTypeID('Mk '), desc11, DialogModes.NO );
} catch (err) {
alert("Script will not work on locked layers.");
throw new Error("Locked Layer");
}
var gL = activeDocument.activeLayer.layers;
for(var i=0;i<gL.length;i++){
A.push(gL[i]);
}
executeAction( charIDToTypeID('undo'), undefined, DialogModes.NO );
return A;
};