CAD ObjectARX二次开发之HelloWorld手动创建

一、新建类库【HelloWorld手动创建】项目

image

二、导入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

image

2、添加附加包含目录

image

3、添加附加库目录

image

4、添加附加依赖项

image

注意点击应用和保存,检查确认是否配置成功!

三、编写代码

1、注释掉默认生成的类头文件中using namespace System或者直接删除头文件。

image

不处理则会报如下错误:

image

2、编写代码如下:

image

// 这是主 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、在源文件目录下添加模板定义文件

image

LIBRARY	"Demo_HelloWorld1"
EXPORTS
acrxEntryPoint PRIVATE
acrxGetApiVersion PRIVATE

四、编译测试

1、修改生成文件格式为arx, 编译

说明:CAD的arx文件本质就是DLL动态库文件

image

image

image

2、打开CAD加载运行

image

执行HeelloDemo命令,显示打印结果

image

posted @ 2022-07-06 09:34  百年一梦  阅读(1075)  评论(0编辑  收藏  举报