ShortWayStart method (Layer)

Инициализирует модель сети слоя для многократных вызовов функций поиска пути (GetShortWay, ShortWay).

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

Layer

Синтаксис:

Visual Basic:

Function ShortWayStart() As Long

Описание:

Вызов данного метода для буферизации модели сети, требует последующего завершения вызовом метода ShortWayFinish

Метод возвращает 1, парный ShortWayFinish - 0. Поиск путей работает и без буферизации, на ответы она не влияет: между теми же узлами получаются те же цепочки ключей.

Выигрыш по времени зависит от размера сети: на небольшой сети его может не быть.

Пример:

Visual Basic:

Sub Layer_ShortWayStart
'Берем активный слой тепловой сети
Set L = Zulu.ActiveMapDoc.Layers.Active
Set Nodes = L.NetworkObjects(1)
'Готовим модель сети к череде поисков
S = "ShortWayStart: " & L.ShortWayStart
'Считаем, до скольких узлов есть путь от первого
n = 0
For i = 2 To Nodes.Count
  If L.ShortWay(Nodes.Key(1), Nodes.Key(i)).Count > 0 Then n = n + 1
Next
S = S & vbCrLf & "узлов, связанных с первым: " & n & " из " & (Nodes.Count - 1)
'Обязательно закрываем буферизацию
S = S & vbCrLf & "ShortWayFinish: " & L.ShortWayFinish
MsgBox S
End Sub

Python:

import zulu

def Macro_Layer_ShortWayStart():
    # Берем активный слой тепловой сети
    L = zulu.App.ActiveMapDoc.Layers.Active
    nodes = L.NetworkObjects(1)
    # Готовим модель сети к череде поисков
    print("ShortWayStart:", L.ShortWayStart())
    # Считаем, до скольких узлов есть путь от первого
    n = 0
    for i in range(2, nodes.Count + 1):
        if L.ShortWay(nodes.Key(1), nodes.Key(i)).Count > 0:
            n += 1
    print("узлов, связанных с первым:", n, "из", nodes.Count - 1)
    # Обязательно закрываем буферизацию
    print("ShortWayFinish:", L.ShortWayFinish())