在Revit二次开发过程中,要关掉一个文档可以调用UIDocument.SaveAndClose()或者Document.Close();
然而,如果要关闭当前打开的文档的话,会得到一个异常:InvalidOperationException: The active document may not be closed from the API.意思是不能关掉当前激活状态的文档。
解决方法是打开并激活另一个文档,然后把前面这个文档关掉,
步骤:
打开并激活另一个文档docPlaceholder
关掉文档doc
打开并激活doc
关掉docPlaceholder
所以,应该是不需要用到events.
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);