NetworkObjects property

Возвращает коллекцию сетевых объектов по специальному критерию.

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

Layer

Синтаксис:

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 Sub

Python:

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