这里再对 Revit 通过 API 打开和关闭文件的操作做一些总结。
打开文件
有两种方式:
在UI上显示,可以用 Autodesk.Revit.UI::UIApplication 下面的OpenAndActivateDocument;
不在UI上显示,可以用Autodesk.Revit.ApplicationServices::Application下面的Application.OpenDocumentFile。
可以参考:Revit API 开发 (11): 不在UI上打开文件,获取文件中的信息 - BasicFileInfo & Application.OpenDocumentFile
然而,很多时候打开文件的时候,我们还想做一些其它的操作,那么该怎么办呢?
在打开文件之前和之后做操作
通常有时候需要在文件打开之前和之后做一些操作,比如做一些记录,亦或者有简单文件检验和效验功能。那么,就需要用到相关的事件:ControlledApplication::DocumentOpening 和 ControlledApplication::DocumentOpened。
通常,如果用到了这些事件,那么说明你的应用已经相当复杂了,很可能实现的方式采用的是IExternalApplication。
关闭和保存文件
文件的关闭和保存,本质上是连在一起的。可以直接调用 Document::Close 这个方法,不传参数,那么就是保存并且关闭。如果传参数,是一个 布尔变量,真则保存关闭,假则不保存关闭。
**如果是最后一个打开的文件,那么,它是不能被关闭的。**这个时候,你有两种选择,第一个就是你去打开另外一个文件,然后把这个关掉。另外一个就是调用UIApplication::PostCommand:
// 如果是在 IExternalCommand 中调用,那么它会在命令结束之后被调用。
// 如果你想对被关闭的文件做什么操作,那么你需要借助 DocumentClosed 这个事件了。
// (事件的使用方式和上面类似)
uiApplication.PostCommand(RevitCommandId.LookupPostableCommandId(PostableCommand.Close));
1
2
3
4
如果仅仅想要保存,那么可以调用,Document::Save。同理,也有另存为Document::SaveAs。
————————————————