ツール経由でファイルをインポートしたりした際に追加されたノードに対して何かしたい、みたいなときに何かそれっぽいコールバックがあればいいんですけど、Mayaさんには存在しなさそうなので無理矢理やるやつです。
まずインポートするシーンがこんな構成だったとき、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']
うむ。