« 2012年1月 | トップページ | 2012年3月 »

2012年2月

2012年2月17日 (金)

クラスタ名はグループ名からポン。

例によってスクリプトは唐突に。



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

//    クラスタ名はグループ名からポン。

//    現在選択中のものをループ
for ( var i=0; i<Selection.count; i++ )
{
    if ( Selection(i).IsClassOf( siGroupID ) )
//    もしもGroupだったら以下実行
    {
        var oGroup = Selection(i);
// oGroup に選択中のブツ(すでにグループだと判明している)を取得
        var oMembers = oGroup.members;
// oMembers にグループのメンバを取得(コレクション)
        for ( var j=0; j<oMembers.count; j++ )
// メンバコレクションをループ
        {
            if ( oMembers(j).IsClassOf( siClusterID ) )
// もしそのメンバクラスタだったら、
            {
                var oCluster = oMembers(j);
// oCluster にそのメンバ(もうクラスタだと判明している)を取得
                Logmessage( oCluster.name + " -- 改名 --> " + oGroup.name + "  親からもらった名前なのにけしからん。" )
;//人の道を説く
                oCluster.name = oGroup.name;
// クラスタの名前を、グループの名前に改名。
            }
        }
    }
}


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


グループを選んで実行します(複数可)。
すると、グループの中にクラスタがあった場合、そのクラスタの名前を、グループの名前に改名してしまいます。 まったく、自分の名前をなんだと思っているのでしょう。せっかく親からもらったのに。 親になってみないとその気持ちはわからないと思いますがね。 以上。



クラスタマテリアルをグループで管理していて、かつ名前を一致させたいなどという場合なのでしょうか。 某社の某さんに恩を売るために書きました。


まあ、でも、そんなにアレなスクリプトでもありません。取得ですよ取得。 何を端緒にして何を取得し、そこから芋づるで何を取得していけば目的の場所にたどり着けるのか。 そういう思考過程で行けば、このくらいのことであればさほど難しくないと思います。

※という説明をするために、若干冗長な取得コードで書いてます。もうちょい短く書けるでしょうが、まあ、わかりやすいかな、と思って。 




この場合は、Group を端緒にしてますね。 選んでいるものが Group かどうか判別して、Group だったら取得。 Group そのものをオブジェクトとして取得できたってことは当然、Group の名前も取得できます。

次に、Group から芋づるでメンバを取得します。 だって Group には Members ってものがあるんですから。 Group を取得済みのあなたには、メンバを取得する自由があります。おお、自由のなんと尊きことか。 これで Group に所属している人たちが取得できました。

メンバを取得したら、そのひとりひとりがクラスタなのか、そうじゃない普通のオブジェクトなのか、判別します。 もしクラスタだったら、クラスタオブジェクトとして取得します。

クラスタオブジェクトとして取得できたならもう、その名前は当然取得できます。


こうして、


 1. グループを取得できた(名前はここでゲット)

 2. グループからメンバを取得できた

 3. メンバのひとりひとりを調べてクラスタだけを取得できた

 4. クラスタにたどり着いたから、その名前を、さっきゲットしたグループの名前で上書きしてしまえ


という取得の連鎖が起こります。これがいわゆる芋づるです。





こんな寒い夜なのに、某社の某さんは今頃、全裸で正座です。 風邪引きますよ。



某社様、俺をTDとまで行かずともちょいテクニカル系スクリプト&パイプライン野郎として雇いませんか。 お役に立てそうです。 お安くしときますよ。 けけけけけ。




.

| | コメント (0) | トラックバック (0)

2012年2月 9日 (木)

ピックしたグループでポン。

たった今書いた。



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

//    ピックしたGroupでポン
if ( Selection.count != 0 )
{
    var rtn = PickElement( siGroupFilter, "参加したい Group をピックしてん(・∀・)", "脱退したい Group をピックしてよん (・∀・)" );
    var oGroup = rtn.Value( "PickedElement" );
    var button = rtn.Value( "ButtonPressed" );

    if ( button != 0 )    //  右ボタン=キャンセルじゃなかったら
    {
        if ( button == 1 )   
//    中ボタンだったら
        {
            oGroup.AddMember( Selection );
//    Groupに参加
        }
        else   
//    中ボタンじゃなかったら、それはもう左ボタン
        {
            oGroup.RemoveMember( Selection );   
//    Groupを脱退
        }
    }
    else   
//    キャンセルした不届き者に天誅
    {
        Logmessage( "電気アンマするわよん (・∀・)", siError );
    }
}

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

オブジェクトを選択します(複数可)。
スクリプトを起動します。
Explorer で Group を左クリックすると、選択中のブツがその Group に入ります。
中クリックすると、その Group から脱退します。


そんだけっす。




ええとですね、 Group に参加したり脱退したりするときって、 Explorer で Group を右クリックして出てくるドロップダウンメニューから Add to Group とか Remove from Group とかやりますよね?


  あれは全然問題ないんです。

  マウスでやるならば。


俺、ペンタブも併用しているので、ペンのボタンで右クリックしてドロップダウンから項目を選ぶのって、けっこう精度落ちるんですよ。 間違えてとなりの項目を選んでしまったりします。

しかも、すげえスピードでシーンの整理をやっている時なんか、Remove Group を Remove from Group と空目してグループそのものを抹殺してしまい、モニタが大空を飛翔します。




なので、 右クリック → ドロップダウンメニュー → 選ぶ  という操作をしなくてもいいように書いたスクリプトです。 ほんとそんだけ。




以下ほんのちょっとだけスクリプティングな話。


中クリックはあまり好きではないのですが、中クリックの代わりに Shift などのモディファイヤキーを使う仕様にしてしまうと、このスクリプトをショートカットにする時にモディファイヤキー付きのショートカットが使えないことになります。 今回俺はこのスクリプトをショートカットで運用したかったので、しかたなくあまり好きではない中クリック仕様にしました。 俺はタブレットのペンの一番上のボタンを中クリックにしているので、非常に押しづらいのですが、まあ、Remove from Group の頻度は Add to Group より低いのでOKとします。 使いにくかったらまた変えよう。 なんせ書いたばかり。 運用テストはこれからです。



ちなみに、Group に入れないものを選択していた場合とか、そもそもその Group に入ってない物を Remove from Group した場合などの処理は、一切書いていません。 Group.AddMemberメソッドおよび RemoveMemberメソッドがその判定機能を持っているようで、変なもの選択して Add to Group しようとしたら勝手に警告を出してくれるし、参加してない Group から脱退しようとした場合でもスルーされるだけで、特にエラーが出て処理が止まってしまうわけでもありません。 なので自前で判別処理は書かずに、メソッドが持っている機能に安直に依存しています。 親切なツールにしようと思ったら、それぞれの場合において 「変なもの選んでんじゃねえよこのヴォケ」 とか 「参加もしてない Group からどうやって脱退すんだよこのハゲ」 とか警告を表示するようにすればいいと思うのですが、もちろんそんな麺独裁ことしません。









ご機嫌よう。今日も苦行は続きます。






.

| | コメント (0) | トラックバック (0)

« 2012年1月 | トップページ | 2012年3月 »