Работа с выборкой объектов
Набор выделенных объектов может одержать один или несколько объектов, в том числе с использованием фильтра (например, объект на заданном слое для заданных типов). Выбор объектов Пользователем обычно предваряет собой начало каких-либо команд.
Наборы выделенных объектов не являются постоянными объектами. Если вам необходимо сохранить набор выделенных объектов для использования между несколькими командами, вам потребуется создать пользовательский словарь (DBDictionary) и записать в него идентификаторы объектов (ObjectId) из набора в виде XRecord с так называемыми soft-pointers (TypedValue с типом SoftPointerId).
В качестве альтернативы хранению идентификаторов объектов в виде soft-pointers, вы можете хранить идентификатор (Handle) каждого объекта в словаре. Затем, для получения из него ObjectId можно использовать метод Database.GetObjectId.
Независимо от того, храните ли вы идентификатор объекта в виде soft-pointers или дескриптора (Handle) в словаре, вам необходимо убедиться, что объект существует, прежде чем обращаться к нему.
Пользовательский ввод и фильтры выбора
Различные типы вводимых данных реализованы через специальные методы класса Editor пространства имён Autodesk.AutoCAD.EditorInput.
Объект PromptSelectionOptions используется для формулировки запроса, который будет предложен Пользователю при начале операции выбора, а класс SelectionFilter может использоваться для фильтрации набора выбора по различным свойствам объекта.
Класс PromptSelectionOptions предоставляет метод SetKeywords для указания ключевых слов запроса, а также свойства MessageForAdding и MessageForRemoval для вывода некоего сообщения вместе с операцией запроса. Класс SelectionFilter принимает параметры фильтра в виде массива объектов TypedValue, как описано в разделе О типе данных ResultBuffer. Каждый объект TypedValue представляет одно условие фильтра. Для выбора может быть указано любое количество условий разных типов (несколько условий для одного TypedValue.Key должно быть записано в единое значение TypedValue.Value).
Когда приложение готово запросить набор выбора, вызывается метод GetSelection объекта Editor. Метод Editor.GetSelection существует в нескольких перегрузках. Для простой выборки без фильтрации с использованием стандартного запроса AutoCAD используется перегрузка без параметров. В случаях, когда требуется предоставить пользовательские сообщения запроса, включая ключевые слова, используется перегрузка, которая принимает объект PromptSelectionOptions. Для указания фильтра используется перегрузка, которая принимает также и объект SelectionFilter.
Существуют и другие методы пользовательского ввода: метод Editor.SelectImplied обеспечивает доступ к набору выбора или набору выбора, который Пользователь сформировал до вызова команды. Метод Editor.SelectPrevious возвращает объекты, выбранные в предыдущем наборе выбора. Такие методы, как SelectCrossingWindow и SelectFence, позволяют выбирать объекты, видимые в текущем окне, пересекаемые заданным многоугольником и т.д.