我试图避免在使用 Revit 2018 API 复制大量墙壁时收到警告消息,例如当一些墙壁重叠时。为此,我正在实现Building Coder中记录的 FailureHandler 类,稍微适用于 Python,也如此处记录。
现在,在一个简单的测试用例中,复制一些不会引发任何警告/错误的墙(我尝试过不考虑故障,只是复制墙,它可以完美运行而没有任何错误),当我实现并使用 FailureHandler 时类,我所有的墙创建事务都是回滚的。他们不应该,因为没有警告!我将 FailureHandler 实现减少到严格的最小值以尝试理解行为,但它不断回滚事务......
这是我对 FailureHandler 的实现:
class FailureHandler(IFailuresPreprocessor):
def __init__(self):
self.ErrorMessage = ""
self.ErrorSeverity = ""
def PreprocessFailures(self, failuresAccessor):
return FailureProcessingResult.ProceedWithCommit
如您所见,我希望它只是继续进行交易。但它会回滚。
主要程序:
wallTransaction = Transaction(doc,"creating new walls")
wallTransaction.Start()
failureHandlingOptions = wallTransaction.GetFailureHandlingOptions()
failureHandler = FailureHandler()
failureHandlingOptions.SetFailuresPreprocessor(failureHandler)
failureHandlingOptions.SetClearAfterRollback(True)
wallTransaction.SetFailureHandlingOptions(failureHandlingOptions)
newWall = Wall.Create(doc, geoLine, wallTypeId, levId, wallHeight, 0, False, True)
wallTransaction.Commit()
print wallTransaction.GetStatus()
同样,如果没有考虑所有这些 failureHandler ,此例程会创建没有警告/错误的墙。
有人可以解释一下为什么它会回滚吗?FailureProcessingResult.ProceedWithCommit 不只是暗示事务应该提交吗?
非常感谢!