« クラスタから発射。 | トップページ | 損失。 »

2012年7月26日 (木)

アクションで動かされる奴隷どもを選択する。

ずっと以前、あのときに書いたスクリプトが今、また役に立ちそうな悪寒。

Select Driven Objects from ActionSource 的な。


JScript
--------------------------------------------------------------------
var oActions = XSIFactory.CreateObject( "XSI.Collection" );
oActions.unique = true;
for ( i=0; i<Selection.count; i++ )
{
    if ( Selection(i).type == siActionType )
    oActions.Add( Selection(i) );
}

var oAllActionDrivenObjects = XSIFactory.CreateObject( "XSI.Collection" );
oAllActionDrivenObjects.unique = true;
for ( i=0; i<oActions.count; i++ )
{
    var oAction = oActions(i);
    oAllActionDrivenObjects.AddItems( GetActionDrivenObjects( oAction ) );
}
if ( oAllActionDrivenObjects.count != 0 )
{
    SelectObj( oAllActionDrivenObjects );
    Logmessage( "アクション奴隷たちの数 : " + oAllActionDrivenObjects.count );
}



function GetActionDrivenObjects( oAction )
{
    var oModel = oAction.Model;
    var oActionSources = oAction.SourceItems;
   
    var oTargetObjCol = XSIFactory.CreateObject('XSI.Collection');
    oTargetObjCol.unique = true;

    for (var i=0; i<oActionSources.count; i++)
    {
        TargetParamString = oActionSources(i).Target;
        var oTargetParam = Dictionary.GetObject(oModel + '.' + TargetParamString,false);
        if (oTargetParam != null)
        {
            oTargetObjCol.Add(oTargetParam.Parent3DObject);
        }
    }
   
    logmessage('--------------------------');
    logmessage('Action Name : ' + oAction.name + " ( Model : " + oModel.name + " ) " );
    logmessage('Number of Action items : ' + oActionSources.count);
    logmessage('Number of Objects assigned : ' + oTargetObjCol.count);

    return ( oTargetObjCol );
}

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




Action Source
を選択して(複数可)実行すると、そのアクションソースによって駆動されるオブジェクトを選択します。

Selectobjfromaction

Clip じゃないですよ。アクションソースです。
このアクションソースってどのオブジェクト達を動かすんだっけ? の時に、Apply Action しなくても、ミキサのトラックに Clip として置かなくても、すぐに分かるように、という目的で書きました。たぶん。数年前の話ですが。 今日また使いました。


・・・・標準では、この機能、ないよね? ね?

Clip から選択する機能はあるんだっけ。 違ったっけ。



スクリプティング的には、別にどうというアレでもなさそうですが、一応書いておくと ActionSource オブジェクトには Target プロパティというもんがあってアクションのターゲットとなるパラメータのフルネーム=つまりModel名も含めたオブジェクトの名前からそのパラメータ名までのフルパスが取得できるんですが実はこれはオブジェクトではなくただの文字列なのでこの野郎って感じだけどまあフルパスでゲットできてんだからあとは Dictionary.GetObject でオブジェクトとして取得してやりゃいいんじゃねえか的なアレです。 昔に書いたものなので、いまどきの XSI ではもうちょっと便利に書けるようになってたりしないかしら。どうでしょう。





親方! 死なないでくれ! な時に初めて書いて、
おやっさん、俺が楽に死なせたる! の頃にもよく使った気がする。
違ったっけ。

死なないで欲しい場合でも死なせてあげる場合でも、親愛なるオヤジってもんはどのみち死んじまうという所がポイントです。




.

.

|

« クラスタから発射。 | トップページ | 損失。 »

コメント

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: アクションで動かされる奴隷どもを選択する。:

« クラスタから発射。 | トップページ | 損失。 »