[CDR 2017-2021] Выделение объекта по координатам.

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
Добрый день. В многостраничном документе, на каждой странице расположены объекты или текст. Как с помощью макроса выделить и удалить объекты на каждой странице. Известен габаритный размер и положение объектов. Оно постоянно.
 

DukereD

макрософил
Сообщения
462
Реакции
114
ActivePage.SelectShapesFromRectangle
 
  • Спасибо
Реакции: tohaa

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
Известен габаритный размер и положение объектов. Оно постоянно.
Код:
For Each p in ActiveDocument
For Each s In p.Shapes.FindShapes(Query:="@centerY = {" & ys & " mm} and @centerX = {" & xs & " mm}")
                    SerRange.Add s
                Next s
SerRange.Delete
Next page
......
For Each p in ActiveDocument
                For Each s In p.Shapes.FindShapes(Query:="@height = {" & ys & " mm} and @width = {" & xs & " mm}")
                    SerRange.Add s
                Next s
                SerRange.Delete
Next page
ys и xs - соответственно или координаты положения или высота и ширина, можно и объединить критерии - поискав сперва по центру, а потом внутри найденного по габаритам
поиск будет вестись и в группах
 
Последнее редактирование:

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
Удаляет объекты по заданным координатам. На всех страницах.

Код:
Sub del_obj_on_pages()

Dim obj As Shape, p As Page

ActiveDocument.Unit = cdrMillimeter

For Each p In ActiveDocument.Pages

If p.Index > 0 Then

Set obj = p.SelectShapesFromRectangle(172, 19, 204, 7, True) 'https://community.coreldraw.com/sdk/api/draw/19/m/page.selectshapesfromrectangle

If obj.Shapes.Count > 0 Then obj.Delete

End If

Next p

End Sub