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