/**
* jsx for Ai MaratShagiev m_js@bk.ru 30.06.2016
*/
//@target illustrator
(function addDocInfo () {
var doc = activeDocument,
sws = doc.swatches;
var lay = _getLay (doc);
_delAllUnused ();
var txtDocName = _addFrame (lay, [0, 0], doc.name);
var txtSwatches = _addFrame (
lay,
[0, txtDocName.position[1] - txtDocName.height],
_getSwsNames (sws)
);
var txtDate = _addFrame (
lay,
[0, txtSwatches.position[1] - txtSwatches.height],
_formatDate (new Date ())
)
/**
* LIB
* */
function _formatDate (date) {
var dd = date.getDate ();
if (dd < 10) dd = '0' + dd;
var mm = date.getMonth () + 1;
if (mm < 10) mm = '0' + mm;
var yy = date.getFullYear () % 100;
if (yy < 10) yy = '0' + yy;
return dd + '.' + mm + '.' + yy;
}
function _getSwsNames (sws) {
var swStr = '';
for (var i = 0; i < sws.length; i++) {
var sw = sws[i];
swStr += sw.name + '; ';
}
return swStr;
}
function _delAllUnused () {
var str = '/version 3' +
'/name [ 12' +
' 64656c416c6c556e75736564' +
']' +
'/isOpen 0' +
'/actionCount 1' +
'/action-1 {' +
' /name [ 12' +
' 64656c416c6c556e75736564' +
' ]' +
' /keyIndex 0' +
' /colorIndex 2' +
' /isOpen 0' +
' /eventCount 8' +
' /event-1 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_swatches)' +
' /localizedName [ 8' +
' 5377617463686573' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 17' +
' 53656c65637420416c6c20556e75736564' +
' ]' +
' /value 11' +
' }' +
' }' +
' /event-2 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_swatches)' +
' /localizedName [ 8' +
' 5377617463686573' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 1' +
' /showDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 13' +
' 44656c65746520537761746368' +
' ]' +
' /value 3' +
' }' +
' }' +
' /event-3 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_brush)' +
' /localizedName [ 5' +
' 4272757368' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 17' +
' 53656c65637420416c6c20556e75736564' +
' ]' +
' /value 8' +
' }' +
' }' +
' /event-4 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_brush)' +
' /localizedName [ 5' +
' 4272757368' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 1' +
' /showDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 12' +
' 44656c657465204272757368' +
' ]' +
' /value 3' +
' }' +
' }' +
' /event-5 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_styles)' +
' /localizedName [ 14' +
' 47726170686963205374796c6573' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 17' +
' 53656c65637420416c6c20556e75736564' +
' ]' +
' /value 14' +
' }' +
' }' +
' /event-6 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_styles)' +
' /localizedName [ 14' +
' 47726170686963205374796c6573' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 1' +
' /showDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 20' +
' 44656c6574652047726170686963205374796c65' +
' ]' +
' /value 3' +
' }' +
' }' +
' /event-7 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_symbol_palette)' +
' /localizedName [ 7' +
' 53796d626f6c73' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 17' +
' 53656c65637420416c6c20556e75736564' +
' ]' +
' /value 12' +
' }' +
' }' +
' /event-8 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_symbol_palette)' +
' /localizedName [ 7' +
' 53796d626f6c73' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 1' +
' /showDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 13' +
' 44656c6574652053796d626f6c' +
' ]' +
' /value 5' +
' }' +
' }' +
'}';
runAction ('delAllUnused', 'delAllUnused', str);
function runAction (actName, setName, actStr) {
_makeAct (actStr);
app.doScript (actName, setName, false); // action name, set name
app.unloadAction (setName, ""); // set name
function _makeAct (actStr) {
var f = new File ('~/ScriptAction.aia');
f.open ('w');
f.write (actStr);
f.close ();
app.loadAction (f);
f.remove ();
}
}
}
function _addFrame (lay, pos, cont) {
var doc = lay.parent;
var txtFrame = lay.textFrames.add ();
txtFrame.position = pos;
txtFrame.contents = cont;
return txtFrame;
}
function _getLay (doc) {
var lay;
try {
lay = doc.layers.getByName ('_info_layer_');
} catch (e) {
lay = doc.layers.add ();
lay.name = '_info_layer_';
}
if (lay.pageItems) {
lay.pageItems.removeAll ();
}
return lay;
}
} ());
/**
* jsx for Ai MaratShagiev m_js@bk.ru 01.07.2016
*/
//@target illustrator
(function addDocInfo () {
var doc = activeDocument,
sws = doc.swatches;
var lay = _getLay (doc);
_delAllUnused ();
var txtDocName = _addFrame (
lay,
[0, 0],
doc.name + '\n' + _getSwsNames (sws) + '\n' + _formatDate (new Date ())
);
/**
* LIB
* */
function _formatDate (date) {
var dd = date.getDate ();
if (dd < 10) dd = '0' + dd;
var mm = date.getMonth () + 1;
if (mm < 10) mm = '0' + mm;
var yy = date.getFullYear () % 100;
if (yy < 10) yy = '0' + yy;
return dd + '.' + mm + '.' + yy;
}
function _getSwsNames (sws) {
var swStr = '';
for (var i = 0; i < sws.length; i++) {
var sw = sws[i];
swStr += sw.name + '; ';
}
return swStr;
}
function _addFrame (lay, pos, cont) {
var doc = lay.parent;
var txtFrame = lay.textFrames.add ();
txtFrame.position = pos;
txtFrame.contents = cont;
return txtFrame;
}
function _getLay (doc) {
var lay;
try {
lay = doc.layers.getByName ('_info_layer_');
} catch (e) {
lay = doc.layers.add ();
lay.name = '_info_layer_';
}
if (lay.pageItems) lay.pageItems.removeAll ();
return lay;
}
function _delAllUnused () {
var actStr = '/version 3' +
'/name [ 12' +
' 64656c416c6c556e75736564' +
']' +
'/isOpen 0' +
'/actionCount 1' +
'/action-1 {' +
' /name [ 12' +
' 64656c416c6c556e75736564' +
' ]' +
' /keyIndex 0' +
' /colorIndex 2' +
' /isOpen 0' +
' /eventCount 8' +
' /event-1 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_swatches)' +
' /localizedName [ 8' +
' 5377617463686573' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 17' +
' 53656c65637420416c6c20556e75736564' +
' ]' +
' /value 11' +
' }' +
' }' +
' /event-2 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_swatches)' +
' /localizedName [ 8' +
' 5377617463686573' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 1' +
' /showDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 13' +
' 44656c65746520537761746368' +
' ]' +
' /value 3' +
' }' +
' }' +
' /event-3 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_brush)' +
' /localizedName [ 5' +
' 4272757368' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 17' +
' 53656c65637420416c6c20556e75736564' +
' ]' +
' /value 8' +
' }' +
' }' +
' /event-4 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_brush)' +
' /localizedName [ 5' +
' 4272757368' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 1' +
' /showDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 12' +
' 44656c657465204272757368' +
' ]' +
' /value 3' +
' }' +
' }' +
' /event-5 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_styles)' +
' /localizedName [ 14' +
' 47726170686963205374796c6573' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 17' +
' 53656c65637420416c6c20556e75736564' +
' ]' +
' /value 14' +
' }' +
' }' +
' /event-6 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_styles)' +
' /localizedName [ 14' +
' 47726170686963205374796c6573' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 1' +
' /showDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 20' +
' 44656c6574652047726170686963205374796c65' +
' ]' +
' /value 3' +
' }' +
' }' +
' /event-7 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_symbol_palette)' +
' /localizedName [ 7' +
' 53796d626f6c73' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 17' +
' 53656c65637420416c6c20556e75736564' +
' ]' +
' /value 12' +
' }' +
' }' +
' /event-8 {' +
' /useRulersIn1stQuadrant 0' +
' /internalName (ai_plugin_symbol_palette)' +
' /localizedName [ 7' +
' 53796d626f6c73' +
' ]' +
' /isOpen 0' +
' /isOn 1' +
' /hasDialog 1' +
' /showDialog 0' +
' /parameterCount 1' +
' /parameter-1 {' +
' /key 1835363957' +
' /showInPalette -1' +
' /type (enumerated)' +
' /name [ 13' +
' 44656c6574652053796d626f6c' +
' ]' +
' /value 5' +
' }' +
' }' +
'}';
var f = new File ('~/ScriptAction.aia');
f.open ('w');
f.write (actStr);
f.close ();
app.loadAction (f);
f.remove ();
app.doScript ('delAllUnused', 'delAllUnused', false); // action name, set name
app.unloadAction ('delAllUnused', ""); // set name
}
} ());
Ясно, а какой более традиционный способ?удаление неиспользуемых свотчей, да еще и таким нетрадиционноориентированным способом
Да нет, тут, конечно, сложно что-либо прямо сделать с подобным нетрадиционноориентированным яваскриптом. Но я б, к примеру, не стал бы формировать AIA и загружать на лету прямо в скрипте - для иллюстрации хорошо, а в практической работе иногда вызывает много неприятных моментов.Ясно, а какой более традиционный способ?
Вам же сразу сказали - сперва внятно сформулируйте свои хотелки, и напишите. А то местные ванги уже надорвались все.Не много в сторону - по скрипту - попробовал его...
1. Но он не ставит у меня почему-то в цвета весь CMYK, хотя пантоны пишет...
2. Логика вставки этого текстового блока какова? Если куда-то ставлю текстовый курсор, то скрипт его игнорирует...
Как это поправить?
Но он не ставит у меня почему-то в цвета весь CMYK, хотя пантоны пишет.
Насколько я понимаю, скрипт просто перечисляет все сватчи. Загрузите перед выполнением скрипта используемые сватчи из активного документа - он будет перечислять и их. Можно сделать для этого экшн и вставить его вызов в скрипт, как и удаление неиспользованных. А можно просто добавить загрузку перед удалением.1. Перечисление ВСЕХ используемых цветов: перечисления Cyan, Magenta, Yellow, Black - нет, есть только Registration и пантон (частный случай)
А вот тут мы, похоже, в большой беде. Иллюстратор - не индизайн, доступа к позиции текстового курсора из скриптинга у него, похоже что нету. Можно было бы как нибудь извернуться, скопировав нужный текст в клипбоард и вызвав app.paste(), но прямого доступа к клипбоарду тоже нет. Можно разве, что, вставлять текст в какое то фиксированное место выделенного целиком текстового блокаПо поводу - курсора. Я вот и спрашиваю - КАК поправить скрипт, что бы он вписывал всю инфу в текущее (нужное) место