[PYTHON] [Blender] Weisen Sie Ihren eigenen Funktionen im Skript Tastenkombinationen zu

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.

Stichprobe

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()

Wie benutzt man

  1. Installieren Sie das Skript unter Bezugnahme auf die Blender-Wiki-Seite.
  2. Wählen Sie das Objekt aus, das Sie vergrößern oder verkleinern möchten.
  3. Drücken Sie gleichzeitig ** Strg + Alt + U **, um zu überprüfen, ob das ausgewählte Objekt vergrößert wurde.
  4. Drücken Sie gleichzeitig ** Strg + Alt + D **, um zu überprüfen, ob das ausgewählte Objekt verkleinert wurde.

Beispielerklärung

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

Registrierung der Tastenkombination

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.Operatorvonbl_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))

Verknüpfungstaste aufheben

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

[Blender] Weisen Sie Ihren eigenen Funktionen im Skript Tastenkombinationen zu
Weisen Sie den Tastenkombinationen Tweets zu
[Blender] Verwenden Sie OpenGL aus dem Skript heraus
(Hinweis) So übergeben Sie den Pfad Ihres eigenen Moduls
[Blender] Skript zum Überprüfen, ob es sich bei dem ausgewählten um ein Netz handelt
Erstellen Sie das Thema von Pythonista 3 wie Monokai (wie Sie Ihr eigenes Thema erstellen)
Überbrücken Sie ROS mit Ihrem eigenen Protokoll