Revit API-如何检查未完成的事务,子事务或组事务

问题描述 投票:1回答:2

我正在使用一个按钮,其中有一个项目文档和一个家庭文档都已打开。我正在尝试关闭家庭文件,但出现错误:

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 ....

revit-api revit revitpythonshell pyrevit
2个回答
0
投票

Afaik,Revit API不允许您从外部检查是否已开始事务。您需要访问Transaction对象本身以检查其状态。如果您不是自己创建的,则无法访问它。


0
投票

是的,有一种方法可以检查未完成的事务,它对创建灵活的辅助函数很有帮助。 Document对象具有IsModifiable属性-本质上,如果打开了事务,则该属性为True。

© www.soinside.com 2019 - 2024. All rights reserved.