淘先锋技术网

首页 1 2 3 4 5 6 7

关于AutoCAD VBA中类模块的理解

最近学习了一点CAD VBA 二次开发,一些概念性的东西需要记忆理解。记录如下:
1.VBA中的类模块是用来定义对象的。众所周知,ActivateX中有许多已经存在的对象,如AcadText,AcadLine。这些对象有自己对应的方法,用来修改编辑对象的属性参数等。这些对象的功能都是基本的实现方法。例如,画一条线,用AddLine方法,输入起点终点即可。
但是如果希望通过起点,角度,线段长度来实现,就需要建立新的对象,给这个对象新的参数,给它新的方法。这就用到了类模块。我们可以新建一个类,NewClass,在类内添加Function AddLineByLength,其参数输入为起点,角度和长度,返回值为AcadLine,通过计算得出起点终点,再打包Thisdrawing.ModelSpace.AddLine方法进去,画出线段。
之后可以新建过程Sub,用新建的类,新建一个对象,再用对象实现新建类下的方法:
Dim newcls As New NewClass '关键字New必须使用
Dim line As AcadLine
set line = newcls.AddLineByLength(ByVal startpoint As variant, ByVal angle As double,ByVal length As double)
2.Visual Basic 6.0中,为类的对象赋值,必须在对象变量前加set,普通 变量则没有这种要求。
3.ByRef和ByVal的区别在于参数源是否可以被修改。前者可以,后者不可以。因为前者传递的是地址,可修改里边的内容。类似于C里的int&。
4.AutoCad层次关系:
Application->Documents->Document->ModelSpace,访问对象的层次关系。