Продублировать, а исходный удалить?Собственно вопрос. как правильно макросом вытащить объекты из группы не разгруппировывая их.
макросом хотелось бы. а через стандартный буфер копи-пейст не лучшее решение внутри кода его использовать.CTRL+X не годится?
Sub Test()
Dim s As Shape, g As Shape
Set s = ActiveShape
If s Is Nothing Then
MsgBox "Please select an object", vbCritical
Exit Sub
End If
Set g = s.ParentGroup
If g Is Nothing Then
MsgBox "Please select an object within a group", vbCritical
Exit Sub
End If
ActiveDocument.PreserveSelection = False
g.CreateSelection
g.Ungroup
s.Selected = False
ActiveSelection.Group
s.CreateSelection
End Sub
если их дублировать то дубли остаются в тех же группахПродублировать, а исходный удалить?
Продублировать группу остальные удалитьесли их дублировать то дубли остаются в тех же группах
представьте сколько будет работать по времени такой макрос если несколько тысяч объектов?Продублировать группу остальные удалить
srr.Cut();
host.ActiveLayer.Paste();
srr = host.ActiveSelectionRange;
Несколько тысяч обьектов в группе?представьте сколько будет работать по времени такой макрос если несколько тысяч объектов?
ну совсем не оптимально. проще уж через Ctrl+X работать.
хочется красивого и грамотного решения.
сейчас код вроде простой. но хотелось бы избавиться от копипаста просто.
JavaScript:srr.Cut(); host.ActiveLayer.Paste(); srr = host.ActiveSelectionRange;
несколько тысяч групп. хотябы ну и в группах тоже бывает под сотню объектов.Несколько тысяч обьектов в группе?
да. вероятно так и есть.Тут я думаю, идеологическое ограничение. Вот в иллюстраторе можно, потому как там просто меняется родитель обьекта. А у корела группа это такой же шейп, как и рекурсивно вложенные в него шейпы, являющиеся неотьемлемой частью родительского шейпа, поэтому нельзя не деструктивно вытащить один шейп наружу, группа развалится.
Работать в ИЛЛ, не красиво, не грамотно?хочется красивого и грамотного решения
Ты если случайно название раздела и топика не прочел и не понимаешь, о чем говорят, то лучше молчиРаботать в ИЛЛ, не красиво, не грамотно?
- Дизайн и Вёрстка
- CorelDRAW
- Автоматизация <---------------------
[CDR 2023] Как грамотно вытащить объекты из группы.
несколько не несколько, а тысячу запросто - печать с микроэлементами - если никто не озаботился скомбинировать мелочьНесколько тысяч обьектов в группе?
с Range не получится. т.к. это не объекты а просто список объектов. меняя рендж мы не меняем свойства исходных объектов.М.б. так?
копию группы в shapeRange- объект из shapeRange.remove - shapeRange группируем - оригинал группы удаляем
я пишу макрос для корела. при чем тут люстра?Работать в ИЛЛ, не красиво, не грамотно?
Не... я просто предложил
Как понимаю, вам же надо просто с вектором работать, а не принципиально в Corel
Sub ex()
ActiveDocument.BeginCommandGroup "ex"
Set sel = ActiveSelectionRange
Set grp = sel(1).ParentGroup.UngroupEx
grp.RemoveRange sel
Set grp = grp.Group
sel.OrderFrontOf grp
ActiveDocument.EndCommandGroup
End Sub
А чем это принципиально отличается от #4?Невнимательно читал обсуждение, поэтому городил с нуля, вместо того, чтобы воспользоваться болванкой
Код:Sub ex() ActiveDocument.BeginCommandGroup "ex" Set sel = ActiveSelectionRange Set grp = sel(1).ParentGroup.UngroupEx grp.RemoveRange sel Set grp = grp.Group sel.OrderFrontOf grp ActiveDocument.EndCommandGroup End Sub