找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1098|回复: 1

[VBA程序]:用CopyObjects拷贝对象到块中

[复制链接]

已领礼包: 181个

财富等级: 日进斗金

发表于 2002-11-5 13:06:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在VBA中可以用CopyObjects方法将对象拷贝到块中。
   运用此方法可以进行块的重定义等。
   函数原型:RetVal = object.CopyObjects(Objects[, Owner][, IDPairs])
      Object:文档对象
      Objects:要拷贝的对象集合
   Owner:拷贝生成的新对象的宿主对象,可以是块或者另一个文档。
   程序示例如下:

Sub Text()

  ' 创建块
  
    Dim blockObj As AcadBlock
    Dim insertionPnt(0 To 2) As Double
    insertionPnt(0) = 0#: insertionPnt(1) = 0#: insertionPnt(2) = 0#
    Set blockObj = ThisDrawing.Blocks.Add(insertionPnt, "CircleBlock")
   
    ' 在模型空间添加圆

    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 0: center(1) = 0: center(2) = 0
    radius = 1
    Set circleObj = ThisDrawing.ModelSpace.AddCircle(center, radius)
   
    ' 创建对象集合
   
    Dim objCollection(0 To 0) As Object
    Set objCollection(0) = circleObj
   
    ' 拷贝对象到块中,并返回新拷贝的对象
   
    Dim retObjects As Variant
    retObjects = ThisDrawing.CopyObjects(objCollection, blockObj)

    ' 插入块到模型空间
    Dim blockRefObj As AcadBlockReference
    insertionPnt(0) = 2#: insertionPnt(1) = 2#: insertionPnt(2) = 0

    Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, "CircleBlock", 1#, 1#, 1#, 0)
   
    ZoomAll
   

End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-9-27 10:56:10 | 显示全部楼层
Sub Text()

' 创建块

Dim blockObj As AcadBlock
Dim insertionPnt(0 To 2) As Double
insertionPnt(0) = 0#: insertionPnt(1) = 0#: insertionPnt(2) = 0#
Set blockObj = ThisDrawing.Blocks.Add(insertionPnt, "CircleBlock")

' 在模型空间添加圆

Dim circleObj As AcadCircle
Dim center(0 To 2) As Double
Dim radius As Double
center(0) = 0: center(1) = 0: center(2) = 0
radius = 1
Set circleObj = ThisDrawing.ModelSpace.AddCircle(center, radius)

' 创建对象集合

Dim objCollection(0 To 0) As Object
Set objCollection(0) = circleObj

' 拷贝对象到块中,并返回新拷贝的对象

Dim retObjects As Variant
retObjects = ThisDrawing.CopyObjects(objCollection, blockObj)

' 插入块到模型空间
Dim blockRefObj As AcadBlockReference
insertionPnt(0) = 2#: insertionPnt(1) = 2#: insertionPnt(2) = 0

Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, "CircleBlock", 1#, 1#, 1#, 0)

ZoomAll


End Sub

请教斑竹先生,运行以上程序后,
先保存后关闭,再打开时怎样用程序引用和修改所创建的块?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-28 23:25 , Processed in 0.176491 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表