スクリプトで[編集可能メッシュ](Editable Mesh)、[メッシュ編集モディファイヤ](Edit Mesh Modify)パネル モードや操作を呼び出すために、一連のメソッドが用意されています。これらのメソッドは、 meshOps グローバル構造体内にあります。3ds Max の[修正](Modify)パネルにあるボタンを押して操作することができます。これらのメソッドを使用するには、ノードを選択して[修正](Modify)パネルを開かなければなりません。最初の引数 <editable_mesh_node_or_modifier> は、モディファイヤ スタック レベルが基本オブジェクトである編集可能メッシュ ノード、あるいはモディファイヤ スタック レベルがメッシュの編集にあるメッシュ編集モディファイヤのいずれかに解釈されます。以下のメソッドは、現在のサブオブジェクト レベルがメソッドの呼び出しに適切なレベルである場合に有効です。
注意: |
---|
このページでは、[修正](Modify)パネル コマンド モードおよび操作の制御に関連した meshOps 構造について説明します。 頂点、エッジ、および面のデータを直接操作するメソッドについては、 meshOp 構造体および Editable_Mesh : GeometryClass と TriMesh : Value のトピックを参照してください。 |
メッシュのスクリプトに変更を加えた場合は、メソッドを呼び出す前にメッシュで update() メソッドを呼び出す必要があります。これらのメソッドを呼び出した直後は、3ds Max によってメッシュが更新されるため、 update() メソッドを呼び出す必要はありません。
以下のメソッドでは、[編集可能メッシュの修正](Editable Mesh Modify)パネルでユーザによるボタン操作を実行し、それを現在選択されているサブオブジェクトに基づいて処理します。これらのメソッドは、[ジオメトリを編集](Edit Geometry)ロールアウト内の対応するボタンをハイライトして操作を開始し、その時点で相互作用形式の操作は完了します。メソッドは、操作の開始からユーザの操作完了までの間に返されるため、使用するスクリプトが操作の妨げにならないように注意する必要があります。これらのメソッドを呼び出すことは、[修正](Modify)パネルの関連するボタンをクリックすることと同じです。ユーザのアクションまたは MAXScript コマンドにより操作がすでに実行されている場合にメソッドを呼び出すと、操作が中止され、ボタンのハイライトが消えます。
アタッチ]コマンド モードになります。頂点、面、ポリゴン、要素のサブオブジェクト レベル、およびサブオブジェクト モードでないときに有効です。
[ベベル](Bevel)コマンド モードになります。エッジ、面、ポリゴン、要素のサブオブジェクト レベルで有効です。
[面取り](Chamfer)コマンド モードに入ります。これは、頂点およびエッジ サブオブジェクト レベルで有効です。
[作成](Create)コマンド モードになります。頂点、面、ポリゴン、要素のサブオブジェクト レベルで有効です。
[カット](Cut)コマンド モードになります。エッジ、面、ポリゴン、要素のサブオブジェクト レベルで有効です。
選択されているエッジを 2 つのエッジに分け、選択されている面を 3 つの面に分けます。
[押し出し](Extrude)コマンド モードになります。面、ポリゴン、要素のサブオブジェクト レベルで有効です。
[法線を反転](Flip Normal)コマンド モードになります。面、ポリゴン、要素のサブオブジェクト レベルで有効です。
[スライス平面](Slice Plane)コマンド モードに入ります。これは、すべてのサブオブジェクト レベルで、サブオブジェクト モード以外のときに有効です。
[エッジ回転](Turn)コマンド モードに入ります。これは、エッジ サブオブジェクト レベルで有効です。
[ターゲットの連結](Weld Target)コマンド モードに入ります。これは、頂点サブオブジェクト レベルで有効です。
以下のメソッドは、現在選択されているサブオブジェクトに対して、[編集可能メッシュの修正](Editable Mesh Modify)パネル内でいずれかの「即時」ボタン操作を呼び出します。
選択されているサブオブジェクトのエッジの可視性を自動的に設定します。エッジ サブオブジェクト レベルで有効です。
選択されているサブオブジェクトにアタッチする面に対して、それぞれ 1 つの新しい頂点を作成します。頂点サブオブジェクト レベルで有効です。
選択されているサブオブジェクトのエッジの可視性を自動的に設定します。
[シェイプを作成](Create Shape)ダイアログ ボックスを表示し、オブジェクト名、シェイプ タイプ、および非表示エッジを無視するかどうかを指定できます。エッジ サブオブジェクト レベルで有効です。
選択されているサブオブジェクトを削除します。頂点、面、ポリゴン、要素のサブオブジェクト レベルで有効です。
[デタッチ](Detach)ダイアログ ボックスを表示し、オブジェクト名を指定したり、要素としてデタッチしたり、選択されているサブオブジェクトのクローンを作成するかどうかを指定します。頂点、面、ポリゴン、要素のサブオブジェクト レベルで有効です。
[オブジェクトに分解](Explode to Objects)ダイアログ ボックスを表示し、オブジェクト名を指定します。エッジの角度に基づいて、選択されている面を複数の要素やオブジェクトに分解します。頂点、面、ポリゴン、要素のサブオブジェクト レベルで有効です。
選択されている面の法線を反転します。面、ポリゴン、要素のサブオブジェクト レベルで有効です。
選択されているサブオブジェクトを作図平面に位置合わせします。頂点、エッジ、面、ポリゴン、要素のサブオブジェクト レベルで有効です。
選択されているサブオブジェクトを非表示にします。頂点、面、ポリゴン、要素のサブオブジェクト レベルで有効です。
選択されているエッジを非表示に設定します。頂点サブオブジェクト レベルで有効です。
選択されているすべてのサブオブジェクトを強制的に共有面にします。頂点、エッジ、面、ポリゴン、要素のサブオブジェクト レベルで有効です。
現在の選択に関係なく、オブジェクトで分離したすべての頂点を削除します。
1 つの面しかないエッジをすべて選択します。エッジ サブオブジェクト レベルで有効です。
スライス平面に基づいて、エッジと面をサブディバイドします。 slice を有効にするには、先に meshOps.startSlicePlane() を呼び出して「スライス平面」コマンド モードに入る必要があります。これは、すべてのサブオブジェクト レベルで、サブオブジェクト モード以外のときに有効です。
選択されているサブオブジェクトを面分割します。面、ポリゴン、および要素のサブオブジェクト レベルで有効です。
現在のサブオブジェクト レベルで非表示のサブオブジェクトを表示します。頂点、面、ポリゴン、要素のサブオブジェクト レベルで有効です。
選択されている面の法線を統一します。面、ポリゴン、要素のサブオブジェクト レベルで有効です。
選択されているサブオブジェクトをアクティブ ビューポートの 0,0,0 平面に配置します。頂点、エッジ、面、ポリゴン、要素のサブオブジェクト レベルで有効です。
選択されているエッジを表示します。エッジ サブオブジェクト レベルで有効です。
選択した頂点を結合します。これは、頂点サブオブジェクト レベルで有効です。
meshOps メソッドは、開いている[修正](Modify)パネルと、パネル内で開いている編集可能メッシュ基本オブジェクトまたはメッシュ編集モディファイヤのいずれか適切なオブジェクトに依存します。この条件に合致しない場合、 meshOps メソッドはいずれの操作も実行しません。 max modify mode や setCommandPanelTaskMode mode:#modify などの MAXScript 関数を使用して[修正](Modify)パネルを開き、 select <obj> を使用してオブジェクトを選択し、 subObjectLevel = <n> を使用して サブオブジェクト レベルを設定し、 modPanel.setCurrentObject <obj_or_modifier> を使用して、新しい関数が動作するための正しいコンテキストを確立する必要があります。たとえば、次のようになります。