I am trying to undo an operation in a script but the
bpy.ops.ed.undo() does not work.
The exactly same sequence of statements run in Python Console works as expected.
A code that demonstrates this behavior is this (run from Text editor):
import bpy # ... already in Edit mode, selected all bpy.ops.mesh.remove_doubles(threshold = 0.1) # the above says "Info: Removed 30 vertices" # create new undo step (without this it doesn't work in Python Console either) bpy.ops.ed.undo_push() # this undo does nothing ... bpy.ops.ed.undo() # because this ... bpy.ops.mesh.remove_doubles(threshold = 0.1) # says "Info: Removed 0 vertices"
Interestingly enough the pushed undo step is visible in Undo History right before the Run Script step - and it can be undone, of course.
Is there a catch I'm missing here?