在屏幕上选择时查找群组

时间:2016-01-13 01:03:10

标签: vba autocad

当我运行我的代码时,我发现机械图纸中选择矩形中出现的组数量显示在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也是一个集合,但是我可以从屏幕上的选择中选择组吗? Test Drawing

    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

在这里,我可以获得实体,但除此之外,我还希望在该地区选择群组。

1 个答案:

答案 0 :(得分:1)

VBA的SelectionSet对象只能选择图形元素 和组不是图形元素,它们(命名)选择自己!

要获取可能选定的组,您必须遍历选择集的每个元素并检查它是否属于组。那么,如果你需要确保选择整个组,你必须检查该组的所有元素是否属于选择集。

这是一堆多次迭代:如果您的绘图中有多个组和/或组中的多个元素,那么您最好调查最合适的搜索技术(存储组元素的数组?)