acad.exe не отпускает .dbx файл

Автор Тема: acad.exe не отпускает .dbx файл  (Прочитано 9819 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Михаил ГолубевАвтор темы

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
acad.exe не отпускает .dbx файл
« : 03-09-2021, 14:03:17 »
Здравствуйте
Создаю модуль .dbx с помощью визарда. Есть один класс, происходит от AcDbPolyline. В нем ничего нет еще.
Так же создаю команду в другом проекте, которая загружает данный .dbx с помощью acedArxLoad() и другую команду, которая выгружает модуль с помощью acedArxUnload(). Это делается для того, что бы быстро выгружать/компилировать/загружать модуль.

Проблема: acad.exe не отпускает данный .dbx и невозможно его переписать/удалить, хотя данный модуль не присутствует в списке модулей appload.

Как заставить acad.exe отпустить этот файл, чтобы не перегружать автокад после каждого изменения?

Оффлайн Михаил ГолубевАвтор темы

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Re: acad.exe не отпускает .dbx файл
« Ответ #1 : 03-09-2021, 14:04:58 »
Забыл добавить, что сопутствующий .arx выгружается нормально.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: acad.exe не отпускает .dbx файл
« Ответ #2 : 03-09-2021, 14:09:24 »
Михаил Голубев,
Без исходного кода dbx-файла сложно что-то подсказать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: acad.exe не отпускает .dbx файл
« Ответ #3 : 03-09-2021, 14:12:49 »
Однозначно в событии AcRx::kUnloadAppMsg должен быть вызов:
Код - C++ [Выбрать]
  1. deleteAcRxClass(Твой_класс::desc());
Ну и в событии AcRx::kInitAppMsg:
Код - C++ [Выбрать]
  1. acrxDynamicLinker->unlockApplication(pkt);
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: acad.exe не отпускает .dbx файл
« Ответ #4 : 03-09-2021, 14:22:53 »
Михаил Голубев,
Кстати, для загрузки dbx-файла правильнее использовать acrxLoadModule, а не acedArxLoad. Ну и для выгрузки acrxUnloadModule.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Михаил ГолубевАвтор темы

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Re: acad.exe не отпускает .dbx файл
« Ответ #5 : 03-09-2021, 14:46:07 »
Спасибо за ответ. Попробовал все предложения -- не работает. :(

Загружаю теперь подуль acrxLoadModule() и выгружаю acrxUnloadModule().

Добавил в:

Код - C++ [Выбрать]
  1.          virtual AcRx::AppRetCode On_kInitAppMsg(void* pkt)
  2.         {
  3.  
  4.                 acrxDynamicLinker->unlockApplication(pkt);
  5.  
  6.                 AcRx::AppRetCode retCode = AcRxDbxApp::On_kInitAppMsg(pkt);
  7.  
  8.  
  9.                 acrxRegisterService(DRIPOLYLINE_DBXSERVICE);
  10.  
  11.                 return (retCode);
  12.         }
  13.  
  14.         virtual AcRx::AppRetCode On_kUnloadAppMsg(void* pkt)
  15.         {
  16.                 AcRx::AppRetCode retCode = AcRxDbxApp::On_kUnloadAppMsg(pkt);
  17.  
  18.                 delete acrxServiceDictionary->remove(DRIPOLYLINE_DBXSERVICE);
  19.                 deleteAcRxClass(DRIPolyline::desc());
  20.  
  21.                 return (retCode);
  22.         }
  23.  

Сам класс прилага, но, как сказано, там ничего нет...
« Последнее редактирование: 03-09-2021, 14:50:03 от Александр Ривилис »

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: acad.exe не отпускает .dbx файл
« Ответ #6 : 03-09-2021, 14:56:53 »
А если так:
Код - C++ [Выбрать]
  1.         virtual AcRx::AppRetCode On_kUnloadAppMsg(void* pkt)
  2.         {
  3.                 delete acrxServiceDictionary->remove(DRIPOLYLINE_DBXSERVICE);
  4.                 deleteAcRxClass(DRIPolyline::desc());
  5.                 AcRx::AppRetCode retCode = AcRxDbxApp::On_kUnloadAppMsg(pkt);
  6.                 return (retCode);
  7.         }
Если не поможет - давай полный проект.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Михаил ГолубевАвтор темы

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Re: acad.exe не отпускает .dbx файл
« Ответ #7 : 03-09-2021, 15:12:33 »
Не помогло... Проект прилагается по ссылке.

https://drive.google.com/file/d/1a78fi3brYCckhVu0zNtspVx5A9d7LDVO/view?usp=sharing

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: acad.exe не отпускает .dbx файл
« Ответ #8 : 03-09-2021, 15:37:13 »
Михаил Голубев,
47Мб мусора? Однако! Посмотрю проект вечером.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Александр Ривилис 03-09-2021, 23:56:06

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: acad.exe не отпускает .dbx файл
« Ответ #9 : 03-09-2021, 15:46:36 »
Михаил Голубев,
Хм. Ты сделал dbx-проект с поддержкой .NET? Вот и всё. Его нельзя будет выгрузить.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Михаил ГолубевАвтор темы

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Re: acad.exe не отпускает .dbx файл
« Ответ #10 : 03-09-2021, 15:52:40 »
Спасибо :)

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: acad.exe не отпускает .dbx файл
« Ответ #11 : 03-09-2021, 16:02:56 »
Спасибо :)
Попробуй всё тоже самое проделать без .NET. Вообще же по моему опыту не следует рассчитывать на возможность выгрузки приложений. Я почти всегда перезапусаю при отладке AutoCAD.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Михаил ГолубевАвтор темы

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Re: acad.exe не отпускает .dbx файл
« Ответ #12 : 05-09-2021, 00:04:07 »
Да, все заработало, спасибо.