SelectByType method (Layer)

Возвращает коллекцию ключей объектов слоя с заданным типом и режимом.

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

Layer

Синтаксис:

Visual Basic:

Function SelectByType(TypeID As Long, nMode As Long) As ElementKeys

TypeID - ID типа.

nMode - номер режима.

Описание:

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

Если номер режима равен 0, то в коллекцию войдут все объекты заданного типа, независимо от их режима.

Если ID типа равен 0, то в коллекцию войдут все объекты с заданным режимом, независимо от их типа.

Как следствие, вызов Layer.SelectByType(0, 0) эквивалентен вызову Layer.ElementKeys.

Несуществующий тип возвращает пустую коллекцию, исключения при этом нет.

Набрать объекты сразу по нескольким парам тип+режим позволяет метод SelectByTypes.

Пример:

Sub Layer_SelectByType
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
S = "Всего объектов: " & L.ElementKeys.Count
'Сколько объектов каждого типа слоя
Set OT = L.ObjectTypes
For i = 0 To OT.Count - 1
  Set T = OT.GetItemByIndex(i)
  S = S & vbCrLf & T.Name & ": " & L.SelectByType(T.Id, 0).Count
Next
MsgBox S
End Sub

Python:

import zulu

def Macro_Layer_SelectByType():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    print("Всего объектов:", L.ElementKeys.Count)
    # Сколько объектов каждого типа слоя
    ot = L.ObjectTypes
    for i in range(ot.Count):
        t = ot.GetItemByIndex(i)
        print(t.Name, ":", L.SelectByType(t.Id, 0).Count)