明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2800|回复: 4

ArxCreatorR14——ARX编程助手

[复制链接]
发表于 2007-4-22 17:29 | 显示全部楼层 |阅读模式

 

VC6下普通(非MFCObjectARX工程的建立

设置inclued,和library库的路径

 一、创建新工程

由于ARX程序本质上是一个动态库,因此首先创建一个动态库工程。选择File菜单的New命令,创建一个一个新工程。选择工程类型为Win32 Dynamin-Link LibraryWin32动态库),并且输入工程名称为ARXHello ;最后,按OK按钮即可。
  创建完工程以后,接下来按照下面的步骤来设置ARX程序的编译开关(在此以Win32 Debug版本为例,并且首先保持默认值)。

首先,选择“Project/Settings”菜单命令,在弹出的对话框中选择“C/C++”属性页。

1.选择Category(目录)为Code Generation。确保“Use run-time library”项为Mutithreaded DLLDebug MutithreadedDLL。一般情况,该选项可以采用这两者之一,不过有时在编译无法通过时可以考虑改变该项设置。

2.选择CategoryPreprocessor,在Preprocessor definitions列表中添加“ACRXAPP”“RADPACK”

其次,设置“Link”属性。

1.选择CategoryGeneral,将Output file name(输出文件名)为ArxHello.arx(一般情况ARX程序即动态库以.arx为后缀,以便于区别其它Win32动态库);另外,将acad.libacedapi.librxapi.lib等输入库添加到“Object/LIBRARY modules”列表中(这三个库文件基本上可以满足通常的ARX编程任务)。

2.选择CategoryInput;然后,在“Ignore libraries”中输入msvcrt.lib。该项的含义是通知编译程序在编译工程时忽略msvcrt.dll缺省库文件(这是一个C运行库)。因为ARX的库文件与此有冲突,编译工程时将出现警告信息,但是该警告错误并不会影响ARX程序的运行性能。如果用户希望在ARX编程中使用C运行库函数(如sprintf等),那么就不能忽略该库文件。

3.选择CategoryOutput;然后,在“Base address(基地址)输入0x1c000000;在“Entry-point symbol(函数入口标志)输入DllEntryPoint@12。这两项是供AutoCAD14在加载ARX程序(即动态库)时内部使用,在ARX编译设置中必不可少。

二、编写源代码

首先,在工程中添加一个.cpp文件(本例命名为ArxMain.cpp),在其中添加如下代码。

//A sample ARX program,like MFC

program named "Hello World!"
#include <aced.h>


void ArxTest()

{

ads_alert("OK,ARXprogramming!");

//显示一个包含指定字符串的对话框

return;

}


void initApp()

{

/*AutoCAD14登记一个定制的命令*/

acedRegCmds->addCommand("ASDK_DWG_COMMANDS",

"TEST","TEST",ACRX_CMD_MODAL,ArxTest);

return;

}


void unloadApp()

{

acedRegCmds->removeGroup

("ASDK_DWG_COMMANDS");

return;

}

extern "C" AcRx::AppRetCode

acrxEntryPoint(AcRx::AppMsgCode msg,void* pkt)

{

switch(msg){

case AcRx::kInitAppMsg:

  acrxDynamicLinker->unlockApplication(pkt);

//允许应用程序能够卸载

initApp();//初始化应用程序

break;

case AcRx::kUnloadAppMsg:

  unloadApp();

//应用程序退出前进行必要的清理

break;

case AcRx::kLoadDwgMsg:

  break;

}

return AcRx::kRetOK;

}

  本例中,ArxTest函数是用户为实现一定目的而定义的函数,其它只是ARXAutoCAD14)的接口。在本例中使用了几个ADS/ARX函数(或宏),如ads_alert()acedRegCmds->addCommand等。其中addCommand宏是向AutoCAD14登记用户定制的命令(即TEST),只要用户在AutoCAD14Command提示符下键入TEST就可以执行ArxTest()函数模块。acrxDynamicLinker->unlockApplication是通知AutoCAD14该应用程序可以卸载,即通过Arx/Unload命令卸载应用程序。

  另外,在当前工程中添加一个.DEF文件,然后添加如下代码。


LIBRARY ARXHello

DESCRIPTION 'ARX program for AutoCADR14'


EXPORTS

acrxEntryPoint

_SetacrxPtp

acrxGetApiVersion

  同任何动态库的创建一样,LIBRARY节的内容必须要与工程输出的文件名相同。在EXPORTS节中,通常情况除了acrxEntryPoint函数外,还声名SetacrxPtpacrxGetApiVersion两个函数(它们已经在rxapi.lib中输出,因此不用添加它们的实现代码),这也是一般ARX编程所常用的.DEF文件设置。

  这样就可以编译该工程了,最后生成ARXHello.arx文件。在AutoCAD14中可以使用Arx/Load命令(或Tool/Load Application菜单命令)来加载AutoCAD应用程序;然后,在Command提示符下键入test,那么将弹出一个对话框。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ArxCreatorR14­——ARX编程助手(见附件)

 

上述手工建立工程的方法很慢,影响大家学习的积极性。为了方便大家学习Object ARX二次开发,提高学习效率,我特意写了ArxCreatorR14(请先按上述方法设置inclued,和library库的路径)。

程序主界面如下

单击“浏览(B”按钮,探出路径选择对话框,如下图:

单击“确定(O)”按钮, 提示“工程创建成功!”

打开刚刚创建的工程文件夹,可以看到程序已帮我们生成了三个文件,如下图:

双击Hello.dsp(或启动VC++6后,打开),在VC++6.0 IDE中打开项目,编译,连接后生成*.arx文件

AutoCAD R14中加载,测试即可。(见附件)

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2011-12-12 13:11 | 显示全部楼层
好东西收下了,谢谢楼主
发表于 2020-4-20 13:26 | 显示全部楼层

谢谢楼主分享
发表于 2020-9-13 15:02 | 显示全部楼层
只能用于VC6?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-18 01:00 , Processed in 0.219561 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表