花生 发表于 2004-3-12 20:09:00

莫名 发表于 2004-3-12 21:56:00

是内部块还是外部块?

花生 发表于 2004-3-12 23:40:00

mccad 发表于 2004-3-13 17:34:00

可使用.CopyObjects方法。

花生 发表于 2004-4-8 22:02:00

mccad 发表于 2004-4-9 07:55:00

<A href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=13747&amp;replyID=62826&amp;skin=1" target="_blank" >http://bbs.mjtd.com/forum.php?mod=viewthread&tid=13747&amp;replyID=62826&amp;skin=1</A>

花生 发表于 2004-4-13 23:13:00

czbming 发表于 2004-4-14 09:52:00

针对你的程序改了一下.如下:



Sub join()


                       Dim ss As AcadSelectionSet<BR>                       Dim po(0 To 2) As Double<BR>                       <BR>                       On Error Resume Next<BR>                       <BR>                       po(0) = 0<BR>                       po(1) = 0<BR>                       po(2) = 0<BR>                       <BR>                       'ThisDrawing.Blocks.Item("ok").Delete<BR>                       Dim bk As AcadBlock<BR>                       <BR>                       Set bk = ThisDrawing.Blocks.Add(po, "tempb")<BR>                       <BR>                       Set ss = ThisDrawing.SelectionSets.item("ssss")<BR>                       '------------------------------------------------<BR>                       If Err Then<BR>                       Err.Clear<BR>                       Set ss = ThisDrawing.SelectionSets.Add("ssss")<BR>                       End If<BR>                       '------------------------------------------------<BR>                       <BR>                       Dim ftype(0) As Integer<BR>                       Dim fdata(0) As Variant<BR>                       Dim i As Long<BR>                       <BR>                       ftype(0) = 8<BR>                       fdata(0) = "layer"<BR>                       ss.Select acSelectionSetAll, , , ftype, fdata               '过滤<BR>                       ReDim retVal(0 To ss.count - 1) As AcadEntity<BR>                       For i = 0 To ss.count - 1<BR>                                                       Set retVal(i) = ss.item(i)<BR>                       Next<BR>                       <BR>                       ''------------------------------------------------过滤对象<BR>                       'Dim retVal(), Ent As AcadEntity<BR>                       '<BR>                       '<BR>                       'Dim i As Integer<BR>                       'i = 0<BR>                       '<BR>                       '                       ReDim retVal(0 To ss.count - 1)<BR>                       '<BR>                       '                       For Each Ent In ss<BR>                       '<BR>                       '                                                       If (Ent.layer = "layer") Then<BR>                       '                                                                                       Set retVal(i) = Ent<BR>                       '                                                                                       i = i + 1<BR>                       '                                                       End If<BR>                       '<BR>                       '                       Next<BR>                       '                       ReDim Preserve retVal(0 To i - 1)<BR>                       <BR>                       '------------------------------------------------<BR>                       <BR>                       ThisDrawing.CopyObjects retVal, bk       '       在这里出问题了<BR>                       Erase retVal<BR>End Sub

花生 发表于 2004-4-14 16:24:00

mccad 发表于 2004-4-14 20:41:00

关键是在定义数组上,这样写就没有问题:<BR>Dim retVal() As AcadEntity, Ent As AcadEntity<BR>注意:一般不要这样写:<BR>Dim retVal() , Ent As AcadEntity<BR>这样写的话,第一个变量会被定义成Variant,所以会造成CopyObjects时传递的不是图元数组。
页: [1] 2
查看完整版本: [求助]怎样把已有的图形加入自己新建的块中?