[AI CS4-CS6] Определить наличие Объектов с OpacityMask

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

hhandy

Участник
Топикстартер
Сообщения
38
Реакции
0
Доброго дня.
Задача - узнать, есть ли в документе элементы с маской прозрачности - да или нет? В палитре Document Info -> Objects отображается, в том числе, и количество таких элементов. Можно ли как-то выудить эту информацию? Либо может есть еще какой-то способ? В курсе, что до самой этой маски не докопаться.
Заранее спасибо!
 
Доброго дня.
Задача - узнать, есть ли в документе элементы с маской прозрачности - да или нет? В палитре Document Info -> Objects отображается, в том числе, и количество таких элементов. Можно ли как-то выудить эту информацию? Либо может есть еще какой-то способ? В курсе, что до самой этой маски не докопаться.
Заранее спасибо!
Вы ж сами на свой вопрос ответили: раз доступа нет, значит никак.
Лично я, когда то очень давно, когда компьютеры были большими а мониторы ящикообразными, похожую проблему решал чудовищно заднепроходно через парсинг неупакованного AI
 
Не совсем понимаю зачем Вам это надо :) Тем не менее...
JavaScript:
#target Illustrator

if (app.documents.length !== 0) {
    var res = checkOpacityMask();
    alert (res);
}

function checkOpacityMask() {
$.errorMessage = function (err) {alert('Error ' + err.number +': ' + err.message + '\n Line:' + err.line + '\n-> ' + err.source.split("\n")[err.line - 1]);};
var doc = app.activeDocument;
var tempLayer = doc.layers.add();
// Load action ==========================================
var ActionString = [ '/version 3',
'/name [ 9',
'    536372697074536574',
']',
'/isOpen 1',
'/actionCount 1',
'/action-1 {',
'    /name [ 2',
'        524d',
'    ]',
'    /keyIndex 0',
'    /colorIndex 0',
'    /isOpen 0',
'    /eventCount 1',
'    /event-1 {',
'        /useRulersIn1stQuadrant 0',
'        /internalName (ai_plugin_transparency)',
'        /localizedName [ 12',
'            5472616e73706172656e6379',
'        ]',
'        /isOpen 0',
'        /isOn 1',
'        /hasDialog 0',
'        /parameterCount 1',
'        /parameter-1 {',
'            /key 1919710053',
'            /showInPalette -1',
'            /type (ustring)',
'            /value [ 0',
'',
'            ]',
'        }',
'    }',
'}'].join('\n');
var f = new File('~/ScriptSet.aia');
f.open('w');
f.write(ActionString);
f.close();
loadAction (f);
f.remove();
ActionString = null;
//================================Load action
try {
    var pI = [];
    for (var i = 0; i < doc.pageItems.length; i++) {
        pI[i] = doc.pageItems[i];
    }
    for (var i = 0; i < pI.length; i++) {
        pI[i].duplicate(tempLayer);
    }
    tempLayer.hasSelectedArtwork = true;
    redraw ();
    var refCount = doc.selection.length;
    app.doScript("RM", "ScriptSet");
    unloadAction("ScriptSet", "");
    redraw ();
    var checkCount = doc.selection.length;
    tempLayer.remove();
    redraw ();
    if (checkCount !== refCount) {
        return true;
    } else {
        return false;
    }
} catch (e) {
unloadAction("ScriptSet", "");
tempLayer.remove();
$.errorMessage(e);
}
}
Если маска есть, но в её слое нет объектов (пустая) не определит, а в остальном вроде работает изврат :)
 
Плагин Esko DeskPack, а точнее его модуль Select by Attributes находит все обьекты с маской прозрачности в документе.
Вот описание
2022-12-15_9-32-11.jpg
 
получить доступ из собственного скрипта

Видимо, меня сбили вот эти ответы.
парсинг неупакованного AI
модуль Select by Attributes
 
Видимо, меня сбили вот эти ответы.
А представляешь, какой простор для фантазии: программно вызвать это окошко, нажав на кнопку, распознать с него текст и передать его в скрипт. Каким-нибудь AHK, к примеру '))'
 
Судя по бинарной формулировке вопроса
есть ли в документе элементы с маской прозрачности - да или нет?
Скорее всего, какой нибудь префлайт - принять макет или послать на... доработку.
 
Мне кажется, если ТС расскажет, зачем ему это нужно, то скорее получит помощь.
Да зачем - дело десятое, долгая история...
Просто одна из задач - узнать есть ли в документе элементы с маской прозрачности или нет, причем нужно докопаться до этого именно в скрипте, желательно без перебора дохренелиона элементов. Я грешным делом подумал, что если в палитре такая инфа есть, то можно как-то ее получить.
 
Я тоже не понял :) Хотелось бы узнать, что за палитра...
ТС писал еще в начале темы:
Задача - узнать, есть ли в документе элементы с маской прозрачности - да или нет? В палитре Document Info -> Objects отображается, в том числе, и количество таких элементов.
А вы, коллеги. просто невнимательны :)
 
Мы говорим о каких-то разных вещах?
Естественно, в данном случае показывается количество масок в выделенных объектах, а не в документе. То что все происходит быстрее и "за кадром" не значит что обошлось без.
перебора дохренелиона элементов
Доступа к этой информации из скрипта нет от слова совсем, так что даже облизываться не стоит :) Можно написать плагин который будет определять наличие OM и обеспечит доступ скрипту, но это отдельная история. В приведенном мною выше способе можно тоже не переберирать если положиться на undo, но я посчитал данный способ хоть и более медленным, но менее деструктивным если "что-то пойдет не так "
 
  • Спасибо
Реакции: hhandy
Доступа к этой информации из скрипта нет от слова совсем, так что даже облизываться не стоит :)
Собственно, в этом роде ответ и хотелось услышать. Гранд мерси!
я как то пропустил тот момент, когда панель Document info внезапно превратилась в поллитру '))'
мальчик, девочка - какая, в попу, разница © ... ))
Всем огромное спасибо!