ADN Open CIS
Сообщество программистов Autodesk в СНГ

28/01/2021

Команда для конвертации 3D-модели AutoCAD в DWFX

Было внутреннее обсуждение возможности использования 3DDWF в скриптах. В настоящий момент команда 3DDWF вызывает диалог выбора имени файла для сохранения экспортируемой модели. Этот диалог препятствует выполнению скриптов, содержащих команду 3DDWF. Хотелось бы иметь команду, которая бы выполняла функцию экспорта без диалога в скрипте. Ниже код который использует технику получения адреса экспортируемой функции (getSymbolAddress ) из динамически линкуемой библиотеки (DLL) и вызывает её с параметром – именем файла для экспорта. Это выгляди так:

Код - C++: [Выделить]
  1. #define PUBLISH_DLL     _T("AcPublish.crx")
  2. #define PUBLISH_SVC     _T("AdskPublish")
  3. typedef void (*EXPORT3DDWF)(bool, const ACHAR*, int);
  4.  
  5. void dwgoutcli(){
  6.     TCHAR fileName[MAX_PATH] = _T("");
  7.     int res = acedGetString(1, _T("\nПожалуйста укажите имя DWFX файла: "), fileName);
  8.     if (res != RTNORM){
  9.         return;
  10.     }
  11.     bool bCancelled = false;
  12.     int isFromCLI = 1;
  13.     if (!acrxServiceIsRegistered(PUBLISH_SVC)) {
  14.             if (!acrxDynamicLinker->loadModule(PUBLISH_DLL, false, true))
  15.             return;
  16.             }
  17.     // Получаем адрес сервиса export3dDWF.
  18.    
  19.     EXPORT3DDWF pFunc = (EXPORT3DDWF) acrxDynamicLinker->
  20.         getSymbolAddress(PUBLISH_SVC, "export3dDWF");
  21.     if (pFunc == NULL) {
  22.         assert(FALSE);
  23.         return;
  24.     }
  25.     pFunc(bCancelled, fileName, isFromCLI);
  26. }

 

Полный проект: https://github.com/MadhukarMoogala/dwfout

Источник: https://adndevblog.typepad.com/autocad/2021/01/dwfxout-a-scriptable-command-to-convert-autocad-3d-model-to-dwfx.html

 

Автор перевода: Александр Ривилис
Опубликовано 28.01.2021
Отредактировано 28.01.2021 в 14:04:13