Python 中的 Revit 临时交易

Revit Temporary Transaction in Python

我需要通过 Python 在 Revit 中使用临时事务的帮助。我似乎无法在回滚后从事务中提取数据。

这是用于将插入特定族的 pyRevit 加载项。我试过使用 pyRevit 的 DryTransactions、SubTransactions 和 GroupTransactions,但 none 似乎对我有用。

fam_symbol = None

t = Transaction(doc, 'loadfamily')
t.Start()
     success, fam_symbol = doc.LoadFamilySymbol.Overloads.Functions[1](fam_doc_path, fam_symbol_name)
     doc.Regenerate()
     fam_symbol = fam_symbol.Name
t.RollBack()

我希望 fam_symbol 现在包含家族符号,但它没有。如果我从交易中测试它,它会工作,但在回滚后信息消失了。

也许您对 fam_symbol 的赋值创建了一个指向字符串变量 fam_symbol.Name 的指针,该指针在事务回滚后消失,而不是复制其值。阅读关于 assigning another variable to a string make a copy or increase the reference count 的解释:Python 永远不会制作副本,除非特别指示使用例如copydeepcopy