Blender 4.1 で念願のドラッグ&ドロップを検出する FileHandler API が追加されました。
これによって、例えば *.txt
なファイルを 3D View にドロップしたら、なんらかのインポート処理をはしらせる、などと言った事が公式で可能になります。
使い方は公式サンプルにあるとおりですが、一応やってみましょう。 まずはドロップを検出したいファイルの拡張子を設定します。
import bpy class VIEW3D_FH_Import_FBX(bpy.types.FileHandler): bl_idname = "VIEW3D_FH_Import_FBX" bl_label = "Import FBX File" bl_import_operator = "object.drop_event_listener" bl_file_extensions = ".fbx" @classmethod def poll_drop(cls, context: bpy.types.Context | None) -> bool: if context is None: return False return context and context.area and context.area.type == "VIEW_3D"
bl_file_extensions
に拡張子を設定することで、対応するファイルがドロップされたら bl_import_operator
に設定したオペレーターが呼ばれるようになります。
制約としては .fbx
のように .
から始める必要があります。
複数種類設定したい場合は .fbx;.blend
などのように ;
で区切ると良いです。
また、 idname
の制約としても、 _FH_
がどこかに含まれていることが推奨されているので、それっぽい名前にしておきましょう。
オペレーターには、 filepath
プロパティにドロップされたファイルのパスが設定されます。それ以外は、 invoke
と poll
を他のオペレーター同様定義すれば良いという感じです。
若干複雑ですが、実際の動作例としてはわたしが作成しているアドオンのこちらを参照してください。
ということで、メモでした。