Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA SelectionSet

VBA SelectionSet

Ответ
Поиск в этой теме
Непрочитано 27.02.2008, 23:59
VBA SelectionSet
Mikha
 
Highway Design
 
Tver
Регистрация: 16.09.2007
Сообщений: 27

'Задача:
'Есть некоторый набор Selection as AcadSelectionSet
'Данный набор создается выбором на экране
'Selection.SelectOnScreen
'Выбор внутри полигона и т.п. не подходит
'Затем на его основе необходимо создать множество наборов по фильтру, т.е нужна функция
'Function GetSelectionByFilter(Selection As AcadSelectionSet, FilterType() As Integer, FilterData() As Variant) As AcadSelectionSet
'Смысл функции в том, чтобы один раз выбрать объекты на экране, а затем применить к ним несколько различных фильтров
'
'Есть вариант решения этой задачи с использованием фильтра c кодом 5 (Handle), но фильтр с данным кодом не работает в VBA
'Код, приведенный ниже, вызывает ошибку: Invalid argument filter list in Select
Sub f1()
Dim Selection As AcadSelectionSet
Dim FilterType(0) As Integer
Dim FilterData(0) As Variant

On Error Resume Next
ThisDrawing.SelectionSets.Item("ms").Delete
Set Selection = ThisDrawing.SelectionSets.Add("ms")
On Error GoTo 0

FilterType(0) = 5
FilterData(0) = "F5"
Selection.Select acSelectionSetAll, , , FilterType, FilterData
MsgBox Selection.Count
End Sub
'Вариант 2: можно копировать первоначально выбранные объекты в новый слой (или документ),
'a затем выбирать с помощью
'Selection.Select acSelectionSetAll, , , FilterType, FilterData
добавив в фильтр условие нахождения объектов в созданном слое (или документе)
'после выбора удалить копии объектов и новый слой (или документ)
'Вариант 3: Для каждого нового фильтра проверять каждый элемент набора в цикле
'Вариант 1 не работает, Вариант 2 и 3 при большом количестве объектов работает очень медленно.
'Как бы мне решить эту проблему?
Просмотров: 11525
 
Непрочитано 10.09.2008, 12:04
#21
stas_org


 
Регистрация: 05.04.2007
Самара
Сообщений: 1,199


Нашел, ура, всем спасибо!
stas_org вне форума  
 
Непрочитано 10.09.2008, 12:50
#22
stas_org


 
Регистрация: 05.04.2007
Самара
Сообщений: 1,199


Ну хорошо, справочник нашел, FilterType=0 - это Entity type
, FilterData= insert-это AcDbBlockReference. А если нужно по имени еще отфильтровать, не пойму? Я так понял просто insert выключает(или ставит их по умолчанию) все флаги, нужно создать массив в котором каждый флаг определить, или можно не все?
stas_org вне форума  
 
Непрочитано 10.09.2008, 13:05
#23
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


DWF ->
группа 2 для примитивов INSERT - имя
группа 10 - точка вставки
Почитай, там все написано.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.09.2008, 14:16
#24
stas_org


 
Регистрация: 05.04.2007
Самара
Сообщений: 1,199


filtertype(0) = 100
filtertype(1) = 2
filterdata(0) = "AcDbBlockReference"
filterdata(1) = "имя блока"

работает, спасибо!!
stas_org вне форума  
 
Непрочитано 10.09.2008, 15:01
#25
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Код:
[Выделить все]
filtertype(0)=0
filterdata(0)="INSERT"
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.09.2008, 15:02
#26
stas_org


 
Регистрация: 05.04.2007
Самара
Сообщений: 1,199


а где сдесь имя блока?
stas_org вне форума  
 
Непрочитано 10.09.2008, 15:05
#27
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Ну добавишь. Я к тому, что по 100 группе не очень хорошо ориентироваться...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.09.2008, 15:10
#28
stas_org


 
Регистрация: 05.04.2007
Самара
Сообщений: 1,199


понял, РЕСПЕКТИЩЕ!!!
stas_org вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA SelectionSet

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пароль к VBA karp_b Программирование 24 29.08.2013 12:43
ActiveX Automation из VBA karp_b Программирование 5 14.09.2007 18:05
VBA vs LISP Kosenko Sasha LISP 23 06.03.2007 02:56
VBA пароль при открытии Dima_kr Программирование 3 05.02.2007 16:52
Не могу найти коды DXF для selectionset в VBA... ssn Программирование 4 06.12.2003 17:19