diff --git a/src/ifcblenderexport/blenderbim/bim/__init__.py b/src/ifcblenderexport/blenderbim/bim/__init__.py index ff988a16cb..664e884b7d 100644 --- a/src/ifcblenderexport/blenderbim/bim/__init__.py +++ b/src/ifcblenderexport/blenderbim/bim/__init__.py @@ -170,6 +170,7 @@ if bpy is not None: operator.SelectIfcPatchOutput, operator.ExecuteIfcPatch, operator.CalculateEdgeLengths, + operator.CalculateFaceAreas, prop.StrProperty, prop.Variable, prop.Role, diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py index baba4cb489..8b008e6768 100644 --- a/src/ifcblenderexport/blenderbim/bim/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/operator.py @@ -3363,3 +3363,19 @@ class CalculateEdgeLengths(bpy.types.Operator): obj.data.vertices[edge.vertices[0]].co).length bpy.context.scene.BIMProperties.qto_result = str(result) return {'FINISHED'} + + +class CalculateFaceAreas(bpy.types.Operator): + bl_idname = 'bim.calculate_face_areas' + bl_label = 'Calculate Face Areas' + + def execute(self, context): + result = 0 + for obj in bpy.context.selected_objects: + if not obj.data or not obj.data.polygons: + continue + for polygon in obj.data.polygons: + if polygon.select: + result += polygon.area + bpy.context.scene.BIMProperties.qto_result = str(result) + return {'FINISHED'} diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py index 6da710ddeb..6ce2fe0931 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -525,6 +525,8 @@ class BIM_PT_qto(Panel): row = layout.row(align=True) row.operator("bim.calculate_edge_lengths") + row = layout.row(align=True) + row.operator("bim.calculate_face_areas") class BIM_PT_classifications(Panel):