IZEnumElements object

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

Входит в состав ZuluGIS 2021 Library.

Свойства и методы:

Описание:

Итератор даёт буферизованный доступ к свойствам объектов слоя и предназначен для перебора в цикле: так намного быстрее, чем обращаться к каждому объекту через коллекцию Item.

Порядок работы: получить итератор у слоя, вызвать MoveFirst, дальше повторять MoveNext, пока IsEOF не вернёт True. До вызова MoveFirst итератор пуст: IsEOF сразу возвращает True, а ElemID-1.

Ограничить обход выделенными объектами позволяет метод SetSelectedOnly — вызывать его надо до MoveFirst.

Члены итератора делятся по назначению:

Пример:

Visual Basic:

Sub IZEnumElements_cls
'Итератор по объектам активного слоя карты
Set L = Zulu.ActiveMapDoc.Layers.Active
Set En = L.EnumElements
'Считаем объекты по графическому типу
Set d = CreateObject("Scripting.Dictionary")
En.MoveFirst
Do While Not En.IsEOF
  g = En.GraphType
  d(g) = d(g) + 1
  En.MoveNext
Loop
s = ""
For Each g In d.Keys
  s = s & "графический тип " & g & ": " & d(g) & vbCrLf
Next
MsgBox s
End Sub

Python:

import zulu

def Macro_IZEnumElements_cls():
    # Итератор по объектам активного слоя карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    En = L.EnumElements()
    # Считаем объекты по графическому типу
    d = {}
    En.MoveFirst()
    while not En.IsEOF():
        g = En.GraphType
        d[g] = d.get(g, 0) + 1
        En.MoveNext()
    for g in sorted(d):
        print("графический тип", g, ":", d[g])