Выбор объектов с подсветкой ранее выбранных

Автор Тема: Выбор объектов с подсветкой ранее выбранных  (Прочитано 3047 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Всем привет!
Не могу решить вот такую задачу. Для расчета используется набор выбранных объектов на чертеже. ID этих объектов сохраняются в чертеже для дальнейшей работы. Сейчас появилась необходимость редактировать этот набор. Первым делом решил выбрать все объекты с помощью SetImpliedSelection(), а затем запустить GetSelection(), чтобы пользователь мог выбрать новые объекты или какие-то исключить, с ключевым словом "Завершить". Идея простая - выделить объекты, ID которых сохранены, запустить команду выбора, и по ее завершению заново считать ID выбранных объектов. Однако после SetImpliedSelection() метод GetSelection() возвращает ошибку и не работает. Я предполагаю, что это как раз из-за выбранные на чертеже объектов.
Вторым вариантом было создание своего класса Jig, чтобы по этим ID "подсветить" уже выбранные объекты, и реализовать выбор новых объектов. Только вот в JigPrompts нет запросов ни на выбор объекта, ни на указание рамки. Более менее подходит только AcquirePoint() - выбор точки. Так что необходимо будет указывать две точки, определять по ним прямоугольник, находить внутри него объекты чертежа, и добавлять новые объекты в набор. Как-то все непросто получается с этим Jig.
Есть ли человеческий способ решения этой задачи?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Мне кажется, что решение здесь: https://adn-cis.org/forum/index.php?topic=415.0
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
К сожалению, это не то - в этом примере, если до выполнения команды есть выбранные объекты, то используются они. А мне нужно посветить/выбрать определенные объекты во время выполнения самого метода GetSelection().

Отмечено как Решение Алексей Терно 03-09-2019, 00:26:12

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Ну тогда посмотри еще и это: https://adn-cis.org/forum/index.php?topic=1083.0
P.S.: Ссылку изменил - предыдущая была неправильной.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Кирилл Никифоров

  • ADN OPEN
  • Сообщений: 24
  • Карма: 4
Можно приблизительно так:
Код - 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# пробовал то же самое, работало так же, как и в лиспе.
Строки в коде именно в такой последовательности!

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Можно приблизительно так:
Код - 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)))
А как это будет на сишарповском? А то с лиспом я совсем не дружу

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
А как это будет на сишарповском? А то с лиспом я совсем не дружу
Практически так же как, там, куда я дал ссылку.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Практически так же как, там, куда я дал ссылку.
А я не заметил, что вы ссылку изменили... по ней действительно то, что мне надо ) Спасибо! Побежал пробовать )

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Работает!!! :)
Спасибо!