OpenEdges コア インタフェースは、開いたエッジの xView チェッカーと対話するためのメソッドを公開しています。
3ds Max 2010 以降 で使用可能です。
プロパティ:
プロパティは公開していません。
メソッド:
<enum>OpenEdges.Check <time>time <node>nodeToCheck <&index array>results
Check enums: {#Failed|#Vertices|#Edges|#Faces}
results is In and Out parameter
開いたエッジの xView チェックを、指定された時間に指定されたノードに対して実行し、その結果を 3 番目の引数として参照渡しされた配列に返します。
このメソッド自体は常に
#edges
enum を返します。これは、開いたエッジのチェックによって結果の配列に書き込まれる値は、常に開いたエッジのインデックスを表すためです。
<bool>OpenEdges.hasPropertyDlg()
xView チェッカーがプロパティ ダイアログ ボックスを実装している場合は true、実装していない場合は false を返します。
開いたエッジのチェッカーでは、常に false が返されます。
<void>OpenEdges.showPropertyDlg()
実装されている場合は、xView チェッカーのプロパティ ダイアログ ボックスを表示します。
開いたエッジのチェッカーでは、このメソッドは何もしません。
例:
|
以下のコードでは、5x5 のセグメントを持つ平面を作成し、これを編集可能ポリゴンに集約した後、内側のポリゴンを T 字型に削除しています。これにより開いたエッジの数が増えます。
|
thePlane = plane width:100 length:100 widthsegs:5 lengthsegs:5
--> $Plane:Plane01 @ [0.000000,0.000000,0.000000]
convertTo thePlane Editable_Poly
--> $Editable_Poly:Plane01 @ [0.000000,0.000000,0.000000]
polyop.deleteFaces thePlane #{7..9,13,18}
--> OK
|
|
以下の OpenEdges.check()メソッドの呼び出しでは、開いたエッジが返されます。ビューポートで開いたエッジのチェッカーがアクティブになっている必要はありません。これは、MAXScript コード内で、開いたエッジのインデックスを配列またはビット配列に取得する目的で使用できます。
|
theResults = #() --結果を格納する配列が必要です。
--> #()
--チェックする時間、チェックするオブジェクト、および結果を
--格納するための参照配列を渡すことにより、
--メソッドを呼び出します。メソッド自体から返された結果は
--#vertex になります。これは、メソッドはエッジに対して動作し、
--theResults 配列の内容はエッジのインデックスとして
--扱われるためです。
resultType = openEdges.Check currentTime thePlane &theResults
--> #Edges
--この配列変数の内容をビット配列として出力した場合、
--次のように、開いたエッジのインデックスが true に設定されたビットとして含まれています。
theResults as bitarray
--> #{1, 4..5, 7..8, 10..11, 13, 15..17, 19..22, 24..25, 29..30, 34..35, 39..41, 45..47, 49, 51, 53, 55..56}
--返されたエッジのインデックスの数をチェックすることもできます。
--これはビューポートで開いたエッジのチェッカーによって報告される
--カウントと同じです。
theResults.count
--> 32
--ここで次のようにすると、開いたエッジを簡単に選択できます。
polyOp.setFaceSelection thePlane theResults
--> OK
|