« 2014年8月 | トップページ | 2014年11月 »

2014年9月

2014年9月 9日 (火)

おっぴろげスケマチック。

スケマティックビューで、ノードを畳んだ状態にするってよくやりますけど、それを展開するときに面倒なこと多いですね。 特に人からもらったデータだとね。 


Nキーというショートカットがありますが、キーを押す前にまずはそのノードが選択されていることが前提ですからね。 あちこちに散っている畳まれたノード達。 畳んだ下の階層でさらに畳まれたりしてますからね。 どこがどう畳まれてるかも知らないのにどうやって選択すんのよ、 っていうか知ってても選択したくねえよ って話ですよ。 




例えば、パッと見こんなスケマティックが・・・・・、

Sss2


全部展開してみると・・・・・・

Sss3

実はこんなだったりとかね。 クリックするとでかい画像が出ます。


こんなツリーで、あちこちが畳まれていたら、そりゃブチ切れますよね。 全部おっぴろげろやゴルァ とモニタを窓から射出してしまいます。






・・・・という状況だったらしい。 俺もよくある。 実によくある。





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

//	おっぴろげスケマチック ver 2

var oGodDamnViews = Desktop.ActiveLayout.Views;

//	ドックビューを捜索 -> 浮遊ビューを捜索 -> それでもなきゃ作る
var oFuckinSchematicView = oGodDamnViews.Filter( "View Manager" )(0).Views.Filter( "Schematic" )(0);
if ( !oFuckinSchematicView ) {
	oFuckinSchematicView = oGodDamnViews.Filter( "Schematic" )(0);
	if ( !oFuckinSchematicView ) var oFuckinSchematicView = Desktop.ActiveLayout.CreateView( "Schematic", "おっぴろげスケマチック。" );
}

var oMotherFuckinNodes = oFuckinSchematicView.SelectedNodes;//	選択中のノード
if ( oMotherFuckinNodes.count == 0 ) oMotherFuckinNodes = oFuckinSchematicView.Nodes;//なんもなければ全ノード

for ( var i=0; i<oMotherFuckinNodes.count; i++ ) ExpandMotherFuckinSonOfABitchNode( oMotherFuckinNodes(i) );

function ExpandMotherFuckinSonOfABitchNode(oAssHoleNode){	//	再帰的というらしい
	oAssHoleNode.Expanded = true;//	おっぴろげ
	for ( var i=0; i<oAssHoleNode.Nodes.count; i++ ) ExpandMotherFuckinSonOfABitchNode( oAssHoleNode.Nodes(i) );
}

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

ダウンロードする


コピペでもダウンロードでもなく、手打ちが推奨なのですが(謎



何も選んでない状態で実行すると、シーンの中の全スケマティックノードが展開されます。 つまり、たたまれた状態のノードはなくなります。 何かを選んでいると、その選んでいるオブジェクトの階層以下全てが展開されます。 そんだけです。 以上。







スケマティックビュー関連は昔、全然スクリプタブルじゃなかったんですよね。 でもおそらく要望が多かったのでしょう、2012 になってようやく Schematic オブジェクトSchematicNode オブジェクトができたんですよね。 俺も 2006 年とかその頃からずーーーっと要望を出していたので、すげえ嬉しかったです。

でも、まだ全然できることが少ない。 必要なプロパティやメソッドがまだ全然整備されてないという印象です。 

でもまあ、最初はこんなものだろう、これからだんだん増やしていくんだなーとか思っていたら、廃村です。 Python じゃありません。 廃村です。  



これはもう、滅び行く村の方言であります。 幻の言語になります。 文化保存の目的で、ここに残します。 いつか XSI 博物館が建ったら収蔵して下さい。




.

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

2014年9月 3日 (水)

選択順で親子づらづら。

どうしたことかなかなか XSI 仕事が途切れなくて、日々 XSI 触ってます。 つまり日々スクリプト書いてます。


最近は、ヌルがたくさんあって直列に親子付けしたいとか、そういう場面が多いです。 


これ、XSI の標準の親子付けで連続的にやろうと思ったら、中クリックで子供から親をピックしていくしかないですよね? 

俺の場合、中クリックがけっこうツラいんですよ。 マウスだと指の筋肉のスジが痛くなってくる。 ペンタブのペンだと指を多く曲げるのがつらい。 

ちなみにペンのスイッチは人差し指で押す派で、かつ下側が右クリック、上側が中クリック派です。 つまり中クリックをしようとすると人差し指をぐりんと曲げた状態にせねばならず、これがつらく感じることもよくあるんですよ。 だから、中クリックや、できれば右クリックもなるべくしないで済むようなスクリプトを書くことがけっこう多いです。


今回もそういうスクリプトですね。


Jscript
------------------------------------------------

//	選択した順で親子づらづら
//
//	オブジェクトを 親 → 子 の順でいくでも選んで実行 → その順番で親子になる。

OpenUndo( "選択した順で親子づらづら" );
for ( var i=Selection.count-1; i>=0; i-- )
{
	if ( Selection(i).IsClassOf( siX3DObjectID ) )
	{
		var oChild = Selection(i);
		var oParent = Selection(i-1);	
		if ( oParent ) oParent.AddChild( oChild );
	}
}
CloseUndo();
------------------------------------------------

このスクリプトのダウンロード




いや、ほんと、毎回どうでもいい小スクリプトですよね・・・。 まあ、俺は便利に使ってますけどね。

親にしたいオブジェクトが最初、次に子供、次にその子供・・・・という順番で選択して行き、このスクリプトを実行すると、その順番で直列に親子関係ができます。  そんだけ。  中クリックとか要らないので、俺は楽なんです。


Zoolazoola



もうちょっと規模の大きな(って言っても大したことないですが)ツールもたくさん書いてるんですが、なかなかブログにアップできないな。 2~3日まとまった時間を作らないとなあ。




しぶとく続く XSI の日々。



.



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

« 2014年8月 | トップページ | 2014年11月 »