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