參數添加 dynamo


以下是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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM