RevitAPI: 关于一些Exception

RevitAPI的使用过程中,我们会碰到各种各样的异常(Exception),我想在这里收集一些常见的Exception,并探讨一下它们的原因以及处理办法。


ModificationOutsideTransactionException

首先我们看看这个异常ModificationOutsideTransactionException,对初入RevitAPI门的工程师们,这个无疑是第一盆冷水偷笑

例如我们只调用这么一段代码,执行的时候就会出现这个异常:

RevitDoc.ProjectInformation.Author = "Aaron Lu";
原因是对Revit模型进行修改的时候,需要放到一个事务Transaction里面,例如:

Transaction transaction = new Transaction(doc, "Change author of project");
transaction.Start();
try
{
    RevitDoc.ProjectInformation.Author = "Aaron Lu"; //put here
    transaction.Commit();
}
catch (Exception ex)
{
    transaction.RollBack();
}
这么做的好处是,我们的操作会出现在Revit的Undo/Redo列表里面,也就是说我们可以在界面上撤销或者重做该操作。


Autodesk.Revit.Exceptions.InvalidOperationException: The document is currently modifiable! Close the transaction before calling EditFamily

我们不能把Document.EditFamily()方法的调用包含在Transaction里面,因为EditFamily方法本身在里面起了一个Transaction了,所以正确的方式应该是把EditFamily的调用放在Transaction外面,否则就会有这个异常抛出。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值