Wächst die Quelldatei des Blender-Skripts, die ursprünglich nur eine eingeschränkte Funktionalität und eine geringe Größe hatte, nicht mit der zusätzlichen Funktionalität an Größe? In einem solchen Fall teilen wir es in mehrere Quelldateien auf. Einige Benutzer wissen jedoch möglicherweise nicht, wie ein Blender-Skript aufgeteilt wird. Hier finden Sie eine Zusammenfassung zum Aufteilen eines Blender-Skripts.
Hier ist eine Beispielquelldatei, bevor Sie die Datei teilen. Es ist nur ein Beispiel, daher denke ich nicht wirklich über den Inhalt der Quelle nach.
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()
Gibt eine Datei an, in die die Datei für jede Klasse unterteilt ist. In diesem Beispiel müssen sich alle Dateien im selben Verzeichnis befinden. Außerdem muss der Dateiname, der den Prozess beim ersten Laden des Skripts beschreibt, "__init __. Py" sein. Es gibt einen Prozess zum Lesen der ersten geteilten Datei von "__init __. Py", aber ansonsten gibt es keinen besonderen Unterschied zu dem Fall, in dem sie nicht geteilt wird. Die Erklärung dieses Teils ist, um die Wahrheit zu sagen, dieselbe wie das Python-Paket, daher ist es denjenigen, die Python kennen, sehr vertraut.
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()
Ich habe Ihnen gezeigt, wie Sie eine Datei mit einem Blender-Skript teilen. Wenn Sie sich vorstellen, dass Blender die Funktionalität eines Skripts wie ein Paket behandelt, entspricht dies dem Erstellen eines Python-Pakets. Daher war es möglicherweise nicht notwendig, einen Artikel zu schreiben, aber ich hoffe, dass dies für diejenigen hilfreich ist, die Blender-Skripte erstellen.
Recommended Posts