[AI CC-CC2021] Разблокировка объектов внутри маски

Виталий Поляков

Участник
Топикстартер
Сообщения
6
Реакции
1
Здравствуйте, коллеги.

Попался в работу вот такой вектор:

Этот файл должен был быть загружен на стоки. Но стоки его отвергли, так как в нем есть заблокированные объекты.

При открытии файла видно - что unlock all не активна.

А вот если сделать следующую последовательность действий:
- выбрать самый внутренний контур (как показано на скриншоте 1 - 1.png),
- открыть панель прозрачность
- щелкнуть правый черный квадратик на панели с крылышком

То в панели слоев можно увидеть какой слой заблокирован (скриншот 2 - 2.png).
И кнопка Unlock All становится активной.

Как до этого контура через JavaScript добраться, чтобы разблокировать?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Для начала
Код:
var doc=activeDocument;
for (var i=0;i<doc.pathItems.length;i++) doc.pathItems[i].locked=false;
 
  • Спасибо
Реакции: NatalieRedFox_333

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Или так
 
  • Спасибо
Реакции: NatalieRedFox_333

creold

Сергей Осокин
Сообщения
27
Реакции
36
Для начала
Код:
var doc=activeDocument;
for (var i=0;i<doc.pathItems.length;i++) doc.pathItems[i].locked=false;
Нет. У Виталия речь про объекты, лежащие внутри так называемой <Opacity Mask>. В скриптинге нет никаких методов, атрибутов для работы с масками прозрачности и чекбоксами панели Transparency. Коллекции activeDocument.pathItems и pageItems не хранят объекты из "контейнера" масок прозрачности.

В коде файла .ai можно увидеть, что если на объект наложена маска, то она и ее содержимое приписывается к родительскому объекту:
JavaScript:
%_/Mask :
%_0 /Bool (Inverted) ,
%_1 /Bool (Clipping) ,
...и так далее

И там у каждого заблокированного объекта внутри маски есть флаги %_0 A и %_1 A, которые отвечают за свойство locked.

Например кусочек файла:
JavaScript:
%_/Mask :
%_0 /Bool (Inverted) ,
%_1 /Bool (Clipping) ,
%_X=
%_1 Ae
%_u
%_1 A // вот флаг locked у объекта маски
%_747 -375 m
%_597 -375 L
...и так далее код описывающий сам объект маски

Если неким инструментом читать .ai файл и выпиливать строки с флагами. То можно избавиться от лоченых объектов в масках прозрачности.

С форматом EPS сложнее, так как там при сохранении код, описывающий объекты документа схлопывается. Стоковые инспекторы конечно умеют разворачивать этот код и находить, что там не соответствует требованиям стоковой площадки.
 
Последнее редактирование:

Chiga

15 лет на форуме
Сообщения
777
Реакции
505
Если неким инструментом читать .ai файл и выпиливать строки с флагами.
Сохранить в PDF без сохранения совместимости редактирования, снова открыть и сохранить в eps. Правда масок напихает, но это уже можно решить скриптом.