Закрытие активного документа
На форуме один из пользователей говорит, что он хочет закрыть активный документ и заново его открыть. Он прочитал на блоге Jeremy как это сделать, но все же у него остались некоторые поросы, хоть я их и не очень понялL.
Как мы знаем, для закрытия документа используется метод UIDocument.SaveAndClose() или Document.Close(). Однако, при попытке закрыть активный документ, мы получаем исключение InvalidOperationException – нельзя закрыть активный документ с помощью API.
Поэтому нужно использовать что-то другое. Один из способов, предложенных Jeremy – послать сообщение Ctrl+F4 в окно Revit, т.е.:
- SendKeys.SendWait( "^{F4}" );
Другой способ – открыть и активировать пустой документ и затем закрыть желаемый документ. Как раз этот метод пользователь использовал, и он прекрасно сработал.
Для обобщения информация о чем эта статья, я приведу код:
- var placeholderFile = @"C:\placeholder.rvt";
- var doc = commandData.Application.ActiveUIDocument.Document;
- var file = doc.PathName;
- var docPlaceholder = commandData.Application.OpenAndActivateDocument(placeholderFile);
- doc.Close(false);
- var uidoc = commandData.Application.OpenAndActivateDocument(file);
- docPlaceholder.Document.Close(false);
Т.е. алгоритм таков:
- Открываем и активируем пустой документ
- Закрываем требуемый документ
- Открываем его заново и активируем
- Закрываем пустой документ.
На этом всеJ
Источник: http://adndevblog.typepad.com/aec/2015/07/revitapi-close-active-document.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=3055
Опубликовано 27.09.2015