Возвращает коллекцию объектов, содержащих в числе своих вершин указанную точку.
Visual Basic:
Function GetElementsByPoint(ElemID As Long, X As Double, Y As Double) As Elements
ElemID - зарезервирован, должен быть -1.
X,Y - координаты точки, для которой в слое ищутся соответствия.
Точка должна совпадать с вершиной объекта точно: если она отстоит от вершины хотя бы на единицу координат слоя, объект в коллекцию не попадает. Если таких объектов нет, возвращается пустая коллекция.
Объекты в коллекции доступны по порядковому номеру от 1 до Count; ключ объекта даёт свойство Key. В точке узла сети в коллекцию попадают и сам узел, и все сходящиеся в нём участки, а во внутренней точке перелома линии — только эта линия.
В случае неудачи возникает исключение с одним из следующих кодов:
Код
Описание
513
Слой не открыт. Операция проводится со слоем, который либо не загружен в карту, либо не открыт с помощью метода Open.
Visual Basic:
Sub Layer_GetElementsByPoint 'Берем активный слой карты 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 Set Pt = En.GetXY 'Объекты, у которых эта точка есть среди вершин Set Els = L.GetElementsByPoint(-1, Pt.X, Pt.Y) S = "В точке символа " & En.ElemID & " сходятся объекты: " & Els.Count For i = 1 To Els.Count S = S & vbCrLf & "ключ " & Els.Item(i).Key & ", тип " & Els.Item(i).TypeID Next MsgBox S End SubPython:
import zulu def Macro_Layer_GetElementsByPoint(): # Берем активный слой карты 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 Pt = En.GetXY() # Объекты, у которых эта точка есть среди вершин Els = L.GetElementsByPoint(-1, Pt.X, Pt.Y) print("В точке символа", En.ElemID, "сходятся объекты:", Els.Count) for i in range(1, Els.Count + 1): el = Els.Item(i) print("ключ", el.Key, ", тип", el.TypeId)