diff --git a/src/Mod/Draft/draftguitools/gui_edit_sketcher_objects.py b/src/Mod/Draft/draftguitools/gui_edit_sketcher_objects.py index e62b8d7792..20b94192f7 100644 --- a/src/Mod/Draft/draftguitools/gui_edit_sketcher_objects.py +++ b/src/Mod/Draft/draftguitools/gui_edit_sketcher_objects.py @@ -69,6 +69,7 @@ class SketcherSketchObjectGuiTools(GuiTools): 0 : startpoint 1 : endpoint """ + import Sketcher if node_idx == 0: obj.movePoint(0, 1, v) elif node_idx == 1: diff --git a/src/Mod/Draft/draftutils/gui_utils.py b/src/Mod/Draft/draftutils/gui_utils.py index 936d868322..2e731fa7d6 100644 --- a/src/Mod/Draft/draftutils/gui_utils.py +++ b/src/Mod/Draft/draftutils/gui_utils.py @@ -128,13 +128,20 @@ def autogroup(obj): if Gui.ActiveDocument.ActiveView.getActiveObject("Arch"): # add object to active Arch Container - Gui.ActiveDocument.ActiveView.getActiveObject("Arch").addObject(obj) + active_arch_obj = Gui.ActiveDocument.ActiveView.getActiveObject("Arch") + if obj in active_arch_obj.InListRecursive: + # do not autogroup if obj points to active_arch_obj to prevent cyclic references + return + active_arch_obj.addObject(obj) elif Gui.ActiveDocument.ActiveView.getActiveObject("part", False) is not None: # add object to active part and change it's placement accordingly # so object does not jump to different position, works with App::Link # if not scaled. Modified accordingly to realthunder suggestions - p, parent, sub = Gui.ActiveDocument.ActiveView.getActiveObject("part", False) + active_part, parent, sub = Gui.ActiveDocument.ActiveView.getActiveObject("part", False) + if obj in active_part.InListRecursive: + # do not autogroup if obj points to active_part to prevent cyclic references + return matrix = parent.getSubObject(sub, retType=4) if matrix.hasScale() == 1: err = translate("Draft", @@ -161,7 +168,8 @@ def autogroup(obj): elif hasattr(obj,"Placement"): # every object that have a placement is processed here obj.Placement = App.Placement(inverse_placement.multiply(obj.Placement)) - p.addObject(obj) + + active_part.addObject(obj) def dim_symbol(symbol=None, invert=False):