From 80c89ef0a2d08f5ce9ab8fb0757034a0aa33764c Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Wed, 18 Oct 2017 18:09:30 +0800 Subject: [PATCH] Rename self.obj attribute to self.Object --- assembly.py | 85 +++++++++++++++++++++++++++------------------------- sys_sympy.py | 6 ++-- 2 files changed, 47 insertions(+), 44 deletions(-) diff --git a/assembly.py b/assembly.py index 92b92ca..6019e66 100644 --- a/assembly.py +++ b/assembly.py @@ -1,14 +1,17 @@ import os from collections import namedtuple import FreeCAD, FreeCADGui +import asm3 import asm3.utils as utils from asm3.utils import logger, objName from asm3.constraint import Constraint from asm3.system import System -def setupUndo(doc,undoDocs,name='Assembly3 solve'): - if doc in undoDocs: +def setupUndo(doc,undoDocs,name): + if doc.HasPendingTransaction or doc in undoDocs: return + if not name: + name = 'Assembly solve' doc.openTransaction(name) undoDocs.add(doc) @@ -32,7 +35,7 @@ def getProxy(obj,tp): class AsmBase(object): def __init__(self): - self.obj = None + self.Object = None def __getstate__(self): return @@ -46,7 +49,7 @@ class AsmBase(object): def linkSetup(self,obj): assert getattr(obj,'Proxy',None)==self - self.obj = obj + self.Object = obj return def getViewProviderName(self,_obj): @@ -90,10 +93,10 @@ class AsmGroup(AsmBase): self.setGroupMode() def setGroupMode(self): - self.obj.GroupMode = 1 # auto delete children - self.obj.setPropertyStatus('GroupMode','Hidden') - self.obj.setPropertyStatus('GroupMode','Immutable') - self.obj.setPropertyStatus('GroupMode','Transient') + self.Object.GroupMode = 1 # auto delete children + self.Object.setPropertyStatus('GroupMode','Hidden') + self.Object.setPropertyStatus('GroupMode','Immutable') + self.Object.setPropertyStatus('GroupMode','Transient') def attach(self,obj): obj.addProperty("App::PropertyLinkList","Group","Base",'') @@ -103,10 +106,12 @@ class AsmGroup(AsmBase): class ViewProviderAsmGroup(ViewProviderAsmBase): - def claimChildren(self): return self.ViewObject.Object.Group + def doubleClicked(self): + return False + class AsmPartGroup(AsmGroup): def __init__(self,parent): @@ -163,23 +168,23 @@ class AsmElement(AsmBase): if ret: return ret self.shape = None - self.shape = self.obj.getSubObject('') + self.shape = self.Object.getSubObject('') return self.shape def getAssembly(self): return self.parent.parent def getSubElement(self): - link = self.obj.LinkedObject + link = self.Object.LinkedObject if isinstance(link,tuple): return link[1].split('.')[-1] return '' def getSubName(self): - link = self.obj.LinkedObject + link = self.Object.LinkedObject if not isinstance(link,tuple): raise RuntimeError('Invalid element link "{}"'.format( - objName(self.obj))) + objName(self.Object))) return link[1] def setLink(self,owner,subname): @@ -187,7 +192,7 @@ class AsmElement(AsmBase): # assembly # check old linked object for auto re-label - obj = self.obj + obj = self.Object linked = obj.getLinkedObject(False) if linked and linked!=obj: label = '{}_{}_Element'.format(linked.Label,self.getSubElement()) @@ -324,7 +329,7 @@ class AsmElementLink(AsmBase): return self.parent.parent.parent def getElement(self): - linked = self.obj.getLinkedObject(False) + linked = self.Object.getLinkedObject(False) if not linked: raise RuntimeError('Element link broken') if not isTypeOf(linked,AsmElement): @@ -332,10 +337,10 @@ class AsmElementLink(AsmBase): return linked.Proxy def getSubName(self): - link = self.obj.LinkedObject + link = self.Object.LinkedObject if not isinstance(link,tuple): raise RuntimeError('Invalid element link "{}"'.format( - objName(self.obj))) + objName(self.Object))) return link[1] def getShapeSubName(self): @@ -379,7 +384,7 @@ class AsmElementLink(AsmBase): if not ret: # It is from a non assembly child part, then use our own element # group as the holder for elements - ret = [Assembly.Info(assembly.obj,owner,subname)] + ret = [Assembly.Info(assembly.Object,owner,subname)] if not isTypeOf(ret[-1].Object,AsmPartGroup): raise RuntimeError('Invalid element link ' + subname) @@ -388,7 +393,7 @@ class AsmElementLink(AsmBase): # element if there is one element = AsmElement.make(AsmElement.Selection( ret[-1].Assembly,None,ret[-1].Subname)) - if ret[-1].Assembly == assembly.obj: + if ret[-1].Assembly == assembly.Object: return (assembly.getElementGroup(),element.Name+'.') elementSub = ret[-1].Object.Name + '.' + ret[-1].Subname @@ -399,7 +404,7 @@ class AsmElementLink(AsmBase): return (owner,sub) def setLink(self,owner,subname): - obj = self.obj + obj = self.Object obj.setLink(*self.prepareLink(owner,subname)) linked = obj.getLinkedObject(False) if linked and linked!=obj: @@ -419,7 +424,7 @@ class AsmElementLink(AsmBase): if ret: return ret self.info = None - if not getattr(self,'obj',None): + if not getattr(self,'Object',None): return assembly = self.getAssembly() subname = self.getShapeSubName() @@ -429,7 +434,7 @@ class AsmElementLink(AsmBase): part = partGroup.getSubObject(names[0]+'.',1) if not part: raise RuntimeError('Eelement link "{}" borken: {}'.format( - objName(self.obj),subname)) + objName(self.Object),subname)) # For storing the shape of the element with proper transformation shape = None @@ -440,8 +445,8 @@ class AsmElementLink(AsmBase): obj = None if not isTypeOf(part,Assembly,True) and \ - not Constraint.isDisabled(self.parent.obj) and \ - not Constraint.isLocked(self.parent.obj): + not Constraint.isDisabled(self.parent.Object) and \ + not Constraint.isLocked(self.parent.Object): getter = getattr(part.getLinkedObject(True), 'getLinkExtProperty',None) @@ -483,7 +488,7 @@ class AsmElementLink(AsmBase): pla = part[0].PlacementList[idx] except ValueError: raise RuntimeError('invalid array subname of element ' - '{}: {}'.format(objName(self.obj),subname)) + '{}: {}'.format(objName(self.Object),subname)) partName = '{}.{}.'.format(part[0].Name,idx) @@ -509,7 +514,7 @@ class AsmElementLink(AsmBase): return self.info @staticmethod - def setPlacement(part,pla,undoDocs): + def setPlacement(part,pla,undoDocs,undoName): ''' called by solver after solving to adjust the placement. @@ -518,13 +523,13 @@ class AsmElementLink(AsmBase): ''' if isinstance(part,tuple): if isinstance(part[1],int): - setupUndo(part[0].Document,undoDocs) + setupUndo(part[0].Document,undoDocs,undoName) part[0].PlacementList = {part[1]:pla} else: - setupUndo(part[1].Document,undoDocs) + setupUndo(part[1].Document,undoDocs,undoName) part[1].Placement = pla else: - setupUndo(part.Document,undoDocs) + setupUndo(part.Document,undoDocs,undoName) part.Placement = pla MakeInfo = namedtuple('AsmElementLinkSelection', @@ -539,8 +544,8 @@ class AsmElementLink(AsmBase): element.Proxy.setLink(info.Owner,info.Subname) return element -def setPlacement(part,pla,undoDocs): - AsmElementLink.setPlacement(part,pla,undoDocs) +def setPlacement(part,pla,undoDocs,undoName=None): + AsmElementLink.setPlacement(part,pla,undoDocs,undoName) class ViewProviderAsmElementLink(ViewProviderAsmBase): @@ -558,7 +563,7 @@ class AsmConstraint(AsmGroup): def checkSupport(self): # this function maybe called during document restore, hence the # extensive check below - obj = getattr(self,'obj',None) + obj = getattr(self,'Object',None) if not obj: return if Constraint.isLocked(obj) or \ @@ -570,7 +575,7 @@ class AsmConstraint(AsmGroup): parent = getattr(parent,'parent',None) if not parent: return - assembly = getattr(parent,'obj',None) + assembly = getattr(parent,'Object',None) if not assembly or \ System.isConstraintSupported(assembly,Constraint.getTypeName(obj)): return @@ -602,7 +607,7 @@ class AsmConstraint(AsmGroup): def getElements(self,refresh=False): if refresh: self.elements = None - obj = getattr(self,'obj',None) + obj = getattr(self,'Object',None) if not obj: return ret = getattr(self,'elements',None) @@ -790,7 +795,7 @@ class ViewProviderAsmElementGroup(ViewProviderAsmBase): def dropObjectEx(self,vobj,_obj,_owner,subname): AsmElement.make(AsmElement.Selection( - vobj.Object.Proxy.parent.obj,None,subname)) + vobj.Object.Proxy.parent.Object,None,subname)) BuildShapeNone = 'None' @@ -823,7 +828,7 @@ class Assembly(AsmGroup): def buildShape(self): import Part - obj = self.obj + obj = self.Object if obj.BuildShape == BuildShapeNone: obj.Shape = Part.Shape() return @@ -889,7 +894,7 @@ class Assembly(AsmGroup): super(Assembly,self).onChanged(obj,prop) def getConstraintGroup(self, create=False): - obj = self.obj + obj = self.Object try: ret = obj.Group[0] checkType(ret,AsmConstraintGroup) @@ -928,7 +933,7 @@ class Assembly(AsmGroup): return self.constraints def getElementGroup(self,create=False): - obj = self.obj + obj = self.Object if create: # make sure previous group exists self.getConstraintGroup(True) @@ -950,7 +955,7 @@ class Assembly(AsmGroup): return ret def getPartGroup(self,create=False): - obj = self.obj + obj = self.Object if create: # make sure previous group exists self.getElementGroup(True) @@ -1098,5 +1103,3 @@ class ViewProviderAssembly(ViewProviderAsmGroup): def getIcon(self): return System.getIcon(self.ViewObject.Object) - - diff --git a/sys_sympy.py b/sys_sympy.py index 3a7ae4d..7145866 100644 --- a/sys_sympy.py +++ b/sys_sympy.py @@ -34,7 +34,7 @@ class _AlgoBase(with_metaclass(_AlgoType,object)): NeedJacobian = True def __init__(self,obj): - self.obj = obj + self.Object = obj @classmethod def getName(cls): @@ -45,14 +45,14 @@ class _AlgoBase(with_metaclass(_AlgoType,object)): ret = {} for key in self._common_options + self._options: name = _AlgoType.getPropertyInfo(key).Name - v = getattr(self.obj,name,None) + v = getattr(self.Object,name,None) if v: ret[name] = v return ret @property def Tolerance(self): - tol = self.obj.Tolerance + tol = self.Object.Tolerance return tol if tol else None @classmethod