GetIncidentElements method (Layer)

Возвращает коллекцию Elements, содержащую объекты Element, находящиеся в топологической связи с объектом с задаваемым ключом.

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

Layer

Синтаксис:

Visual Basic:

Function GetIncidentElements(Key As Long, Relationship As eIncidentRelationship) As Elements

Key - ключ объекта слоя, для которого ищутся инцидентные объекты.

Relationship - критерий связи имеет смысл только для узла и принимает значение из набора eIncidentRelationship.

Описание:

Элементы возвращаемой коллекции имеют доступ по порядковому номеру, то есть значение Elements.Count больше или равно нулю.

Для узла сети возвращаются связанные с ним участки: при 1 (eIncidentIncoming) — входящие, при 2 (eIncidentOutcoming) — выходящие, при 3 (eIncidentAll) — все. При других значениях Relationship коллекция пуста.

Для участка возвращаются узлы на его концах, и значение Relationship на результат не влияет.

Если объекта с таким ключом в слое нет, метод возвращает Nothing.

В случае неудачи возникает исключение с одним из следующих кодов:

Код

Описание

513

Слой не открыт. Операция проводится со слоем, который либо не загружен в карту, либо не открыт с помощью метода Open.

Пример:

Visual Basic:

Sub Layer_GetIncidentElements
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Первый типовой символ слоя — узел сети
Set En = L.EnumElements
En.MoveFirst
Do While Not En.IsEOF
  If En.GraphType = 2 Then Exit Do
  En.MoveNext
Loop
If En.IsEOF Then
  MsgBox "В слое нет типовых символов"
  Exit Sub
End If
ElemID = En.ElemID
'Участки, связанные с узлом
S = "Узел " & ElemID & vbCrLf & _
    "входящих участков: " & L.GetIncidentElements(ElemID, 1).Count & vbCrLf & _
    "выходящих: " & L.GetIncidentElements(ElemID, 2).Count
Set Els = L.GetIncidentElements(ElemID, 3)
S = S & vbCrLf & "всего " & Els.Count & ", ключи:"
For i = 1 To Els.Count
  S = S & " " & Els.Item(i).Key
Next
MsgBox S
End Sub

Python:

import zulu

def Macro_Layer_GetIncidentElements():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Первый типовой символ слоя — узел сети
    En = L.EnumElements()
    En.MoveFirst()
    while not En.IsEOF() and En.GraphType != 2:
        En.MoveNext()
    if En.IsEOF():
        print("В слое нет типовых символов")
        return
    elem_id = En.ElemID
    # Участки, связанные с узлом
    print("Узел", elem_id)
    print("входящих участков:", L.GetIncidentElements(elem_id, 1).Count)
    print("выходящих:", L.GetIncidentElements(elem_id, 2).Count)
    Els = L.GetIncidentElements(elem_id, 3)
    print("всего", Els.Count, ", ключи:", [Els.Item(i).Key for i in range(1, Els.Count + 1)])