CustomEntity. Размерные выноски

Автор Тема: CustomEntity. Размерные выноски  (Прочитано 9785 раз)

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

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

  • ADN Club
  • Сообщений: 41
  • Карма: 4
  • Skype: andriy.dziubyna
При разработке собственного CustomEntity, возникла необходимость отображать некоторые размеры объекта в момент редактирования (перемещения GripPoint'ов).

Нужно рисовать размерные выноски, что то вроде того как сделано на полилинии, когда GripPoint становится «горячим» отображаются расстояния к соседним вершинам, и когда начинаешь тянуть GripPoint, расстояния на выносках пересчитываются динамически. Также хотелось бы по нажатию клавиши «Tab» перемещаться межу этими размерами чтобы задать их в EditBox вручную с клавиатуры, так как это сделано на полилинии.

Есть ли возможность (готовое решение от Autodesk) для таких случаев?

Прикрепил рисунок для лучшего понимания вопроса.


Отмечено как Решение Dziubyna 23-04-2015, 11:17:36

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: CustomEntity. Размерные выноски
« Ответ #1 : 24-03-2015, 11:34:36 »
Есть ли возможность (готовое решение от Autodesk) для таких случаев?
Да. В ObjectARX SDK 2007 и 2008 есть пример samples\entity\grip, который показывает как это можно сделать. Взять эти версии можно здесь: ObjectARX SDK: старые и новые версии
Ну и придётся их немного "подшаманить" под последние версии AutoCAD.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • Сообщений: 41
  • Карма: 4
  • Skype: andriy.dziubyna
Re: CustomEntity. Размерные выноски
« Ответ #2 : 26-03-2015, 10:54:10 »
Спасибо! Пример нашел, с размерными выносками разобрался.  ;)

Еще такой вопрос. На счет подсказки (ToolTip) к GripPoint'у. Нашел несколько методов для работы с ними.
setToolTipFunc - метод на AcDbGripData для задания функции получения подсказки когда GripPoint становится «горячим».
setCLIDisplayStringFunc, setCLIPromptFunc – методы на AcDbGripData для задания функций получения подсказки уже при перемещении GripPoint'а.

Когда перемещаешь GripPoint можно ли сделать так чтобы динамически обновлялся ToolTip? Функции setCLIDisplayStringFunc, setCLIPromptFunc вызываются только один раз при начале перетаскивания GripPoint'а.
До этого реализовывал такую подсказку своим классом наследованным от CWnd и выводил в subMoveGripPointsAt, хотелось бы сделать это как то попроще.

Пример с размерными выносками обновил для AutoCAD 2015 и прикрепил, может кому то пригодится. Нужно положить его ObjectARX 2015\samples\entity\grip\.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: CustomEntity. Размерные выноски
« Ответ #3 : 26-03-2015, 18:20:51 »
Когда перемещаешь GripPoint можно ли сделать так чтобы динамически обновлялся ToolTip?
Насколько я знаю такой возможности в ObjectARX нет.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • Сообщений: 41
  • Карма: 4
  • Skype: andriy.dziubyna
Re: CustomEntity. Размерные выноски
« Ответ #4 : 27-03-2015, 11:58:31 »
Еще такой вопрос.

В классе AcGiGeometry (который доступен в subWorldDraw) есть метод virtual Adesk::Boolean ownerDraw, входным параметром у которого класс AcGiGdiDrawObject.

Можно ли его как то использовать для таких целей (рисование динамической подсказки)?

Или, если не трудно объяснить, для чего можно использовать метод virtual Adesk::Boolean ownerDraw и класс AcGiGdiDrawObject?

Искал в документации, ничего не нашел

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: CustomEntity. Размерные выноски
« Ответ #5 : 30-03-2015, 22:23:54 »
Можно ли его как то использовать для таких целей (рисование динамической подсказки)?
Теоретически да. Если унаследуешь от него класс, реализуешь в нём все необходимые методы. Но главное тут то, что тебе нужно будет анализировать состояние объекта и рисовать этот объект только в случае если isDragging() == true.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение