DrawableOverrule и Solid3d

Автор Тема: DrawableOverrule и Solid3d  (Прочитано 9450 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 9933
  • Карма: 1274
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: DrawableOverrule и Solid3d
« Ответ #45 : 06-06-2018, 19:33:50 »
Андрей же откопал в документации, что в ObjectId ссылается на адрес в памяти. Соответственно, он может быть только один на один объект.
Там всё-таки всё хитрее. Я бы не стал полагаться на это.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2080
  • Карма: 535
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: DrawableOverrule и Solid3d
« Ответ #46 : 06-12-2018, 16:41:24 »
Уже несколько раз перечитал всю тему, экспериментирую, но никак не могу нащупать: какой должен быть порядок действий, если объект был изменён?
Вот, например. Есть у нас объект, мы его перерисовали кубиком, кубик поместили в кэш. Теперь при каждой перерисовке мы берём кубик из кэша, а не создаём новый. Но, предположим, что габариты объекта поменялись и теперь надо показывать кубик другого размера. Как поступить в этом случае? Старый кубик из кэша удалять? Или ничего не удалять, а создать просто новый и закинуть в кэш? Вызывать ли команду _REGEN3 при этом?
Что-то никак не могу подружиться с этим механизмом. Постоянно теряется графика, если объект изменять.

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

  • Administrator
  • *****
  • Сообщений: 9933
  • Карма: 1274
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: DrawableOverrule и Solid3d
« Ответ #47 : 06-12-2018, 18:21:03 »
Старый кубик из кэша удалять?
Если он не используется для других примитивов - удалять. И рисовать новый и закидывать в кэш. Думаю что так.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2080
  • Карма: 535
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: DrawableOverrule и Solid3d
« Ответ #48 : 06-12-2018, 21:06:02 »
Если сразу удалять, то почему-то возникают проблемы с отображением. Решил не удалять, а помечать как неиспользуемые. Пока что придумал, что удалять их буду в событии Database.DatabaseToBeDestroyed. Попробовал в событии Application.BeginQuit - ловил стабильный фатал. Сейчас работает как надо и вроде как проблем нет.
Немного напрягает, что неиспользуемые объекты будут висеть в памяти пока чертёж не закроют, но пока другого более подходящего момента не придумал.