[AI CC2025] Как поставить стандартные стрелки из кода

  • Автор темы Автор темы keramer82
  • Дата начала Дата начала

keramer82

Участник
Топикстартер
Сообщения
68
Реакции
5
Доброго времени суток! собственно весь вопрос в теме. Не могу найти синтаксис, как поставить из кода стрелки на линии.
пока остановился на этом:
Код:
var line_G = doc.pathItems.add();
line_G.setEntirePath([[0, 0], [100 * mm, 0]]);
line_G.stroked = true;
line_G.strokeWidth = 0.2 * mm;
//line_G.strokeColor = cyanColor;
line_G.strokeOverprint = true;
line_G.arrowheads[0] = // А что здесь!? Arrow1 — не подходит, цифры тоже. Или это вообще по другому нужно делать?
Помогите, пожалуйста, с синтаксисом. Хочется просто стандартные стрелки... А не рисовать их...
 
Последнее редактирование:
Спасибо, что откликнулись. Значит буду рисовать одну, потом ее везде дублировать. Думал это как-то попроще решается. Еще раз спасибо.
 
Пишут, что к этому нет доступа из скрипта, предлагают сделать руками графический стиль со стрелками, а вот его уже можно применить из скрипта
(упс, продублировал ответ уважаемого Drawer по сути, но понятнее расписал зато ;)
 
Последнее редактирование:
как поставить из кода стрелки на линии
JavaScript:
#target Illustrator
var doc = app.activeDocument;
var arrowStat = "[None]";
var arrowEnd = "Arrow 1";
var arrowStatScale = 100.0;
var arrowEndScale = 100.0;
strokeWidth = 0.2;

var line_G = doc.pathItems.add();
line_G.setEntirePath([[0, -20], [100, -20]]);
line_G.selected = true;
selectedStrokeArrow (arrowStat, arrowEnd, arrowStatScale, arrowEndScale, strokeWidth);
line_G.strokeOverprint = true;

function selectedStrokeArrow (arrowStatName, arrowEndName, arrowStatScale, arrowEndScale, strokeWidth) {
    start = ascii2Hex (arrowStatName);
    end = ascii2Hex (arrowEndName);
//beginning Action Set==========================================
var ActionString = [ '/version 3',
'/name [ 9',
'    536372697074536574',
']',
'/isOpen 1',
'/actionCount 1',
'/action-1 {',
'    /name [ 12',
'        536372697074416374696f6e',
'    ]',
'    /keyIndex 0',
'    /colorIndex 0',
'    /isOpen 1',
'    /eventCount 1',
'    /event-1 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (ai_plugin_setStroke)',
'        /localizedName [ 10',
'            536574205374726f6b65',
'        ]',
'        /isOpen 1',
'        /isOn 1',
'        /hasDialog 0',
'        /parameterCount 12',
'        /parameter-1 {',
'            /key 2003072104',
'            /showInPalette -1',
'            /type (unit real)',
'            /value '+strokeWidth,
'            /unit 592476268',
'        }',
'        /parameter-2 {',
'            /key 1667330094',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 8',
'                4275747420436170',
'            ]',
'            /value 0',
'        }',
'        /parameter-3 {',
'            /key 1836344690',
'            /showInPalette -1',
'            /type (real)',
'            /value 10.0',
'        }',
'        /parameter-4 {',
'            /key 1785686382',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 10',
'                4d69746572204a6f696e',
'            ]',
'            /value 0',
'        }',
'        /parameter-5 {',
'            /key 1684825454',
'            /showInPalette -1',
'            /type (integer)',
'            /value 0',
'        }',
'        /parameter-6 {',
'            /key 1684104298',
'            /showInPalette -1',
'            /type (boolean)',
'            /value 0',
'        }',
'        /parameter-7 {',
'            /key 1634231345',
'            /showInPalette -1',
'            /type (ustring)',
'            /value [ '+start.length/2,
'                '+start,
'            ]',
'        }',
'        /parameter-8 {',
'            /key 1634231346',
'            /showInPalette -1',
'            /type (ustring)',
'            /value [ '+end.length/2,
'                '+end,
'            ]',
'        }',
'        /parameter-9 {',
'            /key 1634951985',
'            /showInPalette -1',
'            /type (real)',
'            /value '+ arrowStatScale,
'        }',
'        /parameter-10 {',
'            /key 1634951986',
'            /showInPalette -1',
'            /type (real)',
'            /value '+ arrowEndScale,
'        }',
'        /parameter-11 {',
'            /key 1634230636',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 15',
'                546970204174205061746820456e64',
'            ]',
'            /value 0',
'        }',
'        /parameter-12 {',
'            /key 1634494318',
'            /showInPalette -1',
'            /type (enumerated)',
'            /name [ 6',
'                43656e746572',
'            ]',
'            /value 0',
'        }',
'    }',
'}'].join('\n');
//end Action Set================================================
    var f = new File('~/ScriptSet.aia');
    f.open('w');
    f.write(ActionString);
    f.close();
    loadAction (f);
    f.remove();
    ActionString = null;
    app.doScript("ScriptAction", "ScriptSet");
    unloadAction("ScriptSet", "");
};
function  ascii2Hex (hex) {
    return hex.replace(/./g, function (a) {return a.charCodeAt(0).toString(16)});
};
 
