Тема: SelectOnScreen
Выбор объектов на экране происходит по формату:
SelectionSet.SelectOnScreen [FilterType][, FilterData]
Что такое FilterType и FilterData? Мне нужно отобрать BlockRefs и изменить их координаты.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → SelectOnScreen
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Выбор объектов на экране происходит по формату:
SelectionSet.SelectOnScreen [FilterType][, FilterData]
Что такое FilterType и FilterData? Мне нужно отобрать BlockRefs и изменить их координаты.
Посмотрел вот Example к функции SelectAtPoint, и наваял нечто:
Sub Example_SelectOnScreen() ' Create the selection set Dim ssetObj As AcadSelectionSet Set ssetObj = ThisDrawing.SelectionSets.Add("TEST_SSET") ' Add objects to a selection set by prompting user to select on the screen Dim gpCode(0) As Integer Dim dataValue(0) As Variant gpCode(0) = 0 dataValue(0) = "INSERT" Dim groupCode As Variant, dataCode As Variant groupCode = gpCode dataCode = dataValue ssetObj.SelectOnScreen groupCode, dataCode MsgBox ssetObj.Count ThisDrawing.SelectionSets.Item("TEST_SSET").Delete Set ssetObj = Nothing End Sub
Теперь вопрос ко всем: можно ли в бейсике сделать сложный выбор, как в лиспе на (ssget) с расширенным фильтром (см. примеры здесь https://www.caduser.ru/forum/topic15231.html)
На днях было https://www.caduser.ru/forum/topic15165.html
Сделать можно. Проблемма в том, что в VBA не берётся SelectionSet по Handle. А в VB срабатывает. Но если не учитывать Handle, то такой SelectionSet можно написать.
Кстати сделай такую функцию и каждый раз перед созданием своего SelectionSet-а запускай её, передавая ей имя твоего SelectionSet-а.
Sub CleanSelSet(name_set)
Dim i As Integer
Dim a As Integer
a = -1
For i = 0 To ThisDrawing.SelectionSets.Count - 1
If name_set = ThisDrawing.SelectionSets.Item(i).Name Then
a = i
End If
Next i
If a >= 0 Then
ThisDrawing.SelectionSets.Item(a).Delete
End If
End Sub
2Vig11:
зачем в цикле for беребирать до упора всю коллекцию?
можно проще:
https://www.caduser.ru/forum/topic13110.html
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → SelectOnScreen
Форум работает на PunBB, при поддержке Informer Technologies, Inc