GetShortWayTree method (Layer)

Возвращает объект NetworkTree,содержащий дерево кратчайших путей от указанного узла.

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

Layer

Синтаксис:

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 Sub

Python:

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))