プロジェクト ドキュメントでファミリのドキュメントを呼び出し、FamilyManager メソッドを使用してファミリを編集することにより、新しいファミリ パラメータを作成しようとしています。Dynamo フォーラムで約 10 人がこれを求めていたので、試してみることにしました。以下は私のPythonスクリプトです。
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference("RevitServices")
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import *
#The inputs to this node will be stored as a list in the IN variables.
familyInput = UnwrapElement(IN[0])
familySymbol = familyInput.Symbol.Family
doc = familySymbol.Document
par_name = IN[1]
par_type = ParameterType.Text
par_grp = BuiltInParameterGroup.PG_DATA
TransactionManager.Instance.EnsureInTransaction(doc)
familyDoc = doc.EditFamily(familySymbol)
OUT = familyDoc.FamilyManager.AddParameter(par_name,par_grp,par_type,False)
TransactionManager.Instance.TransactionTaskDone()
スクリプトを実行すると、次のエラーが表示されます。
Warning: IronPythonEvaluator.EvaluateIronPythonScript operation failed.
Traceback (most recent call last):
File "<string>", line 26, in <module>
Exception: The document is currently modifiable! Close the transaction before calling EditFamily.
このエラーは、スクリプトを使用して既に存在するファミリ ドキュメントを開き、その情報をプロジェクト ドキュメントに送り返さないためだと思いますか? またはそれに似たもの。これを回避する方法に関するヒントはありますか?