|
发表于 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,这样就不会发生变量冲突了. |
|