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

ADN Club => Revit API => Тема начата: Vladislav от 21-02-2020, 21:34:10

Название: Выбор элементов в API
Отправлено: Vladislav от 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, вроде, работает.
Название: Re: Выбор элементов в API
Отправлено: Agens от 23-02-2020, 11:15:13
может метод не из той библиотеки вытягивается?
Название: Re: Выбор элементов в API
Отправлено: Vladislav от 24-02-2020, 16:50:57
Например? А откуда он может вытягиваться?
Название: Re: Выбор элементов в API
Отправлено: Agens от 24-02-2020, 19:28:34
какие библиотеки в using перечислены?
Название: Re: Выбор элементов в API
Отправлено: Александр Ривилис от 24-02-2020, 20:16:39
Vladislav,
Модальная форма (диалог)?
https://forums.autodesk.com/t5/revit-api-forum/pickobject-from-windows-form-c/td-p/8021010
Если в двух словах, то нужно завершить диалог, а затем уже запускать выбор. После этого можно восстановить диалог.
Название: Re: Выбор элементов в API
Отправлено: Александр Игнатович от 25-02-2020, 10:03:13
Из немодальной формы так тем более нельзя вызывать выбор элементов. Насколько помню, с такой проблемой кто-то где-то сталкивался, при запуске схожим образом выбора элементов из немодальной формы / dockable pane Revit просто подвисал (хотя должен был крашнуться). Если проблема в этом - читай про ExternalEvent-ы, смотри пример ModelessDialog\ModelessForm_ExternalEvent в SDK
Название: Re: Выбор элементов в API
Отправлено: Александр Пекшев aka Modis от 25-02-2020, 17:28:01
Revit переходит в режим ожидания вместо выбора
Что такое "режим ожидания" в Revit???
Из немодальной формы так тем более нельзя вызывать выбор элементов. Насколько помню, с такой проблемой кто-то где-то сталкивался, при запуске схожим образом выбора элементов из немодальной формы / dockable pane Revit просто подвисал (хотя должен был крашнуться). Если проблема в этом - читай про ExternalEvent-ы, смотри пример ModelessDialog\ModelessForm_ExternalEvent в SDK
Для выбора элементов из модели совершенно без разницы модальный или немодальный диалог. ExternalEvent нужно использовать когда требуется внесение изменений в модель
Название: Re: Выбор элементов в API
Отправлено: Александр Игнатович от 25-02-2020, 17:51:41
External event никак не связан со внесением в модель изменений. Он нужен для получения валидного контекста API, что там уже дальше делать - зависит от задачи, прочитать какие-то данные, изменить модель, выделить элементы или запросить выделение.

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

это, видимо, называется, "завис"
Название: Re: Выбор элементов в API
Отправлено: Александр Пекшев aka Modis от 25-02-2020, 17:55:27
Он нужен для получения валидного контекста API
Так я и говорю - выбор элементов будет работать и без External Event
это, видимо, называется, "завис"
А вдруг это называется "нажать кнопку "Готово" по окончании множественного выбора", а мы тут голову ломаем? =))
Название: Re: Выбор элементов в API
Отправлено: Александр Игнатович от 25-02-2020, 18:02:10
Так я и говорю - выбор элементов будет работать и без External Event

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

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

ну может быть