Photoshop UXP Selection

Hello!
Can you help me, how I can get information about selection on activeDocument by UXP: is selection exists, bounds?
Thanks…

Unfortunately you can’t do it with the DOM, right now. You need to use Alchemist/batchPlay:

but how I can use it in JS-code? (((

Did you select Type: Document?

yes, i find, sorry, but dont understand how to use it in JavaScript

Try this

async function getSelectionBounds() {

      try {

         const result = await require("photoshop").action.batchPlay(

            [{

               "_obj": "get",

               "_target": [{

                  "_property": "selection"

               },

               {

                  "_ref": "document",

                  "_enum": "ordinal",

                  "_value": "targetEnum"

               }

               ]

            }], {

            "synchronousExecution": false,

           

         });

         const left = result[0].selection.left._value;

         const top = result[0].selection.top._value;

         const right = result[0].selection.right._value;

         const bottom = result[0].selection.bottom._value;

         selBounds = [left, top, right, bottom];

         selectionExists = true;

      } catch (e) {

         selectionExists = false;

      }

   }

thanks, but…

image

Because there’s no selection present, therefore there’s no result[0]
There are multiple ways to handle this. Eg.

selectionExists = typeof result[0] !== 'undefined';

rectangle selection present on active document

image

Could you show Console output? And a relevant part of code would be useful also

I believe you’re trying to use result variable somewhere, where it’s not defined. Here’s the exact same code @matakus provided, but with some logs and it works just fine

i don’t understand why so happens )))

OK, I won’t say exactly what the error is, but you’re not actually running the code me or @matakus has provided. Check line by line and will find the difference. Not sure why you expect result[0] to be there, when you removed parts of code and now result is a Promise

@Nonparel, did you find it?

i dont understand )))))

image

here is the same code and no result in console )))

Did you select all messages to show in Console?
Screenshot 2022-01-19 at 16.38.36

There should be at least an error if log() failed.

Anyway, what do you get if you remove async/await (like you had before) and change to "synchronousExecution": true in batchPlay?

image

Sorry, I just don’t know what to say. Feels like some crucial info is missing that’s not in the code :man_shrugging:

is it important, what version of Photoshop is used? OS version?
(Mac OS 10.15.7 Catalina & Photoshop v 23.1.0)

What does just result log? (instead of result[0])