EnumElements method

Возвращает объект IZEnumElements, являющийся итератором, предоставляющим последовательный доступ к ряду свойств объектов слоя.

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

Layer

Синтаксис:

Visual Basic:

Function EnumElements() As IZEnumElements

Описание:

Возвращаемый объект предоставляет буферизованный доступ к свойствам элементов слоя. Его удобно использовать, когда в цикле нужно перебрать много объектов. В этом случае доступ гораздо быстрее чем при использовании Layer.Elements.Item(ElemID).

Перед обходом итератор нужно поставить на первый объект методом MoveFirst: до этого он стоит за концом списка. Обход повторяется новым вызовом MoveFirst. У слоя без объектов итератор сразу после MoveFirst стоит за концом.

Итератор перебирает объекты, которые были в слое, когда он был получен. Объекты, добавленные позже, в обход не попадают — для них нужно снова вызвать EnumElements.

Пример:

Visual Basic:

Sub Layer_EnumElements
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Считаем типовые объекты и примитивы слоя
Set En = L.EnumElements
En.MoveFirst
Typed = 0
Prims = 0
Do While Not En.IsEOF
  If En.TypeID = -1 Then
    Prims = Prims + 1
  Else
    Typed = Typed + 1
  End If
  En.MoveNext
Loop
MsgBox "Типовых объектов: " & Typed & vbCrLf & "Примитивов: " & Prims
End Sub

Python:

import zulu

def Macro_Layer_EnumElements():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Считаем типовые объекты и примитивы слоя
    En = L.EnumElements()
    En.MoveFirst()
    typed = prims = 0
    while not En.IsEOF():
        if En.TypeID == -1:
            prims += 1
        else:
            typed += 1
        En.MoveNext()
    print("Типовых объектов:", typed)
    print("Примитивов:", prims)