2、Arx二次开发创建第一个应用程序

一、本节课程

Arx二次开发创建第一个应用程序

二、本节要讲解的知识点

1、手动创建ARX的应用的步骤。

2、应用向导创建ARX应用程序的步骤。

三、具体内容

1、需求:创建一个Hello World应用程序,在AUTOCAD的命令行输出“Hello World”。

2、手动创建一个ARX应用程序:C++开发ARX应用程序,实际上我们ARX应用程序就是一个动态链接库,它的后缀只是没用.DLL来表示而已,是用.ARX 来表示的。与常规的DLL程序一样,ARX程序在AUTOCAD调用时加载,与AUTOCAD本身的代码是相互独立的。

设置编译器的参数,包括代码的生成方式。

设置连接器的参数,包括输出文件的名称,添加链接库文件等。

新建一个DLL文件,引用ARX API的头文件和库文件,然后设置编译器参数和连接器参数。将生成文件的后缀改为“.DLL”文件即可。在代码里面创建两个函数分别用户初始化和卸载ARX程序。 void InitApp(); void UnloadApp();

具体请参见收费课程C++ ARX开发的免费试听部分。

3、向导创建一个ARX应用程序:

1ObjectARX应用程序:在AUTOCAD中调用。

2ObjectDBX应用程序:在所有的REALDWG宿主程序中调用(包括AUTOCAD,自定义实体开发的时候,可以创建此类程序。

3Console程序:高版本的AUTOCAD出现的一种开发方式。(AUTOCAD2013以后出现的一种新的开发方式),将AUTOCAD Console应用程序放置在服务器端(比如说服务器端自动打印),特点就是不需要交互,运行速度很快。

4、向导自动帮我们生成了一些头文件和源文件。其中acrxEntryPoint.cppARX程序的入口点。

 1ARX模块加载时执行的函数

virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {

AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;

      //通常需要加入的代码,在这里可以放入软件锁检测的代码。

return (retCode) ;

}

   2ARX模块卸载时执行的函数

virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {

AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;

return (retCode) ;

}

5、此外向导还创建了命令的模板,我们可以根据模板来定义自己想要定义的命令:MyCommand。

1)第一处修改

ACED_ARXCOMMAND_ENTRY_AUTO(CArxProject2App, yunyouMyGroup,CommandABC, CommandABC, ACRX_CMD_MODAL, NULL)

2)第二处修改

static void yunyouMyGroupCommandABC () {

}

 

6、在命令中实现一个HelloWorld的打印。

static void yunyouMyGroupCommandABC () { acutPrintf(TEXT("Hello world!"));}

四、总结

1、手动创建ARX的应用的步骤请参见收费课程的试听部分。

2、应用向导创建ARX应用程序的步骤。

3、如何在ARX中添加命令和命令实现函数。

4、创建第一个应用程序Hello World

转载于:https://www.cnblogs.com/yunyouxy/p/objectarx_rumen.html

ObjetArx2004+VS2002前提:安装好以上两种软件创建步骤:1. 新建项目 Visual C++项目->选择ObjectARX/DBX/OMF->键入"Demo"项目名称 ->MFC Support中勾选Enxtension Dll->using MFC Shared DLL,其他取默认值2. 删除文件 在“解决方案资源管理器”中删除向导生成的acrxEntryPoint.cpp,DocData.cpp,DocData.h文件 同时可以在文件夹下彻底删除文件,后续步骤并不需要用到这3个文件3. 添加Demo.h文件 同时在Demo.h文件中加入代码 #pragma once #include"resource.h"3. 创建一个普通对话框,基于CDialog类,并生成类CDlgDemo4. 打开Demo.cpp文件,对这个文件要进行比较多的操作 ·注释掉"AFX_EXTENSION_MODULE DemoExtDLL ={ NULL, NULL };"这一句 ·添加#include "DlgDemo.h"头文件 ·添加函数DlgDemo(),具体见附件源文件代码 ·添加initApp(),unloadApp() ·注释掉DllMain中的"_hdllInstance =hInstance ;" ·在文件的末尾添加acrxEntryPoint() 这里需要提醒一下的是关于AC_IMPLEMENT_EXTENSION_MODULE(DemoDLL)的使用 涉及到了Dll资源的使用,所以DemoDLL在这里相当于一个连接AutoCAD和MFC的纽带, 保持整个Demo.cpp中,DemoDLL的一致5. 项目设置 菜单"工具"->"选项"->"项目"->"包含文件"->添加ObjectARX2004的inc目录 ->"库文件"->添加ObjectARX2004的lib目录6. 生成解决方案 一切pass,有2个警告rxapi.lib(libinit.obj) : warning LNK4099: 未发现 PDB“msvc.pdb” acedapi.lib(acedstub.obj) : warning LNK4099: 未发现 PDB“corehdr.pdb” 不用去管它,ObjectARX开发文档已经说明了这个问题的存在,不影响使用#至此为止,我们已经生成了MarkDemo.arx,在Debug目录下可以找到,下面将继续介绍如何在 AutoCAD2004菜单中自动加载Demo对话框
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值