Возвращает коллекцию ключей объектов слоя с заданным типом и режимом.
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 SubPython:
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)