[FIXED] Funktion zum Anzeigen/Ausblenden von Ebenen mit Photoshop -Skript (JSX)

Ausgabe

Ich schreibe ein Skript, das Ebenen durchläuft, sie zuschneidet und exportiert. Bisher habe ich vor allem das Element, das ich brauche, um dieses Skript zu vervollständigen. Das einzige, was ich nicht finden kann, ist, wie ich eine einzelne Ebene ein- / ausblenden kann. Ich habe Funktionen gefunden, um alle Ebenen anzuzeigen / auszublenden, aber nichts für eine einzelne Ebene.

///////////////////////////////////////////////////////////////////////////////
// selectAllLayers - select all layers (Select > All Layers)
///////////////////////////////////////////////////////////////////////////////
function selectAllLayers() {
    var ref = new ActionReference();
    ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
    var desc = new ActionDescriptor();
    desc.putReference(cTID('null'), ref);

    executeAction(sTID('selectAllLayers'), desc, DialogModes.NO);
}

///////////////////////////////////////////////////////////////////////////////
// hideLayers - hide all selected layers (Layer > Hide Layers)
///////////////////////////////////////////////////////////////////////////////
function hideLayers() {
    var ref = new ActionReference();
    ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
    var list = new ActionList();
    list.putReference(ref);
    var desc = new ActionDescriptor();
    desc.putList(cTID('null'), list);
    executeAction(cTID('Hd  '), desc, DialogModes.NO);
}

function cTID(s) {return app.charIDToTypeID(s);}
function sTID(s) {return app.stringIDToTypeID(s);}

Irgendwelche Ideen?

Lösung

Das LayerObjekt hat eine .visibleboolesche Eigenschaft, mit der Sie die Sichtbarkeit für jede Ebene einzeln steuern können:

// make active layer invisible
app.activeDocument.activeLayer.visible = false;

oder

// make active layer visible
app.activeDocument.activeLayer.visible = true;

oder sogar die Sichtbarkeit für die ausgewählte/aktive Ebene umschalten:

app.activeDocument.activeLayer.visible = !app.activeDocument.activeLayer.visible;

oder durchlaufen Sie die Ebenen, die Sie benötigen, und schalten Sie deren Sichtbarkeit um:

//example hides odd layers while showing even layers, based on their index
var doc = app.activeDocument;
for(var i = 0 ; i < doc.layers.length;i++){
    doc.layers[i].visible = (i % 2 == 0);
}

Ich schlage vor, entweder in der Photoshop CS5 Javascript-Referenz (PDF-Link) oder im Object Model Viewer von ExtendScript Toolkit nachzusehen .

Sie können über Hilfe > Objektmodell-Viewer darauf zugreifen und die Adobe Photoshop CS5-Objektbibliothek aus dem Kombinationsfeld/der Liste des Browsers in der Liste der im Photoshop-DOM verfügbaren Klassen auswählen .


Beantwortet von –
George Profenza


Antwort geprüft von –
Mary Flores (FixError Volunteer)

0 Shares:
Leave a Reply

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

You May Also Like