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