Revit API 开发(13): Revit API 文件打开、关闭和保存操作

这里再对 Revit 通过 API 打开和关闭文件的操作做一些总结。

打开文件

有两种方式:
在UI上显示,可以用 Autodesk.Revit.UI::UIApplication 下面的OpenAndActivateDocument
不在UI上显示,可以用Autodesk.Revit.ApplicationServices::Application下面的Application.OpenDocumentFile
可以参考:Revit API 开发 (11): 不在UI上打开文件,获取文件中的信息 - BasicFileInfo & Application.OpenDocumentFile
然而,很多时候打开文件的时候,我们还想做一些其它的操作,那么该怎么办呢?

在打开文件之前和之后做操作

通常有时候需要在文件打开之前和之后做一些操作,比如做一些记录,亦或者有简单文件检验和效验功能。那么,就需要用到相关的事件:ControlledApplication::DocumentOpeningControlledApplication::DocumentOpened
通常,如果用到了这些事件,那么说明你的应用已经相当复杂了,很可能实现的方式采用的是IExternalApplication

// OnShutdown 和 OnStartup 是 IExternalApplication 仅有的两个接口,都需要实现。
// application.ControlledApplication.DocumentOpened 
// 在 OnStartup 的时候添加,处理函数,在 OnShutdown 的时候去掉自己添加的处理函数。
// 在事件处理函数中,可以通过 e.Document 来获得对应的 Document。
// 这里是 DocumentOpened,那么是文档已经被打开了,所以它的内容应该是有效的。
// 如果是 DocumentOpening,最好自己判断一下。
namespace A {
    public class ExternalApp : IExternalApplication
    {
        public Result OnShutdown(UIControlledApplication application)
        {
            application.ControlledApplication.DocumentOpened -= ControlledApplication_DocumentOpened;
            return Result.Succeeded;
        }

        public Result OnStartup(UIControlledApplication application)
        {
            application.ControlledApplication.DocumentOpened += ControlledApplication_DocumentOpened;
            return Result.Succeeded;
        }

        private void ControlledApplication_DocumentOpened(object sender, Autodesk.Revit.DB.Events.DocumentOpenedEventArgs e)
        {
            e.Document;
        }
    }
}

关闭和保存文件

文件的关闭和保存,本质上是连在一起的。可以直接调用 Document::Close 这个方法,不传参数,那么就是保存并且关闭。如果传参数,是一个 布尔变量,真则保存关闭,假则不保存关闭。
**如果是最后一个打开的文件,那么,它是不能被关闭的。**这个时候,你有两种选择,第一个就是你去打开另外一个文件,然后把这个关掉。另外一个就是调用UIApplication::PostCommand

// 如果是在 IExternalCommand 中调用,那么它会在命令结束之后被调用。
// 如果你想对被关闭的文件做什么操作,那么你需要借助 DocumentClosed 这个事件了。
// (事件的使用方式和上面类似)
uiApplication.PostCommand(RevitCommandId.LookupPostableCommandId(PostableCommand.Close));

如果仅仅想要保存,那么可以调用,Document::Save。同理,也有另存为Document::SaveAs

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客BIM工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值