【Maya】読み込んだファイルで追加されたトップノードを取得する

ツール経由でファイルをインポートしたりした際に追加されたノードに対して何かしたい、みたいなときに何かそれっぽいコールバックがあればいいんですけど、Mayaさんには存在しなさそうなので無理矢理やるやつです。

f:id:tm8r:20171003123621p:plain
まずインポートするシーンがこんな構成だったとき、headとbodyを取得したいケースについて考えます。

ようはトップノードの差分を取ればよいので、コードはこんな感じ。

before=set(cmds.ls(assemblies=True))
target="/Users/tm8r/Documents/maya/projects/default/scenes/test_chara01.ma"
cmds.file(target,i=True)
after=set(cmds.ls(assemblies=True))
print(list(after.difference(before)))

1行目で現在のトップノードのリストを取得し、あとで差分抽出するためにsetに変換してます。

次にインポートを実行し、4行目でインポート完了後のトップノードのリストを取得し、同様にsetに変換。

そして最後にsetのdifference関数を使ってインポート完了後にあってインポート前にないトップノードを抽出する、という単純なフローです。

結果

# File read in  0.045 seconds. # 
[u'body', u'head']

うむ。

スポンサーリンク