Возвращает объект NetworkTree,содержащий дерево кратчайших путей от указанного узла.
Visual Basic:
Function GetShortWayTree(StartNodeID As Long) As NetworkTree
StartNodeID - ID корневого узла.
В дерево попадают узлы, до которых есть путь от корневого; их число дает свойство Count, а ключи - ElementKeys. Узлы перебираются свойством Item с номерами от 0 до Count - 1, а по ключу узла его дает ItemById.
У корневого узла ParentId и SectionId равны -1, а RootLength - нулю.
Путь между двумя узлами дерева возвращает метод GetWay - цепочкой ключей, где чередуются узлы и участки.
Подготовка сети методом NetWorkDataPrepare для построения дерева не требуется.
Visual Basic:
Sub Layer_GetShortWayTree 'Берем активный слой тепловой сети Set L = Zulu.ActiveMapDoc.Layers.Active 'Дерево кратчайших путей от узла с ключом 2 Set Tree = L.GetShortWayTree(2) S = "Узлов в дереве: " & Tree.Count 'Первые три узла дерева, нумерация с нуля For i = 0 To 2 Set Nd = Tree.Item(i) S = S & vbCrLf & "узел " & Nd.NodeId & ", родитель " & Nd.ParentId & _ ", участок " & Nd.SectionId & ", от корня " & Round(Nd.RootLength, 2) Next MsgBox S End SubPython:
import zulu def Macro_Layer_GetShortWayTree(): # Берем активный слой тепловой сети L = zulu.App.ActiveMapDoc.Layers.Active # Дерево кратчайших путей от узла с ключом 2 tree = L.GetShortWayTree(2) print("Узлов в дереве:", tree.Count) # Первые три узла дерева, нумерация с нуля for i in range(3): nd = tree.Item(i) print("узел", nd.NodeId, "родитель", nd.ParentId, "участок", nd.SectionId, "от корня", round(nd.RootLength, 2))