mirror of
https://github.com/blender/blender-addons.git
synced 2025-08-20 13:22:58 +00:00
155 lines
4.7 KiB
Python
155 lines
4.7 KiB
Python
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
bl_info = {
|
|
"name": "Hotkey: 'Alt Q'",
|
|
"description": "Viewport Numpad Menus",
|
|
"author": "pitiwazou, meta-androcto",
|
|
"version": (0, 1, 1),
|
|
"blender": (2, 80, 0),
|
|
"location": "Alt Q key",
|
|
"warning": "",
|
|
"doc_url": "",
|
|
"category": "View Numpad Pie"
|
|
}
|
|
|
|
import bpy
|
|
from bpy.types import (
|
|
Menu,
|
|
Operator,
|
|
)
|
|
|
|
|
|
# Lock Camera Transforms
|
|
class PIE_OT_LockTransforms(Operator):
|
|
bl_idname = "object.locktransforms"
|
|
bl_label = "Lock Object Transforms"
|
|
bl_description = (
|
|
"Enable or disable the editing of objects transforms in the 3D View\n"
|
|
"Needs an existing Active Object"
|
|
)
|
|
bl_options = {'REGISTER', 'UNDO'}
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
return context.active_object is not None
|
|
|
|
def execute(self, context):
|
|
obj = context.active_object
|
|
if obj.lock_rotation[0] is False:
|
|
obj.lock_rotation[0] = True
|
|
obj.lock_rotation[1] = True
|
|
obj.lock_rotation[2] = True
|
|
obj.lock_scale[0] = True
|
|
obj.lock_scale[1] = True
|
|
obj.lock_scale[2] = True
|
|
|
|
elif context.object.lock_rotation[0] is True:
|
|
obj.lock_rotation[0] = False
|
|
obj.lock_rotation[1] = False
|
|
obj.lock_rotation[2] = False
|
|
obj.lock_scale[0] = False
|
|
obj.lock_scale[1] = False
|
|
obj.lock_scale[2] = False
|
|
|
|
return {'FINISHED'}
|
|
|
|
|
|
# Pie views numpad - Q
|
|
class PIE_MT_ViewNumpad(Menu):
|
|
bl_idname = "PIE_MT_viewnumpad"
|
|
bl_label = "Pie Views Menu"
|
|
|
|
def draw(self, context):
|
|
layout = self.layout
|
|
ob = context.active_object
|
|
pie = layout.menu_pie()
|
|
scene = context.scene
|
|
rd = scene.render
|
|
|
|
# 4 - LEFT
|
|
pie.operator("view3d.view_axis", text="Left", icon='TRIA_LEFT').type = 'LEFT'
|
|
# 6 - RIGHT
|
|
pie.operator("view3d.view_axis", text="Right", icon='TRIA_RIGHT').type = 'RIGHT'
|
|
# 2 - BOTTOM
|
|
pie.operator("view3d.view_axis", text="Bottom", icon='TRIA_DOWN').type = 'BOTTOM'
|
|
# 8 - TOP
|
|
pie.operator("view3d.view_axis", text="Top", icon='TRIA_UP').type = 'TOP'
|
|
# 7 - TOP - LEFT
|
|
pie.operator("view3d.view_axis", text="Back").type = 'BACK'
|
|
# 9 - TOP - RIGHT
|
|
pie.operator("view3d.view_axis", text="Front").type = 'FRONT'
|
|
# 1 - BOTTOM - LEFT
|
|
box = pie.split().column()
|
|
|
|
row = box.row(align=True)
|
|
row.operator("view3d.view_camera", text="View Cam", icon='HIDE_OFF')
|
|
row.operator("view3d.camera_to_view", text="Cam To View", icon='NONE')
|
|
|
|
row = box.row(align=True)
|
|
if context.space_data.lock_camera is False:
|
|
row.operator("wm.context_toggle", text="Lock Cam To View",
|
|
icon='UNLOCKED').data_path = "space_data.lock_camera"
|
|
elif context.space_data.lock_camera is True:
|
|
row.operator("wm.context_toggle", text="Lock Cam to View",
|
|
icon='LOCKED').data_path = "space_data.lock_camera"
|
|
|
|
icon_locked = 'LOCKED' if ob and ob.lock_rotation[0] is False else \
|
|
'UNLOCKED' if ob and ob.lock_rotation[0] is True else 'LOCKED'
|
|
|
|
row = box.row(align=True)
|
|
row.operator("object.locktransforms", text="Lock Transforms", icon=icon_locked)
|
|
|
|
row = box.row(align=True)
|
|
row.prop(rd, "use_border", text="Border")
|
|
# 3 - BOTTOM - RIGHT
|
|
box = pie.split().column()
|
|
|
|
row = box.row(align=True)
|
|
row.operator("view3d.view_all").center = True
|
|
row.operator("view3d.view_selected", text="Selected")
|
|
|
|
row = box.row(align=True)
|
|
row.operator("view3d.view_persportho", text="Persp/Ortho")
|
|
row.operator("view3d.localview", text="Local/Global")
|
|
|
|
row = box.row(align=True)
|
|
row.operator("screen.region_quadview", text="Toggle Quad")
|
|
row.operator("screen.screen_full_area", text="Toggle Full")
|
|
|
|
|
|
classes = (
|
|
PIE_MT_ViewNumpad,
|
|
PIE_OT_LockTransforms,
|
|
)
|
|
|
|
addon_keymaps = []
|
|
|
|
|
|
def register():
|
|
for cls in classes:
|
|
bpy.utils.register_class(cls)
|
|
|
|
wm = bpy.context.window_manager
|
|
if wm.keyconfigs.addon:
|
|
# Views numpad
|
|
km = wm.keyconfigs.addon.keymaps.new(name='3D View Generic', space_type='VIEW_3D')
|
|
kmi = km.keymap_items.new('wm.call_menu_pie', 'Q', 'PRESS', alt=True)
|
|
kmi.properties.name = "PIE_MT_viewnumpad"
|
|
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:
|
|
for km, kmi in addon_keymaps:
|
|
km.keymap_items.remove(kmi)
|
|
addon_keymaps.clear()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
register()
|