Hello,
I would like to know how to invoke this specific popup so i can add a hotkey or otherwise refer to it:
Thank You
Hello,
I would like to know how to invoke this specific popup so i can add a hotkey or otherwise refer to it:
Thank You
Answer: operator_menu_enum(“object.modifier_add”, “type”)
Purpose: Quickly adding modeling modifiers by activating small popup with hotkey(ctrl+shift+A) and pressing Initial letter (e.g B for Bevel or S for Solidify - reason names are “unique”). Perhaps of use for others:
import bpy
class nwAddMod(bpy.types.Menu):
bl_label = "Add modifier:"
bl_idname = "nw.add_mod"
def draw(self, context):
layout = self.layout
layout.operator("object.modifier_add", "Array", icon='MOD_ARRAY').type='ARRAY'
layout.operator("object.modifier_add", "ESplit", icon='MOD_EDGESPLIT').type='EDGE_SPLIT'
layout.operator("object.modifier_add", "Remesh", icon='MOD_REMESH').type='REMESH'
layout.operator("object.modifier_add", "Solid", icon='MOD_SOLIDIFY').type='SOLIDIFY'
layout.operator("object.modifier_add", "UV Project", icon='MOD_UVPROJECT').type='UV_PROJECT'
layout.operator("object.modifier_add", "XDeform", icon='MOD_SIMPLEDEFORM').type='SIMPLE_DEFORM'
layout.operator("object.modifier_add", "Skin", icon='MOD_SKIN').type='SKIN'
layout.operator("object.modifier_add", "ZScrew", icon='MOD_SCREW').type='SCREW'
layout.operator("object.modifier_add", "Displace", icon='MOD_DISPLACE').type='DISPLACE'
layout.operator("object.modifier_add", "Bevel", icon='MOD_BEVEL').type='BEVEL'
layout.operator_menu_enum("object.modifier_add", "type", "CUSTOM")
addon_keymaps=[]
def register():
bpy.utils.register_class(nwAddMod)
wm = bpy.context.window_manager
if wm.keyconfigs.addon:
km = wm.keyconfigs.addon.keymaps.new('Object Mode', space_type='EMPTY', region_type='WINDOW', modal=False)
kmi = km.keymap_items.new('wm.call_menu', 'A', 'PRESS', ctrl=True, shift=True)
setattr(kmi.properties, 'name', 'nw.add_mod')
addon_keymaps.append(km)
def unregister():
bpy.utils.unregister_class(nwAddMod)
wm = bpy.context.window_manager
if wm.keyconfigs.addon:
for km in addon_keymaps:
for kmi in km.keymap_items:
km.keymap_items.remove(kmi)
wm.keyconfigs.addon.keymaps.remove(km)
addon_keymaps.clear()
if __name__ == "__main__":
register()
# The menu can also be called from scripts
#bpy.ops.wm.call_menu(name=nwAddMod.bl_idname)