50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import bpy
 | 
						|
 | 
						|
 | 
						|
class CustomMenu(bpy.types.Menu):
 | 
						|
    bl_label = "Custom Menu"
 | 
						|
    bl_idname = "OBJECT_MT_custom_menu"
 | 
						|
 | 
						|
    def draw(self, context):
 | 
						|
        layout = self.layout
 | 
						|
 | 
						|
        layout.operator("wm.open_mainfile")
 | 
						|
        layout.operator("wm.save_as_mainfile").copy = True
 | 
						|
 | 
						|
        layout.operator("object.shade_smooth")
 | 
						|
 | 
						|
        layout.label(text="Hello world!", icon='WORLD_DATA')
 | 
						|
 | 
						|
        # use an operator enum property to populate a sub-menu
 | 
						|
        layout.operator_menu_enum("object.select_by_type",
 | 
						|
                                  property="type",
 | 
						|
                                  text="Select All by Type...",
 | 
						|
                                  )
 | 
						|
 | 
						|
        # call another menu
 | 
						|
        layout.operator("wm.call_menu", text="Unwrap").name = "VIEW3D_MT_uv_map"
 | 
						|
 | 
						|
 | 
						|
def draw_item(self, context):
 | 
						|
    layout = self.layout
 | 
						|
    layout.menu(CustomMenu.bl_idname)
 | 
						|
 | 
						|
 | 
						|
def register():
 | 
						|
    bpy.utils.register_class(CustomMenu)
 | 
						|
 | 
						|
    # lets add ourselves to the main header
 | 
						|
    bpy.types.INFO_HT_header.append(draw_item)
 | 
						|
 | 
						|
 | 
						|
def unregister():
 | 
						|
    bpy.utils.unregister_class(CustomMenu)
 | 
						|
 | 
						|
    bpy.types.INFO_HT_header.remove(draw_item)
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    register()
 | 
						|
 | 
						|
    # The menu can also be called from scripts
 | 
						|
    bpy.ops.wm.call_menu(name=CustomMenu.bl_idname)
 |