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

ADN Club => ObjectARX => Тема начата: Михаил Голубев от 06-09-2021, 12:31:49

Название: AcEdJig и Polar Tracking
Отправлено: Михаил Голубев от 06-09-2021, 12:31:49
Здравствуйте. В предыдущем вопросе (https://adn-cis.org/forum/index.php?topic=10539.0) про AcEdJig мы решили проблему с ключевыми словами.
Теперь проблема в том, что та же самая джига совершенно или не реагирует или очень странно создает вспомогательные линии для Polar Tracking.
Нужно, что бы джига ловила 90 градусов к предыдущему начерченному сегменту, а она вообще ничего не ловит в данном случае. И ortho mode на нее тоже не действует.
Александр запостил в предыдущий вопрос пример проекта с джигами. Я его скомпилировал под 2022 и там Polar Tracking работает, когда выполняется джига. Я перерыл весь проект, но так и не нашел где отличие от моей джиги. В доках тоже ничего не нашел...
Что нужно сделать, чтоб Polar Tracking работал с джигой?
Название: Re: AcEdJig и Polar Tracking
Отправлено: Александр Ривилис от 06-09-2021, 13:21:55
Александр запостил в предыдущий вопрос пример проекта с джигами. Я его скомпилировал под 2022 и там Polar Tracking работает, когда выполняется джига.
Это хорошо. Немного позже гляну и сравню исходники.
Название: Re: AcEdJig и Polar Tracking
Отправлено: Александр Ривилис от 06-09-2021, 17:25:27
Обрати внимание на это в коде Grip: (метод AcEdJig::DragStatus AcRectJig::sampler())
Код - C++ [Выбрать]
  1.         setUserInputControls((UserInputControls)
  2.                 (AcEdJig::kAccept3dCoordinates
  3.                 | AcEdJig::kGovernedByOrthoMode // <--- Это в первую очередь
  4.                 | AcEdJig::kNoNegativeResponseAccepted
  5.                 | AcEdJig::kNullResponseAccepted
  6.                 | AcEdJig::kNoZeroResponseAccepted));
  7.  
Название: Re: AcEdJig и Polar Tracking
Отправлено: Михаил Голубев от 06-09-2021, 23:43:33
Да, я уже заметил эту опцию и уже пробовал ее внести -- она и сейчас там есть, но эффекта вообще никакого.
Название: Re: AcEdJig и Polar Tracking
Отправлено: Александр Ривилис от 07-09-2021, 00:09:59
Ну тогда вероятно проблема в том, что в Grip используется acquirePoint(<точка>), а у тебя acquirePoint(<точка1>, <точка2>)
Название: Re: AcEdJig и Polar Tracking
Отправлено: Михаил Голубев от 07-09-2021, 09:53:01
Да, спасибо, заработало...
Название: Re: AcEdJig и Polar Tracking
Отправлено: Александр Ривилис от 07-09-2021, 12:30:56
Да, спасибо, заработало...
Причина в том, что в качестве базовой точки (<точка2>) в случае acquirePoint(<точка1>, <точка2>) у тебя выбирается точка, которую вернул предыдущий acquirePoint, а она слишком близка к текущей, чтобы можно было использовать полярное отслеживание или орто.
Название: Re: AcEdJig и Polar Tracking
Отправлено: Михаил Голубев от 07-09-2021, 17:22:47
В общем, не работает так как в команде pline. В pline polar tracking работает от последнего сегмента (если, конечно, в настройках выставлено) и можно ловить 90° к последнему сегменту.
Джига же не реагирует на никакой сегмент нарисованой полилинии, а только на то, что было нарисовано до использования команды.
По этому, у меня создается впечатление, что объект нужно закрыть или как-то обновить базу данных или объекты участвующие в черчении, что бы его последний сегмент тоже начал учитыватьс в polar tracking. Ну, или совсем грустное, если с джигами не работает polar tracking от последнего сегмента, хотя это похоже не то, так как работает же от уже начерченных линий...

Вы ничего про это не знаете?
Название: Re: AcEdJig и Polar Tracking
Отправлено: Александр Ривилис от 07-09-2021, 18:25:02
По этому, у меня создается впечатление, что объект нужно закрыть или как-то обновить базу данных или объекты участвующие в черчении, что бы его последний сегмент тоже начал учитыватьс в polar tracking.
Само-собой. Добавляешь в базу сразу после создания первого сегмента, а затем открываешь его на запись и передаешь в Jig. Привязки работают только с объектами в базе.
Название: Re: AcEdJig и Polar Tracking
Отправлено: Михаил Голубев от 07-09-2021, 18:44:48
Нет, простите, конечно мой объект записан в базу. Это полилиния, я прибавляю к ней пункты, которые джига находит. Мне приходится вызывать draw() каждый раз, что бы последний сегмент было видно в едиторе. Но эти новые сегменты не участвуют в polar tracking, и поэтому у меня создается впечатление, что что=то надо обновить или срегенить.
Название: Re: AcEdJig и Polar Tracking
Отправлено: Александр Ривилис от 07-09-2021, 19:03:49
Нет, простите, конечно мой объект записан в базу.
Нет. Ты его записываешь позднее. У тебя (в том коде, который ты показал) добавление в базу происходит только после завершения цикла с Jig.
Название: Re: AcEdJig и Polar Tracking
Отправлено: Михаил Голубев от 07-09-2021, 19:13:56
Да, но это было раньше. Сейчас я записываю его как только есть два вертекса.
Название: Re: AcEdJig и Polar Tracking
Отправлено: Михаил Голубев от 08-09-2021, 10:10:51
Так же, я попытался закрывать и открывать объект после каждой модификации, но это тоже не сработало на polar tracking.
Но в pline команде же polar tracking работает от последнего начерченного сегмента, то почему джига этого не делает?
Название: Re: AcEdJig и Polar Tracking
Отправлено: Александр Ривилис от 08-09-2021, 20:36:43
Михаил Голубев,
Попробуй устанавливать ось X ПСК по последнему сегменту своей линии.
Название: Re: AcEdJig и Polar Tracking
Отправлено: Михаил Голубев от 10-09-2021, 10:36:24
Спасибо, попробую, когда вернусь к этой теме.