I am trying to create a simple Pie Menu that allows me to quickly change Snap modes (Why doesn’t Blender already have this?) I was able to get something working using the Pie Menu template but when I tried to get it working with a hot key it stopped working. I was looking at a number of Pie Menus for help but I can 't get it to work and there are no errors reported. I’d appreciate any help.
bl_info = {
"name": "SnapModePie",
"author": "Matt Carter",
"version": (0, 0, 0),
"blender": (2, 7, 4),
"description": "Set Snap Mode - Shift+S",
"category": "3D View"}
import bpy
from bpy.types import Menu
from bpy.types import Operator, AddonPreferences
class SnapIncrement(bpy.types.Operator):
bl_idname = "snap.incr"
bl_label = "Snap To Increment"
def execute(self, context):
bpy.context.scene.tool_settings.snap_element = 'INCREMENT'
return {'FINISHED'}
class SnapVertex(bpy.types.Operator):
bl_idname = "snap.vert"
bl_label = "Snap To Vertex"
def execute(self, context):
bpy.context.scene.tool_settings.snap_element = 'VERTEX'
return {'FINISHED'}
class SnapMode(Menu):
# label is displayed at the center of the pie menu.
bl_label = "Snap Mode"
bl_idname= "snap.mode"
def draw(self, context):
layout = self.layout
pie = layout.menu_pie()
# pie.operator_enum("mesh.select_mode", "type")
pie.operator("snap.incr", text="Increment Snap", icon='SNAP_INCREMENT')
pie.operator("snap.ver", text="Vertex Snap", icon='SNAP_VERTEX')
addon_keymaps = []
def register():
bpy.utils.register_class(SnapMode)
wm = bpy.context.window_manager
if wm.keyconfigs.addon:
# Key "SPACEBAR"
km = wm.keyconfigs.addon.keymaps.new(name = 'Snap Mode Select', space_type = 'VIEW_3D')
kmi = km.keymap_items.new("wm.call_menu_pie","SPACE","PRESS")
kmi.properties.name ="snap.mode"
def unregister():
bpy.utils.unregister_module(__name__)
bpy.utils.unregister_class(SnapMode)
if __name__ == "__main__":
register()