当然可以,简单点的使用CopyObjects直接将实体拷贝到块中,更省去了写块的操作。

- [FONT=courier new]
- 本例创建 Circle 对象,然后使用 CopyObjects 方法将圆复制到新的图形中。
- Sub Ch4_Copy_to_New_Drawing()
- Dim DOC0 As AcadDocument
- Dim circleObj1 As AcadCircle, circleObj2 As AcadCircle
- Dim centerPoint(0 To 2) As Double
- Dim radius1 As Double, radius2 As Double
- Dim radius1Copy As Double, radius2Copy As Double
- Dim objCollection(0 To 1) As Object
- Dim retObjects As Variant
-
- ' 定义 Circle 对象
- centerPoint(0) = 0: centerPoint(1) = 0: centerPoint(2) = 0
- radius1 = 5#: radius2 = 7#
- radius1Copy = 1#: radius2Copy = 2#
-
- ' 向当前图形中添加两个圆
- Set circleObj1 = ThisDrawing.ModelSpace.AddCircle _
- (centerPoint, radius1)
- Set circleObj2 = ThisDrawing.ModelSpace.AddCircle _
- (centerPoint, radius2)
- ThisDrawing.Application.ZoomAll
-
- ' 保存指向当前图形的指针
- Set DOC0 = ThisDrawing.Application.ActiveDocument
-
- ' 复制对象
- '
- ' 将要复制的对象设置为
- ' 与 CopyObjects 兼容的形式
- Set objCollection(0) = circleObj1
- Set objCollection(1) = circleObj2
-
- ' 创建新的图形并指向其模型空间
- Dim Doc1MSpace As AcadModelSpace
- Dim DOC1 As AcadDocument
-
- Set DOC1 = Documents.Add
- Set Doc1MSpace = DOC1.ModelSpace
-
- ' 将对象复制到新图形的模型空间。将
- ' 返回新(复制的)对象的集合。
- retObjects = DOC0.CopyObjects(objCollection, Doc1MSpace)
-
- Dim circleObj1Copy As AcadCircle, circleObj2Copy As AcadCircle
-
- ' 获取新创建的对象集合并
- ' 对副本应用新的特性
- Set circleObj1Copy = retObjects(0)
- Set circleObj2Copy = retObjects(1)
-
- circleObj1Copy.radius = radius1Copy
- circleObj1Copy.Color = acRed
- circleObj2Copy.radius = radius2Copy
- circleObj2Copy.Color = acRed
-
- ThisDrawing.Application.ZoomAll
-
- MsgBox "Circles copied."
- End Sub
- [/FONT]
|