代码改变世界

VB编程引用AutoCAD实体对象

2011-06-12 22:34  精诚所至 金石为开  阅读(1006)  评论(0编辑  收藏  举报

在使用实体对象属性或方法来编辑已经创建完毕的实体对象之前,必须用变量引用该对象,引用实体对象的方法有多种,可根据具体情况,选择恰当的方法来加以引用。

在创建实体的同时引用实体对象。

在创建实体对象时,Set语句设置的对象变量代表和引用该实体对象,下面的语句创建了一个圆对象,变量circleObj即引用该圆对象,可以设置属性,调用该方法来编辑该圆对象。语句circleObj=acRed设置Color属性,使该圆变红色。

Dim circleobj As AcadCircle
Dim centerpoint(0 To 2) As Double
centerpoint(0) = 0#: centerpoint(1) = 0#: centerpoint(2) = 0#
Set circleobj = acadapp.ActiveDocument.ModelSpace.AddCircle(centerpoint, 5)
circleobj.Color = acRed

用实体集合的Item方法引用实体对象

如果已知实体在集合中的索引位置,可以用实体集合的Item方法引用该实体对象。

下面的语句用变量Obj引用模型空间第三个实体对象,并将其颜色变为蓝色。

Dim obj As AcadEntity
Set obj = acadapp.ActiveDocument.ModelSpace.Item(2)
obj.Color = acBlue
obj.Update

用HandleToObject方法引用实体对象

实体对象的Handle属性返回对象的句柄,若已知对象的句柄,可以用对象的HandleToObject方法引用该实体对象,HandleToObject方法只能返回当前文档中的实体对象。

newobj = object.HandleToObject(Handle)

下面的语句创建一个圆,用Handle属性获得其句柄,然后用HandleToObject方法引用为2B的句柄,将其设置为红色。

Private Sub Command1_Click()
    Dim circleobj As AcadCircle
    Dim centerpoint(0 To 2) As Double
    centerpoint(0) = 0#: centerpoint(1) = 0#: centerpoint(2) = 0#
    Set circleobj = acadapp.ActiveDocument.ModelSpace.AddCircle(centerpoint, 5)
    ZoomExtents
    circleobj.Update
    Dim handle As Variant
    handle = circleobj.handle
    MsgBox "圆的句柄是:" & circleobj.handle
    Dim tempobj As AcadObject
    Set tempobj = acadapp.ActiveDocument.HandleToObject(handle)
    tempobj.Color = acRed
    MsgBox "圆改变为红色"
    acadapp.ActiveDocument.Regen acActiveViewport
End Sub

用ObjectIdToObject方法引用实体对象

若已知对象标识符ObjectID,可以用对象OjbectIdToOjbect方法引用该实体对象。

newobj=object.ObjectIDToObject(ID)