Открытие файла проекта в событиях Revit API
Вопрос: Довольно понятная и четкая ошибка возникает при попытке выполнить метод Application.OpenandActivateDocument() дважды (т.е. пока нет активных документов, метод работает).
Я пробую выполнить этот метод в обработчике события Idling. Я думал я могу выполнять открытие документа в обработчике события.
Ответ: Помогла ли статья закрытие активного документа (на англ.)?
Ответ: Джереми, я прошелся по вашему блогу, перед тем как спрашивать и ту статью я читал.
Я пытался закрыть документ, но получил другую ошибку. Думаю, Process.Start может помочь, но мне не нравится этот метод, так как у меня не будет ссылки на документ в этом случае. Может быть можно пройтись по всем документам и найти нужный по имени файла?
Первый вызов метода работает, второй – нет.
Я создал проект на GitHub, чтобы совместно решить проблему.
Ответ от Arnošt Löbel: Мне тоже не очень нравится решение Джереми (и он об этом знает)
Хотя и открытие нового активного документа не разрешено в обработчиках событий, когда уже есть открытый и активный документ, должна быть какая-то альтернатива. Мне кажется у нас реализован механизм External Events, и в них нет подобных ограничений. Соответственно, пользователи, которые использовали событие Idling могут переключиться на использование External Events и это должно сработать.
Ну и конечно, как вы уже заметили, открытие базы данных документа не тоже имеет подобных ограничений.
В примерах к Revit SDK есть пример использования External Events, а также в файле справке Revit API.
Ответ: Я нашел пример использования в блоге Джереми и обновил свой проект используя External Events и действительно все заработало.
Спасибо за помощь. Я обновил пример на GitHub.
В последней версии демонстрируется как использование ExternalEvent решает проблему ошибки «Не разрешено переключение активного документа в обработке событий API», при попытке открыть документ (больше чем один документ) из команды или в обработчике события.
Также показывается как объявить и вызывать внешние события.
Обсуждение: http://adn-cis.org/forum/index.php?topic=1916
Опубликовано 09.03.2015