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

21/02/2015

Автозагрузка проекта при запуске Revit

Вопрос: Мне интересно, как можно загрузить файл автоматически при загрузке Revit.

Класс UIControlledApplication является единственным параметром метода OnStartup класса, реализующего интерфейс IExternalApplication. А метод OpenAndActivateDocument есть только в классе UIApplication.

Как же вызвать метод UIApplication.OpenAndActivateDocument из метода OnStartup? Или может как-то можно решить эту проблему по-другому?

Ответ: Действительно, класс UIControlledApplication не может использоваться для открытия проекта, так как Revit все еще находится в процессе инициализации и не готов еще к открытию файлов.

Но, в методе OnStartup вы можете настроить систему таким образом, чтобы после завершения загрузки Revit открылся файл.

Но, перед тем как это делать, я все же напомню, что наиболее легкий способ запустить Revit и сразу же загрузить файл – это воспользоваться методом Process.Start.

Как вы и заметили, после завершения инициализации Revit можно уже воспользоваться методом UIApplication.OpenAndActivateDocument, как это продемонстрировано в статье Закрытие активного документа (на англ.)

Для подготовки метода открытия проекта из метода OnStartup, нужно временно подписаться на событие Idling. Затем, в обработчике этого события, отписаться от него и в этом же обработчике можно открыть проект.

Ответ от Arnošt Löbel: Сейчас с помощью Revit API можно решить эту проблему более корректно без использования события Idling. 3 года назад, это действительно была единственная возможность достичь этого результата. Сейчас же можно использовать событие ApplicationInitialized. Так же, как и в случае с Idling, нужно подписаться на событие ApplicationInitialized в методе OnStartup. Revit вызовет это событие немного позднее, когда инициализация Revit будет полностью завершена. Но, помните, что как и с событием Idling, метод OpenAndActivateDocument может быть использован только если в Revit нет активных документов.

Источник: http://thebuildingcoder.typepad.com/blog/2015/02/family-instance-area-and-auto-loading-a-project-file.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=1886

Опубликовано 21.02.2015