SelectByTypes method (Layer)

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

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

Layer

Синтаксис:

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 Sub

Python:

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)