Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Алексей Терно от 01-09-2019, 13:02:11

Название: Выбор объектов с подсветкой ранее выбранных
Отправлено: Алексей Терно от 01-09-2019, 13:02:11
Всем привет!
Не могу решить вот такую задачу. Для расчета используется набор выбранных объектов на чертеже. ID этих объектов сохраняются в чертеже для дальнейшей работы. Сейчас появилась необходимость редактировать этот набор. Первым делом решил выбрать все объекты с помощью SetImpliedSelection(), а затем запустить GetSelection(), чтобы пользователь мог выбрать новые объекты или какие-то исключить, с ключевым словом "Завершить". Идея простая - выделить объекты, ID которых сохранены, запустить команду выбора, и по ее завершению заново считать ID выбранных объектов. Однако после SetImpliedSelection() метод GetSelection() возвращает ошибку и не работает. Я предполагаю, что это как раз из-за выбранные на чертеже объектов.
Вторым вариантом было создание своего класса Jig, чтобы по этим ID "подсветить" уже выбранные объекты, и реализовать выбор новых объектов. Только вот в JigPrompts нет запросов ни на выбор объекта, ни на указание рамки. Более менее подходит только AcquirePoint() - выбор точки. Так что необходимо будет указывать две точки, определять по ним прямоугольник, находить внутри него объекты чертежа, и добавлять новые объекты в набор. Как-то все непросто получается с этим Jig.
Есть ли человеческий способ решения этой задачи?
Название: Re: Выбор объектов с подсветкой ранее выбранных
Отправлено: Александр Ривилис от 01-09-2019, 13:50:24
Мне кажется, что решение здесь: https://adn-cis.org/forum/index.php?topic=415.0
Название: Re: Выбор объектов с подсветкой ранее выбранных
Отправлено: Алексей Терно от 01-09-2019, 14:32:33
К сожалению, это не то - в этом примере, если до выполнения команды есть выбранные объекты, то используются они. А мне нужно посветить/выбрать определенные объекты во время выполнения самого метода GetSelection().
Название: Re: Выбор объектов с подсветкой ранее выбранных
Отправлено: Александр Ривилис от 01-09-2019, 16:01:54
Ну тогда посмотри еще и это: https://adn-cis.org/forum/index.php?topic=1083.0
P.S.: Ссылку изменил - предыдущая была неправильной.
Название: Re: Выбор объектов с подсветкой ранее выбранных
Отправлено: Кирилл Никифоров от 02-09-2019, 07:54:38
Можно приблизительно так:
Код - Auto/Visual Lisp [Выбрать]
  1. (command "._select" aSelection "")
  2. (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) "_P ")
  3. (if aString
  4.    (setq aSelection (ssget aString aFilter))
  5.    (setq aSelection (ssget aFilter)))
, где aString - набор дополнительных ключей ssget? aFilter - фильтр, если надо.
В C# пробовал то же самое, работало так же, как и в лиспе.
Строки в коде именно в такой последовательности!
Название: Re: Выбор объектов с подсветкой ранее выбранных
Отправлено: Алексей Терно от 02-09-2019, 18:51:28
Можно приблизительно так:
Код - Auto/Visual Lisp [Выбрать]
  1. (command "._select" aSelection "")
  2. (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) "_P ")
  3. (if aString
  4.    (setq aSelection (ssget aString aFilter))
  5.    (setq aSelection (ssget aFilter)))
А как это будет на сишарповском? А то с лиспом я совсем не дружу
Название: Re: Выбор объектов с подсветкой ранее выбранных
Отправлено: Александр Ривилис от 02-09-2019, 18:52:44
А как это будет на сишарповском? А то с лиспом я совсем не дружу
Практически так же как, там, куда я дал ссылку.
Название: Re: Выбор объектов с подсветкой ранее выбранных
Отправлено: Алексей Терно от 02-09-2019, 19:17:27
Практически так же как, там, куда я дал ссылку.
А я не заметил, что вы ссылку изменили... по ней действительно то, что мне надо ) Спасибо! Побежал пробовать )
Название: Re: Выбор объектов с подсветкой ранее выбранных
Отправлено: Алексей Терно от 03-09-2019, 00:26:34
Работает!!! :)
Спасибо!