# SPDX-License-Identifier: GPL-2.0-or-later bl_info = { "name": "Hotkey: 'X'", "description": "Edit mode V/E/F Delete Modes", "author": "pitiwazou, meta-androcto", "version": (0, 1, 0), "blender": (2, 80, 0), "location": "Mesh Edit Mode", "warning": "", "doc_url": "", "category": "Edit Delete Pie" } import bpy from bpy.types import Menu # Pie Delete - X class PIE_MT_PieDelete(Menu): bl_idname = "PIE_MT_delete" bl_label = "Pie Delete" def draw(self, context): layout = self.layout pie = layout.menu_pie() # 4 - LEFT box = pie.split().column() box.operator("mesh.dissolve_limited", text="Limited Dissolve", icon='STICKY_UVS_LOC') box.operator("mesh.delete_edgeloop", text="Delete Edge Loops", icon='NONE') box.operator("mesh.edge_collapse", text="Edge Collapse", icon='UV_EDGESEL') # 6 - RIGHT box = pie.split().column() box.operator("mesh.remove_doubles", text="Merge By Distance", icon='NONE') box.operator("mesh.delete", text="Only Edge & Faces", icon='NONE').type = 'EDGE_FACE' box.operator("mesh.delete", text="Only Faces", icon='UV_FACESEL').type = 'ONLY_FACE' # 2 - BOTTOM pie.operator("mesh.dissolve_edges", text="Dissolve Edges", icon='SNAP_EDGE') # 8 - TOP pie.operator("mesh.delete", text="Delete Edges", icon='EDGESEL').type = 'EDGE' # 7 - TOP - LEFT pie.operator("mesh.delete", text="Delete Vertices", icon='VERTEXSEL').type = 'VERT' # 9 - TOP - RIGHT pie.operator("mesh.delete", text="Delete Faces", icon='FACESEL').type = 'FACE' # 1 - BOTTOM - LEFT pie.operator("mesh.dissolve_verts", text="Dissolve Vertices", icon='SNAP_VERTEX') # 3 - BOTTOM - RIGHT pie.operator("mesh.dissolve_faces", text="Dissolve Faces", icon='SNAP_FACE') classes = ( PIE_MT_PieDelete, ) addon_keymaps = [] def register(): for cls in classes: bpy.utils.register_class(cls) wm = bpy.context.window_manager if wm.keyconfigs.addon: # Delete km = wm.keyconfigs.addon.keymaps.new(name='Mesh') kmi = km.keymap_items.new('wm.call_menu_pie', 'X', 'PRESS') kmi.properties.name = "PIE_MT_delete" addon_keymaps.append((km, kmi)) def unregister(): for cls in classes: bpy.utils.unregister_class(cls) wm = bpy.context.window_manager kc = wm.keyconfigs.addon if kc: for km, kmi in addon_keymaps: km.keymap_items.remove(kmi) addon_keymaps.clear() if __name__ == "__main__": register()