Открывает для слоя диалог «Выделить объекты по атрибутам отображения» и выделяет объекты, отмеченные в нем.
Visual Basic:
Function DoSelectByAttributes(Layer As Layer) As Boolean
Layer - слой карты, в котором выделяются объекты.
Метод открывает тот же диалог, что и команда меню ZuluGIS «Карта | Запрос | По атрибутам». В диалоге перечислены способы отображения объектов слоя, а вкладки зависят от его содержимого: «Типовые» - типы объектов и их режимы, «Контуры» - стили заливки площадных объектов, «Линии» - стили линий, «Текст» - шрифты надписей, «Простые символы» - символы. Вкладки, для которых в слое нет объектов, не показываются.
Если отметить в диалоге строки и нажать «OK», метод возвращает True, а в выделении слоя (Selection) оказываются все объекты с отмеченными атрибутами. Если нажать «Отмена», метод возвращает False, и выделение слоя не меняется.
Макрос ждет, пока диалог не будет закрыт.
Пример открывает диалог для активного слоя и сообщает, сколько объектов выделено.
Visual Basic:
Sub MapDoc_DoSelectByAttributes 'Берем рабочую карту и ее активный слой Set Doc = Zulu.ActiveMapDoc Set L = Doc.Layers.Active 'Диалог выделения по атрибутам отображения If Doc.DoSelectByAttributes(L) Then MsgBox "Выделено объектов: " & L.Selection.ElementKeys.Count Else MsgBox "Выбор отменен" End If End SubPython:
import zulu def Macro_MapDoc_DoSelectByAttributes(): # Берем рабочую карту и ее активный слой doc = zulu.App.ActiveMapDoc L = doc.Layers.Active # Диалог выделения по атрибутам отображения if doc.DoSelectByAttributes(L): print("Выделено объектов:", L.Selection.ElementKeys.Count) else: print("Выбор отменен")