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"