乐筑天下

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

[编程交流] 选择集-选择所有对象

[复制链接]

34

主题

105

帖子

91

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
224
发表于 2022-7-6 17:31:31 | 显示全部楼层 |阅读模式
我有以下代码,我正试图修改,以便它将选择屏幕上的所有对象
 
  1. Public Sub TestSelectOnScreen()
  2. Dim objSS As AcadSelectionSet
  3. On Error GoTo Done
  4. With ThisDrawing.Utility
  5. '' create a new selectionset
  6. Set objSS = ThisDrawing.SelectionSets.Add("TestSelectOnScreen")
  7. '' let user select entities interactively
  8. objSS.SelectOnScreen
  9. '' highlight the selected entities
  10. objSS.Highlight True
  11. '' pause for the user
  12. .prompt vbCr & objSS.Count & " entities selected"
  13. .GetString False, vbLf & "Enter to continue "
  14. '' unhighlight the entities
  15. objSS.Highlight False
  16. End With
  17. Done:
  18. '' if the selection was created, delete it
  19. If Not objSS Is Nothing Then
  20. objSS.Delete
  21. End If
  22. End Sub

 
我知道你可以过滤指定的项目,例如圆形和层,然后当你选择时,这将过滤-下面的示例代码
 
  1. Sub Ch4_FilterBlueCircleOnLayer0()
  2.   Dim sstext As AcadSelectionSet
  3.   Dim FilterType(1) As Integer
  4.   Dim FilterData(1) As Variant
  5.   Set sstext = ThisDrawing.SelectionSets.Add("SS4")
  6.   FilterType(0) = 0
  7.   FilterData(0) = "Circle"
  8.   FilterType(1) = 8
  9.   FilterData(1) = "0"
  10.   sstext.SelectOnScreen FilterType, FilterData
  11. End Sub

 
但我正在尝试让选择集选择屏幕上的所有内容。我不希望用户被迫选择所有对象,因为我的代码稍后依赖于具有特定名称的所有块。如果没有选择所有的块,则会在稍后导致代码问题,此外,如果不中途停止以允许选择,则会使整个编码运行得更快。
 
谁能给我举个例子吗?我已经找到了帮助,但什么也找不到?
 
干杯
 
col。
回复

使用道具 举报

34

主题

105

帖子

91

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
224
发表于 2022-7-6 17:35:58 | 显示全部楼层
答案:
 
  1. MyObjSS.Select acSelectionSetAll
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 17:38:02 | 显示全部楼层
Comcu,
 
好了,让我再帮你一点忙。。
这就是你想要的:
 
  1. MyObjSS.Select acSelectionSetAll, , , FilterType, FilterData

 
现在,图形中符合过滤条件的所有图元都将包含在选择集中。
 
看起来你想在0层上包括所有的圆,对吗?
 
祝你好运
毫升
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 17:42:18 | 显示全部楼层
更多帮助无需选择
 
FilterDXFCode(0)=0
FilterDXFVal(0)=“插入”
SS。选择acSelectionSetAll、、FilterDXFCode、FilterDXFVal
 
对于Cntr=0到SS。计数-1
如果SS。项目(Cntr)。名称Value=“SCHEDTXT”然后
 
 
ie If在所有块中搜索具有特定名称的块
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 17:46:22 | 显示全部楼层
比加尔
 
这很有趣;执行。价值属于那里?
你用Excel编程吗?
在Excel中编程时,我经常使用值方法
 
毫升
回复

使用道具 举报

34

主题

105

帖子

91

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
224
发表于 2022-7-6 17:47:54 | 显示全部楼层
ML,谢谢你的帮助。
 
比格尔,我会试试你的代码,看起来不错。
 
谢谢大家。
 
col公司
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 17:52:19 | 显示全部楼层
你好,Comcu
当然随时可以
 
有几种不同的方法可以用来实现相同的目标,但BIGAL看起来确实不错。
 
我倾向于不使用DXF代码,而是创建选择集并按实体类型循环sset,然后按实体名称循环。
 
我不认为一个比另一个更好,只是对我来说更容易相处。
 
如果你愿意,我也可以给你展示这个方法的例子
 
毫升
回复

使用道具 举报

34

主题

105

帖子

91

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
224
发表于 2022-7-6 17:54:20 | 显示全部楼层
毫升,
 
谢谢你,在这个网站的帮助下,我刚刚做了一件你正在描述的事情!。在我有一个块并循环遍历属性的地方,我即将开始编写一个新代码,因此我希望自己实现代码,因为我认为我现在理解了它。
 
谢谢你的帮助,
 
干杯
 
col公司
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 17:57:39 | 显示全部楼层
嘿Comcu,
 
很高兴听到它;我喜欢,你拿了第一个,太棒了!
我用这种方法发布了不少帖子,你可能在浏览时看到了我的一个例子。
 
如果你需要任何进一步的帮助,请告诉我
 
祝你好运
毫升
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 18:02:24 | 显示全部楼层
那么,你有没有做过这样的事情;
 
对于sset中的每个ent
如果ent的类型=acadblockreference,则
如果ent类型=acadattribute,则
如果att.name=“comcu”,则
comcu。删去
如果结束
如果结束
如果结束
下一个耳鼻喉科
 
对不起,如果代码是错的,我是在这里快速输入的,但是循环部分看起来是这样的。
 
毫升
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 13:36 , Processed in 0.412874 second(s), 72 queries .

© 2020-2025 乐筑天下

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