[CDR 2017-2021] Как извлечь объект из группы?

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

nagris

Участник
Топикстартер
Сообщения
13
Реакции
0
Как извлечь объект из группы сохранив группу?

Должна получится группа без объекта и объект на том-же месте но не в группе.

Спасибо!
 
Ctrl+X Ctrl+V

Но раз уж хочется макросом, то:
Код:
Sub ung()
  ActiveShape.OrderFrontOf ActiveShape.ParentGroup
End Sub
 
  • Спасибо
Реакции: nagris и dastin
Спасибо!

уточнение

есть на листе несколько групп, надо найти в группе определенный шейп и извлечь его из группы

я сделал через cut > past (разбивая группу и потом группируя обратно, но без нужного шейпа), но работает не быстро, возможно с конструкцией выше ускорить код?
 
какие клики?

макросом надо, мы в разделе автоматизация, а не рукоприкладство
 
маленько добавлю ...
Код:
Sub ung()
Dim s As Shape, g As Shape
Set s = ActiveShape
ag:
  s.OrderFrontOf s.ParentGroup
    Set g = s.ParentGroup
  If g Is Nothing Then
  s.CreateSelection
    Exit Sub
    Else
    g.CreateSelection
    GoTo ag:
  End If
End Sub
выбранный шейп вытащит из всех вложенных групп, разместит поверх групп в которые он входил и выделит его
1559097802555.png1559097862758.png
 
  • Спасибо
Реакции: nagris
Спасибо!

уточнение

есть на листе несколько групп, надо найти в группе определенный шейп и извлечь его из группы

я сделал через cut > past (разбивая группу и потом группируя обратно, но без нужного шейпа), но работает не быстро, возможно с конструкцией выше ускорить код?
По какому признаку найти?
 
  • Спасибо
Реакции: nagris
Здравствуйте!

в моем случае по цвету обводки
 
я сделал выделение всех объектов на листе

проход по выделенным шейпам, если группа разгруппировываю

ищу нужный шейп, вырезаю его, сгруппировываю оставшееся

вставляю шейп обратно

но работает медленно

как код выше подключить

у меня выдает ошибку

118933
 
Код:
For each s in sh.Shapes
 
  • Спасибо
Реакции: nagris
в моем случае по цвету обводки
для мадженты ...
Код:
Sub ung1()
Dim s As Shape, g As Shape, shy As New ShapeRange

    For Each s In ActiveSelection.Shapes.FindShapes(Query:="@outline.color.cmyk.m=100")
ag:
    s.OrderFrontOf s.ParentGroup
    Set g = s.ParentGroup
        If g Is Nothing Then
            shy.Add s
        Else
        GoTo ag:
        End If
    Next
shy.CreateSelection
End Sub
найдёт в выделенном шейпы с аутлайном 0,100,0,0 - вытащит их из групп и выделит все по завершению
 
  • Спасибо
Реакции: nagris