找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4285|回复: 5

[分享] 用VS2010开发AutoCAD2006对应的arx文件

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-10-23 12:17:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 newer 于 2014-10-23 12:21 编辑

http://blog.csdn.net/sanqima/article/details/40391003


        在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 + ObjectArx2012 + Daffodil安装包 + ObjectArx2006 +VC7.0编译器


1)首先安装VS2010,再安装ObjectArx2012、Daffodil、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引用”:D:\ObjectARX\ObjectArx2006;
      在【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-->生成,如下:
4.jpg


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

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


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


图示操作:
6.jpg

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

7.jpg

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

8.jpg

图(3)勾选“MFC”支持

    9.jpg

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

10.jpg

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

11.jpg

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

12.jpg

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

13.jpg

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

14.jpg

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

15.jpg

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

16.jpg

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

17.jpg

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

18.jpg

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

19.jpg

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

20.jpg

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


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



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 92个

财富等级: 招财进宝

发表于 2014-10-23 21:30:06 | 显示全部楼层
大牛无处不在,赞一个
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2014-11-8 22:59:52 | 显示全部楼层
貌似超级详细,,赞,,,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-11-17 21:06:50 | 显示全部楼层
按照上述步骤设置后,编译的时候出错,说“.net framework 2.0/3.0/3.5 以v90平台工具集为目标。请确保在计算机上安装了 vs2008”,难道还要装个VS2008才行?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 9个

财富等级: 恭喜发财

发表于 2019-3-13 16:50:17 | 显示全部楼层
最近要编译低版本的ARX,VS2012+Daffodil+VC70绿化版,总是提示MSB8020错误,试了好多办法都没用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 14个

财富等级: 恭喜发财

发表于 2019-4-6 15:37:29 | 显示全部楼层
感谢分享,收藏学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-22 12:55 , Processed in 0.450466 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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