Я поместил функцию, которая создает новую группу из слоев - точно так же, как пункт меню.
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;
Поскольку выбранные слои не доступны сразу, это делает это немного громоздким: (