带修饰符的Maxscript

时间:2013-05-15 16:29:48

标签: maxscript

从创建立方体时,以下代码应选择前两个三角形,反转该选择,然后删除这些新选择的面。到现在为止还挺好。但是,当基础多维数据集上有一个修饰符(或更多)时,我似乎遇到了麻烦。

(
--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())
)

那我哪里错了?

1 个答案:

答案 0 :(得分: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())
)