Certaines fonctionnalités et modules complémentaires de Blender sont dotés de touches de raccourci pour vous aider à exécuter rapidement les fonctions fréquemment utilisées. Vous pouvez attribuer des touches de raccourci aux fonctions de vos propres modules complémentaires ainsi qu'aux fonctions de Blender. Par exemple, l'add-on "Screencast Key" qui affiche les touches pressées avec le clavier ou la souris sur l'écran en est un exemple.
Dans cet article, je vais vous montrer comment attribuer une touche de raccourci à votre propre fonction en fonction d'un exemple qui agrandit / réduit l'objet sélectionné lorsque vous appuyez sur la touche de raccourci attribuée.
bl_idname``` de
`bpy.types.Operator '', vous pouvez attribuer des touches de raccourci non seulement à vos propres fonctions mais aussi à des fonctions existantes.shortcut_key.py
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 = [] #Liste des touches de raccourci enregistrées
class ObjectScaleUp(bpy.types.Operator):
"""Agrandir l'objet sélectionné"""
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 #Double l'objet sélectionné
return {'FINISHED'}
class ObjectScaleDown(bpy.types.Operator):
"""Réduire l'objet sélectionné"""
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 objet sélectionné/Réduit à 2
return {'FINISHED'}
def register():
bpy.utils.register_module(__name__)
wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
#Créer une liste de touches de raccourci à enregistrer
# (Bpy à exécuter lorsqu'une touche est enfoncée.types.Opérateur bl_idname,Clé,un événement,Touche Ctrl,touche Alt,Touche Majuscule)
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") #Enregistré comme touche de raccourci pour "View 3D"
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) #Enregistrement des touches de raccourci
addon_keymaps.append((km, kmi))
def unregister():
bpy.utils.unregister_module(__name__)
for km, kmi in addon_keymaps:
km.keymap_items.remove(kmi) #Annuler l'enregistrement de la touche de raccourci
addon_keymaps.clear()
if __name__ == "__main__":
register()
L'explication de base du script Blender est présentée dans l'article suivant, nous nous concentrerons donc ici sur l'explication des éléments nouvellement ajoutés. [Blender] Comment créer un plug-in Blender
Enregistrez la touche de raccourci lors de l'installation du script.
Avant d'enregistrer la touche de raccourci, obtenez la carte des touches de la zone à laquelle la touche de raccourci est affectée avec la fonction
bpy.context.window_manager.eyconfigs.addon.keymaps.new et affectez-la à` `` km
Faire.
Puisque nous attribuons cette fois un keymap à la zone "View3D", nous avons défini l'argument
space_type sur `` `` View_3D
.
km.keymap_items.L'argument passé à new est clé_assign_Je me suis inscrit à l'avance pour la liste.
#### **`for (idname, key, event, ctrl, alt, shift) in key_assign_list:Par clé_assign_Après avoir élargi la liste, km.keymap_items.Utilisez la nouvelle fonction pour enregistrer la touche de raccourci.`**
La signification de chaque variable dans l'instruction, for est indiquée ci-dessous.
variable | sens |
---|---|
bl_idname |
Événement à exécuter lorsque la touche de raccourci est enfoncée (bpy.types.Operator debl_idname ) |
key |
Touches du clavier à enregistrer |
event |
Possibilité d'exécuter l'événement (ex. "PRESS" :Au moment où la touche est enfoncée) |
ctrl |
Si vous devez appuyer sur la touche Ctrl en même temps pour déclencher un événementTrue |
alt |
Si vous devez appuyer simultanément sur la touche Alt pour déclencher un événementTrue |
shift |
Si vous devez appuyer simultanément sur la touche Shift pour déclencher un événementTrue |
Il semble que vous puissiez spécifier d'autres arguments, mais fondamentalement, ce ne sera pas un problème si vous vous souvenez simplement de ce qui précède.
Si vous souhaitez connaître les arguments spécifiques, veuillez vérifier à partir de l'URL suivante.
http://www.blender.org/api/blender_python_api_2_63_14/bpy.types.KeyMapItems.html
Enfin, enregistrez les informations d'enregistrement dans la variable globale addon_keymaps
au cas où vous désinscrire la touche de raccourci.
À propos, dans Blender, les touches de raccourci sont déjà attribuées à de nombreuses fonctions, il est donc étonnamment difficile de trouver une touche sans rien assigné à partir d'une seule touche. Dans de tels cas, regardez les ** combinaisons avec Ctrl, Maj et Alt **. Les touches combinées sont moins susceptibles d'être déjà affectées qu'une seule touche, il est donc assez facile de trouver une clé libre.
wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
#Créer une liste de touches de raccourci à enregistrer
# (Bpy à exécuter lorsqu'une touche est enfoncée.types.Opérateur bl_idname,Clé,un événement,Touche Ctrl,touche Alt,Touche Majuscule)
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") #Enregistré comme touche de raccourci pour "View 3D"
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) #Enregistrement des touches de raccourci
addon_keymaps.append((km, kmi))
Vous devez désenregistrer la touche de raccourci lors de la désinstallation du script.
Pour désenregistrer la touche de raccourci, appelez `keymap_items.remove ()`
avec les informations enregistrées dans addon_keymaps
.
for km, kmi in addon_keymaps:
km.keymap_items.remove(kmi) #Annuler l'enregistrement de la touche de raccourci
addon_keymaps.clear()
Recommended Posts