diff --git a/freecad/asm3/assembly.py b/freecad/asm3/assembly.py index 615a5be..208515d 100644 --- a/freecad/asm3/assembly.py +++ b/freecad/asm3/assembly.py @@ -2494,6 +2494,10 @@ class ViewProviderAsmConstraint(ViewProviderAsmGroup): def attach(self,vobj): super(ViewProviderAsmConstraint,self).attach(vobj) vobj.OnTopWhenSelected = 2 + try: + vobj.SwitchNode.overrideSwitch = 'OverrideVisible' + except Exception: + pass def getIcon(self): return Constraint.getIcon(self.ViewObject.Object) @@ -2602,6 +2606,12 @@ class ViewProviderAsmConstraintGroup(ViewProviderAsmGroup): def dropObjectEx(self,_vobj,obj,_owner,_subname,_elements): AsmPlainGroup.tryMove(obj,self.ViewObject.Object) + def attach(self,vobj): + super(ViewProviderAsmConstraintGroup,self).attach(vobj) + try: + vobj.SwitchNode.overrideSwitch = 'OverrideReset' + except Exception: + pass class AsmElementGroup(AsmGroup): def __init__(self,parent): diff --git a/freecad/asm3/gui.py b/freecad/asm3/gui.py index 5048ef6..152daf3 100644 --- a/freecad/asm3/gui.py +++ b/freecad/asm3/gui.py @@ -38,11 +38,14 @@ class SelectionObserver: if vis: FreeCADGui.Selection.updateSelection(vis,obj,subname) + _ViewParam = FreeCAD.ParamGet('User parameter:BaseApp/Preferences/View') + def setElementVisible(self,docname,objname,subname,vis,presel=False): if FreeCAD.isRestoring(): self.resetElementVisible() return - if not AsmCmdManager.AutoElementVis: + if not AsmCmdManager.AutoElementVis \ + or self._ViewParam.GetBool('ShowSelectionOnTop',False): self.elements.clear() return doc = FreeCAD.getDocument(docname)