Выбор элементов в API

Автор Тема: Выбор элементов в API  (Прочитано 5942 раз)

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

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Выбор элементов в API
« : 21-02-2020, 21:34:10 »
Здравствуйте! При выполнении данного кода
Код - C# [Выбрать]
  1. var sel = m_uiDoc.Selection;
  2. var refList = sel.PickObjects(Autodesk.Revit.UI.Selection.ObjectType.Element);
Revit переходит в режим ожидания вместо выбора. Как это исправить, чтобы выбор работал?
Спасибо.

P.S: Код выполняется не в методе Execute, а в обработчике нажатия кнопки в созданном мной окне.
Из метода Execute, вроде, работает.
« Последнее редактирование: 22-02-2020, 21:47:48 от Vladislav »

Оффлайн Agens

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Выбор элементов в API
« Ответ #1 : 23-02-2020, 11:15:13 »
может метод не из той библиотеки вытягивается?
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Re: Выбор элементов в API
« Ответ #2 : 24-02-2020, 16:50:57 »
Например? А откуда он может вытягиваться?

Оффлайн Agens

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Выбор элементов в API
« Ответ #3 : 24-02-2020, 19:28:34 »
какие библиотеки в using перечислены?
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Выбор элементов в API
« Ответ #4 : 24-02-2020, 20:16:39 »
Vladislav,
Модальная форма (диалог)?
https://forums.autodesk.com/t5/revit-api-forum/pickobject-from-windows-form-c/td-p/8021010
Если в двух словах, то нужно завершить диалог, а затем уже запускать выбор. После этого можно восстановить диалог.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Выбор элементов в API
« Ответ #5 : 25-02-2020, 10:03:13 »
Из немодальной формы так тем более нельзя вызывать выбор элементов. Насколько помню, с такой проблемой кто-то где-то сталкивался, при запуске схожим образом выбора элементов из немодальной формы / dockable pane Revit просто подвисал (хотя должен был крашнуться). Если проблема в этом - читай про ExternalEvent-ы, смотри пример ModelessDialog\ModelessForm_ExternalEvent в SDK

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Выбор элементов в API
« Ответ #6 : 25-02-2020, 17:28:01 »
Revit переходит в режим ожидания вместо выбора
Что такое "режим ожидания" в Revit???
Из немодальной формы так тем более нельзя вызывать выбор элементов. Насколько помню, с такой проблемой кто-то где-то сталкивался, при запуске схожим образом выбора элементов из немодальной формы / dockable pane Revit просто подвисал (хотя должен был крашнуться). Если проблема в этом - читай про ExternalEvent-ы, смотри пример ModelessDialog\ModelessForm_ExternalEvent в SDK
Для выбора элементов из модели совершенно без разницы модальный или немодальный диалог. ExternalEvent нужно использовать когда требуется внесение изменений в модель

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Выбор элементов в API
« Ответ #7 : 25-02-2020, 17:51:41 »
External event никак не связан со внесением в модель изменений. Он нужен для получения валидного контекста API, что там уже дальше делать - зависит от задачи, прочитать какие-то данные, изменить модель, выделить элементы или запросить выделение.

Что такое "режим ожидания" в Revit???

это, видимо, называется, "завис"

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Выбор элементов в API
« Ответ #8 : 25-02-2020, 17:55:27 »
Он нужен для получения валидного контекста API
Так я и говорю - выбор элементов будет работать и без External Event
это, видимо, называется, "завис"
А вдруг это называется "нажать кнопку "Готово" по окончании множественного выбора", а мы тут голову ломаем? =))

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Выбор элементов в API
« Ответ #9 : 25-02-2020, 18:02:10 »
Так я и говорю - выбор элементов будет работать и без External Event

В том то и дело, что где-то кто-то когда-то написал похожий код, сохранили в поле класса формы UIDocument, вызывали форму в немодальном режиме, получали зависание Revit-а.

А вдруг это называется "нажать кнопку "Готово" по окончании множественного выбора", а мы тут голову ломаем? =))

ну может быть