Hello,

So I have been quite stuck on a problem in regards to Maya crashing when I 
undo.
More specifically, it will crash on second, third or fourth undo. So the 
undo step *can* work.

def doIt(self, args):
self.parseArguments(args)
sel = om.MGlobal.getActiveSelectionList()
__, vertices = sel.getComponent(0)
fn_vertices = om.MFnSingleIndexedComponent(vertices)
self.verts = fn_vertices.getElements()
self.path = sel.getDagPath(0)
self.mesh = om.MFnMesh(self.path)
self.colors = self.mesh.getVertexColors()
self.sourceCols = self.mesh.getVertexColors()
self.redoIt()

def redoIt(self):
for v in self.verts:
self.colors[v].r = self.sourceCols[v].b
self.mesh.setVertexColor(self.colors[v], v)
def undoIt(self):
for v in self.verts:
self.mesh.setVertexColor(self.sourceCols[v], v)

This is the code. What I'm trying to do, is swap channels on a per vertex 
basis.
I only want it to act on selected vertices. I am explicitly copying the 
blue to the red channel for test purposes.

I know that some MArrays get referenced rather than copied, but I tried to 
check the sourceCols pre- and post redoIt, and it's identical.

My biggest hurdle here is that I don't really know what to look for? I'm 
really not certain what's happening behind the curtain, since to me it 
looks like pretty basic steps:

1. save original color
2. init redo and change colors and apply to mesh
3. apply original colors to mesh on undo

It always manages to get through the initial undo, but seems quite random 
after that.
I have been stuck on this thing for two days soon. Any help would really be 
appreciated!

-- 
You received this message because you are subscribed to the Google Groups 
"Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to python_inside_maya+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/python_inside_maya/32ee3511-374b-4a10-9786-618e1de289fb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to