0

立方体の作成から、次のコードは上の 2 つの三角形を選択し、その選択を反転してから、新しく選択した面を削除する必要があります。ここまでは順調ですね。ただし、ベース キューブに修飾子 (またはそれ以上) があると、問題が発生するようです。

(
--clear the listener
 clearListener()

 theObj = $

 -- init. an array to collect faces
 selArray = #{}
 invArray = #{}

 append selArray 3
 append selArray 4

 -- get the number of faces in the object
 theMeshCount = theObj.numfaces

 -- invert the array
 for f = 1 to theMeshCount do
 (
 if (selArray[f] == false) then invArray[f] = true
 else invArray[f] = false 
 )

 -- set the face selection in the EMesh
 setFaceSelection theObj invArray

 -- go to modify mode
 max modify mode

 -- select the mesh
 select theObj

 -- add the Mesh Select modifier
 modPanel.addModToSelection (Mesh_Select ())

 -- go to Face level
 subObjectLevel = 3

 --add a delete mesh, preserving the selection
 modPanel.addModToSelection (deleteMesh())
)

それで、どこが間違っているのですか?

4

1 に答える 1

3

具体的にどのようなトラブルに遭遇しますか?試してみたところ、トポロジー変更修飾子がなければ、期待どおりに動作するようです。プリミティブ オブジェクトでも機能するように、代わりに obj.mesh の面数を取得する方がよい場合があります。または、モディファイヤをスタックの一番下に追加することを意図していた可能性があります。その場合は、/ ../チャンクのコメントを外します。代わりに baseobject で動作するようにするには、以下のコードを使用します。

また、bitarray の反転は、その長さを設定し、その前にマイナス記号を付けるのと同じくらい簡単です。

(
    local theObj = selection[1]
    local theMesh = theObj.mesh
    local theMod = Mesh_Select()

    local selArray = #{3..4}
    selArray.count = theMesh./*baseObject.*/numFaces
    delete theMesh

    addModifier theObj theMod /*before:theObj.modifiers.count*/
    setFaceSelection theObj theMod (-selArray)
    max modify mode
    /*modPanel.setCurrentObject theMod*/
    subObjectLevel = 3
    modPanel.addModToSelection (DeleteMesh())
)
于 2013-05-16T08:24:24.533 に答える