ElemIDByXY method (Layer)

Находит элемент слоя по указанным координатам местности, если такой существует.

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

Layer

Синтаксис:

Visual Basic:

Function ElemIDByXY(X As Double, Y As Double) As Long

X, Y - координаты точки на местности.

Описание:

Метод возвращает ключ найденного элемента, а если рядом с точкой объектов нет — -1.

Точного попадания не требуется: объект находится и тогда, когда точка лежит не на нём, а рядом. Если рядом с точкой несколько объектов, символ находится раньше линии, а линия — раньше площадного объекта, даже когда точка лежит внутри этого площадного объекта; из вложенных друг в друга площадных объектов находится внутренний.

Пример:

Visual Basic:

Sub Layer_ElemIDByXY
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Точка - центр габаритов слоя
Set R = L.GetBoundsRectangle
X = (R.Xmin + R.Xmax) / 2
Y = (R.Ymin + R.Ymax) / 2
ElemID = L.ElemIDByXY(X, Y)
If ElemID = -1 Then
  MsgBox "Рядом с центром слоя объектов нет"
Else
  MsgBox "В центре слоя найден объект " & ElemID
End If
'Точка далеко за пределами слоя
MsgBox "Вдали от слоя: " & L.ElemIDByXY(R.Xmax + (R.Xmax - R.Xmin), R.Ymax)
End Sub

Python:

import zulu

def Macro_Layer_ElemIDByXY():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Точка - центр габаритов слоя
    R = L.GetBoundsRectangle()
    x = (R.Xmin + R.Xmax) / 2
    y = (R.Ymin + R.Ymax) / 2
    elem_id = L.ElemIDByXY(x, y)
    if elem_id == -1:
        print("Рядом с центром слоя объектов нет")
    else:
        print("В центре слоя найден объект", elem_id)
    # Точка далеко за пределами слоя
    print("Вдали от слоя:", L.ElemIDByXY(R.Xmax + (R.Xmax - R.Xmin), R.Ymax))