Спасибо! Только у меня это все почему-то весит иллюстратор намертво... Вообще не понимаю почему. Должно жеж работать...
 
А Вы случайно не пытаетесь засунуть выполнение этого скрипта в какой ни будь макрос? :)
Точно! Я же хотел это прикрутить на какую-нибудь F... Вот и закидывал скрипт в экшен.
Вот так можно сделать, чтоб и из экшена работало (Только почему-то стрелка только с одной стороны, а со второй не хочет ставится):
JavaScript:
#target Illustrator
var doc = app.activeDocument;
var arrowStat = "[None]";
var arrowEnd = "Arrow 1";
var arrowStatScale = 100.0;
var arrowEndScale = 100.0;
strokeWidth = 0.2;

var line_G = doc.pathItems.add();
line_G.setEntirePath([[0, -20], [100, -20]]);
line_G.selected = true;
selectedStrokeArrow(arrowStat, arrowEnd, arrowStatScale, arrowEndScale, strokeWidth);
line_G.strokeOverprint = true;

//Операция и ее запуск
function selectedStrokeArrow(arrowStatName, arrowEndName, arrowStatScale, arrowEndScale, strokeWidth) {
    start = ascii2Hex(arrowStatName);
    end = ascii2Hex(arrowEndName);
    var ActionString = ['/version 3',
        '/name [ 9',
        '    536372697074536574',
        ']',
        '/isOpen 1',
        '/actionCount 1',
        '/action-1 {',
        '    /name [ 12',
        '        536372697074416374696f6e',
        '    ]',
        '    /keyIndex 0',
        '    /colorIndex 0',
        '    /isOpen 1',
        '    /eventCount 1',
        '    /event-1 {',
        '        /useRulersIn1stQuadrant 0',
        '        /internalName (ai_plugin_setStroke)',
        '        /localizedName [ 10',
        '            536574205374726f6b65',
        '        ]',
        '        /isOpen 1',
        '        /isOn 1',
        '        /hasDialog 0',
        '        /parameterCount 12',
        '        /parameter-1 {',
        '            /key 2003072104',
        '            /showInPalette -1',
        '            /type (unit real)',
        '            /value ' + strokeWidth,
        '            /unit 592476268',
        '        }',
        '        /parameter-2 {',
        '            /key 1667330094',
        '            /showInPalette -1',
        '            /type (enumerated)',
        '            /name [ 8',
        '                4275747420436170',
        '            ]',
        '            /value 0',
        '        }',
        '        /parameter-3 {',
        '            /key 1836344690',
        '            /showInPalette -1',
        '            /type (real)',
        '            /value 10.0',
        '        }',
        '        /parameter-4 {',
        '            /key 1785686382',
        '            /showInPalette -1',
        '            /type (enumerated)',
        '            /name [ 10',
        '                4d69746572204a6f696e',
        '            ]',
        '            /value 0',
        '        }',
        '        /parameter-5 {',
        '            /key 1684825454',
        '            /showInPalette -1',
        '            /type (integer)',
        '            /value 0',
        '        }',
        '        /parameter-6 {',
        '            /key 1684104298',
        '            /showInPalette -1',
        '            /type (boolean)',
        '            /value 0',
        '        }',
        '        /parameter-7 {',
        '            /key 1634231345',
        '            /showInPalette -1',
        '            /type (ustring)',
        '            /value [ ' + start.length / 2,
        '                ' + start,
        '            ]',
        '        }',
        '        /parameter-8 {',
        '            /key 1634231346',
        '            /showInPalette -1',
        '            /type (ustring)',
        '            /value [ ' + end.length / 2,
        '                ' + end,
        '            ]',
        '        }',
        '        /parameter-9 {',
        '            /key 1634951985',
        '            /showInPalette -1',
        '            /type (real)',
        '            /value ' + arrowStatScale,
        '        }',
        '        /parameter-10 {',
        '            /key 1634951986',
        '            /showInPalette -1',
        '            /type (real)',
        '            /value ' + arrowEndScale,
        '        }',
        '        /parameter-11 {',
        '            /key 1634230636',
        '            /showInPalette -1',
        '            /type (enumerated)',
        '            /name [ 15',
        '                546970204174205061746820456e64',
        '            ]',
        '            /value 0',
        '        }',
        '        /parameter-12 {',
        '            /key 1634494318',
        '            /showInPalette -1',
        '            /type (enumerated)',
        '            /name [ 6',
        '                43656e746572',
        '            ]',
        '            /value 0',
        '        }',
        '    }',
        '}'].join('\n');
    redraw();
    var f = new File('~/ScriptAction.aia');
    f.open('w');
    f.write(ActionString);
    f.close();
    loadAction(f);
    f.remove();
    var myScriptString = ['redraw();',
        'app.doScript("ScriptAction", "ScriptSet");',
        'unloadAction("ScriptSet", "");',
    ].join('\n');
    var bt = new BridgeTalk;
    bt.target = "illustrator";
    bt.body = myScriptString;
    bt.send();
    ActionString = null;
};

