Сложный Jig.

Автор Тема: Сложный Jig.  (Прочитано 9807 раз)

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

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

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Сложный Jig.
« : 28-01-2022, 19:05:24 »
Добрый день,

Есть следующая задача: необходимо многократно копировать выбранный объект (блок) через определенный интервал. При этом необходимо, чтобы копирование проходило динамически в соответствии с расстоянием курсора от начальной точки. Одновременно с этим необходимо, чтобы отслеживался еще и угол поворота линии « начальная точка – текущая точка», и в соответствии с этим углом группа скопированных объектов поворачивалось бы относительно начальной точки.

Я пытаюсь решить эту задачу используя технологию Jig. У  Kean Walmsley я нашёл код, который позволяет динамические вращать выбранный объект: https://through-the-interface.typepad.com/through_the_interface/2008/03/using-a-jig-to.html. Осталось научиться динамически копировать выбранный объект в соответствии с расстоянием от курсора до начальной точки. В этом, собственно, и загвоздка. Я понимаю что в какой то момент мне необходимо переопределять блок таким образом, чтобы объекты в нем заполняли пространство от начальной точки до текущего положения курсора, Но мне совершенно непонятно в каком месте кода мне нужно выполнять это переопределение.

Заранее благодарен за любые идеи решения этой задачи.

Оффлайн Вильдар

  • ADN Club
  • ****
  • Сообщений: 409
  • Карма: 77
  • Skype: vildar82
Re: Сложный Jig.
« Ответ #1 : 28-01-2022, 21:57:41 »
Посмотри DrawJig, там можно рисовать произвольное количество объектов.

Отмечено как Решение Балиев 02-02-2022, 18:00:53

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сложный Jig.
« Ответ #2 : 29-01-2022, 02:12:55 »
Балиев,
Думаю, что Вильдар абсолютно прав. Более того, тебе не нужно копировать блок во время Jig, а только отрисовывать его в нужных точках и с нужным поворотом (т.е. вся работа по отрисовке происходит в методе WorldDraw или ViewportDraw). А непосредственное копирование блока производится только после удачного завершения работы DrawJig. Мне кажется, что этот метод был бы оптимальным.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Re: Сложный Jig.
« Ответ #3 : 29-01-2022, 12:09:49 »
Спасибо. Попробую реализовать.

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

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Re: Сложный Jig.
« Ответ #4 : 29-01-2022, 21:12:20 »
Более того, тебе не нужно копировать блок во время Jig, а только отрисовывать его в нужных точках и с нужным поворотом (т.е. вся работа по отрисовке происходит в методе WorldDraw или ViewportDraw).
А как мне получить текущую дистанцию в методе WorldDraw? Дистанция мне нужна, чтобы знать сколько дополнительных блоков отрисовывать. Я попытался получить ее нижеследующим образом, но почему то не получается:
Код - C# [Выбрать]
  1.             JigPromptDistanceOptions jdo = new JigPromptDistanceOptions("\nCurrent distance: ");
  2.             jdo.BasePoint = m_basePoint;
  3.             jdo.UseBasePoint = true;
  4.             PromptDoubleResult pdr = JigPrompts.AcquireDistance(jdo);
  5.  
На 4-ой строке выдает ошибку:


Приведенный код работает в Sampler, но я не знаю как передать результат в WorldDraw.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сложный Jig.
« Ответ #5 : 29-01-2022, 21:18:10 »
Балиев,
JigPrompts.AcquireDistance - это не статический метод класса JigPrompts. Соответственно нужно создать экземпляр класса JigPrompts и вызывать метод AcquireDistance для него.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сложный Jig.
« Ответ #6 : 29-01-2022, 21:23:52 »
Балиев,
И вообще в данном случае разумнее использовать не AcquireDistance, а AcquirePoint. Это даст в результате и расстояние (от базовой точки до указанной) и направление (из базовой точки до указанной).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Re: Сложный Jig.
« Ответ #7 : 30-01-2022, 15:59:44 »
igPrompts.AcquireDistance - это не статический метод класса JigPrompts. Соответственно нужно создать экземпляр класса JigPrompts и вызывать метод AcquireDistance для него.
Так не хочет экземпляр класса создаваться. Просит аргумент, а я не знаю, где его взять.
Код - C# [Выбрать]
  1.             JigPromptPointOptions jdo = new JigPromptPointOptions("\nCurrent distance: ");
  2.             jdo.BasePoint = m_basePoint;
  3.             jdo.UseBasePoint = true;
  4.             JigPrompts jp = new JigPrompts();
  5.             PromptPointResult pdr = jp.AcquirePoint(jdo);
  6.  
На 4-й строке появляется ошибка:


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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сложный Jig.
« Ответ #8 : 30-01-2022, 16:11:49 »
Балиев,
В метод Sampler передается JigPrompts, который и нужно использовать. Вообще-то "поиск рулит". Достаточно посмотреть этот пример: https://adn-cis.org/forum/index.php?topic=7251.msg22179#msg22179
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Re: Сложный Jig.
« Ответ #9 : 02-02-2022, 18:03:52 »
В метод Sampler передается JigPrompts, который и нужно использовать. Вообще-то "поиск рулит". Достаточно посмотреть этот пример: https://adn-cis.org/forum/index.php?topic=7251.msg22179#msg22179
Да, все получилось. Поначалу меня смутила твоя фраза: "вся работа по отрисовке происходит в методе WorldDraw ". Вот я и стал пытаться все делать в WorldDraw.