乐筑天下

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

在整个图形中循环

[复制链接]

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 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

下一个目标
回复

使用道具 举报

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. .....
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

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

很酷。这两种方法都有意义
谢谢你;
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

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

实际上,我不'我认为你可以通过布局访问blocks集合
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-4-3 12:18:43 | 显示全部楼层

我不'我不认为这就是杰夫的意思
;“块”;布局对象的属性是访问表示该布局的块表记录的方式。
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-4-3 12:51:23 | 显示全部楼层
即#039;没错,查克
现在,如果我无意中在oLayout中添加了一个s。块,那么这将给出一个错误,正如马克所想……但我尽量不犯那种打字错误
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

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

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

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-4-4 08:31:10 | 显示全部楼层
标记-
将此代码放在表单上的命令按钮中,然后看看会发生什么:
  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
这将遍历图形中的每个布局,并将任何块引用添加到列表框
这就是杰夫和查克试图带领你的地方。事实上,图形中的每个布局都是一个可以包含对象的块。您可以在块中循环并查找块中包含的对象,就像在模型空间或纸张空间中循环一样
HTH
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

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

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-7 14:33 , Processed in 0.577148 second(s), 72 queries .

© 2020-2025 乐筑天下

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