この単純なチュートリアルは、実際の現場の要請に基づいています。 ある 3ds Max ユーザは、[階層] (Hierarchy)パネル/[リンク情報](Link Info)/[ロック] (Locks)を選択して表示される 9 つのチェックボックスすべてにチェックマークを付けるボタンを作成したいと考えました。そのユーザは、残念ながら、MacroRecorder がこの操作に使用できるコードを何も出力しないことに気づきました。
以下に、このオンライン ヘルプのインデックスの検索も含めて、この状況を解決するために必要なステップを示します。
関連トピック:
全体の流れ:
メイン メニューから[MAXScript] > [新規スクリプト](New Script)に移動して、新規のスクリプト エディタを開きます。
オンライン ヘルプを検索し、変換ロックに影響するメソッドを探します。
オンライン ヘルプを開きます。
ヘルプ システムの[検索] (Search)パネルに移動します。
検索フィールドに「lock all transform」と入力し、[Enter]キーを押します。
返される最初の結果 (Rank 1) は、[ノードの共通プロパティ、演算子、メソッド](Node Common Properties, Operators and Methods)です。
検出対象のすべての語句が、ヘルプ ページ内でハイライトされます。
「setTransformLockFlags」が表示されるまで下方向にスクロールします。
その行をコピーして、新しいスクリプト エディタに貼り付けます。
以後も参照できるように、ヘルプ ファイルは開いたままにしておきます。
ボタン、メニュー項目またはショートカットとしてスクリプトを使用できるように macroScript を作成します。
現在のシーンを選択するためのメソッドを呼び出します。
MAXScript
macroScript LockAllTransforms category: "HowTo" ( setTransformLockFlags selection #all )
macroScript LockAllTransforms category:"HowTo" (
macroScript は LockAllTransforms
と呼ばれます。このスクリプトを使用するには、メイン メニュー > [カスタマイズ] (Customize) > [ユーザ インタフェースをカスタマイズ](Customize User Interface)に移動し、[HowTo]カテゴリを探してスクリプトをツールバー、メニュー、またはクアッド メニューにドラッグするか、キーボード ショートカットを割り当てることができます。
setTransformLockFlags selection #all
このメソッドのヘルプ定義は、このメソッドをマップ済みとしてリスト表示します。つまり、MAXScript の for ループを追加しなくても、このメソッドをオブジェクトの集合に直接適用することができます。この例では、現在のシーン選択を使います。 選択内の各オブジェクトに対してメソッドが呼び出されます。
)
スクリプトを評価します。スクリプトを使用する場合は、[カスタマイズ...] (Customize...)を使用して、スクリプトを[HowTo]カテゴリからツールバー、メニュー、またはクアッド メニューにドラッグするか、キーボード ショートカットを割り当てることができます。オブジェクトをいくつか選択し、スクリプトを起動します。[階層] (Hierarchy)パネル/[リンク情報](Link Info)/[ロック] (Locks)を選択して表示されるすべてのチェックボックスにチェックマークが付けられます。
既に説明したように、#all キーワードを #none キーワードに置き換えただけで、代わりにすべてのチェックボックスのチェックマークを消すようにこのスクリプトを変更することができます。この操作を行うために、2 番目の macroScript を自由に作成してみてください。
3ds Max 4 では、setTransformLockFlags
メソッドはマップ可能でないことに注意してください。このスクリプトを以前のバージョンと互換性があるようにしたい場合は、for ループを使用して各オブジェクトを個別に変更することができます。そのコードは、次のようになります。
for i in selection do setTransformLockFlags i #all
実際に 3ds Max 5 でこのチュートリアルを実行したユーザの中には、もっと先まで進んで一般的な BitArray でロック フラグにアクセスしてみた方もいるかもしれません。ここでは、この場合の BitArrays の使用方法について説明します。
「一般的なノードのプロパティ」にある setTransformLockFlags
メソッドについての説明によると、位置、回転、スケールのロックに対応して BitArray 内には 9 ビットが確保されています。
BitArray は、True または False に設定できるバイナリ値 (ビット) のリストです。BitArray は、カンマで区切られた True ビットのインデックスを含む中括弧 {} が後に続く#によって定義されます。たとえば、#{1,4,7} では 3 つのカテゴリすべての X 軸のロックのみが True に設定されます。
複数のビットを True に設定する場合、最初と最後のインデックスの間に .. を入れて記述することができます。 たとえば、#9 であれば、すべて True に設定された 9 つの要素を持つ BitArray が定義されます。これは、setTransformLockFlags
メソッドを使用した場合の #all
フラグと同じ働きをするものです。#{} は、#none
フラグと同等です。#{1..3} では最初の 3 つのロックのみがオンになり、残りの 6 つはオフになります。
BitArray の値を自由に試してみて、位置、回転、スケールのロックのみを設定するように macroScripts を詳細に定義してみてください。
戻る