Наша надстройка Revit позволяет пользователю просматривать и устанавливать параметры типа, в том числе в связанных моделях. Он отлично работал в Revit 2011 и более ранних версиях, но в Revit 2012 и 2013 мы больше не можем их устанавливать. При построении транзакции в связанном документе я получаю: «Autodesk.Revit.Exceptions.ArguementException: документ является связанным файлом. Транзакции могут использоваться только в первичных документах (проектах или семействах)».
Итак, мы не можем использовать транзакции для связанных моделей. Поэтому я попытался установить параметр без транзакции, но затем получил исключение, в котором говорилось, что мы не можем изменять модель вне транзакции.
Невозможно создать транзакцию для связанных моделей и изменить модель вне транзакции - так как же изменить связанную модель в Revit 2012/2013? Он отлично работал в 2011 году с тем же кодом. Провел много поисков в Интернете, в том числе в блоге The Building Coder, но не нашел упоминания об этом критическом изменении или о том, как его обойти. Кто-нибудь может протянуть руку помощи?
Наш код прост - мы получаем параметр в модели, запускаем транзакцию и пытаемся установить значение параметра. Опять же, тот же код работает без ошибок в Revit 2011.
// elementType is an ElementType in document doc
// for which we want to set a type parameter.
Parameter typeParameter = elementType.get_Parameter(pararmeterName);
Transaction transaction = new Transaction(doc, "Update Revit Type"); // Exception thrown here if doc is a linked model
transaction.Start();
typeParameter.Set("FooValue");
transaction.Commit();