diff --git a/src/applications/revit/revit_material_processor.py b/src/applications/revit/revit_material_processor.py index 127e48f..855324b 100644 --- a/src/applications/revit/revit_material_processor.py +++ b/src/applications/revit/revit_material_processor.py @@ -30,9 +30,6 @@ class RevitMaterialProcessor(MaterialProcessor): # Volume has already been checked for volume = material_data[VOLUME][VALUE] - if object_id == "a89ce8ffee4bded01836d46f0e26bf55": - print("Now pay attention") - try: if STRUCTURAL_ASSET in material_data: return self._high_quality_strategy.process( diff --git a/src/applications/revit/revit_model.py b/src/applications/revit/revit_model.py index 56f0fc1..1bef4ff 100644 --- a/src/applications/revit/revit_model.py +++ b/src/applications/revit/revit_model.py @@ -79,8 +79,6 @@ class RevitModel(Model): try: # Process each material if element passed validation - # TODO: Project 2427 is an interesting one with compound materials - # TODO: Checkout object fefcc95c2f0ecd28a49ecdd7764e2d79. Worth skipping if volume = 0? for material_name, material_data in material_quantities.items(): processed_material = self._material_processor.process( object_id, material_data, level, type_name @@ -92,6 +90,15 @@ class RevitModel(Model): message="Carbon calculations completed successfully for this element.", ) + model_object[PROPERTIES]["Embodied Carbon Data"] = vars( + processed_material + ) + + if getattr(processed_material, "type") == "Concrete": + model_object[PROPERTIES]["Embodied Carbon Data"][ + "element" + ] = self._categorize(type_name) + except Exception as e: # Log any processing errors that occur self._logger.log_error(object_id, "Material Processing Error", str(e)) @@ -143,3 +150,23 @@ class RevitModel(Model): def _get_name(node: Any) -> str: """Safely get name from node, with fallback""" return getattr(node, NAME, "Unknown") + + @staticmethod + def _categorize(type_name: str) -> str: + searchable_string = type_name.lower() + if ( + "floor" in searchable_string + or "stair" in searchable_string + or "slab edges" in searchable_string + ): + return "Slabs" + elif "wall" in searchable_string: + return "Walls" + elif "column" in searchable_string: + return "Columns" + elif "framing" in searchable_string or "beam" in searchable_string: + return "Beam" + elif "foundation" in searchable_string: + return "Foundations" + else: + raise ValueError(f"{type_name} not accounted for.")