UI: Add manifold extrude to extrude menu
This commit is contained in:
parent
e062def3b4
commit
920b138f83
|
@ -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,
|
||||
)
|
||||
|
|
|
@ -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]:
|
||||
|
|
Loading…
Reference in New Issue