乐筑天下

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

遍历整个图形

[复制链接]

16

主题

168

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2007-4-2 09:31:33 | 显示全部楼层 |阅读模式
在下面的示例中,我遇到了一点困难,我在模型空间中循环,并用图形中的块引用填充列表框。但是,我不知道如何在同一时间遍历整个图形(图纸和模型空间)
谢谢
马克
  1. For Each Obj In ThisDrawing.ModelSpace
  2. If TypeOf Obj Is AcadBlockReference Then
  3.   ListBox1.AddItem (Obj.Name)
  4. End If

下一个Obj

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-4-2 10:19:46 | 显示全部楼层
您正在使用选择集吗?或者你考虑过吗
  1. Set objSelCol = objDoc.SelectionSets
  2.   For Each objSelSet In objSelCol
  3.     If objSelSet.Name = "blk_out" Then
  4.       objSelSet.Delete
  5.       Exit For
  6.     End If
  7.   Next objSelSet
  8.   Set objSelSet = objSelCol.Add("blk_out")
  9.   intType(0) = 0
  10.   varData(0) = "INSERT"
  11.   objSelSet.Select 5, filtertype:=intType, _
  12.   filterdata:=varData
  13.   For Each objEnt In objSelSet

回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-4-2 11:09:52 | 显示全部楼层
如果您不想使用选择集(使用ObjectDBX时会出现这种情况),则需要遍历Layouts集合,然后遍历它们的每个块。
  1. For Each oLayout in Doc
  2.    For Each oEnt in oLayout.Block
  3. .....

回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2007-4-3 10:52:52 | 显示全部楼层

酷。两种方法都有意义。
谢谢
回复

使用道具 举报

16

主题

168

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2007-4-3 10:55:22 | 显示全部楼层

实际上,我不认为您可以通过布局访问块集合
标记
回复

使用道具 举报

16

主题

168

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2007-4-3 12:18:43 | 显示全部楼层
我不认为
这是杰夫的意思。
布局对象的“Block”属性是访问表示该布局的块表记录的方式。
回复

使用道具 举报

16

主题

168

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2007-4-3 12:51:23 | 显示全部楼层
没错,查克。
现在,如果我无意中在oLayout.Block中添加了一个s,那么就会像马克所想的那样出现错误......但是我确实尽量不犯那种打字错误
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2007-4-3 13:15:51 | 显示全部楼层

哦,我明白了,这将返回布局的名称(我想)
不,我要找的是插入到纸张中的块引用。
上面的选择集方法可以很好地工作。
谢谢你
马克
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-4-4 08:31:10 | 显示全部楼层
Mark -
将此代码放入窗体上的命令按钮中,看看会发生什么:
  1. Dim Doc As AcadDocument
  2. Dim oLayout As AcadLayout
  3. Dim oEnt As AcadEntity
  4. Set Doc = ThisDrawing
  5. For Each oLayout In Doc.Layouts
  6.    For Each oEnt In oLayout.Block
  7.       If TypeOf oEnt Is AcadBlockReference Then
  8.          ListBox1.AddItem (oEnt.Name)
  9.       End If
  10.    Next oEnt
  11. Next oLayout

这将遍历图形中的每个布局,并将任何块引用添加到列表框中。
这就是Jeff和Chuck试图引导您的地方。事实上,图形中的每个布局都是一个可以包含对象的块。您可以循环访问块并查找块中包含的对象,就像循环访问模型空间或图纸空间一样。高温
回复

使用道具 举报

16

主题

168

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2007-4-4 10:12:36 | 显示全部楼层
这是很好的信息。我终于有点明白了。如果我没弄错的话,这和. NET中的方法非常相似。如果我错了,请有人纠正我。理解这一点是件好事,尽管它看起来有点复杂,因为如果你想最终转向VB.NET,你必须对使用这种方法有一个坚定的理解。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-7 14:24 , Processed in 1.203535 second(s), 73 queries .

© 2020-2025 乐筑天下

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