AutoCAD ObjectARX 二次開發(2020版)--2,手動創建CAD二次開發項目--
- 本項目使用手動創建,意為不使用SDK模板。
- 從Visual Studio的“文件”下拉菜單中,選擇“新建”->“項目...”。
- 在出現的“新建項目”對話框的“項目類型:”樹中,單擊“ Visual C ++”節點。
- 在模板列表中選擇“ Windows桌面向導”。
- 在項目名稱編輯框中輸入所需的項目名稱,例如“ Step01”,然后確定
- 確定后彈出對話框,從應用程序類型下拉選項中選擇動態鏈接庫。
項目創建成功之后,開始配置項目屬性。右鍵點擊解決方案,選擇屬性。依次配置下面內容:
“ C / C ++”->“常規”:
在“附加包含目錄”中,添加ObjectARX SDK的頭文件路徑。
將“警告等級”設置為“ 1級”。
調試信息格式選擇 程序數據庫(/Zi)
“ C / C ++”->“代碼生成”:
在“運行庫”中,選擇“多線程DLL(/MD)”。
“ C / C ++”->“預處理器”:
刪除宏_DEBUG。
“ 配置屬性”->“常規”:
平臺工具集選擇Visual Studio 2017 (v141)
目標文件擴展名修改為 .arx
配置類型 改為 動態庫.dll
“鏈接器”->“輸入”:
“附加依賴項”中,添加以下庫:
rxapi.lib
acdb23.lib
acge23.lib
acad.lib
ac1st23.lib
accore.lib
“模塊定義文件” 添加 ArxProject.def
“鏈接器”->“常規”:
“輸出文件” 修改為 $(OutDir)AdskStep01_2020.arx
“附加庫目錄” 中添加SDK的庫文件夾路徑(存放Lib文件的文件夾)
配置完畢,現在我們添加一個 .cpp文件到項目中。名字任意。注意,以后所有的SDK都代指ObjectARX 2020版。
#include "stdafx.h" #include "tchar.h" #include <aced.h> //這是SDK里的頭文件 #include <rxregsvc.h>//這是SDK里的頭文件 //這是編程框架需要的函數,加載程序時調用,類似構造函數。里面調用了CAD API,向CAD注冊了一個新指令 void initApp() { acedRegCmds->addCommand(_T("HELLOWORLD_COMMANDS"), _T("Hello"),_T("Bonjour"), ACRX_CMD_TRANSPARENT,helloWorld); } //這是編程框架需要的函數,卸載程序時調用,類似析構函數 void unloadApp() { acedRegCmds->removeGroup(_T("HELLOWORLD_COMMANDS")); } //這是我們自己的函數,acutPrintf是SDK里的輸出函數,類似C語言的printf。 void helloWorld() { acutPrintf(_T("\nHello World!")); } //這是CAD調用插件的入口函數,類似于程序的main函數。 extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt) { switch (msg) { case AcRx::kInitAppMsg: acrxDynamicLinker->unlockApplication(pkt); acrxRegisterAppMDIAware(pkt); initApp(); break; case AcRx::kUnloadAppMsg: unloadApp(); break; default: break; } return AcRx::kRetOK; }
最后,添加def文件
快捷鍵Ctrl + Shift + A
- 在“添加新項目”對話框中,選擇項目“ Def File(.def)”。
- 在“名稱:”編輯框中輸入“ ArxProject”。然后打開,輸入以下內容
EXPORTS acrxEntryPoint PRIVATE acrxGetApiVersion PRIVATE
現在生成項目,應該是0警告,0錯誤,得到一個arx文件。
ARX文件的機制類似于DLL文件,加載到CAD程序中,然后通過CAD的命令來調用,所以沒有main函數。
整個程序的中心思想是,設計自己的函數,然后把這個函數通過回調函數注冊給CAD程序,打開CAD去調用自己的函數。
下一節我們來執行ARX文件。