Skip to content

Instantly share code, notes, and snippets.

@nutti
Created July 24, 2015 12:49
Show Gist options
  • Save nutti/c541f5ee937d35127c5d to your computer and use it in GitHub Desktop.
Save nutti/c541f5ee937d35127c5d to your computer and use it in GitHub Desktop.
[Blender] スクリプト内部で自作の機能にショートカットキーを割り当てる ref: http://qiita.com/nutti/items/e29226ff8bd7a7e770aa
wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
# 登録するショートカットキーのリストを作成
# (キーが押されたときに実行する bpy.types.Operator のbl_idname, キー, イベント, Ctrlキー, Altキー, Shiftキー)
key_assign_list = [
(ObjectScaleUp.bl_idname, "U", "PRESS", True, True, False),
(ObjectScaleDown.bl_idname, "D", "PRESS", True, True, False),
]
if kc:
km = kc.keymaps.new(name="3D View", space_type="VIEW_3D") # 「View3D」のショートカットキーとして登録
for (idname, key, event, ctrl, alt, shift) in key_assign_list:
kmi = km.keymap_items.new(
idname, key, event, ctrl=ctrl, alt=alt, shift=shift) # ショートカットキーの登録
addon_keymaps.append((km, kmi))
for km, kmi in addon_keymaps:
km.keymap_items.remove(kmi) # ショートカットキーの登録解除
addon_keymaps.clear()
import bpy
bl_info = {
"name": "Tutorial: Shortcut key",
"author": "Nutti",
"version": (1, 0),
"blender": (2, 74, 0),
"location": "Object > Tutorial: Shortcut key",
"description": "Tutorial: Shortcut key.",
"warning": "",
"support": "COMMUNITY",
"wiki_url": "",
"tracker_url": "",
"category": "Object"
}
addon_keymaps = [] # 登録したショートカットキーの一覧
class ObjectScaleUp(bpy.types.Operator):
"""選択されたオブジェクトを拡大"""
bl_idname = "object_transform.object_scale_up"
bl_label = "Scale Up Object"
bl_description = "Scale up selected object"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
active_obj = context.active_object
active_obj.scale = active_obj.scale * 2.0 # 選択されたオブジェクトを2倍に拡大
return {'FINISHED'}
class ObjectScaleDown(bpy.types.Operator):
"""選択されたオブジェクトを縮小"""
bl_idname = "object_transform.object_scale_down"
bl_label = "Scale Down Object"
bl_description = "Scale down selected object"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
active_obj = context.active_object
active_obj.scale = active_obj.scale / 2.0 # 選択されたオブジェクトを1/2に縮小
return {'FINISHED'}
def register():
bpy.utils.register_module(__name__)
wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
# 登録するショートカットキーのリストを作成
# (キーが押されたときに実行する bpy.types.Operator のbl_idname, キー, イベント, Ctrlキー, Altキー, Shiftキー)
key_assign_list = [
(ObjectScaleUp.bl_idname, "U", "PRESS", True, True, False),
(ObjectScaleDown.bl_idname, "D", "PRESS", True, True, False),
]
if kc:
km = kc.keymaps.new(name="3D View", space_type="VIEW_3D") # 「View3D」のショートカットキーとして登録
for (idname, key, event, ctrl, alt, shift) in key_assign_list:
kmi = km.keymap_items.new(
idname, key, event, ctrl=ctrl, alt=alt, shift=shift) # ショートカットキーの登録
addon_keymaps.append((km, kmi))
def unregister():
bpy.utils.unregister_module(__name__)
for km, kmi in addon_keymaps:
km.keymap_items.remove(kmi) # ショートカットキーの登録解除
addon_keymaps.clear()
if __name__ == "__main__":
register()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment