Возвращает объект для топологического анализа сети.
Visual Basic:
Property NetworkTools As NetworkTools
read-only
Разбор сети идет от флагов: флаг ставится методом AddFlag и принимается только на узел сети - на участок метод возвращает False, и флагов не прибавляется. Узлы дает коллекция NetworkObjects с критерием 1.
Дальше вызывается нужный поиск, а найденное лежит в Results. FindLoops в древовидной сети возвращает False и пустой ответ - колец в ней нет. Путь между двумя узлами ищется методом FindWay.
Каждый поиск заменяет прежний ответ. Флаги снимаются методами ClearFlags и ClearLastFlag (последний снимает один, самый свежий), а найденное - методом ClearResults. Свойство State показывает, чем занят объект: 0 - ничего не искали, 2 - показан результат поиска.
Visual Basic:
Sub Layer_NetworkTools 'Берем активный слой карты Set L = Zulu.ActiveMapDoc.Layers.Active Set NT = L.NetworkTools 'Флаг ставим на первый узел сети Set Nodes = L.NetworkObjects(1) NT.ClearFlags NT.ClearResults S = "Флаг на узел " & Nodes.Key(1) & ": " & NT.AddFlag(Nodes.Key(1)) 'Смотрим, что связано с этим узлом, а что нет S = S & vbCrLf & "связано: " & NT.FindConnected & " -> " & NT.Results.Count & " объектов" S = S & vbCrLf & "не связано: " & NT.FindDisconnected & " -> " & NT.Results.Count & " объектов" NT.ClearResults NT.ClearFlags MsgBox S End SubPython:
import zulu def Macro_Layer_NetworkTools(): # Берем активный слой карты L = zulu.App.ActiveMapDoc.Layers.Active nt = L.NetworkTools # Флаг ставим на первый узел сети nodes = L.NetworkObjects(1) nt.ClearFlags() nt.ClearResults() print("Флаг на узел", nodes.Key(1), ":", nt.AddFlag(nodes.Key(1))) # Смотрим, что связано с этим узлом, а что нет print("связано:", nt.FindConnected(), "->", nt.Results.Count, "объектов") print("не связано:", nt.FindDisconnected(), "->", nt.Results.Count, "объектов") nt.ClearResults() nt.ClearFlags()