SetModesByElemsStates method (Layer)

Изменяет типы и режимы элементов слоя, список ID и состояния которых заданы коллекцией ZElemsStates.

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

Layer

Синтаксис:

Visual Basic:

Function SetModesByElemsStates(States As ZElemsStates) As Boolean

States - коллекция ID элементов и их типов и режимов.

Описание:

Коллекция набирается двумя методами: AddItem(ID, режим) меняет только режим, а AddTypeModeItem(ID, тип, режим) - и тип, и режим.

Метод возвращает True, если коллекция не пуста; на пустой коллекции - False. Несуществующий ключ в коллекции ошибки не вызывает, и ответ все равно True, так что проверять стоит сами объекты - их режим дает свойство ModeId.

Смена режима у отсекающих устройств меняет состояние сети: после нее сеть пересчитывают методом NetWorkRecalc, а прикинуть последствия заранее позволяет NetworkSwitchAnalyze.

Пример:

Пример закрывает первую задвижку слоя и возвращает ее в прежний режим.

Visual Basic:

Sub Layer_SetModesByElemsStates
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Ищем первую задвижку (тип 5)
Set Keys = L.ElementKeys
Valve = -1
For i = 1 To Keys.Count
  If L.Elements.Item(Keys.Item(i)).TypeID = 5 And Valve = -1 Then Valve = Keys.Item(i)
Next
Was = L.Elements.Item(Valve).ModeId
'Переводим её в режим 2
Set States = CreateObject("ZuluLib.ZElemsStates")
States.AddItem Valve, 2
S = "Задвижка " & Valve & ", режим " & Was
S = S & vbCrLf & "смена режима: " & L.SetModesByElemsStates(States)
S = S & vbCrLf & "стало: " & L.Elements.Item(Valve).ModeId
'Возвращаем как было
States.Clear
States.AddItem Valve, Was
L.SetModesByElemsStates States
S = S & vbCrLf & "после возврата: " & L.Elements.Item(Valve).ModeId
MsgBox S
End Sub

Python:

import zulu

def Macro_Layer_SetModesByElemsStates():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Ищем первую задвижку (тип 5)
    keys = L.ElementKeys
    valve = -1
    for i in range(1, keys.Count + 1):
        if L.Elements.Item(keys.Item(i)).TypeId == 5 and valve == -1:
            valve = keys.Item(i)
    was = L.Elements.Item(valve).ModeId
    # Переводим её в режим 2
    states = zulu.ZElemsStates()
    states.AddItem(valve, 2)
    print("Задвижка", valve, ", режим", was)
    print("смена режима:", L.SetModesByElemsStates(states))
    print("стало:", L.Elements.Item(valve).ModeId)
    # Возвращаем как было
    states.Clear()
    states.AddItem(valve, was)
    L.SetModesByElemsStates(states)
    print("после возврата:", L.Elements.Item(valve).ModeId)