[CDR 2023] Как грамотно вытащить объекты из группы.

  • Автор темы Автор темы DukereD
  • Дата начала Дата начала
Не сильно отличается. В #4 выделяется один объект, а ТС (как мне показалось) хотел выделять любое кол-во объектов внутри группы и вынимать их. #4 и есть та болванка, которую я не заметил изначально.
Ну вопрос же стоял как перегруппировки избежать
 
да. т.к. у группы еще может быть имя. и группа в группе в группе и т.п т.е рекурсии. и переименования и т.п.
хотелось без всего этого обойтись.
но видимо Ctrl+X лучший вариант.
 
Вариация с прыжками по слоям. На десктопе не сработает, т.к. я поленился создавать специальный дополнительный слой.
Код:
Sub ex1()
  ActiveDocument.BeginCommandGroup "ex"
  Set sel = ActiveSelectionRange
  sel.MoveToLayer ActivePage.DesktopLayer
  sel.MoveToLayer ActiveLayer
  ActiveDocument.EndCommandGroup
End Sub
===
PS
Код:
Sub ex2()
ActiveSelectionRange.MoveToLayer ActiveLayer
End Sub
А вот так вроде не должно было работать, но, у меня, заработало!!!
 
Последнее редактирование:
Вариация с прыжками по слоям. На десктопе не сработает, т.к. я поленился создавать специальный дополнительный слой.
Код:
Sub ex1()
  ActiveDocument.BeginCommandGroup "ex"
  Set sel = ActiveSelectionRange
  sel.MoveToLayer ActivePage.DesktopLayer
  sel.MoveToLayer ActiveLayer
  ActiveDocument.EndCommandGroup
End Sub
===
PS
Код:
Sub ex2()
ActiveSelectionRange.MoveToLayer ActiveLayer
End Sub
А вот так вроде не должно было работать, но, у меня, заработало!!!
да. так работает, НО.... при Ctrl+Z корел вылетает.
 
CorelDRAW 2020 - Undo работает.
Жаль. Значит по слоям кидать.
я пробовал как р аз таки первый вариант. просто в одно действие на эктивлеер не пробовал ) может оно и работает. но кидая на любой другой слой у меня выкидывало при Undo.
 
В своих тестах я ещё кидал на MasterPage.Layers("Desktop") (не знаю как будет работать на локализированных Корелах работать), на MasterPage.Layers(1) (Это слой guides), тоже работало, потом остановился на выложенном.
 
  • Спасибо
Реакции: DukereD
Свои тесты я начинал с OrderFrontOf и почему-то у меня не работало, поэтому перешел к группам. А сейчас работает. Но я не рассматривал случай объекта в группе-в группе-в группе..., поэтому применение ограничено простой одинарной группой.
ActiveSelectionRange.OrderFrontOf ActiveSelectionRange(1).ParentGroup
 
  • Спасибо
Реакции: DukereD
Свои тесты я начинал с OrderFrontOf и почему-то у меня не работало, поэтому перешел к группам. А сейчас работает. Но я не рассматривал случай объекта в группе-в группе-в группе..., поэтому применение ограничено простой одинарной группой.
ActiveSelectionRange.OrderFrontOf ActiveSelectionRange(1).ParentGroup
кстати да.. в пэрент груп ордер фронт сделать что-то я не додумался.
ну и рекурсию продумать чтобы на верх самый выкидывало.
 
с временным объектом можно
Код:
Sub qqq()
  ActiveDocument.BeginCommandGroup "ex"
  Set t = ActiveLayer.CreateRectangle(0, 0, 1, 1)
  ActiveSelectionRange.OrderFrontOf t
  t.Delete
  ActiveDocument.EndCommandGroup
End Sub