Получить объект который попал в поле заданной координатами.

Автор Doom, 22.08.23, 14:52:52

« назад - далее »

0 Пользователи и 3 гостей просматривают эту тему.

Doom

Здравствуйте!

Есть координаты X и Y которые задаются в 2D документе - И которые являются центром окружности с радиусом R - как получить список объектов которые попали в эту окружность?

Doom

Это перебирать все объекты и проверять на пересечение с окружностью? - наверно будет очень долго тк еще эта окружность перемещается и опять извлекаются объекты и так далее.

Scull_

ObjMouse:=FindObj(HookX,HookY,R); - вернет ближайший объект попавший в ловушку.
SelectGroup (reference group, int selectMode, double x1, double y1, double x2, double y2); - вернет группу объектов попавших в ловушку.
+ Благодарностей: 1

Doom

FindObj - он возвращает только ссылку на один объект когда как в точке находится более 1 объекта..
Остаётся SelectGroup с параметром selectMode = 3

Scull_

Берете SelectGroup вернет указатель на группу, дальше смотрите объекты попавшие в группу.
FindObj все правильно возвращает, я писал, что вернет ближайший объект, работа данной функции показана здесь.
+ Благодарностей: 1

Doom

Цитата: Scull_ от 22.08.23, 18:29:57FindObj все правильно возвращает, я писал, что вернет ближайший объект

в точке координаты которой рассматриваются - расположены объекты "точка" несколько штук и они все в одной точке - возвращается только та что была поставлена позже всех.

Scull_

Вот Вы уже поняли принцип работы функции, если объектов несколько все равно передастся указатель на один.

Doom

Эту функцию проапгрейдить бы с модами: selectMode и возвращала список ссылок, было б ВАЩЕ!

Scull_

Меня лично устраивает, как данная функция работает. SelectGroup тоже часто использую и все в работе функции устраивает.

Doom

Цитата: Scull_ от 22.08.23, 19:43:28Меня лично устраивает, как данная функция работает.
А меня лично не устраивает.

И я считаю ее можно и даже нужно проапгрейдить! Она будет выдавать список объектов в порядке построения или наложения (хотя конечное наверно - не совсем удобно для пользователя)

Scull_

Кто Вам мешает это сделать?
Тут даже помощь АСКОН не нужна, тем более на форум они забили давно.

Doom

Цитата: Scull_ от 23.08.23, 13:23:31Кто Вам мешает это сделать?

Так мне что дизассемблировать дистрибутив К для изменений ?

Хотя мне надо как то решать вопрос с графикой - не хочется уходить с 16 версии.

Scull_

Зачем, пишите библиотеку Компас это позволяет.

Doom

Цитата: Scull_ от 23.08.23, 13:52:55Зачем, пишите библиотеку Компас это позволяет.

Вам проще тк учились и соответствующее образование - а у меня что ? Родители выкинули в детдом а образование я получил случайно тк в дет дом приехала организация которая отмывала деньги от налогов и меня отправили учится и еще полагалась квартира но ее прибрали к рукам администрация района и города. Не Вам одному плохо!

Doom

Так что не давите на жалость и работаем!

Что бы прийти к решению нужно понять как быстро сравнить расположение объекта к точке с координатами - тут я больше не чего не могу предложить как перебрать все объекты - а это очень долго!
Я и предлагал тогда распараллелить эту функцию для извлечения всех объектов максимально быстрее.