选择集-选择所有对象
我有以下代码,我正试图修改,以便它将选择屏幕上的所有对象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。 答案:
MyObjSS.Select acSelectionSetAll
Comcu,
好了,让我再帮你一点忙。。
这就是你想要的:
MyObjSS.Select acSelectionSetAll, , , FilterType, FilterData
现在,图形中符合过滤条件的所有图元都将包含在选择集中。
看起来你想在0层上包括所有的圆,对吗?
祝你好运
毫升 更多帮助无需选择
FilterDXFCode(0)=0
FilterDXFVal(0)=“插入”
SS。选择acSelectionSetAll、、FilterDXFCode、FilterDXFVal
对于Cntr=0到SS。计数-1
如果SS。项目(Cntr)。名称Value=“SCHEDTXT”然后
ie If在所有块中搜索具有特定名称的块 比加尔
这很有趣;执行。价值属于那里?
你用Excel编程吗?
在Excel中编程时,我经常使用值方法
毫升 ML,谢谢你的帮助。
比格尔,我会试试你的代码,看起来不错。
谢谢大家。
col公司 你好,Comcu
当然随时可以
有几种不同的方法可以用来实现相同的目标,但BIGAL看起来确实不错。
我倾向于不使用DXF代码,而是创建选择集并按实体类型循环sset,然后按实体名称循环。
我不认为一个比另一个更好,只是对我来说更容易相处。
如果你愿意,我也可以给你展示这个方法的例子
毫升 毫升,
谢谢你,在这个网站的帮助下,我刚刚做了一件你正在描述的事情!。在我有一个块并循环遍历属性的地方,我即将开始编写一个新代码,因此我希望自己实现代码,因为我认为我现在理解了它。
谢谢你的帮助,
干杯
col公司 嘿Comcu,
很高兴听到它;我喜欢,你拿了第一个,太棒了!
我用这种方法发布了不少帖子,你可能在浏览时看到了我的一个例子。
如果你需要任何进一步的帮助,请告诉我
祝你好运
毫升 那么,你有没有做过这样的事情;
对于sset中的每个ent
如果ent的类型=acadblockreference,则
如果ent类型=acadattribute,则
如果att.name=“comcu”,则
comcu。删去
如果结束
如果结束
如果结束
下一个耳鼻喉科
对不起,如果代码是错的,我是在这里快速输入的,但是循环部分看起来是这样的。
毫升
页:
[1]
2