Новый слой из группы - PullRequest
       17

Новый слой из группы

0 голосов
/ 03 ноября 2019

Я поместил функцию, которая создает новую группу из слоев - точно так же, как пункт меню.

new_group_from_layers("my group")

function new_group_from_layers(groupstr)
{

    // =======================================================
    var idMk = charIDToTypeID( "Mk  " );
    var desc704 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
    var ref233 = new ActionReference();
    var idlayerSection = stringIDToTypeID( "layerSection" );
    ref233.putClass( idlayerSection );
    desc704.putReference( idnull, ref233 );
    var idFrom = charIDToTypeID( "From" );
    var ref234 = new ActionReference();
    var idLyr = charIDToTypeID( "Lyr " );
    var idOrdn = charIDToTypeID( "Ordn" );
    var idTrgt = charIDToTypeID( "Trgt" );
    ref234.putEnumerated( idLyr, idOrdn, idTrgt );
    desc704.putReference( idFrom, ref234 );
    var idUsng = charIDToTypeID( "Usng" );
    var desc705 = new ActionDescriptor();
    var idNm = charIDToTypeID( "Nm  " );
    desc705.putString( idNm, groupstr ); // name
    var idlayerSection = stringIDToTypeID( "layerSection" );
    desc704.putObject( idUsng, idlayerSection, desc705 );
    var idlayerSectionStart = stringIDToTypeID( "layerSectionStart" );
    desc704.putInteger( idlayerSectionStart, 14 );
    var idlayerSectionEnd = stringIDToTypeID( "layerSectionEnd" );
    desc704.putInteger( idlayerSectionEnd, 15 );
    var idNm = charIDToTypeID( "Nm  " );
    desc704.putString( idNm, groupstr ); // name
    executeAction( idMk, desc704, DialogModes.NO );

}

Мой вопрос: есть ли более короткая версия этого кода, не использующая код ScriptListener? Примерно так:

var layerRef = app.activeDocument.groupLayers.add();
layerRef.name = "my new group";
layerRef.blendMode = BlendMode.PASSTHROUGH;

Поскольку выбранные слои не доступны сразу, это делает это немного громоздким: (

...