diff --git a/src/ifcblenderexport/blenderbim/bim/__init__.py b/src/ifcblenderexport/blenderbim/bim/__init__.py index 3556d40b1c..5e83cf6c2c 100644 --- a/src/ifcblenderexport/blenderbim/bim/__init__.py +++ b/src/ifcblenderexport/blenderbim/bim/__init__.py @@ -230,6 +230,7 @@ if bpy is not None: operator.SetBlenderClashSetA, operator.SetBlenderClashSetB, operator.ExecuteBlenderClash, + operator.CleanWireframes, prop.StrProperty, prop.Attribute, prop.MaterialLayer, diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py index 32d927f0b6..1114f09d3b 100644 --- a/src/ifcblenderexport/blenderbim/bim/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/operator.py @@ -4845,3 +4845,20 @@ class ExecuteBlenderClash(bpy.types.Operator): blender_clasher = BlenderClasher() blender_clasher.process_clash_set() return {"FINISHED"} + + +class CleanWireframes(bpy.types.Operator): + bl_idname = "bim.clean_wireframes" + bl_label = "Clean Wireframes" + + def execute(self, context): + objects = bpy.data.objects + if bpy.context.selected_objects: + objects = bpy.context.selected_objects + for obj in objects: + if not isinstance(obj.data, bpy.types.Mesh): + continue + # TODO: probably breaks i18n + if not obj.modifiers.get("EdgeSplit"): + obj.modifiers.new("EdgeSplit", "EDGE_SPLIT") + return {"FINISHED"} diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py index 062f260b1a..5b0f96f554 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -2303,6 +2303,9 @@ class BIM_PT_annotation_utilities(Panel): def draw(self, context): layout = self.layout + row = layout.row(align=True) + row.operator("bim.clean_wireframes") + row = layout.row(align=True) op = row.operator("bim.add_annotation", text="Dim", icon="ARROW_LEFTRIGHT") op.obj_name = "Dimension"