16 апр. 2013 г.

Предварительный выбор объектов в AutoCAD C#.NET

Сегодня разбираю предварительный выбор объектов в AutoCAD с помощью C#.NET.
Ранее я уже имел дело с выбором с помощью LISP, немного сталкивался с ним и на C#.NET, но досконально не разбирался с ним. Пришло время это сделать!

Методы работы с предварительном выбором продемонстрированы тут: http://through-the-interface.typepad.com/through_the_interface/2006/09/using_the_pickf.html 



Есть два типа выбора объектов: выбор непосредственно в процессе выполнения программы и предварительный выбор. Предварительный выбор можно программно обработать. Делается это с помощью метода редактора документа SelectImplied(). Никаких параметров метод не требует, возвращаемое значение - типа PromptSelectionResult.


Ситуация №1 - предварительно ничего не выбрано.
В этом случае, метод вернет значение со следующими параметрами:


То есть, свойство Status полученного результата = Error, свойство Value = null.
Аналогичная картина будет, если в настройках отключен предварительный выбор, либо у атрибута команды нет флага  UsePickSet.

Ситуация №2 - есть предварительно выбранные объекты.
Картина такая:
Свойство Status имеет значение OK, свойство Value содержит набор предварительно выбранных объектов.

А что будет с объектами при сочетаниями с другими методами выбора?

Ситуация №3 - предварительный выбор, следом выбор обычный (метод GetSelection без параметров).
Тут получается так: если предварительный выбор есть, то метод GetSelection "подхватывает" предварительный набор и больше не предлагает ничего выбирать.

Ситуация №4 - предварительный выбор есть, следом выбор обычный методом GetSelection у которого заданы фильтры на объекты.
Если в наборе предварительно выбранных объектов находится хотя бы один, соответствующий фильтру, то все такие объекты формируются в новый набор, который помещается в свойство Value результата выбора методом GetSelection. Предложения на выбор объектов в чертеже в этом случае не будет.
Если же в наборе предварительно выбранных объектов ни один не соответствует фильтру, то предварительный набор сбрасывается и предлагается выбрать объекты. Интересно, что как только подходящий по фильтру объект выбран, то выбор на этом заканчивается, что, на мой взгляд, является не очень логичным поведением метода.

Комментариев нет:

Отправить комментарий