evaporated 发表于 2005-4-11 19:44:00

请教!大侠们帮忙看看这段炸开块参照的代码有误吗?

始终是报错: 输入错误。
这是小弟编写的一段练习代码,用来炸开dwg中的所有块参照的。
Function ExplodeAllRef() As Boolean
Dim Refs As AcadBlockReference
Dim AcadObject1 As AcadEntity
Dim flag As Boolean
Dim acadRef As AcadBlockReference
While flag = True
                       flag = False
                       For Each AcadObject1 In ThisDrawing.ModelSpace
                                                       If AcadObject1.ObjectName = "AcDbBlockReference" Then
                                                                                       flag = True
                                                                                                                                                                                                               
                                                                                       AcadObject1.Explode
                                                                                       
                                                       End If
                                       Next
Wend
End Function
算法是土了些,但是看过程没有大问题啊。
而且图中不存在无法炸开的块参照。
编辑器报错的那个块参照我用explode命令是可以炸开的啊。
请明总和各位高手指点下吧!
谢谢了!

雪山飞狐_lzh 发表于 2005-4-11 22:03:00


外面的While循环有什么用?完全多余

evaporated 发表于 2005-4-12 12:47:00

用来解决嵌套的问题啊。

雪山飞狐_lzh 发表于 2005-4-12 21:09:00


Sub tt()
On Error Resume Next
Dim i As AcadBlockReference
Dim ss As AcadSelectionSet
ThisDrawing.SelectionSets("Test").Delete
Set ss = ThisDrawing.SelectionSets.Add("Test")
Dim ft(0) As Integer, fd(0)
ft(0) = 0: fd(0) = "Insert"
ss.Select acSelectionSetAll, , , ft, fd
For Each i In ss
       MyExplode i
Next
ss.Delete
End Sub Sub MyExplode(oBlk As AcadBlockReference)
'功能:炸开嵌套块
Dim i, objs
Dim j As AcadBlockReference
       objs = oBlk.Explode
       oBlk.Delete
       For i = 0 To UBound(objs)
               If objs(i).ObjectName = "AcDbBlockReference" Then
                     Set j = objs(i)
                     MyExplode j
               End If
       Next i
End Sub

evaporated 发表于 2005-4-12 22:56:00

学习中。。。谢谢版主!
用递归来解决嵌套问题,是个好办法。
页: [1]
查看完整版本: 请教!大侠们帮忙看看这段炸开块参照的代码有误吗?