[FIXED] Holen Sie Layer ID aus der Photoshop -Schicht

Ausgabe

Ich bin mir nicht sicher, ob ich das richtig mache. Ich versuche, eine Ebene zu finden. Normalerweise kann ich das nach Gruppenname und Ebenenname tun. Dies führt jedoch zu Problemen, wenn es doppelte Namen gibt. Stattdessen werde ich versuchen, ihre eindeutige Layer-ID zu finden.

Ich denke das ist richtig:

var srcDoc = app.activeDocument;
var numOfLayers = srcDoc.layers.length;

// main loop
for (var i = numOfLayers -1; i >= 0  ; i--)
{
   var ref = new ActionReference();
   ref.putIndex( charIDToTypeID( "Lyr " ), i);
   var layerDesc = executeActionGet(ref);
   var layerID = layerDesc.getInteger(stringIDToTypeID('layerID'));
   var currentLayer = srcDoc.layers[i].name;
   alert(layerID + " " + currentLayer);
}

… Nur habe ich erwartet, dass die ID eine größere Zufallszeichenfolge ist, kein Int. Erstens, habe ich das richtig verstanden? Und zweitens gibt es eine Möglichkeit, die Layer-ID vom activeLayer zu erhalten?

Lösung

IDs sind Zahlen in PS und sie sind nur für ein Dokument eindeutig: Sie beginnen immer bei 1und dann ändern neue Ebenen und Ebenenoperationen den ID-Zähler um, +1sodass es normal ist, nach einer Weile IDs in Hunderten zu haben.

Um eine ID der aktiven Ebene zu erhalten, ändern Sie die Referenz in target:

var ref = new ActionReference();
ref.putEnumerated(charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt')); // reference is active layer
var layerDesc = executeActionGet(ref);
var layerID = layerDesc.getInteger(stringIDToTypeID('layerID'));
alert(layerID);

PS dies funktioniert nur mit einer aktiven Ebene. Für mehrere Ebenen müssen Sie eine Funktion verwenden, die ich hier gepostet habe: Ausgewählte Ebenen abrufen

PPS beachten Sie, dass Ihr ursprünglicher Code nicht mit Gruppen funktioniert: Indizes von DOM und Indizes von AM sind nicht gleich. Sie müssen Ebenen in der AM-Liste durchlaufen, um die richtigen Indizes zu erhalten.


Beantwortet von –
Sergey Kritskiy


Antwort geprüft von –
Dawn Plyler (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like