- 本項目使用手動創建,意為不使用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文件。
