Возвращает коллекцию ElementKeys объектов, видимых на экране и участвующих в редактировании.
Visual Basic:
Function GetKeysByDrawHandle(DrawHandle As Long, TypeId As Long) As ElementKeys
DrawHandle - описатель отрисовки.
TypeId - ID типа для типовых объектов слоя.
Если задан ID типа типового объекта слоя, то коллекция ключей содержит только ключи объектов заданного типа. При TypeId = -1 в коллекцию попадают объекты всех типов.
Описатель отрисовки приходит параметром события отрисовки карты (например, OnDrawUserLabels); его же возвращает метод GetDrawHandle вида карты, а по окончании работы описатель освобождают методом ReleaseDrawHandle. С негодным описателем метод завершается исключением.
В случае неудачи возникает исключение с одним из следующих кодов:
Код
Описание
5
Негодный описатель отрисовки DrawHandle.
513
Слой не открыт. Операция проводится со слоем, который либо не загружен в карту, либо не открыт с помощью метода Open.
Visual Basic:
Sub Layer_GetKeysByDrawHandle 'Берем активный слой карты Set L = Zulu.ActiveMapDoc.Layers.Active 'Описатель отрисовки берем у вида карты Set V = Zulu.ActiveMapDoc.Views.Active H = V.GetDrawHandle 'Ключи объектов слоя, попавших в отрисовку S = "Объектов в отрисовке: " & L.GetKeysByDrawHandle(H, -1).Count 'То же для первого типа слоя If L.ObjectTypes.Count > 0 Then TypeID = L.ObjectTypes.GetItemByIndex(0).Id S = S & vbCrLf & "из них типа " & TypeID & ": " & L.GetKeysByDrawHandle(H, TypeID).Count End If 'Освобождаем описатель V.ReleaseDrawHandle H MsgBox S End SubPython:
import zulu def Macro_Layer_GetKeysByDrawHandle(): # Берем активный слой карты M = zulu.App.ActiveMapDoc L = M.Layers.Active # Описатель отрисовки берем у вида карты V = M.Views.Active h = V.GetDrawHandle() # Ключи объектов слоя, попавших в отрисовку print("Объектов в отрисовке:", L.GetKeysByDrawHandle(h, -1).Count) # То же для первого типа слоя if L.ObjectTypes.Count > 0: type_id = L.ObjectTypes.GetItemByIndex(0).Id print("из них типа", type_id, ":", L.GetKeysByDrawHandle(h, type_id).Count) # Освобождаем описатель V.ReleaseDrawHandle(h)