« 取得 その2001。 シーンの中の全てのマテリアルを取得。 | トップページ | Express feat. Silla (múm)。 »

2012年10月30日 (火)

空っぽの MatLib を殲滅セヨ。

最近よく使ってるんですがね。


JScript
----------------------------------------------------------------

//    削除ターゲットの格納容器ヨーイ
var oFuckinLibs = XSIFactory.CreateObject( "XSI.Collection" );

//    全 MatLib 取得
var oMatLibs = ActiveProject.ActiveScene.MaterialLibraries;

//    ループして空のLibを見つける
for ( var i=0; i<oMatLibs.count; i++ )
{
    var oMatLib = oMatLibs(i);
    var oItems = oMatLib.Items;//    その Lib 以下のマテリアルを取得

    Logmessage( "MatLib : " + oMatLib.Name + " -- Materials : " + oItems.count );

    if ( oItems.count == 0 ) oFuckinLibs.Add( oMatLib );//マテリアル数がゼロなら削除ターゲット
    else var oMatLibWithItems = oMatLib;//    ゼロじゃないならバッファに保存(後で使う)
}

if ( oFuckinLibs.count != 0 )
{
   
//    ユーザに確認
    Str = "以下のマテリアルライブラリはすっからかんの模様です。\r\n\r\n";
    for ( var i=0; i<oFuckinLibs.count; i++ )
    {
        Str += "(" + ( i+1 ) + ") " + oFuckinLibs(i).Name + "\r\n";
    }
    Str += "\r\n殲滅します。よろしいか?";
    oReturn = XSIUIToolkit.MsgBox( Str, siMsgYesNo, "殲滅MatLib"  );

    if ( oReturn == siMsgYes )//    OK した場合
    {
 //    アクティブLibは削除できないから、バッファに格納したマテリアル数がゼロではないLib をアクティブにしてから削除
        var oActiveMatLib = ActiveProject.ActiveScene.ActiveMaterialLibrary;
        if ( oActiveMatLib.Items.count == 0 )
        {
            SetCurrentMaterialLibrary( oMatLibWithItems.Fullname );
        }
 //    告知&殲滅実行
        Logmessage( oFuckinLibs.count + "個のすっからかん MatLib を殲滅しました。" );
        DeleteObj( oFuckinLibs );
    }
    else    //    キャンセルした場合
    {
        Logmessage( "どうか死んで下さい。", siError  );
    }
}
else    //    空っぽなマテリアルライブラリが見つからなかった場合
{
    Logmessage( "空っぽのマテリアルライブラリがねえっす。", siWarning );
}


------------------------------------------------------------

Senmetzmatlib



スクリプティング的には、んー、特筆すべきこともないか?全てのマテリアルライブラリをループして、アイテム数(つまりマテリアル数)がゼロなら消すぜ、ということをやってるだけですね。 もし消したいマテリアルライブラリがアクティブになっていたら消せないということに気付いたので、その場合はゼロじゃないマテリアルライブラリをアクティブにしてから消すという。



マテリアルライブラリも、放っておくと荒れ放題になる場所ですよね。 しっかりお掃除しましょうね。





.

|

« 取得 その2001。 シーンの中の全てのマテリアルを取得。 | トップページ | Express feat. Silla (múm)。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 空っぽの MatLib を殲滅セヨ。:

« 取得 その2001。 シーンの中の全てのマテリアルを取得。 | トップページ | Express feat. Silla (múm)。 »