« ヌルとかの方向でポン。 | トップページ | var oFuck = Dictionary.GetObject( "preferences.rendering.region_display_mode" );oFuck.value = oFuck.value === 1 ? 2 : 1;。 »

2012年4月 4日 (水)

とっかえパッていしおん。

よくあるじゃないですか。
2つのPartition の間で、中身のオブジェクトをごっそり入れ替えたいこと。
パーティションマテリアルやらオーバーライドやらがたくさん付いている時とか、かな。
よくありますよね。




ないですか。




そうですか。




俺はあるんだよ (# ゚Д゚) ムッカー



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

//    とっかえパッていしおん

//    パーティション2つだけ選んで、かつタイプが一致してないとディスられる
if ( Selection.count == 2 )
{
    if ( Selection(0).type == "Partition" && Selection(1).type == "Partition" )
    {
        if (  Selection(0).PartitionType ==  Selection(1).PartitionType )
        {
            SwapMembers( Selection(0), Selection(1) );
            Logmessage( Selection(0).name + " <--> " + Selection(1).name + " : Members swapped. Fuck you anyway." );
        }
        else
        {
            Logmessage( "Partition type mismatch. Fuck you.", siError );
        }
    }
    else
    {
        Logmessage( "I said select 2 partitions. Fuck you.", siError );
    }
}
else
{
    Logmessage( "Select 2 partitions. Fuck you.", siError );
}

//    メンバ入れ替えファンクション
function SwapMembers( P1, P2 )
{
    var oMembers1 = XSIFactory.CreateObject( "XSI.Collection" );
    var oMembers2 = XSIFactory.CreateObject( "XSI.Collection" );
    oMembers1.Items = P1.Members;
    oMembers2.Items = P2.Members;
    NothingFuckinWrong1 = P1.AddMember( oMembers2 );
    NothingFuckinWrong2 = P2.AddMember( oMembers1 );
   
//    OM でコケる時があるので MoveToPartitionコマンドの保険を付けることもあるが今回は面独裁ので省略
}




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


パーティションを2つ選んで実行します。
すると、中身を入れ替えます。
Aに入ってたブツはBに入り、Bに入っていたブツはAに入るということです。



Pass をまたいだ2つのパーティションで実行してもたぶん効くはずだと思いますが実験してません。っていうか混乱するだけなのでやめた方がいいでしょう。 Pass をまたぐと警告を出すだとかそういう風に改造するかも知れません。



Partition.AddMember がコケる時があるんですよね。なぜだかはわからない。 そんなときは、Partition.AddMember の戻り値は上手くメンバが追加できたときは true でそうでないときは false のようですので、これを使って false の時だけ MoveToPartition コマンドを使うという書き方をしたこともあります。 まだよくわかっていない。 今回は省略してます。





それなりに便利じゃないか。
さっさと書けばよかったな。








.

|

« ヌルとかの方向でポン。 | トップページ | var oFuck = Dictionary.GetObject( "preferences.rendering.region_display_mode" );oFuck.value = oFuck.value === 1 ? 2 : 1;。 »

コメント

コメントを書く



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




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217974/54380418

この記事へのトラックバック一覧です: とっかえパッていしおん。:

« ヌルとかの方向でポン。 | トップページ | var oFuck = Dictionary.GetObject( "preferences.rendering.region_display_mode" );oFuck.value = oFuck.value === 1 ? 2 : 1;。 »