Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Gr.Om от 26-10-2025, 22:54:52
-
Здравствуйте.
Вижу в .NET Reference Guide методы для выбора объектов от SelectAll до SelectWindowPolygon.
У объекта Editor наравне с ними вроде как должен быть и .Select. По крайней мере вижу это в примерах, которые выдает поисковик.
Но отдельно метод "Select" упоминается в справке только в контексте таблиц.
Почему я не могу его найти и где мне его искать?
-
Если я правильно понял что ты ищешь, то это Editor.GetSelection()
-
Нет, мне нужно ранее сделанный программно набор (selectionSet) дополнительно отфильтровать по кодам DXF.
Поисковик стабильно выдает мне пример метода Select, одна из перегрузок которого якобы позволяет указать в параметрах существующий набор и фильтр:
// Вызываем метод Select()
PromptSelectionResult result = ed.Select(
previousSelection: initialResult.Value,
filter: filter
);VS2022 сам метод Editor.Select принимает, но на перечень параметров жалуется:
(https://i.ibb.co/1YgbBtw3/image.png) (https://imgbb.com/)
Поэтому и хочу выяснить, какие перегрузки допустимы.
-
Среди стандартных методов в AutoCAD.NET API такого нет. Скорее всего это какое-то расширение.
-
Хотя да.. Если оставить один параметр, тогда уже редактор жалуется и на сам метод..
(https://i.ibb.co/HfY421jB/image.png) (https://imgbb.com/)
Видимо типичная выдумка AI.
Александр, тогда подскажите пожалуйста оптимальный путь для решения этой задачи (фильтрации ранее сделанной выборки)
Только начинаю изучать API, голова пухнет. Смотрю на Editor.SelectPrevious, но не вижу, чтобы он принимал какие-либо параметры. А мне нужно подсунуть фильтр.
.GetSelection использует фильтр, но не вижу как подсунуть какой-либо предварительный набор ему.
На VBA пусть с костылями, но решал эту задачу без перебора.. А тут вроде бы возможностей больше, но не вижу способа их применить.
-
Костыль - это загнать твой набор в набор предварительного выбора Editor.SetImpliedSelection, а затем использовать GetSelection с фильтром. При этом если был набор предварительного выбора, то он пропадает. Ну и команда должна быть с флагом Redraw. Или перебором. Если фильтр простой, то метод с перебором предпочтительней.
-
И все же еще раз. Может я чего-то недопонимаю в великом и могучем .NET.
Если в VBA я могу в методе .Select выбрать любой способ выделения, и каждый из этих способов может сделать DXF-фильтрацию:
(https://i.ibb.co/8Df1YrZ3/image.png) (https://ibb.co/7JZsknmc)
То для API это уже неподъемная задача?!
-
Ну и где ты нашел, что в VBA для метода Select на вход можно подать набор?
-
Ровно так же, как и в NET. Создание выборки с использованием другой выборки возможно (только?) через .SelectPrevious (на VBA это .Select acSelectionSetPrevious), собственно на картинке он и используется.
Вопрос был в том, что на VBA все способы создания SelectionSet могут использовать фильтрацию, а в NET почему-то только .GetSelection (.SelectOnScreen в VBA) удостоился этой чести.
Из того, что успел изучить в части методов получения наборов выделения, .NET предоставляет ровно тот же перечень инструментов только с обрезанной функциональностью. Поэтому я собственно и задался вопросом. Т.к. только начал штудировать Reference Guide по .NET, возможно далеко не всю картину вижу. Но то, что вижу, что-то как-то расстроило.
-
а в NET почему-то только .GetSelection (.SelectOnScreen в VBA) удостоился этой чести.
Нет. Смотри внимательно документацию.
https://help.autodesk.com/view/OARX/2024/ENU/?guid=OARX-ManagedRefGuide-Autodesk_AutoCAD_EditorInput_Editor_SelectWindow_Point3d_Point3d_SelectionFilter
(https://i.postimg.cc/y3PcPhdW/IMG-20251028-113154.jpg) (https://postimg.cc/y3PcPhdW)
-
Да, был неправ частично..
Вот так нагляднее видно, что большая часть поддерживает фильтрацию.
(https://i.ibb.co/BHxdBbMv/image.png) (https://imgbb.com/)
Что в целом не отменяет меньшую функциональность по сравнению с VBA.
-
Что в целом не отменяет меньшую функциональность по сравнению с VBA.
Никто не мешает использовать в AutoCAD.NET API элементы COM/ActiveX (т.е. то, что есть в VBA).