Использование маскировки в AcDbEntity

Автор Тема: Использование маскировки в AcDbEntity  (Прочитано 8478 раз)

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

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

  • ADN OPEN
  • Сообщений: 18
  • Карма: 0
Re: Использование маскировки в AcDbEntity
« Ответ #15 : 17-04-2018, 15:03:25 »
Нужно ли удалять AcDbBlockTableRecord (в котором находится AcDbWipeout) при удалении кастомного объеста?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Использование маскировки в AcDbEntity
« Ответ #16 : 17-04-2018, 16:04:46 »
Нужно ли удалять AcDbBlockTableRecord (в котором находится AcDbWipeout) при удалении кастомного объеста?
Во-первых, нет необходимости - _PURGE удалит этот блок, если на него нет никаких ссылок (HardPointerId).
Во-вторых, ты не знаешь в какой момент можно удалять.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 18
  • Карма: 0
Re: Использование маскировки в AcDbEntity
« Ответ #17 : 17-04-2018, 16:26:43 »
Как не знаю? В деструкторе моего кастомного компонента разве нельзя удалить? Хотя предполагаю что и тут есть особенности AutoCAD'а.

Если смотреть "со стороны" то я создаю свой кастомный компонент на основе AcDbEntity. Так как в нем нельзя создать AcDbWipeout, я создаю новую таблицу AcDbBlockTableRecord уже в которой создаю AcDbWipeout. Далее передаю ссылку на таблицу в свой компонент, чтобы смочь отрисовывать содержимое этой этой таблицы. Выходит что при каждом создании моего компонента будет создаваться таблица и в ней маскировка. Когда я буду удалять свой компонент, то таблица с маскировкой будут оставаться (утечка памяти).

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Использование маскировки в AcDbEntity
« Ответ #18 : 17-04-2018, 16:33:24 »
В деструкторе моего кастомного компонента разве нельзя удалить?
Нет. Деструктор "закрывает" объект если он уже в базе, а не удаляет его. Удаляет (точнее ставит пометку об удалении) метод erase() твоего объекта.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 18
  • Карма: 0
Re: Использование маскировки в AcDbEntity
« Ответ #19 : 17-04-2018, 16:40:52 »
Кажется начинаю представлять как это устроено. Но как в итоге быть с таблицей и маскировкой? Если на объект никто не ссылается, то он потом уничтожается?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Использование маскировки в AcDbEntity
« Ответ #20 : 17-04-2018, 16:45:50 »
Если на объект никто не ссылается, то он потом уничтожается?
Во всяком случае _PURGE может его удалить.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 18
  • Карма: 0
Re: Использование маскировки в AcDbEntity
« Ответ #21 : 17-04-2018, 16:47:36 »
Спасибо!