RUS  ENG 

Поиск объекта слоя по координатам

Страницы: 1
RSS
Поиск объекта слоя по координатам
 
Задача: на слое А есть символьный объект ОБЪЕКТ, необходимо на слое Б создавать символьные объекты МЕТКИ в непосредственной близости от него в идеале было бы в точке с координатами центра объекта ОБЪЕКТ, но Zulu не даёт создать несколько МЕТОК с одинаковыми координатами на одном слое. Для решения этой задачи был придуман простой алгоритм, перед рисованием МЕТКИ в точке с координатами X,Y проверяется наличие другой МЕТКИ в этой точке методом Layer.ElemIDByXY, если МЕТКА есть, то точка смещается на заданную величину и снова осуществляется проверка наличия метки, если в новой точке метка не обнаружена, то создаём новую метку.
Но данный алгоритм не работает, тк при смене координат метод Layer.ElemIDByXY продолжает возвращать ID МЕТКИ находящейся в центре и только по достижению достаточно большой дельты (30 метров от центральной точки) возвращает -1.
Подскажите, в чём может быть проблема?

Лог смещения точки:

X:-56100 Y:9210 radius:10 angle:0 element ID:13
X:-56105.4402111089 Y:9191.60928470924 radius:10 angle:10 element ID:13
X:-56090.8705474927 Y:9204.08082061813 radius:10 angle:20 element ID:13
X:-56109.8803162409 Y:9201.54251449888 radius:10 angle:30 element ID:13
...
X:-53619.4630982338 Y:10887.2867803002 radius:3000 angle:290 element ID:-1
 
Цитата
Но данный алгоритм не работает, тк при смене координат метод Layer.ElemIDByXY продолжает возвращать ID МЕТКИ находящейся в центре и только по достижению достаточно большой дельты (30 метров от центральной точки) возвращает -1.
Подскажите, в чём может быть проблема?

Лог смещения точки:

X:-56100 Y:9210 radius:10 angle:0 element ID:13
X:-56105.4402111089 Y:9191.60928470924 radius:10 angle:10 element ID:13
X:-56090.8705474927 Y:9204.08082061813 radius:10 angle:20 element ID:13
X:-56109.8803162409 Y:9201.54251449888 radius:10 angle:30 element ID:13
...
X:-53619.4630982338 Y:10887.2867803002 radius:3000 angle:290 element ID:-1
ElemIDByXY - аналог клика с карты, там ищется, в кого попал, включая габариты символа (его изображения)

Попробуйте GetClosestElementByXY
 
Спасибо, этот метод отрабатывает как мне надо.
Вопрос для общего развития, почему метод, даже когда находит элемент, возвращает retPoint = null?
 
Цитата
Сергей Попов написал:
Спасибо, этот метод отрабатывает как мне надо.
Вопрос для общего развития, почему метод, даже когда находит элемент, возвращает retPoint = null?
Объект retPoint не возвращается, его надо создать и подставить для записи ответа. Возвращается ID

Set P = CreateObject("ZuluLib.ZPoint")

ID = L.GetClosestElementByXY (X, Y, 10, false, P)
Изменено: Алексей Аширов - 25.12.2020 09:39:10
Страницы: 1