[AI CC-CC2021] Получить размер объекта обрезанного Clipping Mask

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Пока не вижу. Ну и что, что компаунд в компаунде?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
У компаунда, насколько я помню, нет детей компаундов, а по факту они есть. Уже это не дает возможности перебирать сверху вниз
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
хм. сейчас посмотрим
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
я сделал компаунд из двух, он показывает pathItems от всех. то есть как будто это просто компаунд из 4 pathItems, а не из двух compoundPathItems. если сделать release, то все 4 отдельно сразу

у тебя по-другому как-то? я на cc2020
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Уже не помню, на CS6 пробовал, сейчас под рукой нет.
По моему, у меня у компаунда были дети только первого поколения
То есть, по твоему, если clippingов нет среди pathItems, надо перебирать все компаунды и смотреть на clipping детей?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Ну хорошо, допустим ты перебираешь все компаунды группы
Так там все равно по моему компаунды всех поколений вперемешку свалены
В общем, я когда начал делать рекурсивный обход столкнулся с проблемой, что где не надо в списке были все в куче, при том что к некоторым pathItems сверху доступа не было вообще
И все равно в итоге даже обойдя всевсевсе дочерние объекты и найдя и распозная всевсевсе маски на них (включая вложенные), главная задача остается невыполнимой - посчитать корректное пересечение средствами скриптинга невозможно
 

hhandy

Участник
Сообщения
38
Реакции
0
Доброго дня.
У меня очень похожая ситуация. Есть выделенная группа, ее нужно поставить на определенное место по координатам. В группе свалка из групп, Clipping Path"ов и прочих прелестей. Совершенно точно есть 1 отцентрированный объект (path) с обводкой Spot Color с именем Granica (название спота). Его координат будет достаточно. Как до него докопаться? Попытался через рекурсию, но видимо руки кривые (да и не дружу я с ней еще с детсва), да и матчасть, признаться, не очень...
На странице еще полно групп с объектом с обводкой Granica. Перебор от Document не хотелось бы, тогда уж лучше артборд кропнуть и отменить, но предпочтительно этого избежать.
уже голова квадратная, не пинайте сильно, тут пока попытка добраться до pathItem'ов, но ни до 1 так и не добрался (втрой if - отсечь прочие ненужные элементы)

JavaScript:
var sel = activeDocument.selection;

function findGranica ( gr ) {
      for (var i = 0; i < gr.length; i++) {
              if (gr[i] == '[PathItem ]') {
                  alert ('Color  ' + gr[i].strokeColor);
              } else {
                   if (gr[i] == '[GroupItem ]') {
                  findGranica (gr[i].groupItems);
                  }
              }
         }

return;
};

findGranica (sel);
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Перебор от Document не хотелось бы
А что вас так пугает? Это и есть самое вменяемое решение
JavaScript:
var doc=app.activeDocument;
for (var i=0;i<doc.pathItems.length;i++)
     if (doc.pathItems[i].selected)    // объект выбран
         {
           alert(doc.pathItems[i].name);
         }
 
  • Спасибо
Реакции: hhandy

hhandy

Участник
Сообщения
38
Реакции
0
А что вас так пугает?
Как это отразится на скорости работы скрипта.... но тут я чайник, поверю вам на слово ) - в группе может быть несколько сотен объектов и групп около 500 штук.
И если не сложно - что я в своем коде не так написал, что он не нашел ни одного PathItem?
Общая задача не срочная, но этот именно момент нужен прям "вчера". )
Спасибо за ответ!
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Как это отразится на скорости работы скрипта.... но тут я чайник, поверю вам на слово ) - в группе может быть несколько сотен объектов и групп около 500 штук.
И если не сложно - что я в своем коде не так написал, что он не нашел ни одного PathItem?
Общая задача не срочная, но этот именно момент нужен прям "вчера". )
Спасибо за ответ!
Проверка странная на тип

if(obj.typename==‘PathItem’) по идее.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Проверка странная на тип
Объект никак не может равняться строке, хотя бы уж toString добавили, но по хорошему, конечно, typename проверять надо
И еще
по идее будет перебирать все дочерние группы от группы а вам оно надо?
Вердикт: код безумный и индусский
 

hhandy

Участник
Сообщения
38
Реакции
0
о) я постараюсь исправляться ))
Подскажите - нормальный отладчик есть? Немножко напряжно писать в Сублиме и для просмотра значений и свойств алертить это в Иллюстраторе.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
А родной ESTK чем плох?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Под сабжевую версию, вероятно да, ESTK вроде перестали поддерживать.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Вопрос оси скорее, до каталины работает. На винде наверное любой
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Возможно, я на совсем новых не пробовал
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Для CS6 однозначно ESTK
 
  • Спасибо
Реакции: hhandy