How to delete every layer except of selected layer?
Hi,
I would like to delete all layers including background and layer sets except of selected layer.
It seemed easy first but it stops... I tried several ways; What am I doing wrong ?
#target photoshop
cTID = function(s) { return app.charIDToTypeID(s); };
sTID = function(s) { return app.stringIDToTypeID(s); };
app.bringToFront();
var doc = app.activeDocument;
var currentLayer = doc.activeLayer; // remember the selected layer
var selectedlayername = currentLayer.name;
currentLayer.move( activeDocument, ElementPlacement.PLACEATBEGINNING );
function DeleteLayer(layername) { var desc1 = new ActionDescriptor();
var ref1 = new ActionReference(); ref1.putName(cTID('Lyr '), layername);
desc1.putReference(cTID('null'), ref1); var list1 = new ActionList();
list1.putInteger(17); desc1.putList(cTID('LyrI'), list1); executeAction(cTID('Dlt '), desc1, DialogModes.NO);
};
function DeleteBackground() { var desc1 = new ActionDescriptor(); var ref1 = new ActionReference(); ref1.putProperty(cTID('Lyr '), cTID('Bckg')); desc1.putReference(cTID('null'), ref1); var list1 = new ActionList(); list1.putInteger(1); desc1.putList(cTID('LyrI'), list1); executeAction(cTID('Dlt '), desc1, DialogModes.NO); };
function initial () {
for(var i = 0 ; i < doc.layers.length;i++){ if (doc.layers.isBackgroundLayer == true ) { DeleteBackground();} }
var layerNum = doc.layers.length;
for(var s = 1 ; s <= layerNum;s++){
if ( doc.layers
.name != selectedlayername ) {DeleteLayer (doc.layers
.name);}
else if ( doc.layers
.name == selectedlayername ) {}
}
}
initial();
Thank you,
Best Regards.
