From 3c8e211b49c02ebd221af395561145d18a48cad2 Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Wed, 15 Nov 2017 11:28:30 +0800 Subject: [PATCH] Enable undo in creating assembly command --- assembly.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/assembly.py b/assembly.py index 67e30b5..7849fcb 100644 --- a/assembly.py +++ b/assembly.py @@ -1235,14 +1235,25 @@ class Assembly(AsmGroup): return ret @staticmethod - def make(doc=None,name='Assembly'): + def make(doc=None,name='Assembly',undo=True): if not doc: doc = FreeCAD.ActiveDocument - obj = doc.addObject( - "Part::FeaturePython",name,Assembly(),None,True) - ViewProviderAssembly(obj.ViewObject) - obj.Visibility = True - obj.purgeTouched() + if not doc: + raise RuntimeError('No active document') + if undo: + doc.openTransaction('Create assembly') + try: + obj = doc.addObject( + "Part::FeaturePython",name,Assembly(),None,True) + ViewProviderAssembly(obj.ViewObject) + obj.Visibility = True + obj.purgeTouched() + if undo: + doc.commitTransaction() + except Exception: + if undo: + doc.abortTransaction() + raise return obj Info = namedtuple('AssemblyInfo',('Assembly','Object','Subname'))