function ascii2Hex(hex) {
    return hex.replace(/./g, function (a) { return a.charCodeAt(0).toString(16) });
};
 
Только почему-то стрелка только с одной стороны, а со второй не хочет ставится
Код:
var arrowStat = "[None]";
var arrowEnd = "Arrow 1";
Я как бы хотел показать, что стрелки вы можете ставить с любой стороны любые и специально привел в примере как сделать, чтобы с одной стороны не ставились, с остальным и так понятно, пишите имя стрелки из панели... думал поймете :)

Не по теме:

arrowStat очепятку в переменной сделал, и копипастой размножил :) arrowStart имелось в виду... 'fp'

 
Последнее редактирование:
Лимит исчерпался, хотел поправить, стрелку со второй стороны можно добавить, если None заменить на Arrow 1 или др.
 
Код:
var arrowStat = "[None]";
var arrowEnd = "Arrow 1";
Я как бы хотел показать, что стрелки вы можете ставить с любой стороны любые и специально привел в примере как сделать, чтобы с одной стороны не ставились, с остальным и так понятно, пишите имя стрелки из панели... думал поймете :)
Так и хотел добавить, лимит времени исчерпался на редактирование сообщения. Спасибо огромное!!! А еще можно вопрос, как Вы делаете вот этот текст с экшена в кавычках, вручную? А то мне после второго редактирования пришлось на шарпе сделать программку, чтоб добавляла эти кавычки и запятые, но по-любому, я что-то не так делаю.
 
Последнее редактирование:
Код:
<NotepadPlus>
    <InternalCommands>
        <Shortcut id="47006" Ctrl="no" Alt="no" Shift="no" Key="0" />
    </InternalCommands>
    <Macros>
        <Macro name="CopyActionString JSX" Ctrl="yes" Alt="no" Shift="yes" Key="65">
            <Action type="0" message="2316" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1601" wParam="0" lParam="0" sParam="\`([^\r\n]*)([\r\n]+.*[\r\n]+)([^\r\n]+)([\r\n]*)\&apos;" />
            <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
            <Action type="3" message="1602" wParam="0" lParam="0" sParam="\1\2\3" />
            <Action type="3" message="1702" wParam="0" lParam="1794" sParam="" />
            <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
            <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1601" wParam="0" lParam="0" sParam="(^.*$)" />
            <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
            <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;\1&apos;," />
            <Action type="3" message="1702" wParam="0" lParam="770" sParam="" />
            <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
            <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1601" wParam="0" lParam="0" sParam="\`([^\r\n]*)([\r\n]+.*[\r\n]+)([^\r\n]+)(,[\r\n]*)\&apos;" />
            <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
            <Action type="3" message="1602" wParam="0" lParam="0" sParam="var ActionString = [ \1\2\3].join\(&apos;\\n&apos;\);" />
            <Action type="3" message="1702" wParam="0" lParam="1794" sParam="" />
            <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
            <Action type="0" message="2013" wParam="0" lParam="0" sParam="" />
            <Action type="0" message="2177" wParam="0" lParam="0" sParam="" />
        </Macro>
    </Macros>
Форматирует и вырезает в буфер обмена.
 
  • Спасибо
Реакции: keramer82
Код:
<NotepadPlus>
    <InternalCommands>
        <Shortcut id="47006" Ctrl="no" Alt="no" Shift="no" Key="0" />
    </InternalCommands>
    <Macros>
        <Macro name="CopyActionString JSX" Ctrl="yes" Alt="no" Shift="yes" Key="65">
            <Action type="0" message="2316" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1601" wParam="0" lParam="0" sParam="\`([^\r\n]*)([\r\n]+.*[\r\n]+)([^\r\n]+)([\r\n]*)\&apos;" />
            <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
            <Action type="3" message="1602" wParam="0" lParam="0" sParam="\1\2\3" />
            <Action type="3" message="1702" wParam="0" lParam="1794" sParam="" />
            <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
            <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1601" wParam="0" lParam="0" sParam="(^.*$)" />
            <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
            <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;\1&apos;," />
            <Action type="3" message="1702" wParam="0" lParam="770" sParam="" />
            <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
            <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1601" wParam="0" lParam="0" sParam="\`([^\r\n]*)([\r\n]+.*[\r\n]+)([^\r\n]+)(,[\r\n]*)\&apos;" />
            <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
            <Action type="3" message="1602" wParam="0" lParam="0" sParam="var ActionString = [ \1\2\3].join\(&apos;\\n&apos;\);" />
            <Action type="3" message="1702" wParam="0" lParam="1794" sParam="" />
            <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
            <Action type="0" message="2013" wParam="0" lParam="0" sParam="" />
            <Action type="0" message="2177" wParam="0" lParam="0" sParam="" />
        </Macro>
    </Macros>
Форматирует и вырезает в буфер обмена.
Спасибо большое! Так еще проще делать теперь. Хоть перестану боятся использовать экшены в скриптах, а то правка этого вручную оставила неизгладимое впечатление. Спасибо еще раз!!