GUID でストーク。
先日のプロキシセレクトプラグインの話で有り難きコメントを頂き、早速実験してみました。 オブジェクトの名前や Model
階層が変わっても、どこまでも、いつまでも、執拗に追いかけられるサンプルです。 粘着質でしつこい女。 どこまででも追ってくるストーカー。 名前を変えても、住所(Model階層)を変えても、必ず追いかけてきます。 こうなったらもう、死ぬ(Delete)しかありません。 嫌な女です。
スクリプティングに興味のある方は、オブジェクトが適当に多いシーンを開いて、以下のスクリプト(JScript)をスクリプトエディタにペーストして実 行してみて下さい。
で、1つだけオブジェクトを選んで GUID取得。 ボタンを押して下さい。 その後、ストーク。 ボタンを押してみて下さい。 GUID を確保したオブジェクトをストークできるはずです。 次に、そのオブジェクトの名前を変えて、またストークしてみて下さい。まだストークできるはずです。 次に、オブジェクトを他の Model 階層にぶち込むなどして、またストークしてみて下さい。ストークできます。 次に、そのオブジェクトを削除してからストークしてみて下さい。今度はストーク失敗するはずです。 ということで、削除しない限り、名前が変わろうが住所が変わろうが、GUID は唯一かつ不変であるため永遠に関係を保てる、という風に見えます。 試しにそのオブジェクトを複製して新たに GUID を取得してみると、ちゃんと別の GUID が割り当てられています。マニュアルによると、日付や場所やネットワークカードのIDを使って乱数を発生させて GUID を決めているようです。 これを利用すると、先日のプロキシセレクトプラグインの「名前を変えたりするともう関係が保たれていない」の問題を解決できそうな気がします。 Thiago さまに提案してみようかしら。どきどき。 有用な情報のヒントを下さった氏に感謝します。 ところで全然別の話なんだけど、スクリプティングにに詳しい方に質問させて頂きます。 上記のスクリプトで、シーン内の全てのオブジェクトを取得するのに
このように、Pass だろうが Property だろうが全てを対象に、つまり XSI のシーン内に存在するありとあらゆるものをひとまとめに取得する方法はあるでしょうか? ActiveProject.ActiveScene.GetEverything(); みたいなことができればいいのですが。 詳しい方がいらっしゃいましたら、何卒教えて下さいませ。 |
| 固定リンク
コメント
GUIDと一緒にCLSIDをチェックしておけばFindObjectsでストーク範囲が限定できるっぽいです
http://www.ceres.dti.ne.jp/xb1080/GUID.zip
注意:自己インストールカスタムオペレータを探すには、{72936430-9B0C-4167-8CA7-C30FC2188BB9}を使用します。また、自己インストールカスタムプロパティを探すには、{76332571-D242-11d0-B69C-00AA003B3EA6}を使用します。
上二つをストークするときはあらかじめtypeみておいて、CLSIDに代入しておけばおkぽいです
一発でfindできないんすかね(・ω・)
投稿: りんぷる | 2008年6月17日 (火) 23時45分