dong20030432 发表于 2018-3-7 13:19:09

【求助】请教把选择集加入块的方法或者代码!!!

本帖最后由 dong20030432 于 2018-3-7 14:53 编辑

自己用VB做一个程序,需要把选择集中的实体放到块中,在网上查到用copyobjects方法,但运行过程中总是报错(最后一行),请大家帮忙看下怎么回事。如果有其它方法,麻烦告诉我一下,感激不尽,谢谢了!!!
Dim NoNamBlo As AcadBlock
Dim BasePnt As Variant
Dim Ent() As Object
Dim ownName As String
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
BasePnt = AcadApp.ActiveDocument.Utility.GetPoint(, "请拾取块基点")
Set NoNamBlo = AcadApp.ActiveDocument.Blocks.Add(BasePnt, "*u")
ownName = NoNamBlo.Name
ReDim Ent(sset.Count)
For i = 0 To sset.Count - 1
Set Ent(i) = sset.Item(i)
Next
AcadApp.ActiveDocument.CopyObjects Ent, NoNamBlo





mikewolf2k 发表于 2018-3-7 14:20:05

你想直接把对象拷贝到块里去?copyobjects是拷贝到模型/图纸空间。

dong20030432 发表于 2018-3-7 14:50:45

本帖最后由 dong20030432 于 2018-3-7 14:51 编辑

mikewolf2k 发表于 2018-3-7 14:20
你想直接把对象拷贝到块里去?copyobjects是拷贝到模型/图纸空间。
感谢您的回复!
我查到的资料和一些零散的代码有说能拷贝到块里面或者模型空间里面。

activex和VBA手册中也说这个Owner参数是个单对象,应该也包括块吧?
如果您有其它方法,请告诉我一下,谢谢了!我不一定要用copyobjects的,只要能实现功能就行。

zzyong00 发表于 2018-3-7 15:36:20

ReDim Ent(sset.Count-1)

dong20030432 发表于 2018-3-7 15:45:48

zzyong00 发表于 2018-3-7 15:36
ReDim Ent(sset.Count-1)

哦,我的天呀,非常感谢大神!!!原来是太粗心了,以后一定要仔细!{:1_1:}

mikewolf2k 发表于 2018-3-7 16:05:18

dong20030432 发表于 2018-3-7 14:50
感谢您的回复!
我查到的资料和一些零散的代码有说能拷贝到块里面或者模型空间里面。



可以拷贝到块么?没用过。学一招。谢谢!

dong20030432 发表于 2018-3-7 17:04:20

mikewolf2k 发表于 2018-3-7 16:05
可以拷贝到块么?没用过。学一招。谢谢!

用这个方法确实可以实现,我一开始写错了代码。
页: [1]
查看完整版本: 【求助】请教把选择集加入块的方法或者代码!!!