When trying to move verts on an Edit_Poly modifier I’ve noticed that if too verts are moved to different locations in a loop the undo stack gets cleared. For instance:
sp = Sphere segs:64 name:#test isSelected:on
ep = Edit_Poly()
addmodifier sp ep
max modify mode
modPanel.setCurrentObject ep
numv = ep.GetNumVertices()
seed 0
vrtsToMove = #()
oldPositions = #()
newPositions = #()
for k=1 to (numv/2) do (
newVrt = 0
while newVrt == 0 do (
tmpNum = (random 1 numv)
if (finditem vrtsToMove tmpNum == 0) do newVrt = tmpNum
)
append vrtsToMove newVrt
append oldPositions (ep.GetVertex newVrt)
)
for i=1 to vrtsToMove.count do (
x=((random -1 1) + oldPositions[i].x)
y=((random -1 1) + oldPositions[i].y)
z=((random -1 1) + oldPositions[i].z)
append newPositions [x,y,z]
)
subobjectlevel = 1
svp = ep.setVert
for i=1 to vrtsToMove.count do (svp #{vrtsToMove[i]} newPositions[i] node:$)
I figured this is memory related and so increased the heap size as a test, and it seemed to solve the problem…until I ran the script a few more times and it cleared the undo stack again. Does anyone know of a way around this issue?
(Edited for clarity with better example)