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();