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

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)
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 197
Реакции
10 847
Пишу с утюга, поэтому под рукой хелпа нет, но разве Separate не возвращает список ShapeRange?
 

eugeny

15 лет на форуме
Сообщения
858
Реакции
210
Пишу с утюга, поэтому под рукой хелпа нет, но разве Separate не возвращает список ShapeRange?
Да возвращает.
dim sepRang as ShapeRange
set sepRang =ActiveSelection.Separate
s.Delete

и вуаля! у вас должен в sepRang остаться один контур.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 197
Реакции
10 847
Ну так вот он и есть - прямой способ.
А если бы не возвращал, то можно было б присвоить шейпу имя, по которому искать все дочерние шейпы.
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
set sepRang =ActiveSelection.Separate
ругается при компиляции
expected function or variable
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 197
Реакции
10 847

eugeny

15 лет на форуме
Сообщения
858
Реакции
210
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

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 197
Реакции
10 847

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
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