EPoly エッジ選択から、未接続のエッジ選択を作成する方法はありますか。
 
 
 

MAXScript FAQに関する質問と回答 > 編集可能ポリゴンの操作 > EPoly エッジ選択から、未接続のエッジ選択を作成する方法はありますか。

質問:

エッジ選択にフィルタ処理を行って、「エッジ選択要素」のような、接続されたエッジを含む配列を作成したいと考えています。2 つの配列のエッジは決して接続されません。 つまり、頂点を共有しません。

回答:

次の疑似コードは、実行可能な手段を記述したものです。

この関数は、主配列にエッジが残っていない場合に使用できるようになります。

これにより、未接続のエッジ選択と同数のサブ配列が作成されます。

次の関数は、MAXScript コードに擬似コードを実装します。

スクリプト:

fn getEPolyUnconnectedEdgesSelections thePoly =
(
-- エッジ選択を取得します。
mainSelection = (polyOp.getEdgeSelection thePoly) as array
-- 選択「要素」を使って、整数の配列でサブ配列を収集します。
unconnectedSelections = #()
-- 主選択配列が空になるまで繰り返します。
while mainSelection.count > 0 do
(
-- 空のサブ配列を追加します。
append unconnectedSelections #()
現在のサブ配列のインデックスを書き留めます
currentSelCount = unconnectedSelections.count
主選択配列からサブ配列に最初のエッジを追加します。
append unconnectedSelections[currentSelCount] mainSelection[1]
そして、主選択配列から最初のエッジを削除します。
deleteItem mainSelection 1
整数のカウンタ。
cnt = 0
-- サブ配列で、カウンタの数がエッジよりも少ない場合は、
while cnt < unconnectedSelections[currentSelCount].count do
(
 cnt += 1--カウンタに 1 を加算します。
 -- 現在のサブ配列内の現在のエッジの頂点を取得します。
 currentEdgeVerts = (polyOp.GetVertsUsingEdge thePoly  unconnectedSelections[currentSelCount][cnt]) as array
 neigborEdges = #()-- 整数の配列で隣接エッジを収集します。
 -- 現在のエッジのすべての頂点に対して、
 for v in currentEdgeVerts do
 -- その頂点のエッジを隣接するエッジの配列に追加します。
  join neigborEdges ((polyOp.GetEdgesUsingVert thePoly v) as array)
 -- 隣接エッジそれぞれに対して、 
 for edge in neigborEdges do
 (
  -- エッジが主選択配列にあるかどうかを確認します。
  checkInSelection = findItem mainSelection edge
  -- ある場合、
  if checkInSelection > 0 do
  (
   -- 主選択配列から、エッジを削除します。
   deleteItem mainSelection checkInSelection
   -- そして、そのエッジをサブ配列に追加します。
   append unconnectedSelections[currentSelCount] edge
  )--if 終了
 )--エッジ ループを終了します。
)--while cnt を終了します。
)--while mainSelection.count を終了します。
-- 最後に、接続されたエッジのサブ配列を含む配列が返されます。
unconnectedSelections
)--fn 終了
 
getEPolyUnconnectedEdgesSelections $Box01--関数を呼び出します。
 
関連事項