Функция для отображения / скрытия слоя с помощью скрипта Photoshop (JSX) - PullRequest
4 голосов
/ 17 декабря 2011

Я новичок в сценариях Photoshop и пишу сценарии, которые будут проходить по слоям, обрезать их и экспортировать.Пока у меня больше всего есть элемент, необходимый для завершения этого сценария.Единственное, что я не могу найти, это как показать / скрыть отдельный слой.Я нашел функции, чтобы показать / скрыть все слои, но ничего для одного слоя.

///////////////////////////////////////////////////////////////////////////////
// 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);}

Есть идеи?

1 Ответ

6 голосов
/ 17 декабря 2011

В Photoshop не слишком много скриптов, но, насколько я помню, объект Layer имеет логическое свойство .visible, которое можно использовать для переключения видимости для каждого слоя в отдельности.

например. переключение видимости для выбранного / активного слоя:

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

или переберите нужные вам слои и переключите их видимость: // пример скрывает нечетные слои, показывая четные слои на основе их индекса

var doc = app.activeDocument;
for(var i = 0 ; i < doc.layers.length;i++){
    doc.layers[i].visible = (i % 2 == 0);
}

Я предлагаю взглянуть либо в справочнике по JavaScript в Photoshop CS5 (ссылка в формате PDF), либо в средстве просмотра объектной модели ExtendScript Toolkit . Вы можете получить к нему доступ через Справка> Просмотр объектной модели и выбрать Библиотека объектов Adobe Photoshop CS5 из комбинированного списка / списка браузера со списком классов, доступных в DOM для Photoshop.

...