当我运行我的代码时,我发现机械图纸中选择矩形中出现的组数量显示在autocad drafting中。但是当我试图找到使用VBA时,由于API不可用,我无法做到。
Option Explicit
Sub Group()
'Declaration
Dim acApp As AcadDocument
Dim acSeSet As AcadSelectionSet
Set acApp = ThisDrawing.Application.ActiveDocument
'Selection Set Creation
Set acSeSet = acApp.SelectionSets.Add("ShelSde4htd1")
acSeSet.SelectOnScreen
当我运行这部分代码时,它会进入屏幕,然后让我选择屏幕上的部分。我可以从这个选择中获取实体,但不能获得组。我知道group也是一个集合,但是我可以从屏幕上的选择中选择组吗?
Dim acEnt As AcadEntity
Dim entity_handle() As String
Dim i As Integer
i = 0
Dim entity_count As Integer
entity_count = acSeSet.Count() 'Selection Set Count
ReDim entity_handle(entity_count) 'Resizing the entity handle array
For Each acEnt In acSeSet 'Iterating through selected entities and storing in one array, the handles
entity_handle(i) = acEnt.Handle
i = i + 1
Next
在这里,我可以获得实体,但除此之外,我还希望在该地区选择群组。
答案 0 :(得分:1)
VBA的SelectionSet对象只能选择图形元素 和组不是图形元素,它们(命名)选择自己!
要获取可能选定的组,您必须遍历选择集的每个元素并检查它是否属于组。那么,如果你需要确保选择整个组,你必须检查该组的所有元素是否属于选择集。
这是一堆多次迭代:如果您的绘图中有多个组和/或组中的多个元素,那么您最好调查最合适的搜索技术(存储组元素的数组?)