VC6.0中ObjectARX应用程序的加载与运行

30 篇文章 2 订阅
24 篇文章 2 订阅
         使用  ObjectARX ,首先要确定你的目标平台,获得适当的开发环境。如果你是在 AutoCAD2002  平台上开发,你就需要具备下面的工具和软件:

             � AutoCAD 2002 中文版或英文版。

            � VC++ 6.0 英文版。

             � ObjectARX 2002 开发包。

       一般来说,ObjectARX 开发包的版本和AutoCAD 的版本是对应的。在开发工具方面,AutoCAD R14AutoCAD 2000 AutoCAD 2002 平台上使用的开发工具是VC++ 6.0

AutoCAD 2004 AutoCAD 2005 平台上使用的开发工具是VC.NET 2002

       

      虽然 ObjectARX 程序输出文件的后缀是.arx,但是它实际上是一种动态链接库(DLL)。与常规的Windows 动态链接库相同,ObjectARX 程序是在AutoCAD 调用它时加载的,与AutoCAD 应用程序自身的代码相互独立。ObjectARX 是专门用于AutoCAD 应用程序的动态链接库,因此创建ARX 程序时需要进

行一些设置工作:

         � 设置编译器的参数:包括代码的生成方式、ObjectARX 头文件的路径。

         � 设置链接器的参数:包括输出文件的名称、添加链接库文件、指定ObjectARX 库文件的路径。


         下面继续在VC6.0中配置ObjectARX的运行环境。

一、打开VC6.0,新建 一个【Win32 Dynamic-Link Library】的工程Hello4。

1)选择【Project/Setting】菜单项,系统会弹出【Project Settings】对话框。在【General】选项卡中,从对话框左侧的【Settings for:】组合框中选择【All configurations】选项,表明设置的参数对调试版本和发行版本同样有效。如图(1)所示:


图(1)选择“All configurations”选项卡

  2)设置编译器参数。进入【Project Settings】对话框的【C/C++】选项卡,从【Category:】组合框中选择【Code Generation】选项,从【Use run-time library】组合框中选择【MultithreadedDLL】选项。从【Category:】组合框中选择【Preprocessor】选项,在【Additional include directories:】
文本框中输入ObjectARX头文件的路径(笔者使用的路径为“D:\ObjectARX 2002\inc”,请根据自己的开发包的安装位置设置路径),如图(2)、(3)所示。


图(2)为Code generation选择“Multithreaded DLL”


图(3)为Preprocess添加路径“D:\ObjectARX2002\inc”

3) 设置输出文件。在【Project Settings】对话框中,进入【Link】选项卡。确保【Category:组合框中选择【General】选项,从对话框左侧的【Settings for:】组合框中选择【Win32 debug选项,在【Output File Name:】文本框中将文件的扩展名由dll修改为arx,如图(4)所示。

图(4)在Link选项卡,将Debug版本的.lib改为.arx

       注意:之所以将文件扩展名修改为arx,是因为AutoCAD 中默认的ARX 程序扩展名是arx

       从对话框左侧的【Settings for:】组合框中选择【Win32 release】选项,在【Output File Name:文本框中同样将文件的扩展名由dll 修改为arx。之所以分成两步来修改调试版本和发行版本的文件扩展名,是因为两个文件不是放置在同一个路径下。后面你将会看到,扩展名为arx的文件是ObjectARX 编程的目标文件,AutoCAD 调用该文件而执行ARX 程序。如图(5)所示。


图(5)在Link选项卡,将Release版本的.lib改为.arx

4)设置连接器连接的库文件。从对话框左侧的【Settings for:】组合框中选择【All configurations】选项,其它的参数设置对调试版本和发行版本是完全相同的。在【Object/library module】文本框中输入该程序所要使用的ARX库名称,这里输入了rxapi.lib、acrx15.lib、acutil15.lib和acedapi.lib四个文件,每个文件之间用空格隔开。

        如图(6)所示。


图(6)在Link选项卡,添加4个lib

5)设置连接器的附加库文件路径。从【Category:】组合框中选择【Input】选项,在【Additional Library Path:】文本框中输入ObjectARX库文件的路径(同样需要根据你的ARX安装包路径来设置,笔者输入的是“D:\ObjectARX 2002\lib”),如图(7)所示。


图(7)在Link里,为Input,添加ObjectARX的lib路径

6)在【Project settings】对话框中,单击【OK】按钮,完成工程的参数设置。到这里,工程的设置工作已经完成,后面我们将要添加一些代码,实现在AutoCAD 命令窗口中显示“Hello World!”的功能。

二、新建一个.cpp文件和.def文件,名称分别为Hello.cpp、Hello.def。

//Hello.cpp的内容如下:

#include <aced.h>
#include <rxregsvc.h>
void InitApp();
void UnloadApp();
void HelloWorld();

void InitApp()
{
	//使用AutoCAD命令注册一个新
	acedRegCmds->addCommand("Hello4",
		"Hello", //输入这两个命令均可以在AutoCAD中运行
		"Hello",
		ACRX_CMD_MODAL,
		HelloWorld);
}

void UnloadApp()
{
	//删除命令组
	acedRegCmds->removeGroup("Hello4");
}

void HelloWorld()
{
	acutPrintf("\nHello world!");
}

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;
}

//Hello.def的内容如下:

LIBRARY Hello4
DESCRIPTION "First ARX Application."

EXPORTS 
acrxEntryPoint         PRIVATE
acrxGetApiVersion      PRIVATE

三、编译该工程,并加载.arx文件。

      按F5编译.cpp文件,如果编译无误,这时会弹出一个“Executable file name”对话框,如下:


图(8)选择AutoCAD的安装路径

   按OK键后,AutoCAD会自动打开,在cad2002的命令行窗口里输入命令:

          appload

    这时会加载.arx文件,找到..\Debug\Hello4.arx文件,点击“加载”--》“关闭”,在cad2002的命令行窗口里输入命令:

          Hello

   效果如下:


图(9)加载.arx,并执行相应的命令


参考文献: 张帆、朱文俊 《AutoCAD ObjectARX(VC) 开发基础与实例教程》.2014年.中国电力出版社


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值