AcDb3dSolid::createLoftedSolid()

Автор Тема: AcDb3dSolid::createLoftedSolid()  (Прочитано 19749 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: AcDb3dSolid::createLoftedSolid()
« Ответ #15 : 07-07-2021, 00:14:07 »
Увы, но движок AutoCAD не позволяет ускорить createLoftedSolid. Я поэкспериментировал с параметрами и пришел к выводу, что соединение трех сотен сечений - достаточно трудоёмкая операция для AutoCAD.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Sergey Makarov

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Re: AcDb3dSolid::createLoftedSolid()
« Ответ #16 : 20-08-2021, 11:51:36 »
Здравствуйте Александр!

Движок AutoCAD, полагаю, в полном порядке, так как базируется на ACIS - разработке другой американской компании Spatial Corp. Данное утверждение косвенно подтверждает ObjectARX документация, где в описании методов AcDb3dSolid можно лицезреть метод:
Код - C++ [Выбрать]
  1. virtual Acad::ErrorStatus setASMBody(const void* modelerBody);
в описании которого сказано For internal use only, а в описании параметров присутствует следующая запись: modelerBody - ACIS solid to use for body.
Вот если бы помимо присутствия данного метода в классе AcDb3dSolid была возможность оперировать процессом формирования 3D тел через modelerBody, то проблем с производительностью, я полагаю, не было бы. Что собственно говоря и демонстрируется мгновенным перестроением 3D-тел, динамически связанных с коридорами в AutoCAD Civil 3D. Разработчики внутри Autodesk имеют отступ к API ACIS. К сожалению, 3D ACIS Modeler - продукт закрытый лицензионными соглашениями и Autodesk, видимо, не может предоставить такие возможности. Но вот поработать над реализацией createLoftedSolid(...) они вполне могли бы, чтобы 300 сечений для 3-х гигагерцового Intel не были проблемой.


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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: AcDb3dSolid::createLoftedSolid()
« Ответ #17 : 20-08-2021, 13:23:50 »
Что собственно говоря и демонстрируется мгновенным перестроением 3D-тел, динамически связанных с коридорами в AutoCAD Civil 3D.
Я совсем не уверен, что там используется AcDb3dSolid. Точнее почти уверен, что используется AModeler (ObjectARX SDK\utils\amodeler).
P.S.: Каким образом все эти рассуждения могут тебе помочь?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Sergey Makarov

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Re: AcDb3dSolid::createLoftedSolid()
« Ответ #18 : 20-08-2021, 14:05:13 »
Мои рассуждения мне вряд ли помогут ...
Я проверил тип извлекаемых 3D-тел коридоров AutoCAD Civil 3D - GetType() возвращает Autodesk.AutoCAD.DatabaseServices.Solid3d. И если для формирования данного объекта используется не класс AcDb3dSolid с его методами, а AModeler (ObjectARX SDK\utils\amodeler), то вы подсказали мне ещё одно направление для исследований, которое, возможно, поможет мне решить проблему с тормозами при формировании 3D-тел в обход криво реализованных коридоров. Спасибо!