2011年12月9日金曜日

独自メニューバーを使ってウィンドウサイズ縮小機能を実装する

ウィンドウを必要としないツールや、ボタンが数個のスクリプトだと
ほとんど実装しないメニューバー。


以前記事にしたロールアウトの開閉を使ったウィンドウサイズの変更
それのメニューバーバージョンといったものをメモしておきます。

  • メニューバー操作でウィンドウサイズを縮小できる
  • ウィンドウ縮小状態でツールの機能を実行できる
  • 一般的なメニューバーの機能を実装



結果1)コンパクトモードをクリックすると、
ウィンドウサイズがメニューバーだけの高さになります。

結果2)メニューバーからロールアウトの機能を実行できる。
結果3)一般的メニューバーの機能実装完了。

ちなみにヘルプファイルはCHMファイルを実行するようにしていますが、
SpeedHelpPad を使うと凄くラクに作成できます。

2011年12月7日水曜日

メニューバーに各種フォルダを開くメニュー項目を作成する

3dsMaxで作業を行っている際、アクセス頻度の高いフォルダがあります。
  • 現在のシーンファイルが保存されているフォルダ
  • オートバックアップフォルダ
  • スクリプト格納フォルダ(scripts)
  • スクリプト格納フォルダ(startup)
  • スクリプト格納フォルダ(usermacros)

もっとも頻度が高いのはシーンファイル保存フォルダでしょうか?
シーンファイルを履歴から開いたり、ショートカット実行で開いたりした場合、
そのファイルが存在しているフォルダを開かない場合があるからです。

また、他の人のPCにスクリプトを配布した場合、
配布先PCでデバッグが必要になる事が結構あります。
そういった場合、これらのフォルダに素早くアクセス出来ると非常に楽です。

考えた末、3dsMaxのメニューバーにフォルダを開く機能を実装しようということに。


ハイライトしている部分は、 それぞれのメニュー項目に対して
項目選択時に実行するマクロスクリプトを指定しています。

例えば、シーン保存フォルダを開くマクロスクリプトであれば、次のような簡単なものです。

つまり、事前にマクロスクリプトが配布先で有効になっている必要があります。
なので、一緒にマクロスクリプトも配布して本スクリプトを実行するような、
インストーラーを用意するなどの手段が必要です。

※Menuまわりは結構曖昧なコードになっています。
  なのでコメントがアバウト気味です (^^;

2011年12月6日火曜日

3dsMax起動時のスプラッシュウィンドウ画像を変更する

3dsMax起動時に表示される画像(スプラッシュ画面)は下記の画像を使用しています。
max2010の場合)C:\Program Files\Autodesk\3ds Max 2010\splash.bmp

画像ファイルを直接表示しているようなので、
このファイルを置き換えれば別の画像が表示出来るのでは?
そう思って試してみたら簡単に出来たので、ランダムで変更するツールにしてみました。

  • スクリプトがランダムで使用する画像を格納するフォルダを作成しておく
  • ランダムで表示する画像を用意する
  • スタートアップスクリプトとして作成したスクリプトを実行する


実際には、1回目の起動時に画像を置き換え、
次の起動時に置き換え後の画像が表示されています。

2011年12月1日木曜日

ロールアウトフロータの高さをロールアウト開閉に連動させる

ウィンドウを持つタイプのツールを作成する場合、
出来るだけウィンドウサイズをコンパクトにしたいと考えています。

基本はウィンドウは表示したままを想定した上で、
ビューポートを隠す領域を狭めたいと思うからです。

そういう場合に基本機能としてよく実装する機能が、
ロールアウトの開閉状態に合わせて、ロールアウトフロータの高さも拡大縮小させるという機能です。

そうすることで、あまり使わないロールアウトパネルは閉じておくことで、
ウィンドウの高さを縮小させる事が出来ます。
実行すると、ロールアウトの開閉状態に応じて、 ロールアウトフロータの高さが動的に変化します。

オブジェクトの名前取得ツール

MaxScriptを作成する時、よく使用するのがオブジェクト名です。

実験をおこなったり、特定オブジェクト名をコードに使用する場合、
素早くコードに適した名前を取得したいなと感じるわけです。

簡単ながら効果が非常に高いツールとして、
選択オブジェクトの名前を編集した状態で、クリップボードにコピーするというものを作成しています。
  結果的には次のような感じに。(実行後、エディタに[Ctrl+V]した状態)


 後付けで[Shift]キーが押されている場合の挙動を追加しましたが、
 実際のところ忘れている機能となっていました。。。

 ちなみに私はツールバーにボタンとして配置しています。