Тема: SelectionSet

Знатоки программирования! Подскажите, реально ли методами AcadSelectionSet выбрать все BlockReference c определеннным именем, т.е. относящиеся к определенному блоку, другими словами где MyBlockRef.Name = "MyBlockName", и если это реально, то какими в этом случае должны быть значения фильтров. Заранее очень благодарен всем!

Re: SelectionSet

Зачем загонять себя в угол? Пробегись по всем объектам в блоке, выбери что хочешь, и заудь о фильтрах. Во всяком случае я помаленьку везде, где раньше пользовался фильтрами переписываю программки по такому принципу. На быстродействии это практически не отражается, зато все рычаги в твоих руках.

Re: SelectionSet

А все-таки, подскажите, как?
Я тоже пытаюсь воспользоваться фильтрами, но никак не получается.

Re: SelectionSet

В простом варианте, как то так:

Function SelectBlockRefs(refName As String) As AcadSelectionSet
Dim setCol As AcadSelectionSets
Dim insSet As AcadSelectionSet
Dim filType(0 To 1) As Integer
Dim filData(0 To 1) As Variant
Set setCol = ThisDrawing.SelectionSets
filType(0) = 0
filType(1) = 2
filData(0) = "INSERT"
filData(1) = refName
For Each insSet In setCol
    If insSet.Name = "Refs_Set" Then
        insSet.Delete
        Exit For
    End If
Next insSet
Set insSet = setCol.Add("Refs_Set")
insSet.Select acSelectionSetAll, , , filType, filData
Set SelectBlockRefs = insSet
End Function

Однако чтобы лучше понять:
1. Набери в командной строке (entget(car(entsel)) и укажи любой объект, поучишь список его DXF-кодов.
2. Посмотри в хелпе секцию DXF Reference.
3. Посмотри в AutoLISP функцию SSGET, там всё достаточно подробно написано. В VBA всё делается аналогично. Тип данных для логических фильров, нужно указывать как -4.