Запуск "Free Transform" из jsx-скрипта в Photoshop - PullRequest
0 голосов
/ 11 марта 2019

Привет, как я могу запустить "Free Transform" в Photoshop из jsx-скрипта.Я использовал полученный код от ScriptListener, но этот код выдает ошибку:

Ошибка 8800: Произошла общая ошибка Photoshop.Эта функция может быть недоступна в этой версии Photoshop.- Команда "" в данный момент недоступна.Строка: 73 -> executeAction (idinvokeCommand, desc3666, DialogModes.NO);

Этот код:

// =======================================================
var idinvokeCommand = stringIDToTypeID( "invokeCommand" );
    var desc3666 = new ActionDescriptor();
    var idcommandID = stringIDToTypeID( "commandID" );
    desc3666.putInteger( idcommandID, 2207 );
    var idkcanDispatchWhileModal = stringIDToTypeID( "kcanDispatchWhileModal" );
    desc3666.putBoolean( idkcanDispatchWhileModal, true );
executeAction( idinvokeCommand, desc3666, DialogModes.NO );

// =======================================================
var idtoolModalStateChanged = stringIDToTypeID( "toolModalStateChanged" );
    var desc3667 = new ActionDescriptor();
    var idLvl = charIDToTypeID( "Lvl " );
    desc3667.putInteger( idLvl, 1 );
    var idStte = charIDToTypeID( "Stte" );
    var idStte = charIDToTypeID( "Stte" );
    var identer = stringIDToTypeID( "enter" );
    desc3667.putEnumerated( idStte, idStte, identer );
    var idTool = charIDToTypeID( "Tool" );
        var desc3668 = new ActionDescriptor();
        var idIdnt = charIDToTypeID( "Idnt" );
        desc3668.putString( idIdnt, """laso""" );
        var idTtl = charIDToTypeID( "Ttl " );
        desc3668.putString( idTtl, """Lasso Tool""" );
    var idTool = charIDToTypeID( "Tool" );
    desc3667.putObject( idTool, idTool, desc3668 );
    var idKnd = charIDToTypeID( "Knd " );
    var idKnd = charIDToTypeID( "Knd " );
    var idTool = charIDToTypeID( "Tool" );
    desc3667.putEnumerated( idKnd, idKnd, idTool );
    var idkcanDispatchWhileModal = stringIDToTypeID( "kcanDispatchWhileModal" );
    desc3667.putBoolean( idkcanDispatchWhileModal, true );
executeAction( idtoolModalStateChanged, desc3667, DialogModes.NO );

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Сергей Крицкий, спасибо за ответ.

Этот код работает:

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

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

function InteractiveTransform() {


    var desc1 = new ActionDescriptor();

    var ref1 = new ActionReference();

    ref1.putEnumerated(cTID('Mn  '), cTID('MnIt'), cTID('FrTr'));

    desc1.putReference(cTID('null'), ref1);

    executeAction(cTID('slct'), desc1, DialogModes.NO);

};
0 голосов
/ 12 марта 2019

Приведенный выше код не запускает действие Transform: обычно вы можете увидеть в файле журнала ScriptListener некоторые подсказки об используемом действии - в случае преобразования это имя дескриптора: Trnf - здесь мы видим вызов модальногосостояние и использование лассо?или что-то типа того.И на самом деле весь код с DispatchWhileModal и toolModalState не работает в PS и может быть проигнорирован (вероятно, для отладки).

Я думаю, что самый простой способ получить кусок кода из Scriptlistener, если вы не очень знакомы с ним, это удалить файл журнала, выполнить необходимые действия с конкретными значениями, а затем найти эти значенияво вновь созданном файле журнала.

...