Autocad2005编程指南(1)用VB.net编写Arx程序
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"回车(完) 现在来谈些虚的东西(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,这样就不会发生变量冲突了. 好文章啊,但是用VB写的ARX和OBJECTARX在本质上有什么区别吗?
这VB不是VB6,是VB。NET吧! 希望尽快看到(2)、(3)……哦,不好意思。没仔细看标题,已说是VB。NET了! 現在AUTOCAD2005已出來了麼! 这种VB。NET开发的ARX程序能否自定义实体,如画一抛物线(y=x*x)
以前的objectarx与wrapper classes本质上没有多大的区别,你看看上面的映射关系就知道.不可以自定义实体;
2005正式版出来有一段时间了,官方有没有正式发布则不太清楚.
大家可以放心去往C#.net和vb.net方面发展,因为这是微软和autodesk所致力的方向,肯定不会吃亏的.
按官方的说法,2005的开发还是用.net2002, 不推荐用.net2003
我装的是NET2003,您的程序也能正常运行.
是不是还有别的什么问题?
请您推荐一本这方面的教科书.先谢谢了! 他们不推荐使用2003,可能是因为他们的工作(包括autoCAD2005本身)都是用.net2002做的.
我常常用.net2002开发R14的程序,好象没什么问题. 依此类推,用.net2003开发2005,也应当不会有很多问题.
在arx的帮助文档中有这个问题的说明.
======================
教科书是没有的,自己研究吧. 不错,但这些内容帮助文件中确实找不到,能不能找到相关的一些文档。
下面这个程序可以命令行中输入“Mccad”,该命令是在命令行中显示“大家好,这里是乐筑天下”
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.Runtime
Public Class A
_
Public Function f()
CommandLinePrompts.Message("大家好,这里是乐筑天下!")
End Function
End Class
页:
[1]