AddOn Dev

path

  • %APPDATA%\Blender Foundation\Blender\2.93\scripts\addons

module

addons/ADDON.py もしくは addons/ADDON_DIR/__init__.py に記述する。

blender の addon module は、bl_info, register, unregister の3つの要素を持つ。

bl_info

bl_info は module root の .py に直接記述されている必要がある。

# こういうのは動かない
from hoge import bl_info
AST error parsing bl_info for: Traceback (most recent call last):
  File "2.93\scripts\modules\addon_utils.py", line 137, in fake_module
    mod.bl_info = ast.literal_eval(body.value)

register

def register():
    # operators
    for c in CLASSES:
        bpy.utils.register_class(c)

    # bpy.ops.{c.bl_idname} という名の operator が登録される
    # bl_idname = "SOME.OPERATOR" の場合
    # bpy.ops.SOME.OPERATOR() と実行できる

    # menu
    bpy.types.TOPBAR_MT_file_import.append(menu_func_import)  # type: ignore
    bpy.types.TOPBAR_MT_file_export.append(menu_func_export)  # type: ignore

unregister

def unregister():
    # Note: when unregister, it's usually good practice to do it in reverse order you registered.
    # Can avoid strange issues like keymap still referring to operators already unregistered...
    # handle the keymap
    for c in CLASSES:
        bpy.utils.unregister_class(c)

    # menu
    bpy.types.TOPBAR_MT_file_export.remove(menu_func_export)  # type: ignore
    bpy.types.TOPBAR_MT_file_import.remove(menu_func_import)  # type: ignore