忘却まとめ

Blenderの中級者・上級者向けの踏み込んだ情報や、アドオン・3DCGに関する情報を記事にします

メニュー検索(F3)でのエラー・poll(cls, context)の注意点【Blenderアドオン開発 / Python】

Python

投稿日:

F3でのメニュー検索では、オペレーターのpollやメニュー内容が一気に確認される。
問題があるclassがあるとF3を押すたびに毎回エラーがコンソールに出力されてしまう。

コンソールのエラー表示だけでユーザーに影響することは少ないが、きれいではないのでこれは修正する。

下記のような場所・状態でF3を押してみて、コンソールにエラーが出ていないか確認するとよい。

  • オブジェクトがない状態
  • ポーズモードやグリースペンシルのドローモード
  • ノードエディターなどの、3Dビュー以外のエディター

poll(cls, context)

パネルメニューやオペレーターのpollは、現在その処理が実行可能な状態かどうかを実行する前に確認する関数。
パネルメニュークラスであれば、特定のモード状態などでpollがTrue出ない状態では、表示されないようにできる。

そのため、下記のように書いてしまっては、アクティブオブジェクトがない状態にエラーが出力されてしまう。

@classmethod
def poll(cls, context):
    return bpy.context.object.type == "MESH"

修正後

オブジェクトがあることを確認してから、オブジェクトのタイプをチェックする。

@classmethod
def poll(cls, context):
    return bpy.context.object and bpy.context.object.type == "MESH"

アドオンの制作依頼はこちら

-Python

Copyright© 忘却まとめ , 2022 All Rights Reserved Powered by STINGER.