GetKeysByDrawHandle method (Layer)

Возвращает коллекцию ElementKeys объектов, видимых на экране и участвующих в редактировании.

Применяется к:

Layer

Синтаксис:

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 Sub

Python:

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)