Возвращает коллекцию сетевых объектов по специальному критерию.
Property NetworkObjects(What As eNetworkObjectFilter) As NetworkObjects
Критерий выбирается из набора eNetworkObjectFilter: 1 - узлы, 2 - ребра, 3 - и те и другие. Критерий 0 дает пустую коллекцию, а лишние биты (например 7) ничего не добавляют - ответ тот же, что у 3.
Элементы нумеруются с единицы, до Count; обращение по номеру 0 или Count + 1 вызывает исключение. У ребра свойства KeyBegin и KeyEnd дают ключи узлов на его концах, у узла оба равны -1, зато осмысленно NeighboursCount.
Готовить данные методом NetWorkDataPrepare перед обращением не нужно: до подготовки и после нее коллекции одинаковы.
В случае неудачи возникает исключение с одним из следующих кодов:
Код
Описание
513
Слой не открыт. Операция проводится со слоем, который либо не загружен в карту, либо не открыт с помощью метода Open.
Visual Basic:
Sub Layer_NetworkObjects 'Берем активный слой карты Set L = Zulu.ActiveMapDoc.Layers.Active S = "узлов: " & L.NetworkObjects(1).Count S = S & vbCrLf & "ребер: " & L.NetworkObjects(2).Count S = S & vbCrLf & "всего объектов сети: " & L.NetworkObjects(3).Count 'Первые ребра и узлы на их концах, нумерация с единицы Set NO = L.NetworkObjects(2) For i = 1 To 3 S = S & vbCrLf & "ребро " & NO.Key(i) & ": от узла " & NO.KeyBegin(i) & " к узлу " & NO.KeyEnd(i) Next MsgBox S End SubPython:
import zulu def Macro_Layer_NetworkObjects(): # Берем активный слой карты L = zulu.App.ActiveMapDoc.Layers.Active print("узлов:", L.NetworkObjects(1).Count) print("ребер:", L.NetworkObjects(2).Count) print("всего объектов сети:", L.NetworkObjects(3).Count) # Первые ребра и узлы на их концах, нумерация с единицы no = L.NetworkObjects(2) for i in range(1, 4): print("ребро", no.Key(i), ": от узла", no.KeyBegin(i), "к узлу", no.KeyEnd(i))