フリーズしてるのかわからなくなりました。
動いてるかどうかわからなくなるのは不安です。
そこで、現在の進行状況を出す、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 件のコメント:
コメントを投稿