見出し画像

Mayaの選択ハイライトのトグル切り替え

前回と同じにように表示切替系スクリプト。
正直前回と同じような内容なので大分適当に!!

内容としてはMayaでモデリングしていてリファレンスの画像と見比べたり、古いデータをブラシュアップして過去のモデルと見比べたりすることがあると思います。
素早くふたつの表示非表示を繰り返したい場合だとディスプレイレイヤーではいちいちチェックをつけたり外したりがめんどくさい…
2つのオブジェクトを選択してHキーで交互に表示非表示を繰り返して違いを確認したい!
その際に選択ハイライトが邪魔だから非表示にして確認するけど都度切り替えがめんどくさい。
それをスクリプトで解消したものになります!

デフォルトでの選択項目のハイライトの切り替えはこれまた見つけづらい所に。

パネル内の表示→ビューポート→選択項目のハイライト


そして最終的にできたスクリプトはこちら

# -_- coding: utf-8 -_-
import maya.cmds as cmds


currentpanel = cmds.getPanel(withFocus=True)

hilight = cmds.modelEditor(currentpanel, q=True,selectionHiliteDisplay=True)

if hilight ==False:
    cmds.modelEditor(currentpanel, e=True, selectionHiliteDisplay=True)
    
else :
    cmds.modelEditor(currentpanel, e=True, selectionHiliteDisplay=False)

作った時期が違うからあれですけど前回の頂点カラー表示切替elifじゃなくてelseでもよかったですね。
作り方が安定しないのは申し訳ない。
ただ大分シンプルなスクリプトですね。

currentpanel = cmds.getPanel(withFocus=True)
で表示切替したいビューポートを選択

cmds.modelEditor(currentpanel, q=True,selectionHiliteDisplay=True)
でさきほど選択したビューポートの選択項目のハイライト切り替え。


今回つまづいたのはこのエラー

# エラー: RuntimeError: file <maya console> line 13: オブジェクト名 'modelPanel4' が固有ではありません。
cmds.modelEditor(currentpanel, q=True,selectionHiliteDisplay=True)
cmds.modelEditor(currentpanel, e=True, selectionHiliteDisplay=True)

結論からいうとq=True, e=Trueの記述もれ
qはqueryで参照、eはeditで編集をTrue(許可)するという記述が必要でした。
ただなくてもいい場合もあったりするので正直どこに必要でどこに不必要なのかが分かっていなかったり…
参照可能の物や編集可能の物にはおまじない感覚で書いておいた方がいいのかな?


そんなこんなでここまで。
ひとつ頂点カラーの表示切替でやりたいことができたのでちょっとそっちを作ってみようと思います。
では!

この記事が気に入ったらサポートをしてみませんか?