Связать текст и точку

Автор Тема: Связать текст и точку  (Прочитано 529 раз)

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

Оффлайн alshАвтор темы

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0
Связать текст и точку
« : 25-10-2018, 12:30:46 »
Добрый день!
Может быть уже поднимался этот вопрос, не нашел.
Есть в чертеже точки и возле них текст. Как связать точку с текстом, который скорее всего самый
ближний, но может и нет. Все тексты в одном слое  :(
текст    AcDbText , точки  AcGePoint3d
спасибо заранее

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 8566
  • Карма: 1045
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Связать текст и точку
« Ответ #1 : 25-10-2018, 12:39:00 »
alsh,
Приветствую на форуме!
Эта задача разбивается на две:
1. Как найти пары текст-точка?
2. Как и связать?
Первая задача решается или запросом у пользователя указания пары текст-точка или нахождением ближайших пар. Всё зависит от постановки задачи, которой я не вижу.
Вторая задача решается одним из следующих способов:
1. Объединение текст-точка в блок
2. Объединение текст-точка в группу
3. Создание постоянных реакторов текст-точка
В зависимости от цели один из способов может быть более предпочтительный. Способ 3. не рекомендую использовать, так как судя по всему пока нет достаточной квалификации и понимания всех сложностей и нюансов.

Всё ли понятно в том что я написал? Если есть вопросы - прошу.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 8566
  • Карма: 1045
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Связать текст и точку
« Ответ #2 : 25-10-2018, 12:40:55 »
текст    AcDbText , точки  AcGePoint3d
Кстати, не AcGePoint3d (т.к. это не примитив и не может содержаться в чертеже, а геометрическая точка в пространстве), а AcDbPoint - примитив точки.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн alshАвтор темы

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0
Re: Связать текст и точку
« Ответ #3 : 25-10-2018, 13:16:45 »
alsh,
Первая задача решается или запросом у пользователя указания пары текст-точка или нахождением ближайших пар. Всё зависит от постановки задачи, которой я не вижу.
Точек много, запрос не подходит, надо найти пары. Чтобы найти ближайшую надо сравнивать растояния до точки со всеми текстами, а их сотни.
Есть ли еще способ найти пару кроме ближайшего расстояния?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 8566
  • Карма: 1045
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Связать текст и точку
« Ответ #4 : 25-10-2018, 13:21:16 »
Есть ли еще способ найти пару кроме ближайшего расстояния?
Нет. Конечно если они сразу не имеют никакой связи (например через расширенные данные).
Чтобы найти ближайшую надо сравнивать растояния до точки со всеми текстами, а их сотни.
Ну и что? Это сравнение для сотен и даже тысяч текстов и точек будет составлять доли секунды. Ну в крайнем случае несколько секунд. Кроме того эти алгоритмы можно оптимизировать (например, R-деревья).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн alshАвтор темы

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0
Re: Связать текст и точку
« Ответ #5 : 25-10-2018, 14:13:15 »
А для AcDbText есть только  Alignment point и position к которым можно привязаться?  Нет геометрического прямоугольника по размерам текста?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 8566
  • Карма: 1045
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Связать текст и точку
« Ответ #6 : 25-10-2018, 14:28:04 »
А для AcDbText есть только  Alignment point и position к которым можно привязаться?  Нет геометрического прямоугольника по размерам текста?
Есть. AcDbEntity::getGeomExtents. Логичнее всего привязываться к центру этого прямоугольника.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн alshАвтор темы

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0
Re: Связать текст и точку
« Ответ #7 : 25-10-2018, 14:57:22 »
Спасибо Александр

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 8566
  • Карма: 1045
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Связать текст и точку
« Ответ #8 : 25-10-2018, 14:58:28 »
Спасибо Александр
Пожалуйста! Если будут еще вопросы - с удовольствием отвечу.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение