CAD ObjectARX二次开发之HelloWorld手动创建
一、新建类库【HelloWorld手动创建】项目
二、导入Arx的相关库依赖
1、附件包含目录:即ObjectARX SDK的解压包的头文件目录
D:\Autodesk\Autodesk_ObjectARX\ObjectARX 2010\inc
D:\Autodesk\Autodesk_ObjectARX\ObjectARX 2010\inc-x64
2、附加库目录:即ObjectARX SDK的解压包的lib文件目录,根据需要导入64位或者32位
D:\Autodesk\Autodesk_ObjectARX\ObjectARX 2010\lib-x64
3、附加依赖项:开发需要的常用连接库,可根据需要自行添加。
rxapi.lib
acdb18.lib
acge18.lib
acad.lib
acedapi.lib
1、修改编译目标平台为X64
2、添加附加包含目录
3、添加附加库目录
4、添加附加依赖项
注意点击应用和保存,检查确认是否配置成功!
三、编写代码
1、注释掉默认生成的类头文件中using namespace System或者直接删除头文件。
不处理则会报如下错误:
2、编写代码如下:
// 这是主 DLL 文件。
#include "stdafx.h"
#include "tchar.h"
#include <aced.h>
#include <rxregsvc.h>
//函数声明
void HelloWorld();
//注册命令,初始化应用
void initApp(){
//命令注册
//cmdGroupName:命令组名, cmdGlobalName:全局命令名, cmdLocalName:本地命令名, commandFlags:命令标记, FunctionAddr:命令执行函数, UIContext:UI
acedRegCmds->addCommand(_T("HELLOWORLD_COMMANDS"), _T("Hello"),_T("HelloDemo"), ACRX_CMD_TRANSPARENT,HelloWorld);
}
//移除命令,卸载应用
void unloadApp(){
acedRegCmds->removeGroup(_T("HELLOWORLD_COMMANDS"));
}
//命令执行函数
void HelloWorld(){
acutPrintf(_T("\nHello World + Hello World"));
}
//外部函数,通过此函数接受CAD消息,进行初始化加载
extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg,void* pkt)
{
switch(msg)
{
case AcRx::kInitAppMsg://App插件初始化消息
{
initApp();
break;
}
case AcRx::kUnloadAppMsg://App插件卸载消息
{
unloadApp();
break;
}
default:
break;
}
return AcRx::kRetOK;
}
3、在源文件目录下添加模板定义文件
LIBRARY "Demo_HelloWorld1"
EXPORTS
acrxEntryPoint PRIVATE
acrxGetApiVersion PRIVATE
四、编译测试
1、修改生成文件格式为arx, 编译
说明:CAD的arx文件本质就是DLL动态库文件
2、打开CAD加载运行
执行HeelloDemo命令,显示打印结果