本日は Blender の技術調査枠です。
Blender3.0で利用可能なpythonスクリプトを作ります。
メッシュの編集モードに移行可能か確認して移行する
Blender の Operator ではその関数が現在実行可能か poll 関数を利用することで確認できます。
bluebirdofoz.hatenablog.com
ただしモードを移行する mode_set 関数では引数にモードを指定するため、個別のモード以降ごとのチェックができません。
よって今回はアクティブオブジェクトが MESH オブジェクトかチェックすることで実行可否を判定しました。
サンプルスクリプト
現在選択中のオブジェクトをチェックして MESH オブジェクトであれば編集モードに移行可能と判定して移行します。
・Script_change_viewmodet.py
# bpyインポート import bpy # 編集モードへ移行可能かチェックして移行する # モード切替のマニュアル # (https://docs.blender.org/api/current/bpy.ops.object.html#bpy.ops.object.mode_set) def change_mode_edit() -> bool: """編集モードへ移行可能かチェックして移行する Returns: bool -- 実行の正否 """ # 現在のアクティブオブジェクトの参照を取得する active_object = bpy.context.view_layer.objects.active # 指定オブジェクトがメッシュか確認する if active_object.type != 'MESH': # メッシュでない場合は編集モードに移行しない return False # 編集モードに移行する set_mode_edit() return True # 編集モードへの移行 # モード切替のマニュアル # (https://docs.blender.org/api/current/bpy.ops.object.html#bpy.ops.object.mode_set) def set_mode_edit() -> bool: """編集モードへの移行 Returns: bool -- 実行の正否 """ # 編集モードに移行する # モード切替のマニュアル # (https://docs.blender.org/api/current/bpy.ops.object.html#bpy.ops.object.mode_set) # mode:EDIT 編集モードに切り替え # toggle:True の場合、既に編集モードの時、オブジェクトモードに戻る bpy.ops.object.mode_set(mode='EDIT', toggle=False) return True # 関数の実行例 # 「編集モード(EDIT_MESH)」に移行可能なら移行する result = change_mode_edit() # 結果をコンソールに表示する print("Set EditMode : " + str(result))
・移行可能な場合
・移行できない場合