此問題的引入是因爲一個cad二次開發軟件,客戶要求做成綠色安裝。何爲綠色安裝呢?軟件包copy到一臺電腦上(已安裝CAD),雙擊exe,打開的界面包含自定義的菜單、菜單的圖標能正確顯示、每個功能能使用、能使用自定義的字體、線型、圖塊、圖形模板。
包含以下工作:
(1)搜索當前電腦已安裝的cad版本,指定待打開版本
(2)新定義配置名或添加到已有的配置中
(3)添加支持路徑<保證自定義菜單圖標顯示,打開的圖能自動搜索到字體、線型>
(4)啓動對應版本自定義的arx<保證功能使用>
(5)添加自定義菜單<保證菜單顯示>
下面是修改註冊表實現的方法:
cad版本信息:[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\]
指定版本缺省打開配置:[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.0\ACAD-201:804\Profiles] @=" 缺省配置"
支持路徑:[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.0\ACAD-201:804\Profiles\<<配置>>\General] "ACAD"="......"
......
arx自動加載:acad.rx文件
自定義菜單的顯示着實折磨了我好久,方法也想了很多,糾結阿糾結阿:
(1)寫入註冊表法,不知啥原因,反正菜單沒顯示出來
(2)在arx程序加載時acedCommand調用命令,cad完全打開後手動加載arx菜單是顯示了,不過我們的目的是cad啓動時加載命令,亦失敗了
(3)lisp程序加載命令,因此我寫了個加載命令的acaddoc.lsp放在搜索路徑下,菜單是能顯示了可是和殺毒軟件不友好,總是被殺毒軟件殺了~~~~
(4)經歷了總總無奈後糾結地繼續探索,此處特別鳴謝北京易樓的網友,在他的推薦下我看了“免費工具 [易樓AutoCAD插件管理器20110323版]”,貼上關鍵函數
#if _MSC_VER < 1500 // MFC 8.0 or earlier
extern "C" Acad::ErrorStatus ads_queueexpr(const TCHAR* lisp_expr );
#endif
ps
:早期版本需導出此函數
問題終於解決,寫下此文紀念走過的路。
參考文章:
CAD啓動時自動加載程序的研究http://hi.baidu.com/zzdiqarealqsuxr/item/9a607e908068008659146109
易樓AutoCAD插件管理器20110323版http://www.easylou.com/