[PYTHON] [Blender] Scinder le script Blender en plusieurs fichiers

Le fichier source du script Blender, qui était initialement limité en fonctionnalités et de petite taille, ne grossit-il pas avec l'ajout de fonctionnalités? Dans un tel cas, divisons-le en plusieurs fichiers source. Cela dit, certaines personnes peuvent ne pas savoir comment diviser un script Blender, alors voici un résumé de la façon de diviser un script Blender.

Source avant le fractionnement du fichier

Voici un exemple de fichier source avant de fractionner le fichier. C'est juste un exemple, donc je ne pense pas vraiment au contenu de la source.

all_in_one.py


import bpy

bl_info = {
# ...
}

class Operator_1(bpy.types.Operator):
    bl_idname = "uv.operator_1"
    bl_label = "Operator 1"
    file_name = "hoge.blend"

    def execute(self, context):
        return{'FINISHED'}

class Operator_2(bpy.types.Operator):
    bl_idname = "uv.operator_2"
    bl_label = "Operator 2"

    def execute(self, context):
        self.report({'INFO'}, Operator_1.file_name)
        return{'FINISHED'}



def menu_func(self, context):
    self.layout.separator()
    self.layout.menu(Operator_1.bl_idname)
    self.layout.menu(Operator_2.bl_idname)


def register():
    bpy.utils.register_module(__name__)
    bpy.types.VIEW3D_MT_uv_map.append(menu_func)

def unregister():
    bpy.utils.unregister_module(__name__)
    bpy.types.VIEW3D_MT_uv_map.remove(menu_func)


if __name__ == "__main__":
    register()

Source après la division du fichier

Indique un fichier dans lequel le fichier est divisé pour chaque classe. Cet exemple nécessite que tous les fichiers se trouvent dans le même répertoire. De plus, le nom de fichier qui décrit le processus lors du premier chargement du script doit être «__init __. Py». Il existe un processus pour lire le premier fichier fractionné de «__init __. Py», mais à part cela, il n'y a pas de différence particulière par rapport au cas sans fractionnement. L'explication de cette partie, à vrai dire, est la même que celle du package Python, elle est donc très familière à ceux qui connaissent Python.

op1.py


import bpy

class Operator_1(bpy.types.Operator):
    bl_idname = "uv.operator_1"
    bl_label = "Operator 1"
    file_name = "hoge.blend"

    def execute(self, context):
        return{'FINISHED'}

op2.py


import bpy
from . import op1

class Operator_2(bpy.types.Operator):
    bl_idname = "uv.operator_2"
    bl_label = "Operator 2"

    def execute(self, context):
        self.report({'INFO'}, op1.Operator_1.file_name)
        return{'FINISHED'}

__init__.py


bl_info = {
# ...
}

if "bpy" in locals():
    import imp
    imp.reload(op1)
    imp.reload(op2)
else:
    from . import op1
    from . import op2

import bpy

def menu_func(self, context):
    self.layout.separator()
    self.layout.menu(op1.Operator_1.bl_idname)
    self.layout.menu(op2.Operator_2.bl_idname)


def register():
    bpy.utils.register_module(__name__)
    bpy.types.VIEW3D_MT_uv_map.append(menu_func)

def unregister():
    bpy.utils.unregister_module(__name__)
    bpy.types.VIEW3D_MT_uv_map.remove(menu_func)


if __name__ == "__main__":
    register()

finalement

Je vous ai montré comment diviser un fichier avec un script Blender. Si vous pensez que Blender traite la fonctionnalité d'un script comme un package, c'est la même chose que la création d'un package Python. Par conséquent, il n'a peut-être pas été nécessaire d'écrire un article, mais j'espère que cela sera utile pour ceux qui créent des scripts Blender.

Informations de référence

Recommended Posts

[Blender] Scinder le script Blender en plusieurs fichiers
Combinez plusieurs fichiers python en un seul fichier python
[Python & Unix] Combinez plusieurs fichiers PDF en un seul.
Combinez plusieurs fichiers Excel chargés à l'aide de pandas en un seul
Décompressez plusieurs fichiers compressés (Python)
Diviser le PDF en pages arbitraires
Télécharger plusieurs fichiers avec Flask
Écran divisé en 3 avec keyhac