[PS CC-CC2022] JS или scriptlistener. Как получить значения "Blend if" ?

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
24
Всем привет.
Как получить значения ползунков в слое в пункте Blend If ?
Записать я их могу, но вот прочитать имеющиеся...
В мануале по JS и через scriptlistener не вижу возможности получить эти значения.
 
А как записать?
Получить - обратным образом (Кэп)
 
А как записать?
Получить - обратным образом (Кэп)
проблематично. Вот кусочек кода scriptlistener:
var idDstB = charIDToTypeID( "DstB" );
desc110.putInteger( idDstB, 17 );
из него видно, что значение 17 кладётся ( putInteger ) в ползунок DstB - destination Black.
 
Нет, разумеется - если честно, я вообще задачу не понял. Приведите хотя бы весь код полностью
 
уточню задачу - нужно достать значения указанных слайдеров:


blend if.PNG



Вот код для записи значений - в полном и прибранном вариантах scriptlistener:


1.
Код:
// =======================================================
// Blend if - write values
var idsetd = charIDToTypeID( "setd" );
    var desc108 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
        var ref27 = new ActionReference();
        var idLyr = charIDToTypeID( "Lyr " );
        var idOrdn = charIDToTypeID( "Ordn" );
        var idTrgt = charIDToTypeID( "Trgt" );
        ref27.putEnumerated( idLyr, idOrdn, idTrgt );
    desc108.putReference( idnull, ref27 );
    var idT = charIDToTypeID( "T   " );
        var desc109 = new ActionDescriptor();
        var idBlnd = charIDToTypeID( "Blnd" );
            var list14 = new ActionList();
                var desc110 = new ActionDescriptor();
                var idChnl = charIDToTypeID( "Chnl" );
                    var ref28 = new ActionReference();
                    var idChnl = charIDToTypeID( "Chnl" );
                    var idChnl = charIDToTypeID( "Chnl" );
                    var idGrn = charIDToTypeID( "Grn " );
                    ref28.putEnumerated( idChnl, idChnl, idGrn );
                desc110.putReference( idChnl, ref28 );
                var idSrcB = charIDToTypeID( "SrcB" );
                desc110.putInteger( idSrcB, 72 );
                var idSrcl = charIDToTypeID( "Srcl" );
                desc110.putInteger( idSrcl, 72 );
                var idSrcW = charIDToTypeID( "SrcW" );
                desc110.putInteger( idSrcW, 255 );
                var idSrcm = charIDToTypeID( "Srcm" );
                desc110.putInteger( idSrcm, 255 );
                var idDstB = charIDToTypeID( "DstB" );
                desc110.putInteger( idDstB, 0 );
                var idDstl = charIDToTypeID( "Dstl" );
                desc110.putInteger( idDstl, 0 );
                var idDstW = charIDToTypeID( "DstW" );
                desc110.putInteger( idDstW, 216 );
                var idDstt = charIDToTypeID( "Dstt" );
                desc110.putInteger( idDstt, 20 );
            var idBlnd = charIDToTypeID( "Blnd" );
            list14.putObject( idBlnd, desc110 );
        desc109.putList( idBlnd, list14 );
    var idLyr = charIDToTypeID( "Lyr " );
    desc108.putObject( idT, idLyr, desc109 );
executeAction( idsetd, desc108, DialogModes.NO );

//alert ( desc110.getInteger( idDstW ) );     //  не работает
// =======================================================


2.
Код:
// =======================================================
// Blend if - write values

set (0, 10, 25, 25, 25, 25, 25, 25);
function set(srcBlackMin, srcBlackMax, srcWhiteMin, srcWhiteMax, destBlackMin, destBlackMax, destWhiteMin, Dstt) {
    var c2t = function (s) {
        return app.charIDToTypeID(s);
    };

    var s2t = function (s) {
        return app.stringIDToTypeID(s);
    };

    var descriptor = new ActionDescriptor();
    var descriptor2 = new ActionDescriptor();
    var descriptor3 = new ActionDescriptor();
    var list = new ActionList();
    var reference = new ActionReference();
    var reference2 = new ActionReference();

    reference.putEnumerated( s2t( "layer" ), s2t( "ordinal" ), s2t( "targetEnum" ));
    descriptor.putReference( c2t( "null" ), reference );
    reference2.putEnumerated( s2t( "channel" ), s2t( "channel" ), c2t( "Grn " ));
    descriptor3.putReference( s2t( "channel" ), reference2 );
    descriptor3.putInteger( s2t( "srcBlackMin" ), srcBlackMin );
    descriptor3.putInteger( s2t( "srcBlackMax" ), srcBlackMax );
    descriptor3.putInteger( s2t( "srcWhiteMin" ), srcWhiteMin );
    descriptor3.putInteger( s2t( "srcWhiteMax" ), srcWhiteMax );
    descriptor3.putInteger( s2t( "destBlackMin" ), destBlackMin );
    descriptor3.putInteger( s2t( "destBlackMax" ), destBlackMax );
    descriptor3.putInteger( s2t( "destWhiteMin" ), destWhiteMin );
    descriptor3.putInteger( c2t( "Dstt" ), Dstt );
    list.putObject( s2t( "blendRange" ), descriptor3 );
    descriptor2.putList( s2t( "blendRange" ), list );
    descriptor.putObject( s2t( "to" ), s2t( "layer" ), descriptor2 );
    executeAction( s2t( "set" ), descriptor, DialogModes.NO );

//  alert ( s2t( "destWhiteMin" )  );  //  не работает

}
 
По хорошему, вам надо получить через executeActionGet значение дескриптора для нужного слоя, ну а затем уже оттуда вытащить дескриптор Blnd ну а уже оттуда через getInteger DstB - как то так
Попробуйте для начала просто дескриптор "Lyr " вытянуть