Обновляет состояние сети и возвращает коллекцию ключей элементов, режим которых изменился.
Visual Basic:
Function NetWorkRecalc() As ElementKeys
Метод пересчитывает состояние сети и отдает ключи тех объектов, у которых режим изменился. Если менять было нечего, коллекция пуста: сразу после NetWorkDataPrepare метод вернул 0 ключей, и повторный вызов подряд - тоже 0.
После смены режима отсекающего устройства, например закрытия задвижки, метод возвращает ключи потребителей, у которых изменилась подача. Возврат устройства в прежний режим дает те же ключи: пересчет отмечает переход в обе стороны.
Режимы задаются методом SetModesByElemsStates, а прикинуть последствия переключения, ничего не меняя, позволяет NetworkSwitchAnalyze.
В случае неудачи возникает исключение с одним из следующих кодов:
Код
Описание
513
Слой не открыт. Операция проводится со слоем, который либо не загружен в карту, либо не открыт с помощью метода Open.
Пример закрывает первую задвижку слоя, пересчитывает сеть и возвращает задвижку в прежний режим.
Visual Basic:
Sub Layer_NetWorkRecalc 'Берем активный слой карты 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 'Закрываем ее и пересчитываем сеть Set States = CreateObject("ZuluLib.ZElemsStates") States.AddItem Valve, 2 L.SetModesByElemsStates States S = "Задвижка " & Valve & ": режим " & Was & " -> 2" S = S & vbCrLf & "сменили режим: " & L.NetWorkRecalc.Count & " объектов" 'Возвращаем задвижку как было States.Clear States.AddItem Valve, Was L.SetModesByElemsStates States S = S & vbCrLf & "после возврата: " & L.NetWorkRecalc.Count & " объектов" MsgBox S End SubPython:
import zulu def Macro_Layer_NetWorkRecalc(): # Берем активный слой карты 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 # Закрываем ее и пересчитываем сеть states = zulu.ZElemsStates() states.AddItem(valve, 2) L.SetModesByElemsStates(states) print("Задвижка", valve, ": режим", was, "-> 2") print("сменили режим:", L.NetWorkRecalc().Count, "объектов") # Возвращаем задвижку как было states.Clear() states.AddItem(valve, was) L.SetModesByElemsStates(states) print("после возврата:", L.NetWorkRecalc().Count, "объектов")