我正在使用一个按钮,其中有一个项目文档和一个家庭文档都已打开。我正在尝试关闭家庭文件,但出现错误:
Autodesk.Revit.Exceptions.InvalidOperationException: 'Close is not allowed when there is any open sub-transaction, transaction, or transaction group.'
我已经检查了所有事务,并且都使用transactionName.Start(document)
和transactionName.Commit()
启动和提交了所有事务>
没有人知道检查任何正在进行的活跃交易的方法吗?
我也尝试过使用
'RevitCommandId closeDoc = RevitCommandId.LookupPostableCommandId(PostableCommand.Close);
uiapp.PostCommand(closeDoc);'
但是往往只想关闭我的项目文档。
/////////////////////////////////// UPDATE ////////////// /////////////////如此,我刚刚发现我不需要使用uiapp.OpenAndActivateDocument()。我不知道您可以在不打开文档的情况下编辑家庭。那解决了我的问题。我仍然很好奇,尽管有一种方法可以检查未清交易。
我正在使用一个按钮,其中有一个项目文档和一个家庭文档都已打开。我正在尝试关闭族文档,但是出现一条错误消息:Autodesk.Revit.Exceptions ....
Afaik,Revit API不允许您从外部检查是否已开始事务。您需要访问Transaction
对象本身以检查其状态。如果您不是自己创建的,则无法访问它。
是的,有一种方法可以检查未完成的事务,它对创建灵活的辅助函数很有帮助。 Document
对象具有IsModifiable
属性-本质上,如果打开了事务,则该属性为True。