Skip to main content
Participant
April 4, 2012
Question

Array of selected layers - how to get it

  • April 4, 2012
  • 2 replies
  • 2864 views

Hello Everybody

I'm looking for a way to get all the selected layers as array.

With app.activeDocument.activeLayer i can select only the top-most of the selected layers.

There is a way to achieve this in ExtendScript:

function getSelectedLayers() {

   var layerArray = new Array;

      var desc = new ActionDescriptor();

         var ref = new ActionReference();

         ref.putClass( stringIDToTypeID('layerSection') );

      desc.putReference( charIDToTypeID('null'), ref );

         var layerRef = new ActionReference();

         layerRef.putEnumerated( charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );

      desc.putReference( charIDToTypeID('From'), layerRef );

      executeAction( charIDToTypeID('Mk  '), desc, DialogModes.NO );

   var tempLayerSet = app.activeDocument.activeLayer.layers;

   for ( var layerIndex = 0; layerIndex < tempLayerSet.length; layerIndex++ ) {

      layerArray.push( tempLayerSet[layerIndex] );

   }

   executeAction( charIDToTypeID('undo'), undefined, DialogModes.NO );

   return layerArray;

};

How can i do that using Photoshop SDK?

Thanks in advance.

This topic has been closed for replies.

2 replies

Participant
April 6, 2012

Please someone help me with that.

Why in extendscript theres a document.activeLayer.layers property, and in sdk there isn't?

Is there a way of passing Array of Layer objects from jsx to as? I managed to get an array of strings, but how to do the same with Layer() ?

Tom Ruark
Inspiring
April 5, 2012

The JavaScript to C++ conversion is not too difficult. Check out the automation examples. There are suites that you need to acquire for ActionDescriptor(s) and ActionControls(s) and the conversion is almost line by line. Install the Listener plug-in from the SDK and it will generate code just like ScriptListener does for JavaScript. You can use that for a reference.

Participant
April 5, 2012

Thanks for an answer!

So i've to use C++? Can't it be done with as3 / javascript?