Loop through my costumnode?

Hello,

I want to get values from my rooms. So i want to use the not regularly, how do i loop throuth my API voculary ?

import clr

clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *

clr.AddReference('System')
from System.Collections.Generic import List

clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager


#Boilerplate Code
rooms = UnwrapElement(IN[0])

def familyInstance(x,list):

	if isinstance(x,list):
		return x
	else:
		return [x]

room = familyInstance(rooms)
    
uid = UnitTypeId.Meters
roomheight = room.get_Parameter(BuiltInParameter.ROOM_HEIGHT ).AsDouble()
convheight = UnitUtils.ConvertFromInternalUnits(roomheight, uid)  #How to use that  DUT_METERS_CENTIMETERS 

roomperim = room.get_Parameter(BuiltInParameter.ROOM_PERIMETER).AsDouble()
convperim = UnitUtils.ConvertFromInternalUnits(roomperim, uid)  #How to use that  DUT_METERS_CENTIMETERS 

lateralsurf = convheight*convperim

OUT = convheight, convperim, lateralsurf

Is there a better way for indexing my output ?
I need at a sertian point a for loop for appending my values?


@Draxl_Andreas lists comprehensions is one way to loop thru your rooms:

import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *
clr.AddReference('System')
from System.Collections.Generic import List
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
rooms = IN[0]
if isinstance(rooms,list): rooms = UnwrapElement(rooms)
else: rooms = [UnwrapElement(rooms)]
def convUnits(value):
	return UnitUtils.ConvertFromInternalUnits(value, UnitTypeId.Meters)
roomsHeight = [convUnits(room.get_Parameter(BuiltInParameter.ROOM_HEIGHT).AsDouble()) for room in rooms]
roomsPerim = [convUnits(room.get_Parameter(BuiltInParameter.ROOM_PERIMETER).AsDouble()) for room in rooms]
lateralSurfs = [h*p for h, p in zip(roomsHeight, roomsPerim)]
OUT = roomsHeight, roomsPerim, lateralSurfs

2 Likes