明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1605|回复: 7

怎么把生成的对象添加到块中

[复制链接]
发表于 2018-7-9 11:39 | 显示全部楼层 |阅读模式
本帖最后由 qwh923820 于 2018-7-9 14:13 编辑

怎么把生成的对象添加到块中?为什么这样会出错,该怎么改?
dim x As Object,ww As AcadBlock
Set ww = ThisDrawing.Blocks.Add(pt, blockname1)
Set x = ThisDrawing.ModelSpace.AddLightWeightPolyline(A)
ThisDrawing.CopyObjects x, ww  出错




发表于 2018-7-9 21:24 | 显示全部楼层
语法

RetVal = object.CopyObjects(Objects[, Owner][, IDPairs])

Object

Database, Document
使用该方法的对象。

Objects

Variant[变体] (对象数组); 仅用于输入
要复制的源对象数组。所有对象必须有相同的所有者,而且该所有者必须属于调用该方法的数据库或文档。

Owner

Variant[变体] (单个对象); 仅用于输入; 可选项
对象要复制到的新的所有者。如果没有指定所有者,对象将被创建到与 Objects 数组中的对象相同的所有者中。

IDPairs

Variant[变体] (IDPair 对象数组); 输入输出; 可选项
复制及传送过程所发生的信息。
Input: 一个空变体。
Output: 一个 IDPair 对象数组。

RetVal

Variant[变体] (对象数组)
新创建的复制对象数组。只有源对象才在该数组中返回。有关 CopyObjects 操作过程会发生的更多信息,或将同时被复制的属于源对象的对象列表,可参考 IDPairs 数组。

说明

要复制对象到其它打开的图形中,可设置 Owner 参数为其它图形的模型空间。

在 CopyObjects 操作期间,被 Objects 参数中的源对象拥有或引用的对象也将被复制。

注意 当同时遍历集合时不能执行该方法。在遍历过程中将打开一个只读操作的工作空间,而该方法试图执行可读写操作。必须在完成遍历后才调用该方法。

回复 支持 1 反对 0

使用道具 举报

发表于 2018-7-10 09:00 | 显示全部楼层
qwh923820 发表于 2018-7-9 16:37
大神们,怎办把部分已存在的图形添加到块里面去??

下面是一段VB代码,请参考!
Dim NoNamBlo As Object
Dim BasePnt As Variant
Dim Ent() As Object
Dim ownName As String
Dim ret As Variant
On Error Resume Next
Set sset = acadapp.ActiveDocument.SelectionSets.Item("ss1")
sset.Delete
Set sset = acadapp.ActiveDocument.SelectionSets.Add("ss1")
AppActivate acadapp.Caption
acadapp.ActiveDocument.Utility.Prompt "请选择要建立块的对象"
sset.SelectOnScreen
If CheckKey(VK_ESCAPE) = True Then
Exit Sub
End If
BasePnt = acadapp.ActiveDocument.Utility.GetPoint(, "请拾取块基点")
If CheckKey(VK_ESCAPE) = True Then
Exit Sub
End If
Set NoNamBlo = acadapp.ActiveDocument.Blocks.Add(BasePnt, "*u")
ownName = NoNamBlo.Name
ReDim Ent(sset.Count - 1)
For i = 0 To sset.Count - 1
Set Ent(i) = sset.Item(i)
Next
acadapp.ActiveDocument.CopyObjects Ent, NoNamBlo
sset.Erase
sset.Delete
acadapp.ActiveDocument.ModelSpace.InsertBlock BasePnt, ownName, 1, 1, 1, 0
acadapp.ActiveDocument.Utility.Prompt "块建立完成!块名称是:" & ownName & vbLf
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-7-9 16:37 | 显示全部楼层
大神们,怎办把部分已存在的图形添加到块里面去??
 楼主| 发表于 2018-7-10 10:48 | 显示全部楼层
dong20030432 发表于 2018-7-10 09:00
下面是一段VB代码,请参考!
Dim NoNamBlo As Object
Dim BasePnt As Variant

这个方法会,之前也是用selectionsets 选中,但是我用的效率太慢了,我是想直接生成的图形直接添加到相应的块进行管理
发表于 2018-7-10 11:15 | 显示全部楼层
qwh923820 发表于 2018-7-10 10:48
这个方法会,之前也是用selectionsets 选中,但是我用的效率太慢了,我是想直接生成的图形直接添加到相应 ...

不管是生成的还是选择的对象,首先都是要循环方法加到对象数组中去,然后再通过acadapp.ActiveDocument.CopyObjects Ent, NoNamBlo将对象数组拷贝到块中。
 楼主| 发表于 2018-7-10 13:38 | 显示全部楼层
dong20030432 发表于 2018-7-10 11:15
不管是生成的还是选择的对象,首先都是要循环方法加到对象数组中去,然后再通过acadapp.ActiveDocument.C ...

好的,谢谢。我现在都是先建立一个很大的数组存放对象,把所有画出来的图形放到数组当中。顺便问下,明经币怎么买
发表于 2018-7-10 14:18 | 显示全部楼层
qwh923820 发表于 2018-7-10 13:38
好的,谢谢。我现在都是先建立一个很大的数组存放对象,把所有画出来的图形放到数组当中。顺便问下,明经 ...

我只知道用激情、贡献等可以兑换,不能购买。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-29 18:05 , Processed in 0.182858 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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