本日は Blender の技術調査枠です。
Blender2.8で利用可能なpythonスクリプトを作ります。
プロジェクトフォルダの外部Pythonスクリプトを参照する
Blenderプロジェクトフォルダ(.blend)にあるPythonスクリプトをインポートして利用します。
プロジェクトフォルダをシステムパスに加えることで参照しています。
・Script_import_script_by_blendfolder.py
# 各種ライブラリインポート import sys, os import bpy ## エディタ実行時に追加ライブラリを参照するため ## 読み込みスクリプトのディレクトリをシステムパスに追加する # Blenderプロジェクトのファイルパスを取得 blend_filepath = bpy.data.filepath # Blenderプロジェクトの読み込み元のディレクトリパスを取得 blend_dirpath = os.path.dirname(blend_filepath) # 読み込み元のディレクトリパスをシステムパスに追加 sys.path += [blend_dirpath] # 追加ライブラリのインポート import Script_print_test # ライブラリの関数を呼び出す Script_print_test.method_print_test("blend_filepath : " + blend_filepath) Script_print_test.method_print_test("blend_dirpath : " + blend_dirpath) Script_print_test.method_print_test("Test Message")
・Script_print_test.py
# 各種ライブラリインポート import bpy # メッセージを表示する def method_print_test(arg_str:str) -> bool: """メッセージを表示する Args: arg_str (str): 表示メッセージ Returns: bool: 実行正否 """ # メッセージを表示する print(arg_str) return True
プロジェクトフォルダの外部Pythonスクリプトを参照する
Blenderプロジェクトフォルダ(.blend)にあるPythonスクリプトをインポートして利用します。
プロジェクトフォルダをシステムパスに加えることで参照しています。
・Script_import_script_by_scriptfolder.py
# 各種ライブラリインポート import sys, os import bpy ## エディタ実行時に追加ライブラリを参照するため ## 読み込みスクリプトのディレクトリをシステムパスに追加する # 実行中のスクリプト名を取得 script_filename = os.path.basename(__file__) # 読み込み中のテキストファイルリストからファイルパスを取得 script_filepath = bpy.data.texts[script_filename].filepath # スクリプトの読み込み元のディレクトリパスを取得 script_dirpath = os.path.dirname(script_filepath) # 読み込み元のディレクトリパスをシステムパスに追加 sys.path += [script_dirpath] # 追加ライブラリのインポート import Script_print_test # ライブラリの関数を呼び出す Script_print_test.method_print_test("script_filename : " + script_filename) Script_print_test.method_print_test("script_filepath : " + script_filepath) Script_print_test.method_print_test("script_dirpath : " + script_dirpath) Script_print_test.method_print_test("Test Message")
・Script_print_test.py
# 各種ライブラリインポート import bpy # メッセージを表示する def method_print_test(arg_str:str) -> bool: """メッセージを表示する Args: arg_str (str): 表示メッセージ Returns: bool: 実行正否 """ # メッセージを表示する print(arg_str) return True