feat: mutating object
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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.")
|
||||
|
||||
Reference in New Issue
Block a user