Attributeの初期値を調べる!!

アトリビュート関係のツールを作る時、アトリビュートの初期値が分かったら便利だなーって思ったことありませんか!?

初期値がわかったら、

キーの打ち忘れにキーを設定してあげるサポートツールとか、、、

必要のないキーを削除するクリーンアップツールとか、、、

アトリビュート値を元に戻してあげるリセットツールとか、、、


出てきますよね
(゚∀゚)

アトリビュートの初期値を調べるには、「attributeQuery」を使えば簡単です!!(`・ω・´)ゞ

cmds.attributeQuery(アトリビュート名, n=ノード名, ld=True)

例えば、指定されたノードのアトリビュートが初期値か調べる関数「isStaticValue」を作ってみると、こんな感じになると思います!

from maya import cmds
def isStaticValue(node, attr):
    default = cmds.attributeQuery(attr, n=node, ld=True)
    if type(default) == list and len(default) >= 1:
        default = default[0]
 
    current = cmds.getAttr('%s.%s' % (node, attr))
    if type(current) == list and len(current) >= 1:
        current = current[0]
 
     return (default != current)

attributeQueryでデフォルト値を調べて(A)、getAttrで現在の値を調べ(B)、(A)と(B)を比較する流れです。

これを使えば、変更済みなら「True」、変更していなければ「False」が返ります(*´ω`*)b