用VS2010开发AutoCAD2006对应的arx文件

30 篇文章 2 订阅
24 篇文章 2 订阅

        在AutoCAD的发展史中有几次重要的分水岭,其中最重要的一次是cad2006和cad2007之间的分水岭。R14、cad2002、cad2004、cad2005、cad2006都使用“多字符集”,而cad2007、cad2008、cad2009等是采用“Unicode”字符集,即07以后都采用“Unicode”字符集。

         其次,ACAD/ARX的SDK版本都说三年一版,那究竟什么是三年一个版本?简单来说就是CAD04,05,06是一代,CAD07,08,09是一代,CAD 10 11又是一代。同一代ACAD平台上的ARX可以相互通用,可以加载成功。这是为什么呢?根本原因在于,它们所依赖的运行时库不同。举例来说,CAD07,08,09依赖的是mfc80u.dll等这一套,CAD 2010和2011依赖的是mfc90u.dll这一套,它们的底子不一样,所以才会造成加载的问题。
再回到和VS关系的问题上来说,我们知道说07 08 09要用VS2005, 10 11要用 VS 2008。

       本文主要讨论,Autocad2006的开发问题。使用工具如下:

       VS2010 + ObjecArx2012 + Daffodil安装包 + ObjectArx2006 +VC7.0编译器

1)首先安装AutoCAD2006VS2010,再安装ObjecArx2012Daffodil安装包ObjectArx2006

2)安装完后,打开VS2010,点击工具栏上的“文件”---》新建/项目 ——》Visual C++/ObjectARX   -->ObjectARX/DBX/OMF Project

    解决方案:Solu4 ,工程名:ArxProj4---》OK,如图(1)所示。

3)设置开发者前缀和勾选“MFC”支持。如图(2)、图(3)所示。

4)右击工程ArcProj4-->属性,进行配置,具体请看步骤5)——》10)

5)在【配置属性】/【常规】设置输出目录、中间目录都为 .\Debug2006\

      平台工具集选择“v70”,字符集选择“多字符集” ,如图(4)所示。

6)在【配置属性】/【调试】设置cad.exe的路径,比如:E:\Program Files\AutoCAD 2006\acad.exe

7)在【配置属性】/【VC++目录】里,设置VC7.0的包含目录和库目录

    包含目录(即include路径):
    E:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\include;
    E:\Program Files\Microsoft Visual Studio .NET\Vc7\PlatformSDK\Include;
    E:\Program Files\Microsoft Visual Studio .NET\Vc7\atlmfc\include;
    E:\Program Files\Microsoft Visual Studio .NET\Vc7\include;


    库目录(即lib路径):
    E:\Program Files\Microsoft Visual Studio .NET\Vc7\lib;
    E:\Program Files\Microsoft Visual Studio .NET\Vc7\atlmfc\lib;
    E:\Program Files\Microsoft Visual Studio .NET\Vc7\PlatformSDK\lib;

   注意它们之间,要用英文的;隔开。

8)在【C/C++】选择卡里,添加“附加包含目录”:D:\ObjectARX\ObjectArx2006\inc;

                                           添加“解析#using引用”:E:\Program Files\AutoCAD 2006\acad.exe;

      在【C/C++】/【预处理器】,添加预处理定义:_ARX_VEC=0x0162

      在【C/C++】/【语言】,不强制For循环范围中的合规性,兼容VC6的语法。

      在【C/C++】/【预编义头】,修改文件的输出路径: .\Debug2006/$(TargetName).pch  (注意中间的一个斜杠与第一个斜杠不同)

      在【C/C++】/【输出文件】,ASM列表位置: .\Debug2006/ (首尾的两个斜杠不同)

                                                  对象文件名:    .\Debug2006/

                                                 程序数据库文件名:添加 .\Debug2006/

9)在【链接】选项卡里,设置arx文件的存放位置:Debug2006/

                                        附加库目录:D:\ObjectARX\ObjectArx2006\lib;

在【链接】/【输入】,设置附加依赖项:rxapi.lib;acdb16.lib;acge16.lib;acad.lib;acedapi.lib;(一共有5个,用英文的;分开)

模块定义文件:ArxProj4.def

在【链接】/【调试】,设置“生成程序数据库文件”: .\Debug2006/ArxProj4.pdb (注意中间的一个斜杠与第一个斜杠不同)

在【链接】/【调试】,设置导入库:.\Debug2006/ArxProj4.lib

10)在【浏览信息】/【常规】,设置输出文件:.\Debug2006/$(TargetName).bsc(注意中间的一个斜杠与第一个斜杠不同)


进行测试:

11)新建一个.def文件,命名为:ArxProj4,内容如下:

LIBRARY "sanArxProj4"

EXPORTS
	acrxEntryPoint		PRIVATE
	acrxGetApiVersion	PRIVATE

12)注册一个student的命令,在acrxEntryPoint.cpp中,调用下面的语句

// - sanArxProj4.student command (do not rename)
	static void sanArxProj4student(void)
	{
		// Add your code for command sanArxProj4.student here
		acutPrintf(TEXT("I love ObjectArx."));
	}

13)右击工程ArxProj4-->生成,如下:


图(a)成功生成.arx文件

14)按F5启动调试,在cad2006的命令行窗口,输入appload -->加载ArxProj.arx 文件--> student,得到如下结果:


图(b)加载arx文件的执行结果:“I love ObjectArx”


图示操作:


图(1)创建一个ObjectArx工程:ArxProj4


图(2)设置一个开放者前缀,可任意设置


图(3)勾选“MFC”支持

   

图(4)在【常规】里,修改输出目录、中间目录、编译平台与字符集


图(5)选择cad2006\acad.exe的安装路径


图(6)添加VC7.0的包含目录和库目录,分别为FrameworkSDK\include、Vc7\PlatformSDK\Include、Vc7\atlmfc\include、Vc7\include;

Vc7\lib、Vc7\atlmfc\lib、Vc7\PlatformSDK\lib


图(7)设置【C/C++】的附加包含目录和“解析#using引用”目录


图(8)不强制For循环范围的合规性


图(9)设置“预编译头”的输出路径


图(10)设置ASM列表位置、对象文件名、程序数据库文件名的输出路径


图(11)在【链接器】里,设置输出文件和附加库文件



图(12)设置附加依赖项:rxapi.lib acdb16.lib acge16.lib acad.lib acedapi.lib(一共5个),

以及一个 .def文件,可查看第(11)、(12)步骤


图(13)在【连接器】,设置“生成程序数据库文件”


图(14)在【高级】,设置导入库


图(15)在【浏览信息】选择卡,设置输出文件


参考文献:AutoCAD ObjectArx(VC)开发基础与实例教程. 张帆.朱文俊.2014年

                 

         http://bbs.mjtd.com/thread-84765-1-1.html





  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
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对话框
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sanqima

一键三连,多多益善

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值