Возвращает объект NetworkTree, содержащий дерево кратчайших путей от указанного узла.
Visual Basic:
Function GetShortWayTreeEx(StartNodeID As Long, Flags As Long) As NetworkTree
StartNodeID - узел, задаваемый в качестве корня дерева.
Flags - битовые флаги построения дерева:
0 - строит дерево с учетом состояний отсекающих устройств.
1 - считает все состояния отсекающих устройств выключенными. Без этого флага строит дерево с учетом состояний отсекающих устройств.
2 - строит дерево от узла по направлению участков от начала к концу.
4 - строит дерево от узла против направлений участков (от конца к началу).
8 - учитывает только направления участков, связанных с начальным узлом (начальное направление).
16 - строит дерево минимальной высоты (путь наименьший не по длине, а по количеству узлов пути).
От метода GetShortWayTree отличается только флагами: при Flags = 0 деревья совпадают. Флаги направления (2 и 4) оставляют в дереве только ту часть сети, которая достижима от корня по направлению участков или против него, поэтому такое дерево обычно меньше.
Устройство дерева, нумерация узлов и получение пути описаны на странице метода GetShortWayTree.
Visual Basic:
Sub Layer_GetShortWayTreeEx 'Берем активный слой тепловой сети Set L = Zulu.ActiveMapDoc.Layers.Active 'Одно и то же дерево от узла 2 при разных флагах S = "" For Each F In Array(0, 1, 2, 4, 8, 16) Set Tree = L.GetShortWayTreeEx(2, F) S = S & "флаг " & F & ": узлов " & Tree.Count & vbCrLf Next MsgBox S End SubPython:
import zulu def Macro_Layer_GetShortWayTreeEx(): # Берем активный слой тепловой сети L = zulu.App.ActiveMapDoc.Layers.Active # Одно и то же дерево от узла 2 при разных флагах for f in (0, 1, 2, 4, 8, 16): print("флаг", f, ": узлов", L.GetShortWayTreeEx(2, f).Count)