Answered
Delete specific or last smartfilter
Hello everyone,
is there a way to delete the last smart filter from a smart object via script?
🙂
Hello everyone,
is there a way to delete the last smart filter from a smart object via script?
🙂
With thanks to @c.pfaffenbichler for the code to get the smart filter count.
if (app.documents.length > 0) {
var doc = app.activeDocument;
if (doc.activeLayer.kind == LayerKind.SMARTOBJECT) {
// Get the number of filters applied to the currently selected layer, by c.pfaffenbichler
var ref = new ActionReference();
ref.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
var layerDesc = executeActionGet(ref);
var soDesc = layerDesc.getObjectValue(stringIDToTypeID('smartObject'));
var soMoreDesc = layerDesc.getObjectValue(stringIDToTypeID('smartObjectMore'));
var filterFXcount = soDesc.getList(stringIDToTypeID('filterFX')).count
// Delete the last filter
var iddelete = stringIDToTypeID("delete");
var desc30193 = new ActionDescriptor();
var idnull = stringIDToTypeID("null");
var ref10120 = new ActionReference();
var idfilterFX = stringIDToTypeID("filterFX");
ref10120.putIndex(idfilterFX, filterFXcount); // The last filter
var idlayer = stringIDToTypeID("layer");
var idordinal = stringIDToTypeID("ordinal");
var idtargetEnum = stringIDToTypeID("targetEnum");
ref10120.putEnumerated(idlayer, idordinal, idtargetEnum);
desc30193.putReference(idnull, ref10120);
executeAction(iddelete, desc30193, DialogModes.NO);
} else {
alert("Please select a smart object layer.");
}
} else {
alert("Please open a document first.");
}
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.