AddUndo(c4d.UNDOTYPE_CHANGE) not working with doc.ExecutePasses()?
-
Hi,
In this thread, it offers the solution to use the
doc.ExecutePasses
to "bake" the effect of the PSR when the PSR tag is deleted. My problem is when I inserted the doc.AddUndo(), it does not work (i.e. the object does not move back the original position).You can see an illustration of the problem here:
https://www.dropbox.com/s/c5b3g1f5dr0el7z/c4d183_addundo_with_doc_execute_passes.mp4?dl=0As you can see, only the tag creation is undone but not the movement of the object.
Is there a way around this? Thank you for looking at my problemYou can see the working code here:
import c4d from c4d import gui # Select two objects then execute def create_constraint(): doc = c4d.documents.GetActiveDocument() obj_sel = doc.GetActiveObjects(c4d.GETACTIVEOBJECTFLAGS_SELECTIONORDER) driven = obj_sel[-1] driver = obj_sel[0] doc.StartUndo() tag = c4d.BaseTag(1019364) driven.InsertTag(tag) doc.AddUndo(c4d.UNDOTYPE_NEW, tag) tag[c4d.ID_CA_CONSTRAINT_TAG_PSR] = True tag[c4d.ID_CA_CONSTRAINT_TAG_PSR_MAINTAIN] = False tag[10001] = driver doc.ExecutePasses(None, True, True, True, c4d.BUILDFLAGS_0) doc.AddUndo(c4d.UNDOTYPE_CHANGE, driven) doc.EndUndo() c4d.EventAdd() if __name__=='__main__': create_constraint()
-
Hello,
As the document says, the
UNDOTYPE_CHANGE
must be called before the change.This seems to work as expected. Let me know.
import c4d from c4d import gui # Select two objects then execute def create_constraint(): doc = c4d.documents.GetActiveDocument() obj_sel = doc.GetActiveObjects(c4d.GETACTIVEOBJECTFLAGS_SELECTIONORDER) driven = obj_sel[-1] driver = obj_sel[0] doc.StartUndo() doc.AddUndo(c4d.UNDOTYPE_CHANGE, driven) tag = c4d.BaseTag(1019364) driven.InsertTag(tag) doc.AddUndo(c4d.UNDOTYPE_NEW, tag) tag[c4d.ID_CA_CONSTRAINT_TAG_PSR] = True tag[c4d.ID_CA_CONSTRAINT_TAG_PSR_MAINTAIN] = False tag[10001] = driver doc.ExecutePasses(None, True, True, True, c4d.BUILDFLAGS_0) doc.EndUndo() c4d.EventAdd() if __name__=='__main__': create_constraint()
Cheers,
Manuel -
@m_magalhaes
Oh gotcha. Thanks for the reminder. Totally forgot they
UNDOTYPE_CHANGE
have a different placement thantUNDOTYPE_NEW
Thanks again. Have a great day ahead!