From a9b302c0ac14165b2484be189e26dc6188a61b35 Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Sat, 27 Jan 2018 18:01:55 +0800 Subject: [PATCH] assembly: no doc touch when auto changing element visibility --- assembly.py | 3 +++ gui.py | 13 +++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/assembly.py b/assembly.py index 35e9463..08a8c22 100644 --- a/assembly.py +++ b/assembly.py @@ -876,6 +876,7 @@ class AsmConstraint(AsmGroup): obj.setPropertyStatus('VisibilityList','-Immutable') obj.VisibilityList = [False]*len(group) obj.setPropertyStatus('VisibilityList','Immutable') + obj.setPropertyStatus('VisibilityList','NoModify') Constraint.attach(obj) obj.recompute() @@ -1147,6 +1148,8 @@ class AsmElementGroup(AsmGroup): for o in obj.Group: getProxy(o,AsmElement).parent = self obj.cacheChildLabel() + if gui.AsmCmdManager.AutoElementVis: + obj.setPropertyStatus('VisibilityList','NoModify') def getAssembly(self): return self.parent diff --git a/gui.py b/gui.py index f5a99c6..d61c243 100644 --- a/gui.py +++ b/gui.py @@ -58,7 +58,8 @@ class SelectionObserver: def removeSelection(self,docname,objname,subname): self.onChanged() - self.setElementVisible(docname,objname,subname,False) + if (docname,objname,subname) in self.elements: + self.setElementVisible(docname,objname,subname,False) def setSelection(self,*_args): self.onChanged() @@ -281,12 +282,16 @@ class AsmCmdAutoElementVis(AsmCmdCheckable): @classmethod def Activated(cls,checked): super(AsmCmdAutoElementVis,cls).Activated(checked) - from .assembly import isTypeOf,AsmConstraint,AsmElement,AsmElementLink + from .assembly import isTypeOf,AsmConstraint,\ + AsmElement,AsmElementLink,AsmElementGroup visible = not checked for doc in FreeCAD.listDocuments().values(): for obj in doc.Objects: - if isTypeOf(obj,AsmConstraint): - obj.ViewObject.OnTopWhenSelected = 2 if checked else 0 + if isTypeOf(obj,(AsmConstraint,AsmElementGroup)): + if isTypeOf(obj,AsmConstraint): + obj.ViewObject.OnTopWhenSelected = 2 if checked else 0 + obj.setPropertyStatus('VisibilityList', + 'NoModify' if checked else '-NoModify') elif isTypeOf(obj,(AsmElementLink,AsmElement)): vis = visible and not isTypeOf(obj,AsmElement) obj.Proxy.parent.Object.setElementVisible(obj.Name,vis)