Ok, time to share - does the following works with you? The exact, repeatable steps that cause me troubles are: 1. I create in PS a new document (whatever size), RGB, 8bit. 2. Run the script (below the code) in ESTK 3. Wait for it to create the layers it has to create, then when it's done: 4. Select in the History Palette the initial snapshot (i.e. I return back in time to the blank document) 5. Run again the script in ESTK. 6. Bang! (at least to me, it stops at line 209, the first ActionDescriptor in the createCurvesAdjLayer function You're maybe more lucid than me to find something wrong in it. (the actual script is really small, it's after a whole bunch of utility functions - please borrow them if you're in need ) // Generated by CoffeeScript 1.3.3 // A bunch of utility functions =============== var blendModes, c2s, c2t, s2t, t2s, w, __slice = [].slice; w = function(txt) { return $.writeln(txt); }; c2t = function(charID) { return app.charIDToTypeID(charID); }; s2t = function(stringID) { return app.stringIDToTypeID(stringID); }; t2s = function(typeID) { return app.typeIDToStringID(typeID); }; c2s = function(charID) { return app.typeIDToStringID(c2t(charID)); }; blendModes = { "Normal": "normal", "Dissolve": "dissolve", "Darken": "darken", "Multiply": "multiply", "Color Burn": "colorBurn", "Linear Burn": "linearBurn", "Darker Color": "darkerColor", "Lighten": "lighten", "Screen": "screen", "Color Dodge": "colorDodge", "Linear Dodge": "linearDodge", "Lighter Color": "lighterColor", "Overlay": "overlay", "Soft Light": "softLight", "Hard Light": "hardLight", "Vivid Light": "vividLight", "Linear Light": "linearLight", "Pin Light": "pinLight", "Hard Mix": "hardMix", "Difference": "difference", "Exclusion": "exclusion", "Subtraction": "blendSubtraction", "Divide": "blendDivide", "Hue": "hue", "Saturation": "saturation", "Color": "color", "Luminosity": "luminosity" }; PSUtils = function PSUtils() {}; PSUtils.getBlendMode = function(blendString) { return s2t(blendModes[blendString]); }; PSUtils.makeSO = function(layer) { var doc, newSO; doc = app.activeDocument; layer = layer != null ? layer : doc.activeLayer; if (doc.activeLayer !== layer) { doc.activeLayer = layer; } try { newSO = s2t('newPlacedLayer'); executeAction(newSO, void 0, DialogModes.NO); return doc.activeLayer; } catch (error) { w("error: " + error); return void 0; } }; PSUtils.clipLayer = function() { var d, r; d = ActionDescriptor; r = ActionReference; r.putEnumerated(s2t('layer'), s2t('ordinal'), s2t('targetEnum')); d.putReference(s2t('target'), r); return executeAction(s2t('groupEvent'), d, DialogModes.NO); }; PSUtils.selectLayersByName = function() { var d, firstLayer, layer, r, secondLayer, _i, _len; firstLayer = arguments[0], secondLayer = 2 <= arguments.length ? __slice.call(arguments, 1) : []; PSUtils.deselectAllLayers(); d = new ActionDescriptor(); r = new ActionReference(); for (_i = 0, _len = arguments.length; _i < _len; _i++) { layer = arguments[_i]; r.putName(s2t('layer'), layer); } d.putReference(s2t('target'), r); d.putEnumerated(s2t('selectionModifier'), s2t('selectionModifierType'), s2t('addToSelectionContinuous')); d.putBoolean(s2t('makeVisible'), false); return executeAction(s2t('select'), d, DialogModes.NO); }; PSUtils.selectLayersByArtLayer = function() { var d, firstArtLayer, item, layer, r, secondArtLayer, _i, _len; firstArtLayer = arguments[0], secondArtLayer = 2 <= arguments.length ? __slice.call(arguments, 1) : []; PSUtils.deselectAllLayers(); d = new ActionDescriptor(); r = new ActionReference(); for (_i = 0, _len = arguments.length; _i < _len; _i++) { item = arguments[_i]; layer = item.name; r.putName(s2t('layer'), layer); } d.putReference(s2t('target'), r); d.putEnumerated(s2t('selectionModifier'), s2t('selectionModifierType'), s2t('addToSelectionContinuous')); d.putBoolean(s2t('makeVisible'), false); return executeAction(s2t('select'), d, DialogModes.NO); }; PSUtils.hasLayerMask = function(layer) { var d, hasMask, r, wasActive; if (layer != null) { wasActive = app.activeDocument.activeLayer; app.activeDocument.activeLayer = layer; } else { layer = app.activeDocument.activeLayer; } d = new ActionDescriptor(); r = new ActionReference(); r.putEnumerated(s2t('layer'), s2t('ordinal'), s2t('targetEnum')); d = executeActionGet(r); hasMask = d.hasKey(s2t('userMaskEnabled')); if (wasActive != null) { app.activeDocument.activeLayer = wasActive; } return hasMask; }; PSUtils.deleteLayerMask = function(layer) { var d, layerName, r; layerName = layer != null ? layer.name : app.activeDocument.activeLayer.name; d = new ActionDescriptor(); r = new ActionReference(); r.putEnumerated(s2t('channel'), s2t('channel'), s2t('mask')); r.putName(s2t('layer'), layerName); d.putReference(s2t('target'), r); return executeAction(s2t('delete'), d, DialogModes.NO); }; PSUtils.deselectLayer = function() { var d, item, layer1, layer2, r, _i, _len, _results; layer1 = arguments[0], layer2 = 2 <= arguments.length ? __slice.call(arguments, 1) : []; _results = []; for (_i = 0, _len = arguments.length; _i < _len; _i++) { item = arguments[_i]; d = new ActionDescriptor(); r = new ActionReference(); r.putName(s2t('layer'), item.name); d.putReference(s2t('target'), r); d.putEnumerated(s2t('selectionModifier'), s2t('selectionModifierType'), s2t('removeFromSelection')); d.putBoolean(s2t('makeVisible'), false); _results.push(executeAction(s2t('select'), d, DialogModes.NO)); } return _results; }; PSUtils.deselectAllLayers = function() { var d, r; d = new ActionDescriptor(); r = new ActionReference(); r.putEnumerated(s2t('layer'), s2t('ordinal'), s2t('targetEnum')); d.putReference(s2t('target'), r); return executeAction(s2t('selectNoLayers'), d, DialogModes.NO); }; PSUtils.deleteSmartFilterMask = function(layer) { var d, layerName, r; layerName = layer != null ? layer.name : app.activeDocument.activeLayer.name; d = new ActionDescriptor(); r = new ActionReference(); r.putEnumerated(s2t('channel'), s2t('channel'), s2t('filterMask')); r.putName(s2t('layer'), layerName); d.putReference(s2t('target'), r); return executeAction(s2t('delete'), d, DialogModes.NO); }; PSUtils.setSmartFilterBlendMode = function(layer, blending) { var d, d2, d3, r; d = new ActionDescriptor(); r = new ActionReference(); r.putIndex(s2t('filterFX'), 1); r.putEnumerated(s2t('layer'), s2t('ordinal'), s2t('targetEnum')); r.putName(s2t('layer'), layer.name); d.putReference(s2t('target'), r); d2 = new ActionDescriptor(); d3 = new ActionDescriptor(); d3.putUnitDouble(s2t('opacity'), s2t('percentUnit'), 100.000000); d3.putEnumerated(s2t('mode'), s2t('blendMode'), PSUtils.getBlendMode(blending)); d2.putObject(s2t('blendOptions'), s2t('blendOptions'), d3); d.putObject(s2t('filterFX'), s2t('filterFX'), d2); return executeAction(c2t('setd'), d, DialogModes.NO); }; var createCurvesAdjLayer = function(layerNameString, blendingMode) { var d, d2, d3, r; d = new ActionDescriptor(); r = new ActionReference(); r.putClass(s2t('adjustmentLayer')); d.putReference(s2t('target'), r); d2 = new ActionDescriptor(); d2.putString(s2t('name'), layerNameString); d2.putEnumerated(s2t('mode'), s2t('blendMode'), PSUtils.getBlendMode(blendingMode)); d3 = new ActionDescriptor(); d3.putEnumerated(s2t('presetKind'), s2t('presetKindType'), s2t('presetKindDefault')); d2.putObject(s2t('type'), s2t('curves'), d3); d.putObject(s2t('using'), s2t('adjustmentLayer'), d2); executeAction(s2t('make'), d, DialogModes.NO); return app.activeDocument.activeLayer; }; // Actual script =============== // Generated by CoffeeScript 1.3.3 var USMDark, base1, curve, darkSet, doc, invertLayer, lay; doc = app.activeDocument; lay = doc.activeLayer; darkSet = doc.layerSets.add(); darkSet.name = "Dark Halos"; darkSet.blendMode = BlendMode.LINEARBURN; base1 = lay.duplicate(darkSet); base1.name = "base"; curve = createCurvesAdjLayer("subtract", "Subtraction"); if (PSUtils.hasLayerMask(curve)) { PSUtils.deleteLayerMask(curve); } USMDark = PSUtils.makeSO(base1.duplicate(darkSet)); USMDark.applyUnSharpMask(500, 10, 0); PSUtils.setSmartFilterBlendMode(USMDark, "Luminosity"); PSUtils.deleteSmartFilterMask(USMDark); USMDark.blendMode = BlendMode.DARKEN; USMDark.name = "USM - Darken"; PSUtils.clipLayer(); I've tested this on 2 different Mac (PS CS6 and PS CS5) - after the error has been fired, no any other script can create ActionDescriptor() and ActionReference() objects anymore, no way. WTF?! Me, I'm quite in desespair. Cheers Davide
... View more