complex compound path как clipping mask

  • Автор темы Автор темы lazyevgen
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

lazyevgen

Участник
Топикстартер
Сообщения
4
Реакции
0
У меня вот такая ситуация

Пытаюсь использовать
compound path как clipping mask, Но оно не работает.

Если взять один объект в группу - то работает

var doc = app.documents.add(); // create document
var clipGroup = doc.groupItems.add(); // create a group

var bgItem = clipGroup.pathItems.rectangle(200, 200, 200, 200); // background path
bgItem.position = Array(200, 500);
bgItem.fillColor = doc.swatches[8].color;

var fgItem = clipGroup.pathItems.polygon(144, 288, 72.0, 7); // foreground path to use as a mask
fgItem.position = Array(220, 480);
fgItem.fillColor = doc.swatches[7].color;
fgItem.zOrder(ZOrderMethod.BRINGTOFRONT);

clipGroup.clipped = true;
alert(clipGroup.clipped); // will alert true


Но когда беру для клиппа compound path не работает...

var doc = app.documents.add(); // create document
var clipGroup = doc.groupItems.add(); // create a group

var bgItem = clipGroup.pathItems.rectangle(200, 200, 200, 200); // background path
bgItem.position = Array(200, 500);
bgItem.fillColor = doc.swatches[8].color;

var compoundItem = clipGroup.compoundPathItems.add();
var fgItem = compoundItem.pathItems.polygon(144, 288, 72.0, 7); // foreground path to use as a mask
fgItem.position = Array(220, 480);
fgItem.fillColor = doc.swatches[7].color;
compoundItem.zOrder(ZOrderMethod.BRINGTOFRONT);

clipGroup.clipped = true;
alert(clipGroup.clipped); // will alert false

те тукнуть носом в чем проблема ?
 
Ответ: complex compound path как clipping mask

народ ну помогите кто-нить ?! проЭкт повис...

кто поможет решит траблу до воскресенья буду благодарен $$
 
Ответ: complex compound path как clipping mask

Проблема в том что clipped работает только с pathitem.

Самое первое что приходит в голову это сделать клип всё-таки с дополнительным pathitem, который может находиться где угодно и иметь какие угодно размеры. Потом слепить этот клип-путь с compound (клип-путь.move compound), а клип-путь удалить.

Сейчас попробовал — работает. Может есть более изящный способ. Надо посмотреть, как будет время.
 
Ответ: complex compound path как clipping mask

2Fog, а могешь кусок своего кода сюда кинуть что бы я поглядел ?
 
Ответ: complex compound path как clipping mask

Сохраняем под любым именем с расширением vbs в папке с ai-шными скриптами.

Код:
Set mApp = CreateObject("Illustrator.Application")

Set mDoc = mApp.ActiveDocument
Set clipGroup = mDoc.GroupItems.Add
ReDim ch(UBound(mDoc.Selection))

For Each s In mDoc.Selection
    Set ch(i) = s
    i = i + 1
    s.Move clipGroup, 2
Next

clipGroup.Clipped = True

ch(0).Move ch(1), 1
mDoc.CompoundPathItems(1).PathItems(2).Clipping = True
mDoc.CompoundPathItems(1).PathItems(1).Delete

Это чисто проверочный скрипт. Будет работать только при следующих условиях:

1. В документе выбрано несколько векторных объектов
2. Самый верхний объект — не compound и он может быть какого-угодно размера, он будет вспомогательной маской.
3. Ниже него в стопке располагается вожделенный compound. Он может иметь дырку, а может и не иметь.
 
Статус
Закрыто для дальнейших ответов.