多层实体的条件选择过滤器


Conditional Selection Filter for Entities on Multiple Layers

https://adndevblog.typepad.com/autocad/2019/03/condition ... r-entities-on-multiple-layers.html

https://through-the-interface.typepad.com/thro ... 2008/07/conditional-sel.html


程序代码:

Public Shared Sub FC()
        ' Get the current document editor
        Dim acDocEd As Editor = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor

        ' Create a TypedValue array to define the filter criteria

        'All objects meeting any of the Four criteria will get selected 
        'Criteria 1
        'Criteria 2
        Dim acTypValAr As TypedValue() = {New TypedValue(CType(DxfCode.[Operator], Integer), "<or"), New TypedValue(CType(DxfCode.[Operator], Integer), "<and"), New TypedValue(CType(DxfCode.Start, Integer), "TEXT"), New TypedValue(CType(DxfCode.LayerName, Integer), "Centro"), New TypedValue(CType(DxfCode.[Operator], Integer), "and>"), New TypedValue(CType(DxfCode.[Operator], Integer), "<and"), _
            TypedValue(CType(DxfCode.Start, Integer), "LWPOLYLINE"), New TypedValue(CType(DxfCode.[Operator], Integer), "<or"), New TypedValue(CType(DxfCode.LayerName, Integer), "Secao_Projeto"), New TypedValue(CType(DxfCode.LayerName, Integer), "Pontos_AcimaTolerancia"), New TypedValue(CType(DxfCode.LayerName, Integer), "Pontos_AbaixoTolerancia"), New TypedValue(CType(DxfCode.LayerName, Integer), "Pontos_ForaTolerancia"), _
            TypedValue(CType(DxfCode.LayerName, Integer), "Pontos_NaTolerancia"), New TypedValue(CType(DxfCode.[Operator], Integer), "or>"), New TypedValue(CType(DxfCode.[Operator], Integer), "and>"), New TypedValue(CType(DxfCode.[Operator], Integer), "or>")}

        ' Assign the filter criteria to a SelectionFilter object
        Dim acSelFtr As New SelectionFilter(acTypValAr)

        ' Request for objects to be selected in the drawing area
        Dim acSSPrompt As PromptSelectionResult
        acSSPrompt = acDocEd.GetSelection(acSelFtr)

        ' If the prompt status is OK, objects were selected
        If acSSPrompt.Status = PromptStatus.OK Then
            Dim acSSet As SelectionSet = acSSPrompt.Value

            Autodesk.AutoCAD.ApplicationServices.Core.Application.ShowAlertDialog("Number of objects selected: " + acSSet.Count.ToString())
        Else
            Autodesk.AutoCAD.ApplicationServices.Core.Application.ShowAlertDialog("Number of objects selected: 0")
        End If
    End Sub


<or
    <and
        Layer == "0"
        Entity type == "LINE"
    and>
    <and
        Entity type == "CIRCLE"
        Radius >= 10.0
    and>
or>



Life is not easy for any of us

win10 Word.Application 无法创建 ActiveX 组件。

欢迎关注微信公众账号ByCAD