Einige Blender-Funktionen und Add-Ons verfügen über Tastenkombinationen, mit denen Sie häufig verwendete Funktionen schnell ausführen können. Sie können Funktionen in Ihren eigenen Add-Ons Tastenkombinationen zuweisen, genau wie Blender-Funktionen. Ein Beispiel ist das Add-On "Screencast Key", mit dem die mit der Tastatur oder Maus gedrückten Tasten auf dem Bildschirm angezeigt werden.
In diesem Artikel werde ich Ihnen zeigen, wie Sie Ihrer eigenen Funktion eine Tastenkombination zuweisen können, basierend auf einem Beispiel, das das ausgewählte Objekt vergrößert / verkleinert, wenn Sie die zugewiesene Tastenkombination drücken.
`bl_idname``` von`
bpy.types.Operator``` kennen, können Sie Tastenkombinationen nicht nur Ihren eigenen Funktionen, sondern auch vorhandenen Funktionen zuweisen.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 der registrierten Tastenkombinationen
class ObjectScaleUp(bpy.types.Operator):
"""Vergrößern Sie das ausgewählte Objekt"""
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 #Verdoppeln Sie das ausgewählte Objekt
return {'FINISHED'}
class ObjectScaleDown(bpy.types.Operator):
"""Verkleinertes ausgewähltes Objekt"""
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 ausgewähltes Objekt/Reduziert auf 2
return {'FINISHED'}
def register():
bpy.utils.register_module(__name__)
wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
#Erstellen Sie eine Liste der zu registrierenden Tastenkombinationen
# (Bpy wird ausgeführt, wenn eine Taste gedrückt wird.types.Betreiber bl_idname,Schlüssel,Veranstaltung,Strg-Taste,alt "Taste,Shift Taste)
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") #Registriert als Tastenkombination für "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) #Registrierung der Tastenkombination
addon_keymaps.append((km, kmi))
def unregister():
bpy.utils.unregister_module(__name__)
for km, kmi in addon_keymaps:
km.keymap_items.remove(kmi) #Verknüpfungstaste aufheben
addon_keymaps.clear()
if __name__ == "__main__":
register()
Die grundlegende Erklärung des Blender-Skripts wird im folgenden Artikel vorgestellt. Daher konzentrieren wir uns hier auf die Erklärung der neu hinzugefügten Elemente. [Blender] So erstellen Sie ein Blender-Plug-In
Registrieren Sie die Tastenkombination bei der Installation des Skripts.
Bevor Sie die Tastenkombination registrieren, rufen Sie die Keymap des Bereichs ab, dem die Tastenkombination mit der Funktion `` bpy.context.window_manager.eyconfigs.addon.keymaps.new``` zugewiesen ist, und weisen Sie sie
`km``` zu. Machen.
Da wir diesmal dem Bereich "View3D" eine Keymap zuweisen, haben wir das Argument "space_type" auf "View_3D" gesetzt.
km.keymap_items.Das an new übergebene Argument ist der Schlüssel_assign_Ich habe mich im Voraus für die Liste angemeldet.
#### **`for (idname, key, event, ctrl, alt, shift) in key_assign_list:Mit dem Schlüssel_assign_Nach Erweiterung der Liste, km.keymap_items.Verwenden Sie die neue Funktion, um die Tastenkombination zu registrieren.`**
Die Bedeutung jeder Variablen in der Anweisung for ist unten angegeben.
Variable | Bedeutung |
---|---|
bl_idname |
Ereignis, das ausgeführt werden soll, wenn die Tastenkombination gedrückt wird (bpy.types.Operator vonbl_idname ) |
key |
Zu registrierende Tastaturtasten |
event |
Gelegenheit, das Ereignis auszuführen (ex. "PRESS" :In dem Moment, in dem die Taste gedrückt wird) |
ctrl |
Wenn Sie gleichzeitig die Strg-Taste drücken müssen, um ein Ereignis auszulösenTrue |
alt |
Wenn Sie gleichzeitig die Alt-Taste drücken müssen, um ein Ereignis auszulösenTrue |
shift |
Wenn Sie gleichzeitig die Umschalttaste drücken müssen, um ein Ereignis auszulösenTrue |
Es scheint, dass Sie andere Argumente angeben können, aber im Grunde wird es kein Problem sein, wenn Sie sich nur an das Obige erinnern. Wenn Sie die spezifischen Argumente wissen möchten, überprüfen Sie bitte unter der folgenden URL. http://www.blender.org/api/blender_python_api_2_63_14/bpy.types.KeyMapItems.html Speichern Sie abschließend die Registrierungsinformationen in der globalen Variablen `` `addon_keymaps```, falls Sie die Verknüpfung der Tastenkombination aufheben.
Übrigens sind in Blender Tastenkombinationen bereits vielen Funktionen zugewiesen, so dass es überraschend schwierig ist, eine Taste zu finden, der nichts von einer einzelnen Taste zugewiesen wurde. Sehen Sie sich in solchen Fällen ** Kombinationen mit Strg, Umschalt und Alt ** an. Es ist weniger wahrscheinlich, dass Kombinationsschlüssel bereits zugewiesen sind als ein einzelner Schlüssel. Daher ist es ziemlich einfach, einen freien Schlüssel zu finden.
wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
#Erstellen Sie eine Liste der zu registrierenden Tastenkombinationen
# (Bpy wird ausgeführt, wenn eine Taste gedrückt wird.types.Betreiber bl_idname,Schlüssel,Veranstaltung,Strg-Taste,alt "Taste,Shift Taste)
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") #Registriert als Tastenkombination für "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) #Registrierung der Tastenkombination
addon_keymaps.append((km, kmi))
Sie müssen die Verknüpfungstaste aufheben, wenn Sie das Skript deinstallieren.
Um die Registrierung der Tastenkombination aufzuheben, rufen Sie `keymap_items.remove ()`
mit den in
addon_keymaps``` gespeicherten Informationen auf.
for km, kmi in addon_keymaps:
km.keymap_items.remove(kmi) #Verknüpfungstaste aufheben
addon_keymaps.clear()
Recommended Posts