我試圖通過在項目文檔中調用族的文檔並使用FamilyManager方法編輯族來創建新的族參數。 Dynamo論壇上有大約10個人要求這樣做,所以我想我會試一試。這裏是我的Python腳本如下:Revit API和Dynamo,從項目文檔創建族參數
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.
我假設,這個錯誤是因爲我打開一個已經存在通過家庭文件該腳本,然後永遠不會將信息發回給項目文件?或者類似的東西。有關如何解決此問題的任何提示?
曾任職!謝謝,Dimitar。一個註釋:我添加了一行來改變家庭的家庭類型輸入(f1.Family),以便EditFamily方法可以運行。除此之外,像魅力一樣工作。你能解釋一下FamOpt1類是如何工作的嗎?我意識到它來自API,但我不太明白。 – stdmn
另外,您應該將其打包到自定義節點中。似乎在論壇上很感興趣。 – stdmn
如果您正在餵養家庭符號,則只需提取家庭財產。在我的例子中,我正在餵養實際的家庭。 FamOpt1是內置Revit類的粗糙包裝。如果可以重寫項目系列的話,如果可以複製的話,如果需要API,它會返回你的答案。 (在上述情況下是固定的,或者是) – dimven