乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 184|回复: 9

Autocad2005编程指南(1)用VB.net编写Arx程序

[复制链接]

32

主题

150

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
278
发表于 2004-3-30 09:17:00 | 显示全部楼层 |阅读模式
Arx功能强大而VB.net是简单易用且丰富多彩,过去常常梦想(不是我个人的梦想,而是所有爱好者的梦想)二者合一. 此梦终于成真.按惯例,我们来编写一个简单程序,使得在中运行"test"这个命令时,弹出对话框显示"hello wold".
弹出对话框当然用一句msgbox "hello word". 我们要介绍的是如何新建一个工程并注册一个命令.
(step.1)在Visual Studio .NET中建立一个VB工程,选用类库(classlibrary),
(step2)增加引用(reference), 找到autocad下的以下两个文件加入之
acdbmgd.dll                 acmgd.dll.
(step 3) 在你的主class中(本次没做任何修改,所以是class1),加入以下:Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.Runtime
(step 4)注册命令
在class1类内部,写入
_Public Shared Sub MytestCmd()msgbox "hello wold"End Sub        (step5) 编译(step6)在AutoCAD中,用netload加载你刚刚编译成的dll文件(step7)在AutoCAD命令行中键入"test"回车(完)
回复

使用道具 举报

32

主题

150

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
278
发表于 2004-3-30 10:29:00 | 显示全部楼层
现在来谈些虚的东西(1)所谓objectarx,在AutoCAD2005实际分成了两个,一是原来的objectarx库(如各种lib文件),二是所谓的objectarx managed wrapper classes. 后者和前者基本上一样,只是换了个马甲而已.不同之处容后讨论.
(2)我们现在讨论的就是objectarx managed wrapper classes,他们存放在acdbmgd.dll                和 acmgd.dll中. 我们可能都明白了"mgd"的意思吧,那就是managed的简写.
关于managed,是个.net的概念,如果对visual.net不太常用,应当先去了解这方面的内容.
(3)Objectarx与objectarx managed wrapper classes的映射关系
AcDb
Autodesk.AutoCAD.DatabaseServices AcRx
Autodesk.AutoCAD.Runtime AcEd
Autodesk.AutoCAD.ApplicationServices AcUt
Autodesk.AutoCAD.DatabaseServices, Autodesk.AutoCAD.ApplicationServices AcCm
Autodesk.AutoCAD.Colors AcGe
Autodesk.AutoCAD.Geometry AcGi
Autodesk.AutoCAD.GraphicsInterface AcLy
Autodesk.AutoCAD.LayerManager AcPl
Autodesk.AutoCAD.PlottingServices
(4)二者的不同之处有多个方面,我们在这里介绍全局函数和反应器. 在managed wrapper中没有全局函数了,那这样是不是很不爽?不用担心,原来的objectarx中的全局函数,被打包到一些新的类里边,成了这些类的方法或属性.
而反应器则被events替代了.这样更加简单了.
(5)注册命令时的注意事项
在上例中,我们使用了Public Shared Sub MytestCmd().这个Shared关键字,表明这个命令是static的,而不是instance的.
所谓instance的命令,也就是说,如果你open了3个dwg文件,那么你所注册的命令将会有3个copy,每个文档都有自己的copy,这样就不会发生变量冲突了.
回复

使用道具 举报

41

主题

657

帖子

9

银币

中流砥柱

Rank: 25

铜币
821
发表于 2004-3-30 18:23:00 | 显示全部楼层
好文章啊,但是用VB写的ARX和OBJECTARX在本质上有什么区别吗?
回复

使用道具 举报

46

主题

261

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
445
发表于 2004-3-30 21:10:00 | 显示全部楼层

这VB不是VB6,是VB。NET吧! 希望尽快看到(2)、(3)……哦,不好意思。没仔细看标题,已说是VB。NET了!
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2004-3-31 07:51:00 | 显示全部楼层
現在AUTOCAD2005已出來了麼!
回复

使用道具 举报

46

主题

261

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
445
发表于 2004-3-31 08:37:00 | 显示全部楼层
这种VB。NET开发的ARX程序能否自定义实体,如画一抛物线(y=x*x)
回复

使用道具 举报

32

主题

150

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
278
发表于 2004-3-31 08:56:00 | 显示全部楼层

以前的objectarx与wrapper classes本质上没有多大的区别,你看看上面的映射关系就知道.不可以自定义实体;
2005正式版出来有一段时间了,官方有没有正式发布则不太清楚.
大家可以放心去往C#.net和vb.net方面发展,因为这是微软和autodesk所致力的方向,肯定不会吃亏的.
按官方的说法,2005的开发还是用.net2002, 不推荐用.net2003
回复

使用道具 举报

46

主题

261

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
445
发表于 2004-3-31 09:20:00 | 显示全部楼层

我装的是NET2003,您的程序也能正常运行.
是不是还有别的什么问题?
请您推荐一本这方面的教科书.先谢谢了!
回复

使用道具 举报

32

主题

150

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
278
发表于 2004-3-31 10:47:00 | 显示全部楼层
他们不推荐使用2003,可能是因为他们的工作(包括autoCAD2005本身)都是用.net2002做的.
我常常用.net2002开发R14的程序,好象没什么问题. 依此类推,用.net2003开发2005,也应当不会有很多问题.
在arx的帮助文档中有这个问题的说明.
======================
教科书是没有的,自己研究吧.
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2004-3-31 20:46:00 | 显示全部楼层
不错,但这些内容帮助文件中确实找不到,能不能找到相关的一些文档。
下面这个程序可以命令行中输入“Mccad”,该命令是在命令行中显示“大家好,这里是乐筑天下”
  1. Imports Autodesk.AutoCAD.ApplicationServices
  2. Imports Autodesk.AutoCAD.Runtime
  3. Public Class A
  4.         _
  5.        Public Function f()
  6.                CommandLinePrompts.Message("大家好,这里是乐筑天下!")
  7.        End Function
  8. End Class
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 02:11 , Processed in 0.515013 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表