RevitAPI: 關閉當前文檔Close Active Document

有客戶想要實現關掉當前文檔,再重新打開,他參考了Jeremy的博客,產生了一些Event相關的問題,只是看了半天問題描述,有點暈。


我們知道要關掉一個文檔可以調用UIDocument.SaveAndClose()或者Document.Close(),然而,如果要關閉當前打開的文檔的話,會得到一個異常:InvalidOperationException: The active document may not be closed from the API.

意思是不能關掉當前激活狀態的文檔。

只有使用一些其他方法了,Jeremy提到使用往Revit發送消息的方法,往Revit發送Ctrl+F4鍵盤消息,即:

 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);
步驟:

  • 打開並激活另一個文檔docPlaceholder
  • 關掉文檔doc
  • 打開並激活doc
  • 關掉docPlaceholder
所以,應該是不需要用到events.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章