選んでるオブジェクトの階層下で、アニメーションついてるヤツだけ選択的なアレ。
すっごい無理矢理な感じが否めないけど一応動いてるから許してください。
このやり方だと一回パラメータ全部かき集めちゃうから、if文使ってアニメーションしてるパラメータがあったら
そのオブジェクトを取得的な感じにした方がいい気がするが。。
もう心が折れてるので修正はあとにしような(´・ω・`)
var oRoot = ActiveSceneroot; var oCollParam = XSIFactory.CreateObject( "XSI.Collection" ); var oCollObj = XSIFactory.CreateObject( "XSI.Collection" ); for( var i=0; i<Selection.count; i++ ) { var oSel = oRoot.FindChildren(Selection(i)); for( var j=0; j<oSel.count; j++ ) { var oChild = oSel(j).FindChildren(); var oAnimPram = oSel(j).AnimatedParameters2(siFCurveSource); oCollParam.AddItems(oAnimPram); } } oSelectPram = SelectObj(oCollParam, null, null); for ( var k=0; k<Selection.count; k++ ) { oSel = Selection(k).Parent3DObject oCollObj.AddItems(oSel); } Selectobj(oCollObj);
Twitterで@FumotoKZさんに助けていただいて何とかでけた。
本当に感謝です。自分だけじゃ何もできません(´;ω;`)ウッ…
お久しぶりです。
返信削除Object.IsNodeAnimated(siFCurveSource) というのもあります。これを使えば後半の部分は要りません。
そして、forループを使う時に変数を宣言(var)したほうが良いですよ。念のため。
もう一つ、「for (j=0) 等」の部分は要らないと思います。
oSel = oRoot.FindChildren(selection(i))
selection(i) を使っているのでフルネームになります。
ということで、 oSel は コレクションではなく1つのオブジェクトです。まぁ、それでも動きますけど。
お久しぶりです!助言ありがとうございます!
返信削除が、しかし2日ほど奮闘してみたのですが惨敗でしたorz
というか何故これが動いているのかすら分からなくなってきました(・_・;)
このままだとコメント返すタイミング失うので敗北宣言を。。。・゚・(ノД`)・゚・。ブワッ
時間見つけて直してみます!!