bl_info = { "name": "ShortcutTool", "author": "Robert Fornof", "version": (0, 5), "blender": (2, 70, 0), "location": "Check the shortcuts for dynamic topology ", "description": "CTRL +SPACE toggles subdiv edges and collapse edges, hold down Q in sculpt to do the same", "warning": "", "wiki_url": "", "category": "Object"} import bpy from bpy.app.handlers import persistent def Press(self,context): c = 'COLLAPSE' context.tool_settings.sculpt.detail_refine_method = c print("Pressed") def Release(self,context): s = 'SUBDIVIDE' c = 'COLLAPSE' context.tool_settings.sculpt.detail_refine_method = s print("Released") def Toggle(self,context): s = 'SUBDIVIDE' c = 'COLLAPSE' context = bpy.context.scene currentSetting = context.tool_settings.sculpt.detail_refine_method if currentSetting == s: context.tool_settings.sculpt.detail_refine_method = c elif currentSetting == c: context.tool_settings.sculpt.detail_refine_method = s else: context.tool_settings.sculpt.detail_refine_method = s #default class TopoShortcutOn(bpy.types.Operator): """This Operator Add a Object to Another with Boolean Operations""" bl_idname = "object.collapseon" bl_label = "Topo Subdiv Toggle" @classmethod def poll(cls, context): return context.active_object is not None def execute(self, context): print("Toggled") Release(self,context) return {'FINISHED'} class TopoShortcutToggle(bpy.types.Operator): """This Operator Add a Object to Another with Boolean Operations""" bl_idname = "object.collapseon" bl_label = "Topo Subdiv Toggle" @classmethod def poll(cls, context): return context.active_object is not None def execute(self, context): print("Toggled") Toggle(self,context) return {'FINISHED'} class TopoShortcutOff(bpy.types.Operator): """This Operator Add a Object to Another with Boolean Operations""" bl_idname = "object.collapseon" bl_label = "Topo Subdiv Toggle" @classmethod def poll(cls, context): return context.active_object is not None def execute(self, context): print("Toggled") Release(self,context) return {'FINISHED'} def setTool(input): context.tool_settings.sculpt.detail_refine_method = input #------------------- REGISTER ------------------------------ addon_keymaps = [] def register(): bpy.utils.register_class(TopoShortcutOff) bpy.utils.register_class(TopoShortcutOn) bpy.utils.register_class(TopoShortcutToggle) km = bpy.context.window_manager.keyconfigs.active.keymaps['Sculpt'] kmi = km.keymap_items.new(TopoShortcutOff.bl_idname, 'Q', 'PRESS', ctrl = False) kmi = km.keymap_items.new(TopoShortcutOn.bl_idname, 'Q', 'RELEASE', ctrl = False) kmi = km.keymap_items.new(TopoShortcutToggle.bl_idname, 'SPACE', 'RELEASE', ctrl = True) def unregister(): bpy.utils.unregister_class(TopoShortcutOff) bpy.utils.unregister_class(TopoShortcutOn) for km, kmi in addon_keymaps: km.keymap_items.remove(kmi) addon_keymaps.clear() if __name__ == "__main__": register()