import clr
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.ExternalService import *
from Autodesk.Revit.DB.ExtensibleStorage import *
from System.Collections.Generic import *
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
from System.Collections.Generic import *
doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
def getServerById(serverGUID, serviceId):
service = ExternalServiceRegistry.GetService(serviceId)
if service != "null" and serverGUID != "null":
server = service.GetServer(serverGUID)
if server != "null":
return server
return null
lc=[]
def getLossMethods(serviceId):
service = ExternalServiceRegistry.GetService(serviceId)
serverIds = service.GetRegisteredServerIds()
list=List[ElementId]()
for serverId in serverIds:
server = getServerById(serverId, serviceId)
#ductServer = server.IDuctFittingAndAccessoryPressureDropServer
id=serverId
name=server.GetName()
lc.append(id)
lc.append(name)
lc.append(server)
return lc
elems_=UnwrapElement(IN[0])
SetNew= IN[1]
elem=[]
elems=zip(elems_, SetNew)
for el in elems:
eleId = el[0].Id
fitting =doc.GetElement(eleId)
param = fitting.get_Parameter(BuiltInParameter.RBS_DUCT_FITTING_LOSS_METHOD_SERVER_PARAM )#)
lc = getLossMethods(ExternalServices.BuiltInExternalServices.DuctFittingAndAccessoryPressureDropService)
schema = lc[2].GetDataSchema()
field = schema.GetField("ASHRAETableName")
entity=fitting.GetEntity(schema)
oldval = entity.Get[field.ValueType] (field) # obtaining values
TransactionManager.Instance.EnsureInTransaction(doc)
entity.Set[field.ValueType](field,el[1]) # SetNew # installation of a new coefficient value of certain
fitting.SetEntity(entity)
TransactionManager.Instance.TransactionTaskDone()
elem.append(fitting)
OUT = elem ,lc, oldval
2 Likes