Тема: Как написать фильтр для выбора блока по имени?

как написать фильт для SelectionSets для блока с именем....?

Re: Как написать фильтр для выбора блока по имени?

Help -> Autolisp Reference -> ssget function -> Selection Set Filter Lists
Прочти ещё https://www.caduser.ru/forum/topic15378.html про фильтры в команде Select, оттуда ещё идёт ссылка на https://www.caduser.ru/forum/topic15165.html (там про расширенные фильтры, если это понадобится).
А если лень:), то вот ответ:

Option Base 0
Sub Example_SelectOnScreen()
    ' Create the selection set
    Dim ssetObj As AcadSelectionSet
    For Each ssetObj In ActiveDocument.SelectionSets
      If ssetObj.Name = "TEST_SSET" Then
        ActiveDocument.SelectionSets.Item("TEST_SSET").Delete
        Exit For
      End If
    Next ssetObj
    Set ssetObj = ThisDrawing.SelectionSets.Add("TEST_SSET")
    Dim gpCode(0) As Integer
    Dim dataValue(0) As Variant
    gpCode(0) = 2: dataValue(0) = "MY_BLOCK_NAME" 'you may setup the block name here
    Dim groupCode As Variant, dataCode As Variant
    groupCode = gpCode
    dataCode = dataValue
    ' Add objects to a selection set by prompting user to select on the screen
    ssetObj.SelectOnScreen groupCode, dataCode
    MsgBox ssetObj.Count & " items selected"
    ThisDrawing.SelectionSets.Item("TEST_SSET").Delete
    Set ssetObj = Nothing
End Sub

Re: Как написать фильтр для выбора блока по имени?

Както так:

ТипФильтра(0) = -4
ТипФильтра(1) = 2
ТипФильтра(2) = 2
ТипФильтра(3) = 2
ТипФильтра(4) = 2
ТипФильтра(5) = 2
ТипФильтра(6) = -4
ДанныеФильтра(0) = "<OR"
ДанныеФильтра(1) = "Отметка"
ДанныеФильтра(2) = "ОтметкаПлан"
ДанныеФильтра(3) = "РазрезВертикальный"
ДанныеФильтра(4) = "РазрезГоризонтальный"
ДанныеФильтра(5) = "Ось"
ДанныеФильтра(6) = "OR>"