[pymel] 選択したノードのAddAttribute情報を出力する[json]

addAttrしたアトリビュートの情報を、外部に保存しておくスクリプトを書いてみました。

コマンドはこちら。
https://gist.github.com/fereria/9432026

Exportは、

1 userDefinedAttributeを探し
2 初期値を取得し
3 変数に入れ
4 変数をJSON形式に変換してテキストに書き出し。

Importは、

1 出力しておいたJSONの情報をDic型に戻し
2 その情報を元にMelコマンドを生成して
3 mm.eval(melCmd) で、addAttrコマンドを実行

という感じで処理しています。

外部出力形式には、今回JSONを使用しました。

JSON自体は非常にシンプルで、↑のような1コマンドで JSON形式に変換できます。
J複雑な辞書・リスト・タプルでも非常にお手軽に保存できるので良いですね(´ω`)

今回のコマンドでExportすると、

こんな感じに、ノード名+各アトリビュートの設定情報が書き出されます。

一工夫したのはVector型(double3)。

のように、Vector型は、
-at double3 のアトリビュートに、 XYZ と3つの子アトリビュートを作成する必要があります。
子アトリビュート側は -p を入れる必要があるのと、
親アトリビュート側は -min -max -dv を入れるとワーニングになってしまうので、
出力時にそのあたりを細工しています。

Vector型の子アトリビュートを、 attr.children() で、子アトリビュートの一覧を取得し、
その子アトリビュート情報を取得して変数にいれます。
チェックした子アトリビュートは、 2重取得しにいかないように if attr not in check: で確認します。

今回は、Exportした情報は、同じ名前のノードに再生されるようになってますが、
ほぼ同じコードで 別ノードにアトリビュートをコピーする とか アトリビュートの並び順を変更する とか
作れそうです。

コメントを残す

メールアドレスが公開されることはありません。


*