Revit Временная транзакция в Python - PullRequest
0 голосов
/ 17 января 2019

Мне нужна помощь с использованием временных транзакций в Revit через Python. Я не могу извлечь данные из транзакции после отката.

Это для надстройки pyRevit, которая вставит определенное семейство. Я пытался использовать PyTevit DryTransactions, SubTransactions и GroupTransactions, но ни одна из них, похоже, не работает для меня.

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 теперь будет содержать семейный символ, но это не так. Если я проверяю его из транзакции, он работает, но после отката информация исчезает.

1 Ответ

0 голосов
/ 20 января 2019

Возможно, ваше присвоение fam_symbol создает указатель на строковую переменную fam_symbol.Name, которая исчезает после отката транзакции, вместо того, чтобы копировать ее значение. Прочитайте объяснение о присвоении другой переменной строке, сделайте копию или увеличьте счетчик ссылок : Python никогда не делает копию, если не указано иное, например, как использовать. copy или deepcopy.

...