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

  • Автор темы Автор темы angelp
  • Дата начала Дата начала
Пока не вижу. Ну и что, что компаунд в компаунде?
 
У компаунда, насколько я помню, нет детей компаундов, а по факту они есть. Уже это не дает возможности перебирать сверху вниз
 
я сделал компаунд из двух, он показывает pathItems от всех. то есть как будто это просто компаунд из 4 pathItems, а не из двух compoundPathItems. если сделать release, то все 4 отдельно сразу

у тебя по-другому как-то? я на cc2020
 
Последнее редактирование:
Уже не помню, на CS6 пробовал, сейчас под рукой нет.
По моему, у меня у компаунда были дети только первого поколения
То есть, по твоему, если clippingов нет среди pathItems, надо перебирать все компаунды и смотреть на clipping детей?
 
Ну хорошо, допустим ты перебираешь все компаунды группы
Так там все равно по моему компаунды всех поколений вперемешку свалены
В общем, я когда начал делать рекурсивный обход столкнулся с проблемой, что где не надо в списке были все в куче, при том что к некоторым pathItems сверху доступа не было вообще
И все равно в итоге даже обойдя всевсевсе дочерние объекты и найдя и распозная всевсевсе маски на них (включая вложенные), главная задача остается невыполнимой - посчитать корректное пересечение средствами скриптинга невозможно
 
Доброго дня.
У меня очень похожая ситуация. Есть выделенная группа, ее нужно поставить на определенное место по координатам. В группе свалка из групп, 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);
 
Перебор от 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
А что вас так пугает?
Как это отразится на скорости работы скрипта.... но тут я чайник, поверю вам на слово ) - в группе может быть несколько сотен объектов и групп около 500 штук.
И если не сложно - что я в своем коде не так написал, что он не нашел ни одного PathItem?
Общая задача не срочная, но этот именно момент нужен прям "вчера". )
Спасибо за ответ!
 
Как это отразится на скорости работы скрипта.... но тут я чайник, поверю вам на слово ) - в группе может быть несколько сотен объектов и групп около 500 штук.
И если не сложно - что я в своем коде не так написал, что он не нашел ни одного PathItem?
Общая задача не срочная, но этот именно момент нужен прям "вчера". )
Спасибо за ответ!
Проверка странная на тип

if(obj.typename==‘PathItem’) по идее.
 
Проверка странная на тип
Объект никак не может равняться строке, хотя бы уж toString добавили, но по хорошему, конечно, typename проверять надо
И еще
по идее будет перебирать все дочерние группы от группы а вам оно надо?
Вердикт: код безумный и индусский
 
А родной ESTK чем плох?
 
Под сабжевую версию, вероятно да, ESTK вроде перестали поддерживать.
 
Вопрос оси скорее, до каталины работает. На винде наверное любой
 
Возможно, я на совсем новых не пробовал
 
Для CS6 однозначно ESTK
 
  • Спасибо
Реакции: hhandy