0

从创建立方体开始,以下代码应选择顶部的两个三角形,反转该选择,然后删除那些新选择的面。到现在为止还挺好。但是,当基本立方体上有一个修改器(或更多)时,我似乎遇到了麻烦。

(
--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 上工作。

此外,反转位数组就像设置它的长度并在它前面放一个减号一样简单。

(
    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 回答