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

ADN Club => Revit API => Тема начата: enot от 03-03-2019, 11:38:55

Название: "Прозрачная" форма в Ревит
Отправлено: enot от 03-03-2019, 11:38:55
при запуске формы в ревит через кнопку на ленте нет возможности выбрать элементы в ревит (или выполнить любое другое действие), пока эта форма не будет закрыта. есть ли способ выбирать элементы и совершать все остальные действия в ревит, при запущенной форме ?
Название: Re: "Прозрачная" форма в Ревит
Отправлено: Александр Пекшев aka Modis от 03-03-2019, 11:40:30
Конечно есть - запустить окно в немодальной форме, используя Show() вместо ShowDialog()
Название: Re: "Прозрачная" форма в Ревит
Отправлено: enot от 03-03-2019, 11:42:11
как при этом тогда обработать событие :

DailogResult res = form.ShowDialog()
if (res==DialogResult.Ok)
{
...
Название: Re: "Прозрачная" форма в Ревит
Отправлено: Александр Игнатович от 03-03-2019, 18:44:17
Конечно есть - запустить окно в немодальной форме, используя Show() вместо ShowDialog()

Не забыть только, что тогда работать с Revit API через External events. См пример ModelessDialog\ModelessForm_ExternalEvent\CS в SDK.

как при этом тогда обработать событие :

Придерусь: это не событие. По сути вопроса - обрабатывать некое событие формы - нажатие какой-то кнопки (видимо, "ОК"), так же запуская external event для последующей обработки
Название: Re: "Прозрачная" форма в Ревит
Отправлено: Александр Пекшев aka Modis от 03-03-2019, 18:47:29
Не забыть только, что тогда работать с Revit API через External events. См пример ModelessDialog\ModelessForm_ExternalEvent\CS в SDK.
Для выбора элементов External Event не нужен
Название: Re: "Прозрачная" форма в Ревит
Отправлено: Александр Игнатович от 03-03-2019, 20:47:29
Согласен. Перемудрил, в голове про PickObject мелькало, да, скорее всего, достаточно обрабатывать Selection.
Название: Re: "Прозрачная" форма в Ревит
Отправлено: enot от 03-03-2019, 21:48:59
Конечно есть - запустить окно в немодальной форме, используя Show() вместо ShowDialog()
Спасибо , это помогло.
Вместо:

Цитировать
DailogResult res = form.ShowDialog()
if (res==DialogResult.Ok)

Использовал событие закрытия формы.

Не забыть только, что тогда работать с Revit API через External events. См пример ModelessDialog\ModelessForm_ExternalEvent\CS в SDK.
Спасибо, буду иметь ввиду что такая вещь существует  :D
Судя по всему, для дальнейшей обработки выбранных вручную элементов Ревит, при активной форме,  как раз и нужен будет  External events...
Название: Re: "Прозрачная" форма в Ревит
Отправлено: sdv79 от 07-12-2019, 20:02:10
Как обнулить данные после закрытия окна
Код - C# [Выбрать]
  1. ExternalEvent externalEvent = ExternalEvent.Create(new ExternalEventHandler());
  2. ...
  3.  
  4. externalEvent.Dispose(); // не помогает
  5.