フリーズしてるのかわからなくなりました。
動いてるかどうかわからなくなるのは不安です。
そこで、現在の進行状況を出す、ProgressBar を導入。
いろいろなところで使えますねぇ。
JScript
//ModelReplace v1.3 //20110602 親を一致 プログレスバーを設定 //20110509 名前を一致化 //20110205 _ 親子付けに対応 //20110111_作成 //使い方 //入れ替えたいオブジェクトを選択、実行。 //ピックセッションになるので、コピー元の"親"をPICK function main(){ if(Selection.count ==0){ return 0} var oRoot = ActiveSceneRoot; var oSel = Selection; //ピックセッション var oPick = PickObject("SelectObject"); if(oPick(0)== 0){ Logmessage("Cansel") return 0} var oPObj = oPick(2); var nColl = XSIFactory.CreateObject("XSI.Collection"); var oProgressBar = XSIUIToolkit.ProgressBar ; //プログレスバーの設置 oProgressBar.Maximum = oSel.Count ; oProgressBar.Step = 1; oProgressBar.Caption = "RePlace Now!"; oProgressBar.CancelEnabled = false ; oProgressBar.Visible = true; for(var i = 0; i < oSel.count; i++){ var oName = oSel(i).name var oParent = oSel(i).Parent3DObject; oSel(i).name = "tempname";//一時名前 var oTrans = oSel(i).kinematics.Global.Transform; var newObj = SIDuplicate( "B:" + oPObj); if(oParent.Name != newObj(0).Parent3DObject.Name){ ParentObj( oParent, newObj ) } newObj(0).name = oName; newObj(0).kinematics.Global.Transform =oTrans; nColl.Add(newObj(0)) //プログレスバーの数値加算 oProgressBar.Increment() } //元のオブジェクトを削除 DeleteObj(oSel); //新しいオブジェクトの選択 SelectObj(nColl); //プログレスバーのお片づけ oProgressBar.Visible = false ; } main();
0 件のコメント:
コメントを投稿