From 920b138f83c4b740480c821b640351d41e70ec12 Mon Sep 17 00:00:00 2001 From: Liam Scaife Date: Wed, 15 Jul 2020 15:19:21 +1000 Subject: UI: Add manifold extrude to extrude menu --- release/scripts/startup/bl_operators/view3d.py | 28 ++++++++++++++++++++++++++ release/scripts/startup/bl_ui/space_view3d.py | 4 +++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/release/scripts/startup/bl_operators/view3d.py b/release/scripts/startup/bl_operators/view3d.py index a8e04eb2f24..02bfebbdc0c 100644 --- a/release/scripts/startup/bl_operators/view3d.py +++ b/release/scripts/startup/bl_operators/view3d.py @@ -159,6 +159,33 @@ class VIEW3D_OT_edit_mesh_extrude_shrink_fatten(Operator): return self.execute(context) +class VIEW3D_OT_edit_mesh_extrude_manifold_normal(Operator): + """Extrude manifold region along normals""" + bl_label = "Extrude Manifold Along Normals" + bl_idname = "view3d.edit_mesh_extrude_manifold_normal" + + @classmethod + def poll(cls, context): + obj = context.active_object + return (obj is not None and obj.mode == 'EDIT') + + def execute(self, context): + bpy.ops.mesh.extrude_manifold( + 'INVOKE_REGION_WIN', + MESH_OT_extrude_region={ + "use_dissolve_ortho_edges": True, + }, + TRANSFORM_OT_translate={ + "orient_type": 'NORMAL', + "constraint_axis": (False, False, True), + }, + ) + return {'FINISHED'} + + def invoke(self, context, _event): + return self.execute(context) + + class VIEW3D_OT_transform_gizmo_set(Operator): """Set the current transform gizmo""" bl_label = "Transform Gizmo Set" @@ -208,5 +235,6 @@ classes = ( VIEW3D_OT_edit_mesh_extrude_individual_move, VIEW3D_OT_edit_mesh_extrude_move, VIEW3D_OT_edit_mesh_extrude_shrink_fatten, + VIEW3D_OT_edit_mesh_extrude_manifold_normal, VIEW3D_OT_transform_gizmo_set, ) diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index f363f8f3f40..e4d0423cd76 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -3876,6 +3876,8 @@ class VIEW3D_MT_edit_mesh_extrude(Menu): layout.operator("view3d.edit_mesh_extrude_move_shrink_fatten", text="Extrude Faces Along Normals"), 'FACE': lambda layout: layout.operator("mesh.extrude_faces_move", text="Extrude Individual Faces"), + 'MANIFOLD': lambda layout: + layout.operator("view3d.edit_mesh_extrude_manifold_normal", text="Extrude Manifold"), } @staticmethod @@ -3886,7 +3888,7 @@ class VIEW3D_MT_edit_mesh_extrude(Menu): menu = [] if mesh.total_face_sel: - menu += ['REGION', 'REGION_VERT_NORMAL', 'FACE'] + menu += ['REGION', 'REGION_VERT_NORMAL', 'FACE', 'MANIFOLD'] if mesh.total_edge_sel and (select_mode[0] or select_mode[1]): menu += ['EDGE'] if mesh.total_vert_sel and select_mode[0]: -- cgit v1.2.3