Возвращает коллекцию объектов слоя по заданному списку типов и режимов.
Visual Basic:
Function SelectByTypes(sTypesModes As String) As ElementKeys
sTypesModes - строка содержащая список пар тип+режим.
Выбранные по заданному списку типов и режимов ключи объектов возвращаются в виде коллекции ElementKeys.
Значения пар тип+режим в строке sTypesModes идут одна за другой. Все значения разделяются между собой пробелами или табуляцией.
Если номер режима равен 0, то в коллекцию войдут все объекты заданного типа, независимо от их режима.
Если ID типа равен 0, то в коллекцию войдут все объекты с заданным режимом, независимо от их типа.
Пары складываются: строка «T1 M1 T2 M2» отбирает объекты типа T1 в режиме M1 вместе с объектами типа T2 в режиме M2 - столько же, сколько два вызова SelectByType вместе. Нулевой режим в паре означает все режимы типа.
Разделителем служит и пробел, и табуляция. Пустая строка, строка с нечетным числом чисел («6») и вовсе не числа («abc») дают пустую коллекцию, исключения при этом не возникает - на ошибку в строке метод не жалуется, поэтому стоит проверять размер ответа.
Visual Basic:
Sub Layer_SelectByTypes 'Берем активный слой карты Set L = Zulu.ActiveMapDoc.Layers.Active 'Объекты типа 6 в режиме 1 S = "тип 6 режим 1: " & L.SelectByTypes("6 1").Count 'Для одной пары это то же, что SelectByType(6, 1) S = S & vbCrLf & "он же через SelectByType: " & L.SelectByType(6, 1).Count 'Две пары сразу: тип 6 режим 1 и тип 2 режим 1 S = S & vbCrLf & "две пары: " & L.SelectByTypes("6 1 2 1").Count 'Все режимы двух типов: режим 0 значит любой S = S & vbCrLf & "типы 6 и 2 целиком: " & L.SelectByTypes("6 0 2 0").Count MsgBox S End SubPython:
import zulu def Macro_Layer_SelectByTypes(): # Берем активный слой карты L = zulu.App.ActiveMapDoc.Layers.Active # Объекты типа 6 в режиме 1 print("тип 6 режим 1:", L.SelectByTypes("6 1").Count) # Для одной пары это то же, что SelectByType(6, 1) print("он же через SelectByType:", L.SelectByType(6, 1).Count) # Две пары сразу: тип 6 режим 1 и тип 2 режим 1 print("две пары:", L.SelectByTypes("6 1 2 1").Count) # Все режимы двух типов: режим 0 значит любой print("типы 6 и 2 целиком:", L.SelectByTypes("6 0 2 0").Count)