comcu 发表于 2022-7-6 17:31:31

选择集-选择所有对象

我有以下代码,我正试图修改,以便它将选择屏幕上的所有对象
 

Public Sub TestSelectOnScreen()
Dim objSS As AcadSelectionSet
On Error GoTo Done
With ThisDrawing.Utility
'' create a new selectionset
Set objSS = ThisDrawing.SelectionSets.Add("TestSelectOnScreen")
'' let user select entities interactively
objSS.SelectOnScreen
'' highlight the selected entities
objSS.Highlight True
'' pause for the user
.prompt vbCr & objSS.Count & " entities selected"
.GetString False, vbLf & "Enter to continue "
'' unhighlight the entities
objSS.Highlight False
End With
Done:
'' if the selection was created, delete it
If Not objSS Is Nothing Then
objSS.Delete
End If
End Sub

 
我知道你可以过滤指定的项目,例如圆形和层,然后当你选择时,这将过滤-下面的示例代码
 

Sub Ch4_FilterBlueCircleOnLayer0()
Dim sstext As AcadSelectionSet
Dim FilterType(1) As Integer
Dim FilterData(1) As Variant
Set sstext = ThisDrawing.SelectionSets.Add("SS4")

FilterType(0) = 0
FilterData(0) = "Circle"

FilterType(1) = 8
FilterData(1) = "0"

sstext.SelectOnScreen FilterType, FilterData

End Sub

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

comcu 发表于 2022-7-6 17:35:58

答案:
 

MyObjSS.Select acSelectionSetAll

ML0940 发表于 2022-7-6 17:38:02

Comcu,
 
好了,让我再帮你一点忙。。
这就是你想要的:
 

MyObjSS.Select acSelectionSetAll, , , FilterType, FilterData

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

BIGAL 发表于 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在所有块中搜索具有特定名称的块

ML0940 发表于 2022-7-6 17:46:22

比加尔
 
这很有趣;执行。价值属于那里?
你用Excel编程吗?
在Excel中编程时,我经常使用值方法
 
毫升

comcu 发表于 2022-7-6 17:47:54

ML,谢谢你的帮助。
 
比格尔,我会试试你的代码,看起来不错。
 
谢谢大家。
 
col公司

ML0940 发表于 2022-7-6 17:52:19

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

comcu 发表于 2022-7-6 17:54:20

毫升,
 
谢谢你,在这个网站的帮助下,我刚刚做了一件你正在描述的事情!。在我有一个块并循环遍历属性的地方,我即将开始编写一个新代码,因此我希望自己实现代码,因为我认为我现在理解了它。
 
谢谢你的帮助,
 
干杯
 
col公司

ML0940 发表于 2022-7-6 17:57:39

嘿Comcu,
 
很高兴听到它;我喜欢,你拿了第一个,太棒了!
我用这种方法发布了不少帖子,你可能在浏览时看到了我的一个例子。
 
如果你需要任何进一步的帮助,请告诉我
 
祝你好运
毫升

ML0940 发表于 2022-7-6 18:02:24

那么,你有没有做过这样的事情;
 
对于sset中的每个ent
如果ent的类型=acadblockreference,则
如果ent类型=acadattribute,则
如果att.name=“comcu”,则
comcu。删去
如果结束
如果结束
如果结束
下一个耳鼻喉科
 
对不起,如果代码是错的,我是在这里快速输入的,但是循环部分看起来是这样的。
 
毫升
页: [1] 2
查看完整版本: 选择集-选择所有对象