乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 66|回复: 4

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

[复制链接]

23

主题

76

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
168
发表于 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命令是可以炸开的啊。
请明总和各位高手指点下吧!
谢谢了!
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2005-4-11 22:03:00 | 显示全部楼层

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

使用道具 举报

23

主题

76

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
168
发表于 2005-4-12 12:47:00 | 显示全部楼层
用来解决嵌套的问题啊。
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2005-4-12 21:09:00 | 显示全部楼层
  1. Sub tt()
  2. On Error Resume Next
  3. Dim i As AcadBlockReference
  4. Dim ss As AcadSelectionSet
  5. ThisDrawing.SelectionSets("Test").Delete
  6. Set ss = ThisDrawing.SelectionSets.Add("Test")
  7. Dim ft(0) As Integer, fd(0)
  8. ft(0) = 0: fd(0) = "Insert"
  9. ss.Select acSelectionSetAll, , , ft, fd
  10. For Each i In ss
  11.        MyExplode i
  12. Next
  13. ss.Delete
  14. End Sub Sub MyExplode(oBlk As AcadBlockReference)
  15. '功能:炸开嵌套块
  16. Dim i, objs
  17. Dim j As AcadBlockReference
  18.        objs = oBlk.Explode
  19.        oBlk.Delete
  20.        For i = 0 To UBound(objs)
  21.                If objs(i).ObjectName = "AcDbBlockReference" Then
  22.                        Set j = objs(i)
  23.                        MyExplode j
  24.                End If
  25.        Next i
  26. End Sub
回复

使用道具 举报

23

主题

76

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
168
发表于 2005-4-12 22:56:00 | 显示全部楼层
学习中。。。谢谢版主!
用递归来解决嵌套问题,是个好办法。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-16 21:56 , Processed in 2.106418 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表