Осуществляет поиск ближайших отсекающих узлов для указанного объекта сети и возвращает их ключи в виде коллекции ElementKeys.
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 SubPython:
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)])