IsInCircle method (Layer)

Проверяет, находится ли элемент сети слоя в кольце.

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

Layer

Синтаксис:

Visual Basic:

Function IsInCircle(ElemID As Long, flags As Long) As Boolean

ElemID - ID объекта слоя

flags - зарезервирован, должен быть 0

Описание:

Кольцом здесь называется замкнутый участок сети: если от объекта можно вернуться в него же, не проходя дважды по одному участку, метод дает True. Проверка годится и для линейных объектов, и для узлов.

Объект вне кольца, объект, не входящий в сеть, и несуществующий ID дают False; на неверный ID метод не ругается. Тупиковая ветка от кольца - тоже False.

Отдельно готовить сеть методом NetWorkDataPrepare для этой проверки не нужно: кольцо, только что собранное из четырех узлов и четырех участков, метод распознает сразу, и ответы до и после подготовки сети совпадают.

В древовидной сети колец нет, и для любого ее объекта метод возвращает False.

Пример:

Visual Basic:

Sub Layer_IsInCircle
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
Set Keys = L.ElementKeys
n = 0
For i = 1 To Keys.Count
  If L.IsInCircle(Keys.Item(i), 0) Then n = n + 1
Next
MsgBox "Всего объектов: " & Keys.Count & vbCrLf & "из них в кольцах: " & n
End Sub

Python:

import zulu

def Macro_Layer_IsInCircle():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    keys = L.ElementKeys
    n = 0
    for i in range(1, keys.Count + 1):
        if L.IsInCircle(keys.Item(i), 0):
            n += 1
    print("Всего объектов:", keys.Count)
    print("из них в кольцах:", n)