GetCuttingNodes method (Layer)

Осуществляет поиск ближайших отсекающих узлов для указанного объекта сети и возвращает их ключи в виде коллекции ElementKeys.

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

Layer

Синтаксис:

Visual Basic:

Function GetCuttingNodes(ElemID As Long, Flags As Long) As ElementKeys

ElemID — ключ объекта слоя, для которого ищутся отсекающие объекты.

Flags — задает режим поиска изолирующих/отключающих устройств.

Параметр Flags может принимать следующие значения:

Значение

Описание

0

Поиск изолирующих устройств.

Возвращается список устройств, который полностью отключают указанный участок от остальной сети.

1

Поиск отключающих устройств.

Возвращается список устройств, который отключают указанный участок от источника(ов).

Описание:

В коллекцию попадают ключи отключающих устройств сети — например, задвижек. Устройство, которое отсекает участок от остальной сети, но не стоит между участком и источником, возвращается при Flags = 0 и не возвращается при Flags = 1.

Объектом сети может быть и участок, и узел. Если отсекающих устройств нет, а также если объекта с таким ключом в слое нет, возвращается пустая коллекция.

Из значения Flags учитывается только младший бит: чётные значения действуют как 0, нечётные — как 1.

Пример:

Visual Basic:

Sub Layer_GetCuttingNodes
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Ищем первый участок, который отсекается отключающими устройствами
Set En = L.EnumElements
En.MoveFirst
Do While Not En.IsEOF
  If En.GraphType = 0 Then
    Set Keys = L.GetCuttingNodes(En.ElemID, 0)
    If Keys.Count > 0 Then Exit Do
  End If
  En.MoveNext
Loop
If En.IsEOF Then
  MsgBox "В слое нет участков, отсекаемых отключающими устройствами"
  Exit Sub
End If
S = "Участок " & En.ElemID & vbCrLf & "Изолирующие устройства:"
For i = 1 To Keys.Count
  S = S & " " & Keys.Item(i)
Next
Set Keys = L.GetCuttingNodes(En.ElemID, 1)
S = S & vbCrLf & "Отключающие от источника:"
For i = 1 To Keys.Count
  S = S & " " & Keys.Item(i)
Next
MsgBox S
End Sub

Python:

import zulu

def Macro_Layer_GetCuttingNodes():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Ищем первый участок, который отсекается отключающими устройствами
    En = L.EnumElements()
    En.MoveFirst()
    while not En.IsEOF():
        if En.GraphType == 0 and L.GetCuttingNodes(En.ElemID, 0).Count > 0:
            break
        En.MoveNext()
    if En.IsEOF():
        print("В слое нет участков, отсекаемых отключающими устройствами")
        return
    elem_id = En.ElemID
    Keys = L.GetCuttingNodes(elem_id, 0)
    print("Участок", elem_id)
    print("Изолирующие устройства:", [Keys.Item(i) for i in range(1, Keys.Count + 1)])
    Keys = L.GetCuttingNodes(elem_id, 1)
    print("Отключающие от источника:", [Keys.Item(i) for i in range(1, Keys.Count + 1)])