Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'space_view3d_spacebar_menu.py')
-rw-r--r--space_view3d_spacebar_menu.py1471
1 files changed, 0 insertions, 1471 deletions
diff --git a/space_view3d_spacebar_menu.py b/space_view3d_spacebar_menu.py
deleted file mode 100644
index 6feffb1d..00000000
--- a/space_view3d_spacebar_menu.py
+++ /dev/null
@@ -1,1471 +0,0 @@
-#3d_cursor_menu.py (c) 2010 Jonathan Smith (JayDez)
-#Original Script by: Mariano Hidalgo (uselessdreamer)
-#contributed to by: Crouch, sim88, sam, meta-androcto
-#
-#Tested with r28146
-#
-# ##### BEGIN GPL LICENSE BLOCK #####
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-# ##### END GPL LICENSE BLOCK #####
-
-bl_addon_info = {
- "name": "Dynamic Spacebar Menu",
- "author": "JayDez, sim88, meta-androcto", "sam"
- "version": (1,5),
- "blender": (2, 5, 3),
- "api": 31854,
- "location": "View3D > Spacebar",
- "description": "Context sensitive spacebar menu",
- "warning": "",
- "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.5/Py/"\
- "Scripts/3D_interaction/Dynamic_Spacebar_Menu",
- "tracker_url": "https://projects.blender.org/tracker/index.php?"\
- "func=detail&aid=22060&group_id=153&atid=469",
- "category": "3D View"}
-
-"""
-Dynamic Menu
-This adds a the Dynamic Spacebar Menu in the View3D.
-
-Usage:
-* This script gives a basic menu with common simple tools for easy access.
-* Very similar to the Spacebar menu in 2.49
-* Context sensitive for Object. Edit, Sculpt, Pose, Weight/Texture/Vertex Paint.
-* Object sensitive based on object selected in edit mode.
-
-Version history:
-v1.5 - (meta-androcto) - adding context sensitive menus.
-v1.3 - (JayDez) - Changed toggle editmode to an if statement, so that
- if you are in editmode it will show change to object mode but
- otherwise it shows change to edit mode. Also added separate icons
- for change to edit mode and to object mode.
-v1.2 - (JayDez) - Editing docs, changing 3D cursor to dynamic menu,
- reorganizing menu.
-v1.1 - (meta-androcto) - added editmode menu
-v1.0 - (meta-androcto) - initial final revision (commited to contrib)
-v0.1 through 0.9 - various tests/contributions by various people and scripts
- Devs: JayDez, Crouch, sim88, meta-androcto, Sam
- Scripts: 3D Cursor Menu, Original Dynamic Menu
-"""
-
-import bpy
-from bpy import *
-from mathutils import Vector, Matrix
-import math
-
-# Dynamic Menu
-class VIEW3D_MT_Space_Dynamic_Menu(bpy.types.Menu):
- bl_label = "Dynamic Spacebar Menu"
-
- def draw(self, context):
- layout = self.layout
- settings = context.tool_settings
- layout.operator_context = 'INVOKE_REGION_WIN'
-
- ob = context
- if ob.mode == 'OBJECT':
- # Object mode
-
- # Search Menu
- layout.operator("wm.search_menu", text="Search", icon='VIEWZOOM')
- layout.separator()
-
- # Add Menu block
- layout.menu("VIEW3D_MT_AddMenu", icon='OBJECT_DATAMODE')
- layout.separator()
-
- # Transform block
- layout.menu("VIEW3D_MT_TransformMenu", icon='MANIPUL')
-
- # Mirror block
- layout.menu("VIEW3D_MT_MirrorMenu", icon='MOD_MIRROR')
- layout.separator()
-
- # Parent block
- layout.menu("VIEW3D_MT_ParentMenu", icon='ROTACTIVE')
-
- # Group block
- layout.menu("VIEW3D_MT_GroupMenu", icon='GROUP')
- layout.separator()
-
- # Modifier block
- layout.operator_menu_enum("object.modifier_add", "type" , icon='MODIFIER')
- layout.separator()
-
- # Cursor Block
- layout.menu("VIEW3D_MT_CursorMenu", icon='CURSOR')
- layout.separator()
-
- # Align block
- layout.menu("VIEW3D_MT_AlignMenu", icon='ALIGN')
- layout.separator()
-
- # Select block
- layout.menu("VIEW3D_MT_SelectMenu", icon='RESTRICT_SELECT_OFF')
-
- # Toolshelf block
- layout.operator("view3d.toolshelf", icon='MENU_PANEL')
- layout.separator()
-
- # Properties block
- layout.operator("view3d.properties", icon='MENU_PANEL')
- layout.separator()
-
- # Toggle Editmode
- layout.operator("object.editmode_toggle", text="Enter Edit Mode",
- icon='EDITMODE_HLT')
-
- # Delete block
- layout.operator("object.delete", text="Delete Object",
- icon='CANCEL')
-
-
- elif ob.mode == 'EDIT_MESH':
- # Edit mode
-
- # Search Menu
- layout.operator("wm.search_menu", text="Search", icon='VIEWZOOM')
-
- # Add block
- bl_label = "Create"
- layout.menu("INFO_MT_mesh_add", text="Add Mesh",
- icon='EDITMODE_HLT')
- layout.separator()
-
- # Transform block
- layout.menu("VIEW3D_MT_TransformMenu", icon='MANIPUL')
- layout.separator()
-
- # Mirror block
- layout.menu("VIEW3D_MT_MirrorMenu", icon='MOD_MIRROR')
- layout.separator()
-
- # Cursor block
- layout.menu("VIEW3D_MT_EditCursorMenu", icon='CURSOR')
- layout.separator()
-
- # Edit block
- layout.menu("VIEW3D_MT_edit_TK", icon='OUTLINER_OB_MESH')
- layout.separator()
-
- # Multi Select
- layout.menu("VIEW3D_MT_edit_multi", icon='VERTEXSEL')
- layout.separator()
-
- # Extrude block
- layout.menu("VIEW3D_MT_edit_mesh_extrude", icon='EDITMODE_HLT')
- layout.separator()
-
- # Tools block
- layout.menu("VIEW3D_MT_edit_mesh_specials", icon='MODIFIER')
- layout.menu("VIEW3D_MT_uv_map", icon='MOD_UVPROJECT')
-
- # Select block
- layout.menu("VIEW3D_MT_SelectMenu", icon='RESTRICT_SELECT_OFF')
-
- # Toolshelf block
- layout.operator("view3d.toolshelf", icon='MENU_PANEL')
- layout.separator()
-
- # Properties block
- layout.operator("view3d.properties", icon='MENU_PANEL')
- layout.separator()
-
- # Toggle Object Mode
- layout.operator("object.editmode_toggle", text="Enter Object Mode",
- icon='OBJECT_DATAMODE')
-
- # Delete Block
- layout.operator("mesh.delete", icon='CANCEL')
-
- if ob.mode == 'EDIT_CURVE':
- # Curve menu
-
- # Search Menu
- layout.operator("wm.search_menu", text="Search", icon='VIEWZOOM')
-
- # Transform block
- layout.menu("VIEW3D_MT_TransformMenu", icon='MANIPUL')
- layout.separator()
-
- # Mirror block
- layout.menu("VIEW3D_MT_MirrorMenu", icon='MOD_MIRROR')
- layout.separator()
-
- # Proportional block
- layout.prop_menu_enum(settings, "proportional_edit", icon= "PROP_CON")
- layout.prop_menu_enum(settings, "proportional_edit_falloff", icon= "SMOOTHCURVE")
- layout.separator()
-
- # Edit Control Points
- layout.menu("VIEW3D_MT_EditCurveCtrlpoints",
- icon='CURVE_BEZCURVE')
- layout.separator()
-
- # Edit Curve Specials
- layout.menu("VIEW3D_MT_EditCurveSpecials",
- icon='MODIFIER')
- layout.separator()
-
- # Cursor block
- layout.menu("VIEW3D_MT_CursorMenu", icon='CURSOR')
- layout.separator()
-
- # Select Curve Block
- layout.menu("VIEW3D_MT_SelectCurveMenu", icon='RESTRICT_SELECT_OFF')
- layout.separator()
-
- # Toolshelf block
- layout.operator("view3d.toolshelf", icon='MENU_PANEL')
- layout.separator()
-
- # Properties block
- layout.operator("view3d.properties", icon='MENU_PANEL')
- layout.separator()
-
- # Toggle Objectmode
- layout.operator("object.editmode_toggle", text="Enter Object Mode",
- icon='OBJECT_DATA')
-
- # Delete block
- layout.operator("object.delete", text="Delete Object",
- icon='CANCEL')
-
- if ob.mode == 'EDIT_SURFACE':
- # Surface menu
-
- # Search Menu
- layout.operator("wm.search_menu", text="Search", icon='VIEWZOOM')
-
- # Transform block
- layout.menu("VIEW3D_MT_TransformMenu", icon='MANIPUL')
- layout.separator()
-
- # Mirror block
- layout.menu("VIEW3D_MT_MirrorMenu", icon='MOD_MIRROR')
- layout.separator()
-
- # Proportional block
- layout.prop_menu_enum(settings, "proportional_edit", icon= "PROP_CON")
- layout.prop_menu_enum(settings, "proportional_edit_falloff", icon= "SMOOTHCURVE")
-
- # Edit Curve Specials
- layout.menu("VIEW3D_MT_EditCurveSpecials",
- icon='MODIFIER')
- layout.separator()
-
- # Cursor block
- layout.menu("VIEW3D_MT_CursorMenu", icon='CURSOR')
- layout.separator()
-
- # Select Surface
- layout.menu("VIEW3D_MT_SelectSurface", icon='RESTRICT_SELECT_OFF')
- layout.separator()
-
- # Toolshelf block
- layout.operator("view3d.toolshelf", icon='MENU_PANEL')
- layout.separator()
-
- # Properties block
- layout.operator("view3d.properties", icon='MENU_PANEL')
- layout.separator()
-
- # Toggle Objectmode
- layout.operator("object.editmode_toggle", text="Enter Object Mode",
- icon='OBJECT_DATA')
-
- # Delete block
- layout.operator("object.delete", text="Delete Object",
- icon='CANCEL')
-
- if ob.mode == 'EDIT_METABALL':
- # Metaball menu
-
- #Search Menu
- layout.operator("wm.search_menu", text="Search", icon='VIEWZOOM')
-
- # Transform block
- layout.menu("VIEW3D_MT_TransformMenu", icon='MANIPUL')
- layout.separator()
-
- # Mirror block
- layout.menu("VIEW3D_MT_MirrorMenu", icon='MOD_MIRROR')
- layout.separator()
-
- # Proportional block
- layout.prop_menu_enum(settings, "proportional_edit", icon= "PROP_CON")
- layout.prop_menu_enum(settings, "proportional_edit_falloff", icon= "SMOOTHCURVE")
-
- # Cursor block
- layout.menu("VIEW3D_MT_CursorMenu", icon='CURSOR')
- layout.separator()
-
- #Select Metaball
- layout.menu("VIEW3D_MT_SelectMetaball", icon='RESTRICT_SELECT_OFF')
- layout.separator()
-
- # Toolshelf block
- layout.operator("view3d.toolshelf", icon='MENU_PANEL')
- layout.separator()
-
- # Properties block
- layout.operator("view3d.properties", icon='MENU_PANEL')
- layout.separator()
-
- # Toggle Objectmode
- layout.operator("object.editmode_toggle", text="Enter Object Mode",
- icon='OBJECT_DATA')
-
- # Delete block
- layout.operator("object.delete", text="Delete Object",
- icon='CANCEL')
-
- elif ob.mode == 'EDIT_LATTICE':
- # Lattice menu
-
- #Search Menu
- layout.operator("wm.search_menu", text="Search", icon='VIEWZOOM')
-
- # Transform block
- layout.menu("VIEW3D_MT_TransformMenu", icon='MANIPUL')
- layout.separator()
-
- # Mirror block
- layout.menu("VIEW3D_MT_MirrorMenu", icon='MOD_MIRROR')
- layout.separator()
-
- # Proportional block
- layout.prop_menu_enum(settings, "proportional_edit", icon= "PROP_CON")
- layout.prop_menu_enum(settings, "proportional_edit_falloff", icon= "SMOOTHCURVE")
-
- # Cursor block
- layout.menu("VIEW3D_MT_CursorMenu", icon='CURSOR')
- layout.separator()
-
- #Select Lattice
- layout.menu("VIEW3D_MT_select_edit_lattice", icon='RESTRICT_SELECT_OFF')
- layout.separator()
-
- layout.operator("lattice.make_regular")
- layout.separator()
-
- # Toolshelf block
- layout.operator("view3d.toolshelf", icon='MENU_PANEL')
- layout.separator()
-
- # Properties block
- layout.operator("view3d.properties", icon='MENU_PANEL')
- layout.separator()
-
- # Toggle Objectmode
- layout.operator("object.editmode_toggle", text="Enter Object Mode",
- icon='OBJECT_DATA')
-
- # Delete block
- layout.operator("object.delete", text="Delete Object",
- icon='CANCEL')
-
-
- if context.mode == 'PARTICLE':
- # Particle menu
-
- #Search Menu
- layout.operator("wm.search_menu", text="Search", icon='VIEWZOOM')
-
- # Transform block
- layout.menu("VIEW3D_MT_TransformMenu", icon='MANIPUL')
- layout.separator()
-
- # Mirror block
- layout.menu("VIEW3D_MT_MirrorMenu", icon='MOD_MIRROR')
- layout.separator()
-
- # Proportional block
- layout.prop_menu_enum(settings, "proportional_edit", icon= "PROP_CON")
- layout.prop_menu_enum(settings, "proportional_edit_falloff", icon= "SMOOTHCURVE")
-
- # Cursor block
- layout.menu("VIEW3D_MT_CursorMenu", icon='CURSOR')
- layout.separator()
-
- # Toolshelf block
- layout.operator("view3d.toolshelf", icon='MENU_PANEL')
- layout.separator()
-
- # Properties block
- layout.operator("view3d.properties", icon='MENU_PANEL')
- layout.separator()
-
- # Toggle Objectmode
- layout.operator("object.editmode_toggle", text="Enter Object Mode",
- icon='OBJECT_DATA')
-
- # Delete block
- layout.operator("object.delete", text="Delete Object",
- icon='CANCEL')
-
- ob = context
- if ob.mode == 'PAINT_WEIGHT':
- # Weight paint menu
-
- # Search Menu
- layout.operator("wm.search_menu", text="Search", icon='VIEWZOOM')
-
- # Transform block
- layout.menu("VIEW3D_MT_TransformMenu", icon='MANIPUL')
- layout.separator()
-
- # Cursor block
- layout.menu("VIEW3D_MT_CursorMenu", icon='CURSOR')
- layout.separator()
-
- # Weight Paint block
- layout.menu("VIEW3D_MT_paint_weight", icon='WPAINT_HLT')
- layout.separator()
-
- # History/Cursor Block
- layout.menu("VIEW3D_MT_undoS", icon='ARROW_LEFTRIGHT')
-
- # Toolshelf block
- layout.operator("view3d.toolshelf", icon='MENU_PANEL')
- layout.separator()
-
- # Properties block
- layout.operator("view3d.properties", icon='MENU_PANEL')
- layout.separator()
-
- # Toggle Objectmode
- layout.operator("object.mode_set", text="Enter Object Mode",
- icon='OBJECT_DATA')
-
-
-
- elif ob.mode == 'PAINT_VERTEX':
- # Vertex paint menu
-
- # Search Menu
- layout.operator("wm.search_menu", text="Search", icon='VIEWZOOM')
-
- # Transform block
- layout.menu("VIEW3D_MT_TransformMenu", icon='MANIPUL')
- layout.separator()
-
- # Cursor block
- layout.menu("VIEW3D_MT_CursorMenu", icon='CURSOR')
- layout.separator()
-
- # Vertex Paint block
- layout.operator("paint.vertex_color_set", icon='VPAINT_HLT')
- layout.separator()
-
- # History/Cursor Block
- layout.menu("VIEW3D_MT_undoS", icon='ARROW_LEFTRIGHT')
-
- # Toolshelf block
- layout.operator("view3d.toolshelf", icon='MENU_PANEL')
- layout.separator()
-
- # Properties block
- layout.operator("view3d.properties", icon='MENU_PANEL')
- layout.separator()
-
- # Toggle Objectmode
- layout.operator("object.mode_set", text="Enter Object Mode",
- icon='OBJECT_DATA')
-
- elif ob.mode == 'PAINT_TEXTURE':
- # Texture paint menu
-
- # Search Menu
- layout.operator("wm.search_menu", text="Search", icon='VIEWZOOM')
-
- # Transform block
- layout.menu("VIEW3D_MT_TransformMenu", icon='MANIPUL')
- layout.separator()
-
- # Cursor block
- layout.menu("VIEW3D_MT_CursorMenu", icon='CURSOR')
- layout.separator()
-
- # History/Cursor Block
- layout.menu("VIEW3D_MT_undoS", icon='ARROW_LEFTRIGHT')
-
- # Toolshelf block
- layout.operator("view3d.toolshelf", icon='MENU_PANEL')
- layout.separator()
-
- # Properties block
- layout.operator("view3d.properties", icon='MENU_PANEL')
- layout.separator()
-
- # Toggle Objectmode
- layout.operator("object.mode_set", text="Enter Object Mode",
- icon='OBJECT_DATA')
-
- elif ob.mode == 'SCULPT':
- # Sculpt menu
-
- # Search Menu
- layout.operator("wm.search_menu", text="Search", icon='VIEWZOOM')
-
- # Transform block
- layout.menu("VIEW3D_MT_TransformMenu", icon='MANIPUL')
- layout.separator()
-
- # Mirror block
- layout.menu("VIEW3D_MT_MirrorMenu", icon='MOD_MIRROR')
- layout.separator()
-
- # Sculpt block
- layout.menu("VIEW3D_MT_sculpt", icon='SCULPTMODE_HLT')
- layout.separator()
-
- # Cursor block
- layout.menu("VIEW3D_MT_CursorMenu", icon='CURSOR')
- layout.separator()
-
- # History/Cursor Block
- layout.menu("VIEW3D_MT_undoS", icon='ARROW_LEFTRIGHT')
-
- # Toolshelf block
- layout.operator("view3d.toolshelf", icon='MENU_PANEL')
- layout.separator()
-
- # Properties block
- layout.operator("view3d.properties", icon='MENU_PANEL')
- layout.separator()
-
- # Toggle Editmode
- layout.operator("object.editmode_toggle", text="Enter Edit Mode",
- icon='EDITMODE_HLT')
-
- elif ob.mode == 'EDIT_ARMATURE':
- # Armature menu
-
- # Search Menu
- layout.operator("wm.search_menu", text="Search", icon='VIEWZOOM')
-
- # Transform block
- layout.menu("VIEW3D_MT_TransformMenu", icon='MANIPUL')
- layout.separator()
-
- # Mirror block
- layout.menu("VIEW3D_MT_MirrorMenu", icon='MOD_MIRROR')
- layout.separator()
-
- # Cursor block
- layout.menu("VIEW3D_MT_CursorMenu", icon='CURSOR')
- layout.separator()
-
- # Edit Armature roll
- layout.menu("VIEW3D_MT_edit_armature_roll",
- icon='BONE_DATA')
- layout.separator()
-
- # Edit Armature Toolkit
- layout.menu("VIEW3D_MT_EditArmatureTK",
- icon='ARMATURE_DATA')
- layout.separator()
-
- # Edit Armature Name
- layout.menu("VIEW3D_MT_ArmatureName",
- icon='NEW')
- layout.separator()
-
- # Parent block
- layout.menu("VIEW3D_MT_ParentMenu", icon='ROTACTIVE')
-
- layout.separator()
- layout.operator_menu_enum("armature.flags_set", "mode", text="Bone Settings")
-
- # Edit Armature Select
- layout.menu("VIEW3D_MT_SelectArmatureMenu",
- icon='RESTRICT_SELECT_OFF')
- layout.separator()
-
- # Edit Armature Specials
- layout.menu("VIEW3D_MT_armature_specials", icon='MODIFIER')
- layout.separator()
-
- # Toggle Posemode
- layout.operator("object.posemode_toggle", text="Enter Pose Mode",
- icon='EDITMODE_HLT')
-
- # Toggle Posemode
- layout.operator("object.editmode_toggle", text="Enter Object Mode",
- icon='OBJECT_DATA')
-
- # Delete block
- layout.operator("object.delete", text="Delete Object",
- icon='CANCEL')
-
-
- if context.mode == 'POSE':
- # Pose mode menu
- arm = context.active_object.data
-
- # Search Menu
- layout.operator("wm.search_menu", text="Search", icon='VIEWZOOM')
-
- # Transform Menu
- layout.menu("VIEW3D_MT_TransformMenu", icon='MANIPUL')
-
- # Clear Transform
- layout.menu("VIEW3D_MT_pose_transform")
-
- # Cursor Menu
- layout.menu("VIEW3D_MT_CursorMenu", icon='CURSOR')
- layout.separator()
-
- # Select Pose Block
- layout.menu("VIEW3D_MT_SelectPoseMenu", icon='RESTRICT_SELECT_OFF')
- layout.separator()
-
- # Pose Copy Block
- layout.menu("VIEW3D_MT_PoseCopy", icon='FILE')
- layout.separator()
-
-
- if arm.drawtype in ('BBONE', 'ENVELOPE'):
- layout.operator("transform.transform",
- text="Scale Envelope Distance").mode = 'BONESIZE'
-
- layout.menu("VIEW3D_MT_pose_apply")
- layout.separator()
-
- layout.operator("pose.relax")
- layout.separator()
-
- layout.menu("VIEW3D_MT_KeyframeMenu")
- layout.separator()
-
- layout.menu("VIEW3D_MT_pose_pose")
- layout.menu("VIEW3D_MT_pose_motion")
- layout.menu("VIEW3D_MT_pose_group")
- layout.separator()
-
- layout.menu("VIEW3D_MT_pose_ik")
- layout.menu("VIEW3D_MT_PoseNames")
- layout.separator()
-
- layout.menu("VIEW3D_MT_pose_constraints")
- layout.separator()
-
-
-
- layout.operator("pose.quaternions_flip")
- layout.separator()
-
- layout.operator_context = 'INVOKE_AREA'
- layout.operator("pose.armature_layers",
- text="Change Armature Layers...")
- layout.operator("pose.bone_layers", text="Change Bone Layers...")
- layout.separator()
-
- layout.menu("VIEW3D_MT_pose_showhide")
- layout.operator_menu_enum("pose.flags_set", 'mode',
- text="Bone Settings")
-
- # Toggle Editmode
- layout.operator("object.editmode_toggle", text="Enter Edit Mode",
- icon='EDITMODE_HLT')
-
-
-class VIEW3D_MT_AddMenu(bpy.types.Menu):
- bl_label = "Add Object Menu"
-
- def draw(self, context):
- layout = self.layout
- layout.operator_context = 'INVOKE_REGION_WIN'
-
- layout.menu("INFO_MT_mesh_add", text="Add Mesh",
- icon='OUTLINER_OB_MESH')
- layout.menu("INFO_MT_curve_add", text="Add Curve",
- icon='OUTLINER_OB_CURVE')
- layout.menu("INFO_MT_surface_add", text="Add Surface",
- icon='OUTLINER_OB_SURFACE')
- layout.operator_menu_enum("object.metaball_add", "type",
- icon='OUTLINER_OB_META')
- layout.operator("object.text_add", text="Add Text",
- icon='OUTLINER_OB_FONT')
- layout.separator()
- layout.menu("INFO_MT_armature_add", text="Add Armature",
- icon='OUTLINER_OB_ARMATURE')
- layout.operator("object.add", text="Lattice",
- icon='OUTLINER_OB_LATTICE').type = 'LATTICE'
- layout.separator()
- layout.operator("object.add", text="Add Empty",
- icon='OUTLINER_OB_EMPTY')
- layout.separator()
-
- layout.operator("object.camera_add", text="Camera",
- icon='OUTLINER_OB_CAMERA')
- layout.operator_menu_enum("object.lamp_add", "type",
- icon="OUTLINER_OB_LAMP")
- layout.separator()
-
- layout.operator_menu_enum("object.effector_add", "type",
- text="Force Field",
- icon='OUTLINER_OB_EMPTY')
- layout.operator_menu_enum("object.group_instance_add", "group",
- text="Group Instance",
- icon='OUTLINER_OB_EMPTY')
-
-
-class VIEW3D_MT_TransformMenu(bpy.types.Menu):
- bl_label = "Transform Menu"
-
- # TODO: get rid of the custom text strings?
- def draw(self, context):
- layout = self.layout
-
- layout.operator("transform.translate", text="Grab/Move")
- # TODO: sub-menu for grab per axis
- layout.operator("transform.rotate", text="Rotate")
- # TODO: sub-menu for rot per axis
- layout.operator("transform.resize", text="Scale")
- # TODO: sub-menu for scale per axis
- layout.separator()
-
- layout.operator("transform.tosphere", text="To Sphere")
- layout.operator("transform.shear", text="Shear")
- layout.operator("transform.warp", text="Warp")
- layout.operator("transform.push_pull", text="Push/Pull")
- if context.edit_object and context.edit_object.type == 'ARMATURE':
- layout.operator("armature.align")
- else:
- layout.operator_context = 'EXEC_REGION_WIN'
- # @todo vvv See alignmenu() in edit.c of b2.4x to get this working.
- layout.operator("transform.transform",
- text="Align to Transform Orientation").mode = 'ALIGN'
- layout.separator()
-
- layout.operator_context = 'EXEC_AREA'
-
- layout.operator("object.origin_set",
- text="Geometry to Origin").type = 'GEOMETRY_ORIGIN'
- layout.operator("object.origin_set",
- text="Origin to Geometry").type = 'ORIGIN_GEOMETRY'
- layout.operator("object.origin_set",
- text="Origin to 3D Cursor").type = 'ORIGIN_CURSOR'
-
-
-class VIEW3D_MT_MirrorMenu(bpy.types.Menu):
- bl_label = "Mirror Menu"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator("transform.mirror", text="Interactive Mirror")
- layout.separator()
-
- layout.operator_context = 'INVOKE_REGION_WIN'
-
- props = layout.operator("transform.mirror", text="X Global")
- props.constraint_axis = (True, False, False)
- props.constraint_orientation = 'GLOBAL'
- props = layout.operator("transform.mirror", text="Y Global")
- props.constraint_axis = (False, True, False)
- props.constraint_orientation = 'GLOBAL'
- props = layout.operator("transform.mirror", text="Z Global")
- props.constraint_axis = (False, False, True)
- props.constraint_orientation = 'GLOBAL'
-
- if context.edit_object:
- layout.separator()
-
- props = layout.operator("transform.mirror", text="X Local")
- props.constraint_axis = (True, False, False)
- props.constraint_orientation = 'LOCAL'
- props = layout.operator("transform.mirror", text="Y Local")
- props.constraint_axis = (False, True, False)
- props.constraint_orientation = 'LOCAL'
- props = layout.operator("transform.mirror", text="Z Local")
- props.constraint_axis = (False, False, True)
- props.constraint_orientation = 'LOCAL'
-
- layout.operator("object.vertex_group_mirror")
-
-class VIEW3D_MT_ParentMenu(bpy.types.Menu):
- bl_label = "Parent Menu"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator("object.parent_set", text="Set")
- layout.operator("object.parent_clear", text="Clear")
-
-class VIEW3D_MT_GroupMenu(bpy.types.Menu):
- bl_label = "Group Menu"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator("group.create")
- layout.operator("group.objects_remove")
-
- layout.separator()
-
- layout.operator("group.objects_add_active")
- layout.operator("group.objects_remove_active")
-
-class VIEW3D_MT_AlignMenu(bpy.types.Menu):
- bl_label = "Align Menu"
-
- def draw(self, context):
- layout = self.layout
-
- layout.menu("VIEW3D_MT_view_align_selected")
-
- layout.separator()
-
- layout.operator("view3d.view_all", text="Center Cursor and View All").center = True
- layout.operator("view3d.camera_to_view", text="Align Active Camera to View")
- layout.operator("view3d.view_selected")
- layout.operator("view3d.view_center_cursor")
-
-class VIEW3D_MT_SelectMenu(bpy.types.Menu):
- bl_label = "Select Menu"
-
- def draw(self, context):
- layout = self.layout
- layout.operator_context = 'INVOKE_REGION_WIN'
-
- layout.operator("view3d.select_border")
- layout.operator("view3d.select_circle")
- layout.separator()
- layout.operator("object.select_all", text="Select/Deselect All")
- layout.operator("object.select_inverse", text="Inverse")
- layout.operator("object.select_random", text="Random")
- layout.operator("object.select_mirror", text="Mirror")
- layout.operator("object.select_by_layer", text="Select All by Layer")
- layout.operator_menu_enum("object.select_by_type", "type", text="Select All by Type...")
- layout.operator("object.select_camera", text="Select Camera")
- layout.separator()
- layout.operator_menu_enum("object.select_grouped", "type", text="Grouped")
- layout.operator_menu_enum("object.select_linked", "type", text="Linked")
- layout.operator("object.select_pattern", text="Select Pattern...")
-
-class VIEW3D_MT_SelectEditMenu(bpy.types.Menu):
- bl_label = "Select Menu"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator("view3d.select_border")
- layout.operator("view3d.select_circle")
-
- layout.separator()
-
- layout.operator("mesh.select_all", text="Select/Deselect All")
- layout.operator("mesh.select_inverse", text="Inverse")
-
- layout.separator()
-
- layout.operator("mesh.select_random", text="Random")
- layout.operator("mesh.select_nth", text="Every N Number of Verts")
- layout.operator("mesh.edges_select_sharp", text="Sharp Edges")
- layout.operator("mesh.faces_select_linked_flat", text="Linked Flat Faces")
- layout.operator("mesh.faces_select_interior", text="Interior Faces")
- layout.operator("mesh.select_axis", text="Side of Active")
-
- layout.separator()
-
- layout.operator("mesh.select_by_number_vertices", text="Triangles").type = 'TRIANGLES'
- layout.operator("mesh.select_by_number_vertices", text="Quads").type = 'QUADS'
- if context.scene.tool_settings.mesh_select_mode[2] == False:
- layout.operator("mesh.select_non_manifold", text="Non Manifold")
- layout.operator("mesh.select_by_number_vertices", text="Loose Verts/Edges").type = 'OTHER'
- layout.operator("mesh.select_similar", text="Similar")
-
- layout.separator()
-
- layout.operator("mesh.select_less", text="Less")
- layout.operator("mesh.select_more", text="More")
-
- layout.separator()
-
- layout.operator("mesh.select_mirror", text="Mirror")
-
- layout.operator("mesh.select_linked", text="Linked")
- layout.operator("mesh.select_vertex_path", text="Vertex Path")
- layout.operator("mesh.loop_multi_select", text="Edge Loop")
- layout.operator("mesh.loop_multi_select", text="Edge Ring").ring = True
-
- layout.separator()
-
- layout.operator("mesh.loop_to_region")
- layout.operator("mesh.region_to_loop")
-
-class VIEW3D_MT_SelectCurveMenu(bpy.types.Menu):
- bl_label = "Select Menu"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator("view3d.select_border")
- layout.operator("view3d.select_circle")
-
- layout.separator()
-
- layout.operator("curve.select_all", text="Select/Deselect All")
- layout.operator("curve.select_inverse")
- layout.operator("curve.select_random")
- layout.operator("curve.select_every_nth")
-
- layout.separator()
-
- layout.operator("curve.de_select_first")
- layout.operator("curve.de_select_last")
- layout.operator("curve.select_next")
- layout.operator("curve.select_previous")
-
- layout.separator()
-
- layout.operator("curve.select_more")
- layout.operator("curve.select_less")
-
-class VIEW3D_MT_SelectArmatureMenu(bpy.types.Menu):
- bl_label = "Select Menu"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator("view3d.select_border")
-
-
- layout.separator()
-
- layout.operator("armature.select_all", text="Select/Deselect All")
- layout.operator("armature.select_inverse", text="Inverse")
-
- layout.separator()
-
- layout.operator("armature.select_hierarchy", text="Parent").direction = 'PARENT'
- layout.operator("armature.select_hierarchy", text="Child").direction = 'CHILD'
-
- layout.separator()
-
- props = layout.operator("armature.select_hierarchy", text="Extend Parent")
- props.extend = True
- props.direction = 'PARENT'
-
- props = layout.operator("armature.select_hierarchy", text="Extend Child")
- props.extend = True
- props.direction = 'CHILD'
-
- layout.operator("object.select_pattern", text="Select Pattern...")
-
-
-class VIEW3D_MT_SelectPoseMenu(bpy.types.Menu):
- bl_label = "Select Menu"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator("view3d.select_border")
-
- layout.separator()
-
- layout.operator("pose.select_all", text="Select/Deselect All")
- layout.operator("pose.select_inverse", text="Inverse")
- layout.operator("pose.select_constraint_target", text="Constraint Target")
- layout.operator("pose.select_linked", text="Linked")
-
- layout.separator()
-
- layout.operator("pose.select_hierarchy", text="Parent").direction = 'PARENT'
- layout.operator("pose.select_hierarchy", text="Child").direction = 'CHILD'
-
- layout.separator()
-
- props = layout.operator("pose.select_hierarchy", text="Extend Parent")
- props.extend = True
- props.direction = 'PARENT'
-
- props = layout.operator("pose.select_hierarchy", text="Extend Child")
- props.extend = True
- props.direction = 'CHILD'
-
- layout.separator()
-
- layout.operator_menu_enum("pose.select_grouped", "type", text="Grouped")
- layout.operator("object.select_pattern", text="Select Pattern...")
-
-class VIEW3D_MT_PoseCopy(bpy.types.Menu):
- bl_label = "Pose Copy"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator("pose.copy")
- layout.operator("pose.paste")
- layout.operator("pose.paste",
- text="Paste X-Flipped Pose").flipped = True
- layout.separator()
-
-class VIEW3D_MT_PoseNames(bpy.types.Menu):
- bl_label = "Pose Copy"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator_context = 'EXEC_AREA'
- layout.operator("pose.autoside_names",
- text="AutoName Left/Right").axis = 'XAXIS'
- layout.operator("pose.autoside_names",
- text="AutoName Front/Back").axis = 'YAXIS'
- layout.operator("pose.autoside_names",
- text="AutoName Top/Bottom").axis = 'ZAXIS'
-
- layout.operator("pose.flip_names")
-
-
-class VIEW3D_MT_SelectSurface(bpy.types.Menu):
- bl_label = "Select Menu"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator("view3d.select_border")
- layout.operator("view3d.select_circle")
-
- layout.separator()
-
- layout.operator("curve.select_all", text="Select/Deselect All")
- layout.operator("curve.select_inverse")
- layout.operator("curve.select_random")
- layout.operator("curve.select_every_nth")
-
- layout.separator()
-
- layout.operator("curve.select_row")
-
- layout.separator()
-
- layout.operator("curve.select_more")
- layout.operator("curve.select_less")
-
-class VIEW3D_MT_SelectMetaball(bpy.types.Menu):
- bl_label = "Select Menu"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator("view3d.select_border")
-
- layout.separator()
-
- #layout.operator("mball.select_deselect_all_metaelems")
- layout.operator("mball.select_inverse_metaelems")
-
- layout.separator()
-
- layout.operator("mball.select_random_metaelems")
-
-class VIEW3D_MT_edit_TK(bpy.types.Menu):
- bl_label = "Edit Mesh Tools"
-
- def draw(self, context):
- layout = self.layout
- row = layout.row()
-
- layout.operator_context = 'INVOKE_REGION_WIN'
-
- layout.menu("VIEW3D_MT_edit_mesh_vertices", icon='VERTEXSEL')
- layout.menu("VIEW3D_MT_edit_mesh_edges", icon='EDGESEL')
- layout.menu("VIEW3D_MT_edit_mesh_faces", icon='FACESEL')
- layout.separator()
- layout.menu("VIEW3D_MT_edit_mesh_normals", icon='META_DATA')
- layout.operator("mesh.loopcut_slide",
- text="Loopcut", icon='EDIT_VEC')
-
-
-
-class VIEW3D_MT_edit_multi(bpy.types.Menu):
- bl_label = "Multi Select"
-
- def draw(self, context):
- layout = self.layout
- layout.operator_context = 'INVOKE_REGION_WIN'
-
- layout.separator()
- prop = layout.operator("wm.context_set_value", text="Vertex Select", icon='VERTEXSEL')
- prop.value = "(True, False, False)"
- prop.data_path = "tool_settings.mesh_select_mode"
-
- prop = layout.operator("wm.context_set_value", text="Edge Select", icon='EDGESEL')
- prop.value = "(False, True, False)"
- prop.data_path = "tool_settings.mesh_select_mode"
-
- prop = layout.operator("wm.context_set_value", text="Face Select", icon='FACESEL')
- prop.value = "(False, False, True)"
- prop.data_path = "tool_settings.mesh_select_mode"
- layout.separator()
-
- prop = layout.operator("wm.context_set_value", text="Vertex & Edge Select", icon='EDITMODE_HLT')
- prop.value = "(True, True, False)"
- prop.data_path = "tool_settings.mesh_select_mode"
-
- prop = layout.operator("wm.context_set_value", text="Vertex & Face Select", icon='ORTHO')
- prop.value = "(True, False, True)"
- prop.data_path = "tool_settings.mesh_select_mode"
-
- prop = layout.operator("wm.context_set_value", text="Edge & Face Select", icon='SNAP_FACE')
- prop.value = "(False, True, True)"
- prop.data_path = "tool_settings.mesh_select_mode"
- layout.separator()
-
- prop = layout.operator("wm.context_set_value", text="Vertex & Edge & Face Select", icon='SNAP_VOLUME')
- prop.value = "(True, True, True)"
- prop.data_path = "tool_settings.mesh_select_mode"
-
-class VIEW3D_MT_editM_Edge(bpy.types.Menu):
- bl_label = "Edges"
-
- def draw(self, context):
- layout = self.layout
- layout.operator_context = 'INVOKE_REGION_WIN'
-
- layout.operator("mesh.mark_seam")
- layout.operator("mesh.mark_seam", text="Clear Seam").clear = True
- layout.separator()
-
- layout.operator("mesh.mark_sharp")
- layout.operator("mesh.mark_sharp", text="Clear Sharp").clear = True
- layout.operator("mesh.extrude_move_along_normals", text="Extrude")
- layout.separator()
-
- layout.operator("mesh.edge_rotate",
- text="Rotate Edge CW").direction = 'CW'
- layout.operator("mesh.edge_rotate",
- text="Rotate Edge CCW").direction = 'CCW'
- layout.separator()
-
- layout.operator("TFM_OT_edge_slide", text="Edge Slide")
- layout.operator("mesh.loop_multi_select", text="Edge Loop")
- layout.operator("mesh.loop_multi_select", text="Edge Ring").ring = True
- layout.operator("mesh.loop_to_region")
- layout.operator("mesh.region_to_loop")
-
-
-class VIEW3D_MT_EditCurveCtrlpoints(bpy.types.Menu):
- bl_label = "Control Points"
-
- def draw(self, context):
- layout = self.layout
-
- edit_object = context.edit_object
-
- if edit_object.type == 'CURVE':
- layout.operator("transform.transform").mode = 'TILT'
- layout.operator("curve.tilt_clear")
- layout.operator("curve.separate")
-
- layout.separator()
-
- layout.operator_menu_enum("curve.handle_type_set", "type")
-
- layout.separator()
-
- layout.menu("VIEW3D_MT_hook")
-
-
-class VIEW3D_MT_EditCurveSegments(bpy.types.Menu):
- bl_label = "Curve Segments"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator("curve.subdivide")
- layout.operator("curve.switch_direction")
-
-class VIEW3D_MT_EditCurveSpecials(bpy.types.Menu):
- bl_label = "Specials"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator("curve.subdivide")
- layout.operator("curve.switch_direction")
- layout.operator("curve.spline_weight_set")
- layout.operator("curve.radius_set")
- layout.operator("curve.smooth")
- layout.operator("curve.smooth_radius")
-
-class VIEW3D_MT_EditArmatureTK(bpy.types.Menu):
- bl_label = "Armature Tools"
-
- def draw(self, context):
- layout = self.layout
-
- # Edit Armature
-
- layout.operator("transform.transform", text="Scale Envelope Distance").mode = 'BONESIZE'
-
- layout.operator("transform.transform", text="Scale B-Bone Width").mode = 'BONESIZE'
-
- layout.separator()
-
- layout.operator("armature.extrude_move")
-
- layout.operator("armature.extrude_forked")
-
- layout.operator("armature.duplicate_move")
- layout.operator("armature.merge")
- layout.operator("armature.fill")
- layout.operator("armature.delete")
- layout.operator("armature.separate")
-
- layout.separator()
-
- layout.operator("armature.subdivide_multi", text="Subdivide")
- layout.operator("armature.switch_direction", text="Switch Direction")
-
-class VIEW3D_MT_ArmatureName(bpy.types.Menu):
- bl_label = "Armature Name"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator_context = 'EXEC_AREA'
- layout.operator("armature.autoside_names", text="AutoName Left/Right").type = 'XAXIS'
- layout.operator("armature.autoside_names", text="AutoName Front/Back").type = 'YAXIS'
- layout.operator("armature.autoside_names", text="AutoName Top/Bottom").type = 'ZAXIS'
- layout.operator("armature.flip_names")
- layout.separator()
-
-class VIEW3D_MT_KeyframeMenu(bpy.types.Menu):
- bl_label = "Keyframe Menu"
-
- def draw(self, context):
- layout = self.layout
-
- # Keyframe Bleck
- layout.operator("anim.keyframe_insert_menu",
- text="Insert Keyframe...")
- layout.operator("anim.keyframe_delete_v3d",
- text="Delete Keyframe...")
- layout.operator("anim.keying_set_active_set",
- text="Change Keying Set...")
- layout.separator()
-
-# Classes for VIEW3D_MT_CursorMenu()
-class VIEW3D_OT_pivot_cursor(bpy.types.Operator):
- "Cursor as Pivot Point"
- bl_idname = "view3d.pivot_cursor"
- bl_label = "Cursor as Pivot Point"
-
- @classmethod
- def poll(cls, context):
- return bpy.context.space_data.pivot_point != 'CURSOR'
-
- def execute(self, context):
- bpy.context.space_data.pivot_point = 'CURSOR'
- return {'FINISHED'}
-
-class VIEW3D_OT_revert_pivot(bpy.types.Operator):
- "Revert Pivot Point"
- bl_idname = "view3d.revert_pivot"
- bl_label = "Reverts Pivot Point to median"
-
- @classmethod
- def poll(cls, context):
- return bpy.context.space_data.pivot_point != 'MEDIAN_POINT'
-
- def execute(self, context):
- bpy.context.space_data.pivot_point = 'MEDIAN_POINT'
- # @todo Change this to 'BOUDNING_BOX_CENTER' if needed...
- return{'FINISHED'}
-
-class VIEW3D_MT_CursorMenu(bpy.types.Menu):
- bl_label = "Snap Cursor Menu"
-
- def draw(self, context):
-
- layout = self.layout
- layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("view3d.snap_cursor_to_selected",
- text="Cursor to Selected")
- layout.operator("view3d.snap_cursor_to_center",
- text="Cursor to Center")
- layout.operator("view3d.snap_cursor_to_grid",
- text="Cursor to Grid")
- layout.operator("view3d.snap_cursor_to_active",
- text="Cursor to Active")
- layout.separator()
- layout.operator("view3d.snap_selected_to_cursor",
- text="Selection to Cursor")
- layout.operator("view3d.snap_selected_to_grid",
- text="Selection to Grid")
- layout.separator()
- layout.operator("view3d.pivot_cursor",
- text="Set Cursor as Pivot Point")
- layout.operator("view3d.revert_pivot",
- text="Revert Pivot Point")
-
-class VIEW3D_MT_EditCursorMenu(bpy.types.Menu):
- bl_label = "Snap Cursor Menu"
-
- def draw(self, context):
-
- layout = self.layout
- layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("view3d.snap_cursor_to_selected",
- text="Cursor to Selected")
- layout.operator("view3d.snap_cursor_to_center",
- text="Cursor to Center")
- layout.operator("view3d.snap_cursor_to_grid",
- text="Cursor to Grid")
- layout.operator("view3d.snap_cursor_to_active",
- text="Cursor to Active")
- layout.separator()
- layout.operator("view3d.snap_selected_to_cursor",
- text="Selection to Cursor")
- layout.operator("view3d.snap_selected_to_grid",
- text="Selection to Grid")
- layout.separator()
- layout.operator("view3d.pivot_cursor",
- text="Set Cursor as Pivot Point")
- layout.operator("view3d.revert_pivot",
- text="Revert Pivot Point")
- layout.operator("view3d.snap_cursor_to_edge_intersection",
- text="Cursor to Edge Intersection")
- layout.operator("transform.snap_type", text="Snap Tools",
- icon='SNAP_ON')
-
-def abs(val):
- if val > 0:
- return val
- return -val
-
-def LineLineIntersect (p1, p2, p3, p4):
- # based on Paul Bourke's Shortest Line Between 2 lines
-
- min = 0.0000001
-
- v1 = Vector((p1.x - p3.x, p1.y - p3.y, p1.z - p3.z))
- v2 = Vector((p4.x - p3.x, p4.y - p3.y, p4.z - p3.z))
-
- if abs(v2.x) < min and abs(v2.y) < min and abs(v2.z) < min:
- return None
-
- v3 = Vector((p2.x - p1.x, p2.y - p1.y, p2.z - p1.z))
-
- if abs(v3.x) < min and abs(v3.y) < min and abs(v3.z) < min:
- return None
-
- d1 = v1.dot(v2)
- d2 = v2.dot(v3)
- d3 = v1.dot(v3)
- d4 = v2.dot(v2)
- d5 = v3.dot(v3)
-
- d = d5 * d4 - d2 * d2
-
- if abs(d) < min:
- return None
-
- n = d1 * d2 - d3 * d4
-
- mua = n / d
- mub = (d1 + d2 * (mua)) / d4
-
- return [Vector((p1.x + mua * v3.x, p1.y + mua * v3.y, p1.z + mua * v3.z)),
- Vector((p3.x + mub * v2.x, p3.y + mub * v2.y, p3.z + mub * v2.z))]
-
-def edgeIntersect(context, operator):
-
- obj = context.active_object
-
- if (obj.type != "MESH"):
- operator.report({'ERROR'}, "Object must be a mesh")
- return None
-
- edges = [];
- mesh = obj.data
- verts = mesh.vertices
-
- is_editmode = (obj.mode == 'EDIT')
- if is_editmode:
- bpy.ops.object.mode_set(mode='OBJECT')
-
- for e in mesh.edges:
- if e.select:
- edges.append(e)
-
- if is_editmode:
- bpy.ops.object.mode_set(mode='EDIT')
-
- if len(edges) != 2:
- operator.report({'ERROR'}, "Operator requires exactly 2 edges to be selected.")
- return
-
- line = LineLineIntersect(verts[edges[0].vertices[0]].co, verts[edges[0].vertices[1]].co, verts[edges[1].vertices[0]].co, verts[edges[1].vertices[1]].co)
-
- if (line == None):
- operator.report({'ERROR'}, "Selected edges are parallel.")
- return
-
- tm = obj.matrix_world.copy()
- point = ((line[0] + line[1]) / 2)
- point = tm * point
-
- context.scene.cursor_location = point
-
- return point
-
-class VIEW3D_OT_CursorToEdgeIntersection(bpy.types.Operator):
- "Finds the mid-point of the shortest distance between two edges"
-
- bl_idname = "view3d.snap_cursor_to_edge_intersection"
- bl_label = "Cursor to Edge Intersection"
-
- @classmethod
- def poll(cls, context):
- obj = context.active_object
- return obj != None and obj.type == 'MESH'
-
- def execute(self, context):
- edgeIntersect(context, self)
- return {'FINISHED'}
-
-class VIEW3D_MT_undoS(bpy.types.Menu):
- bl_label = "Undo/Redo"
-
- def draw(self, context):
- layout = self.layout
- layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("ed.undo", icon='TRIA_LEFT')
- layout.operator("ed.redo", icon='TRIA_RIGHT')
-
-def register():
- km = bpy.context.window_manager.keyconfigs.active.keymaps['3D View']
- kmi = km.items.new('wm.call_menu', 'SPACE', 'PRESS')
- kmi.properties.name = "VIEW3D_MT_Space_Dynamic_Menu"
-
-
-def unregister():
- km = bpy.context.window_manager.keyconfigs.active.keymaps['3D View']
- for kmi in km.items:
- if kmi.idname == 'wm.call_menu':
- if kmi.properties.name == "VIEW3D_MT_Space_Dynamic_Menu":
- km.items.remove(kmi)
- break
-
-if __name__ == "__main__":
- register()