チュートリアル - 面領域 xView チェッカーの開発 - 第 4 部

チュートリアル - 面領域 xView チェッカーの開発 - 第 4 部

以下のチュートリアルでは、第 1 部第 2 部第 3 部で作成した xView チェッカーを、ビューポート メニューに追加できるマクロ スクリプトを使用して拡張し、簡単にアクセスできるようにします。

xView チェッカーは、 3ds Max 2010 以降で使用可能です。

関連トピック:

xView ジオメトリ チェッカーへのアクセス

インタフェース: XViewChecker

全体の流れ:

面領域チェッカーのオン/オフを切り替えるマクロスクリプトを作成します。

チェッカーが有効である場合に表示する 'on Checked do()' ハンドラを作成します。

現在のシステムの状態に従ってチェッカーをオン/オフする 'on Execute do()' ハンドラを作成します。

スクリプト:

MacroScript xView_Face_Area_Checker
enabledIn:#("max")
buttonText:"Face Area"
category:"xView"
internalCategory:"xView"
tooltip:"Face Area Checker Display Mode"
(
on isChecked return
  xViewChecker.getCheckerName xViewChecker.activeIndex == "Face Area Checker" and xViewChecker.on == true
on execute do
  if (xViewChecker.getCheckerName xViewChecker.activeIndex == "Face Area Checker" and xViewChecker.on == true) then
    xViewChecker.on = false
  else
  ( 
    local theIndex = 0
    for i = 1 to xViewChecker.getNumCheckers() do
      if xViewChecker.getCheckerName i == "Face Area Checker" do theIndex = i
    if theIndex > 0 do  
    (
      xViewChecker.setActiveCheckerID(xViewChecker.getCheckerID theIndex)
      xViewChecker.on =true
    )
  )
)--end MacroScript
MacroScript xView_Face_Area_Checker
enabledIn:#("max")
buttonText:"Face Area"
category:"xView"
internalCategory:"xView"
tooltip:"Face Area Checker Display Mode"
(

3ds Max 2010 にあらかじめ組み込まれている既存の xView マクロ スクリプトを基にして、面領域チェッカー用の新しいマクロ スクリプト ヘッダを作成します。

on isChecked return
xViewChecker.getCheckerName xViewChecker.activeIndex == "Face Area Checker" and xViewChecker.on

3ds Max が、UI のアクション項目にチェックを付ける必要があるかどうかを調べたい場合(ボタン、メニュー項目またはクアッド メニュー項目として表示されている場合)、isChecked ハンドラを呼び出します。ここでは、現在アクティブなチェッカーがこのチェッカーの名前と一致し、チェックが一般に有効である場合は true を返します。

on execute do
(

マクロ スクリプトが実際に呼び出されると、実行ハンドラが呼び出されます。

if (xViewChecker.getCheckerName xViewChecker.activeIndex == "Face Area Checker" and xViewChecker.on) then

isChecked ハンドラで行ったのと同じチェックを実行します。

xViewChecker.on = false

このチェッカーがアクティブなチェッカーであり、チェックが有効になっている場合、単に xView チェックを無効にします。

else
( 

そうでない場合、チェックを有効にする必要がありますが、最初に、アクティブなチェッカーとして設定するためにこのチェッカーの ID を調べる必要があります。

local theIndex = 0

ユーザ変数をゼロに初期化します。

for i = 1 to xViewChecker.getNumCheckers() do
if xViewChecker.getCheckerName i == "Face Area Checker" do theIndex = i

次に、1 から存在するチェッカーの数までループし、名前をこのチェッカーの名前と比較します。一致するチェッカーが見つかったら、そのインデックスを変数 theIndex に記録します。

if theIndex > 0 do   
(
xViewChecker.setActiveCheckerID(xViewChecker.getCheckerIDtheIndex)
xViewChecker.on = true

xView システムに登録されているすべてのチェッカーをループした後、変数 theIndex にゼロよりも大きい値が格納されている場合は、このチェッカーは実際に使用可能であり、アクセスすることができます。

アクティブなチェッカーの ID を検出されたインデックスを持つチェッカーの ID に設定します。

次に、xView システムを有効にします。

)
)
)
)--end MacroScript

スクリプトの使い方

これで、xView チェッカーとこれをコントロールするマクロ スクリプトが完成しました。次は、ビューポート メニューをカスタマイズし、このチェッカーを使用可能な xView チェッカーのリストに追加しましょう。

Ctrl+Eキーを押してアクション項目を作成し、スクリプトを評価します。マクロ スクリプト コードのコピーが自動的に 3ds Max の ¥usermacrosフォルダに保存され、以降の 3ds Max セッションで使用可能となります。マクロ スクリプトのソース コードを \Startup または ¥Plugins フォルダに置く必要はありません

この時点で、メイン メニュー > [カスタマイズ](Customize) > [ユーザ インタフェースをカスタマイズ](Customize User Interface)を選択し、[ユーザ インタフェースをカスタマイズ](Customize User Interface)ダイアログ ボックスのメニュー タブを選択できます。

カラー アクション

左のドロップダウン リストから xView カテゴリを選択します。

右のドロップダウン リストから[ビュー - xView](Views - xView)メニューを選択します。

セパレータのラインを 2 本、メニューにドラッグします。

黄色

2 本のセパレータの間に[Face Area Checker Display Mode]アクション項目をドラッグします。

カスタム インタフェースをディスクに保存して、変更を永続的なものにします。CUI ファイルの上書きを確定します。

チュートリアル - 面領域 xView チェッカーの開発 - 第 3 部

関連事項