マテリアル ID 間のエッジを選択する方法はありますか。
 
 
 

MAXScript に関する質問と回答 > 編集可能ポリゴンの操作 > マテリアル ID 間のエッジを選択する方法はありますか。

質問:

編集可能な Poly オブジェクトの異なるマテリアル ID 間でエッジを選択したいと考えています。

回答:

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

スクリプト:

macroScript SelMatIDEdges category: "MXS Help"
(
-- Editable_Poly 基本オブジェクトを持つ単一オブジェクトを選択すると、
-- アクション項目のみが有効になります。
on isEnabled return
 selection.count == 1 and classof selection[1].baseobject == Editable_Poly
-- これを実行すると、
on execute do
(
 theEP = selection[1].baseobject--選択したオブジェクトの基本オブジェクトが取得されます。
 edgeSelArray = #()-- 整数の空の配列でエッジを収集します。
 eCount = polyOp.getNumEdges theEP--エッジの合計数を取得します。
 for edge = 1 to eCount do --すべてのエッジをループします。
 (
  -- 現在のエッジを共有する面を取得します。
  theFaces = (polyOp.getFacesUsingEdge theEP #(edge)) as array
  --エッジを共有する面が 2 つある場合は、
  if theFaces.count == 2 do
  (
   -- マテリアル ID を比較します。異なる場合は、このエッジを収集します。
   if polyOp.getFaceMatID theEP theFaces[1] != polyOp.getFaceMatID theEP theFaces[2] do
    append edgeSelArray edge
  )--if 終了
 )--ループ終了
 -- すべてのエッジをチェックしたら、収集されたエッジを選択します。
 polyOp.setEdgeSelection theEP edgeSelArray
 max Modify Mode-- [修正]パネルに切り替えます。
 modPanel.setCurrentObject theEP-- BaseObject レベルに移動します。
 subObjectLevel = 2--次に、Edge SubObject レベルに移動して、結果を表示します。
)--on execute 終了
)--macroScript の終了

ボックス プリミティブでは、6 個のマテリアル ID が 6 個 の側面に割り当てられています。この例では、 4x4x4 のセグメントを持つボックスが編集可能ポリゴンに変換され、上記のスクリプトが実行されました。

関連事項