[CDR 2017-2021] как узнать item шейпа, который был создан из контура

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

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
немного не удачно назвал тему
задача следующая
есть шейп.
создаю для него внешний контур.
разделяю исходный шейп и контур.
удаляю исходный шейп.
теперь мне нужно работать с шейпом, который был контуром - но я не знаю как к нему обращаться правильно.
сейчас делаю так - но работает через раз.
подскажите плиз правильный способ.

Set eff1 = s.CreateContour(0, rfrezPopolam - 0.01, 1, , , CreateCMYKColor(0, 100, 0, 0), , 0, 0, 1, 2)
ActiveDocument.CreateSelection s, s.Effects.ContourEffect.Contour.ContourGroup
ActiveSelection.Separate

Set m = ActivePage.Shapes.Item(s.ZOrder - 1) ----- это очень корявый способ, который работает через раз ((

s.Delete

Set eff1 = m.CreateContour(1, rfrezPopolam, 1, , , CreateCMYKColor(0, 100, 100, 0), , 0, 0, 1, 2)
 
Пишу с утюга, поэтому под рукой хелпа нет, но разве Separate не возвращает список ShapeRange?
 
Пишу с утюга, поэтому под рукой хелпа нет, но разве Separate не возвращает список ShapeRange?
Да возвращает.
dim sepRang as ShapeRange
set sepRang =ActiveSelection.Separate
s.Delete

и вуаля! у вас должен в sepRang остаться один контур.
 
Ну так вот он и есть - прямой способ.
А если бы не возвращал, то можно было б присвоить шейпу имя, по которому искать все дочерние шейпы.
 
set sepRang =ActiveSelection.Separate
ругается при компиляции
expected function or variable
 
Dim OrigSelection As ShapeRange, tmp As ShapeRange
Set OrigSelection = ActiveSelectionRange
Dim eff1 As Effect
Set eff1 = OrigSelection(1).CreateContour(cdrContourOutside, 0.02126, 1, cdrDirectFountainFillBlend, CreateCMYKColor(0, 0, 0, 100), CreateCMYKColor(0, 0, 0, 0), CreateColor, 0, 0, cdrContourSquareCap, cdrContourCornerMiteredOffsetBevel, 15#)
eff1.Contour.ContourGroup.AddToSelection
Set tmp = eff1.Separate
OrigSelection.Delete
tmp.CreateSelection
 
Последнее редактирование:
  • Спасибо
Реакции: dastin и Nezar
Dim OrigSelection As ShapeRange, tmp As ShapeRange
Set OrigSelection = ActiveSelectionRange
Dim eff1 As Effect
Set eff1 = OrigSelection(1).CreateContour(cdrContourOutside, 0.02126, 1, cdrDirectFountainFillBlend, CreateCMYKColor(0, 0, 0, 100), CreateCMYKColor(0, 0, 0, 0), CreateColor, 0, 0, cdrContourSquareCap, cdrContourCornerMiteredOffsetBevel, 15#)
eff1.Contour.ContourGroup.AddToSelection
Set tmp = eff1.Separate
OrigSelection.Delete
tmp.CreateSelection
Спасибо, получилось!
 
  • Спасибо
Реакции: eugeny