__title__ = "03.04 - Sum Rooms"
__doc__ = """Date = 02.01.2023
_____________________________________________________________________
Description:
Tool to Sum selected Rooms.
If no rooms selected, you will be asked to select them.
_____________________________________________________________________
Author: Erik Frits"""
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Architecture import Room
from Autodesk.Revit.UI.Selection import ObjectType, PickBoxStyle, Selection
from Snippets._selection import ISelectionFilter_Classes
from Snippets._convert import convert_internal_units
import clr
clr.AddReference("System")
from System.Collections.Generic import List
uidoc = __revit__.ActiveUIDocument
doc = __revit__.ActiveUIDocument.Document
selection = uidoc.Selection
selected_elements = [doc.GetElement(e_id) for e_id in selection.GetElementIds()]
selected_rooms = [el for el in selected_elements if type(el) == Room]
if not selected_rooms:
filter_types = ISelectionFilter_Classes([Room])
ref_picked_rooms = selection.PickObjects(ObjectType.Element, filter_types)
selected_rooms = [doc.GetElement(ref) for ref in ref_picked_rooms]
if not selected_rooms:
print('There were no Rooms selected. Please Try Again.')
import sys
sys.exit()
total = 0
total_b = 0
for room in selected_rooms:
room_name = room.get_Parameter(BuiltInParameter.ROOM_NAME).AsString()
area_m2 = convert_internal_units(room.Area, get_internal=False, units='m2')
area_m2_rounded = round(area_m2, 2)
total += area_m2_rounded
print("{}: {}m²".format(room_name, area_m2_rounded))
print('-'*20)
print("Total: {}m²".format( total))
print('Selected {} Rooms.'.format(len(selected_rooms)))