diff options
author | meta-androcto <meta.androcto1@gmail.com> | 2017-03-19 07:28:46 +0300 |
---|---|---|
committer | meta-androcto <meta.androcto1@gmail.com> | 2017-03-19 07:28:46 +0300 |
commit | 9c72bf66305c33b9dd6f3f57221ba4ce9a018402 (patch) | |
tree | bda70c5990e3bfe40428e0ae479c01db92e678d4 /space_view3d_pie_menus/pie_origin.py | |
parent | e702810f3734d8f35b29843cfb44956f125d0da7 (diff) |
T50732 check unversioned files
Diffstat (limited to 'space_view3d_pie_menus/pie_origin.py')
-rw-r--r-- | space_view3d_pie_menus/pie_origin.py | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/space_view3d_pie_menus/pie_origin.py b/space_view3d_pie_menus/pie_origin.py new file mode 100644 index 00000000..f30acf85 --- /dev/null +++ b/space_view3d_pie_menus/pie_origin.py @@ -0,0 +1,165 @@ +# ##### 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 ##### + +# <pep8 compliant> + +bl_info = { + "name": "Hotkey: 'Alt Shift O'", + "description": "Origin Snap/Place Menu", + # "author": "pitiwazou, meta-androcto", + # "version": (0, 1, 0), + "blender": (2, 77, 0), + "location": "3D View", + "warning": "", + "wiki_url": "", + "category": "Origin Pie" + } + +import bpy +from bpy.types import ( + Menu, + Operator, + ) + + +# Pivot to selection + + +class PivotToSelection(Operator): + bl_idname = "object.pivot2selection" + bl_label = "Pivot To Selection" + bl_description = "Pivot Point To Selection" + bl_options = {'REGISTER', 'UNDO'} + + def execute(self, context): + saved_location = context.scene.cursor_location.copy() + bpy.ops.view3d.snap_cursor_to_selected() + bpy.ops.object.mode_set(mode='OBJECT') + bpy.ops.object.origin_set(type='ORIGIN_CURSOR') + context.scene.cursor_location = saved_location + return {'FINISHED'} + +# Pivot to Bottom + + +class PivotBottom(Operator): + bl_idname = "object.pivotobottom" + bl_label = "Pivot To Bottom" + bl_description = "Set the Pivot Point To Lowest Point" + bl_options = {'REGISTER', 'UNDO'} + + def execute(self, context): + + bpy.ops.object.mode_set(mode='OBJECT') + bpy.ops.object.transform_apply(location=True, rotation=True, scale=True) + bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY') + o = context.active_object + init = 0 + for x in o.data.vertices: + if init == 0: + a = x.co.z + init = 1 + elif x.co.z < a: + a = x.co.z + + for x in o.data.vertices: + x.co.z -= a + + o.location.z += a + bpy.ops.object.mode_set(mode='EDIT') + return {'FINISHED'} + +# Pie Origin/Pivot - Shift + S + + +class PieOriginPivot(Menu): + bl_idname = "origin.pivotmenu" + bl_label = "Origin Menu" + + def draw(self, context): + layout = self.layout + obj = context.object + pie = layout.menu_pie() + if obj and obj.type == 'MESH': + # 4 - LEFT + pie.operator("object.origin_set", text="Origin to Center of Mass", + icon='BBOX').type = 'ORIGIN_CENTER_OF_MASS' + # 6 - RIGHT + pie.operator("object.origin_set", text="Origin To 3D Cursor", icon='CURSOR').type = 'ORIGIN_CURSOR' + # 2 - BOTTOM + pie.operator("object.pivotobottom", text="Origin to Bottom", icon='TRIA_DOWN') + # 8 - TOP + pie.operator("object.pivot2selection", text="Origin To Selection", icon='SNAP_INCREMENT') + # 7 - TOP - LEFT + pie.operator("object.origin_set", text="Geometry To Origin", icon='BBOX').type = 'GEOMETRY_ORIGIN' + # 9 - TOP - RIGHT + pie.operator("object.origin_set", text="Origin To Geometry", icon='ROTATE').type = 'ORIGIN_GEOMETRY' + + else: + # 4 - LEFT + pie.operator("object.origin_set", text="Origin to Center of Mass", + icon='BBOX').type = 'ORIGIN_CENTER_OF_MASS' + # 6 - RIGHT + pie.operator("object.origin_set", text="Origin To 3D Cursor", icon='CURSOR').type = 'ORIGIN_CURSOR' + # 2 - BOTTOM + pie.operator("object.pivot2selection", text="Origin To Selection", icon='SNAP_INCREMENT') + # 8 - TOP + pie.operator("object.origin_set", text="Origin To Geometry", icon='ROTATE').type = 'ORIGIN_GEOMETRY' + # 7 - TOP - LEFT + pie.operator("object.origin_set", text="Geometry To Origin", icon='BBOX').type = 'GEOMETRY_ORIGIN' + + +classes = ( + PieOriginPivot, + PivotToSelection, + PivotBottom, + ) + +addon_keymaps = [] + + +def register(): + for cls in classes: + bpy.utils.register_class(cls) + wm = bpy.context.window_manager + + if wm.keyconfigs.addon: + # Origin/Pivot + km = wm.keyconfigs.addon.keymaps.new(name='3D View Generic', space_type='VIEW_3D') + kmi = km.keymap_items.new('wm.call_menu_pie', 'O', 'PRESS', shift=True, alt=True) + kmi.properties.name = "origin.pivotmenu" +# kmi.active = True + addon_keymaps.append((km, kmi)) + + +def unregister(): + for cls in classes: + bpy.utils.unregister_class(cls) + wm = bpy.context.window_manager + + kc = wm.keyconfigs.addon + if kc: + km = kc.keymaps['3D View Generic'] + for kmi in km.keymap_items: + if kmi.idname == 'wm.call_menu_pie': + if kmi.properties.name == "origin.pivotmenu": + km.keymap_items.remove(kmi) + + +if __name__ == "__main__": + register() |