Сообщество программистов Autodesk в СНГ

ADN Club => ObjectARX => Тема начата: knightrocker от 09-07-2018, 13:38:39

Название: Как поворачивать объект вокру конкретной ручки (grip-point) ?
Отправлено: knightrocker от 09-07-2018, 13:38:39
Здравствуйте.


Среда: MSVS 2015, Autocad 2017, Platform х64
Проект находится в архиве MyProject-Center-Point.zip
Проект подчистил от комментариев, и на сколько пока могу сделал код более читабельным.
Если к классу есть замечания, уточняйте какие, постараюсь внести изменения.

Описание: В классе Bolt я завёл точку m_ptCntr - центр объекта и точку m_ptEdge - точка посередине резьбы на её конце.
Вопрос: Я хотел написать функцию rotateAroundPt(), которая при нажатии на 7-ой грип у объекта осуществляла бы поворот всего объекта вокруг точки центра m_ptCntr, а при нажатии на 8-ой грип осуществляла бы поворот всего объекта вокруг точки m_ptEdge.
Пока что поэкспериментировал с изменением позиций векторов направления m_vecU и m_vecV, но безуспешно.
Само собой, пока хотел написать сначала одну функцию, поворачивающую объект хотя бы вокруг точки m_ptEdge, чтобы уже после посмотреть, можно ли эту функцию написать на столько универсально, чтобы она крутила объект, вокруг любой точки, которую ей передашь, или же придётся писать 2 отдельные функции для поворота вокруг каждой точки соответственно.
Название: Re: Как поворачивать объект вокру конкретной ручки (grip-point) ?
Отправлено: Александр Ривилис от 09-07-2018, 18:20:26
Код - C++ [Выбрать]
  1. void Bolt::rotateAroundPt(AcGeVector3d offset, AcGePoint3d p)
  2. {
  3.   AcGeVector3d zDir = m_vecU.crossProduct(m_vecV);
  4.   double ang = m_vecU.angleTo(offset, zDir);
  5.   AcGeMatrix3d mat; mat.setToRotation(ang, zDir, p);
  6.   transformBy(mat);
  7. }

P.S.: Из проекта смело можешь выкинуть файлы squarent.cpp и squarent.h. Файл ArxProject3.aps передавать не нужно.

Название: Re: Как поворачивать объект вокру конкретной ручки (grip-point) ?
Отправлено: knightrocker от 10-07-2018, 15:13:20
Большое спасибо
Название: Re: Как поворачивать объект вокру конкретной ручки (grip-point) ?
Отправлено: Александр Ривилис от 10-07-2018, 15:16:43
Большое спасибо
Пожалуйста. У нас есть еще [+] и Решение.