以下是Python節點的輸入順序:
IN [0] - 參數名稱作為字符串。這將是你的參數的名稱。
IN [1] - Group Name as String。這將是共享參數組名稱。該參數將被存儲在該組中。
IN [2] - 參數類型,它定義是否是一個是/否,文本,整數等參數類型。在左邊有一個單獨的Python節點,枚舉項目中可用的所有參數類型,以便獲取其中的一個。
IN [3] - 可見?這是一個布爾真/假,這將使參數用戶可見(它將顯示在元素的屬性中)或不可見(用戶不能看到參數,它只能通過API訪問)
IN [4] - 元素類別。這是一個你想添加參數到ex的類別。通用模型或家具。
IN [5] - 參數組。這是在UI中顯示時參數存儲的組。當您選擇一個元素時,每個參數都在一個組內。最常用的是圖形,文本,標識等,但還有更多可用於放置您的參數。
IN [6] - 實例?這是一個布爾真/假,確定這將是一個實例或類型參數。
一旦你運行這個定義,它將在共享參數文件中創建參數,並將其添加到項目中。
參數類型節點的代碼 Parameter Group node:
import clr clr.AddReference('ProtoGeometry') from Autodesk.DesignScript.Geometry import * # Import DocumentManager and TransactionManager clr.AddReference("RevitServices") import RevitServices from RevitServices.Persistence import DocumentManager from RevitServices.Transactions import TransactionManager # Import RevitAPI clr.AddReference("RevitAPI") import Autodesk from Autodesk.Revit.DB import * import System #Assign your output to the OUT variable OUT = System.Enum.GetValues(ParameterType)
參數組節點Parameter Group node:
import clr clr.AddReference('ProtoGeometry') from Autodesk.DesignScript.Geometry import * # Import DocumentManager and TransactionManager clr.AddReference("RevitServices") import RevitServices from RevitServices.Persistence import DocumentManager from RevitServices.Transactions import TransactionManager # Import RevitAPI clr.AddReference("RevitAPI") import Autodesk from Autodesk.Revit.DB import * import System #Assign your output to the OUT variable OUT = System.Enum.GetValues(BuiltInParameterGroup)
參數創建節點parameter creation node:
import clr clr.AddReference(‘ProtoGeometry’) from Autodesk.DesignScript.Geometry import * # Import DocumentManager and TransactionManager clr.AddReference(“RevitServices”) import RevitServices from RevitServices.Persistence import DocumentManager from RevitServices.Transactions import TransactionManager # Import RevitAPI clr.AddReference(“RevitAPI”) import Autodesk from Autodesk.Revit.DB import * doc = DocumentManager.Instance.CurrentDBDocument uiapp = DocumentManager.Instance.CurrentUIApplication app = uiapp.Application from System.Collections.Generic import * # Import ToDSType(bool) extension method clr.AddReference(“RevitNodes”) import Revit clr.ImportExtensions(Revit.Elements) import System #The inputs to this node will be stored as a list in the IN variable. dataEnteringNode = IN _paramName = IN[0] _groupName = IN[1] _paramType = IN[2] _visible = IN[3] _category = IN[4] _paramGroup = IN[5] _instance = IN[6] def ParamBindingExists(_doc, _paramName, _paramType): map = doc.ParameterBindings iterator = map.ForwardIterator() iterator.Reset() while iterator.MoveNext(): if iterator.Key != None and iterator.Key.Name == _paramName and iterator.Key.ParameterType == _paramType: paramExists = True break else: paramExists = False return paramExists def RemoveParamBinding(_doc, _paramName, _paramType): map = doc.ParameterBindings iterator = map.ForwardIterator() iterator.Reset() while iterator.MoveNext(): if iterator.Key != None and iterator.Key.Name == _paramName and iterator.Key.ParameterType == _paramType: definition = iterator.Key break message = None if definition != None: map.Remove(definition) message = “Success” return message #”Start” the transaction TransactionManager.Instance.EnsureInTransaction(doc) message = None if ParamBindingExists(doc, _paramName, _paramType): if not RemoveParamBinding(doc, _paramName, _paramType) == “Success”: message = “Param Binding Not Removed Successfully” else: message = None try: file = app.OpenSharedParameterFile() except: message = “No Shared Parameter file found.” pass group = file.Groups.get_Item(_groupName) if group == None: group = file.Groups.Create(_groupName) if group.Definitions.Contains(group.Definitions.Item[_paramName]): _def = group.Definitions.Item[_paramName] else: _def = group.Definitions.Create(_paramName, _paramType, _visible) builtInCategory = System.Enum.ToObject(BuiltInCategory, _category.Id) cats = app.Create.NewCategorySet() cats.Insert(doc.Settings.Categories.get_Item(builtInCategory)) if _instance: bind = app.Create.NewInstanceBinding(cats) else: bind = app.Create.NewTypeBinding(cats) param = doc.ParameterBindings.Insert(_def, bind, _paramGroup) # “End” the transaction TransactionManager.Instance.TransactionTaskDone() #Assign your output to the OUT variable if message == None: OUT = “Success” else: OUT = message
http://www.360doc.com/content/16/0624/11/13726687_570358668.shtml