parent
a3acabbdc4
commit
ddd3250fdd
33
assembly.py
33
assembly.py
|
@ -42,12 +42,21 @@ def setLinkProperty(obj,name,val):
|
||||||
setattr(obj,obj.getLinkExtPropertyName(name),val)
|
setattr(obj,obj.getLinkExtPropertyName(name),val)
|
||||||
|
|
||||||
def flattenSubname(obj,subname):
|
def flattenSubname(obj,subname):
|
||||||
|
'''
|
||||||
|
Falttern any AsmPlainGroups inside subname path. Only the first encountered
|
||||||
|
assembly along the subname path is considered
|
||||||
|
'''
|
||||||
|
|
||||||
func = getattr(obj,'flattenSubname',None)
|
func = getattr(obj,'flattenSubname',None)
|
||||||
if not func:
|
if not func:
|
||||||
return subname
|
return subname
|
||||||
return func(subname)
|
return func(subname)
|
||||||
|
|
||||||
def flattenSubnameRecursive(obj,subname):
|
def flattenLastSubname(obj,subname):
|
||||||
|
'''
|
||||||
|
Falttern any AsmPlainGroups inside subname path. Only the last encountered
|
||||||
|
assembly along the subname path is considered
|
||||||
|
'''
|
||||||
r = Assembly.find(obj,subname,recursive=True)[-1]
|
r = Assembly.find(obj,subname,recursive=True)[-1]
|
||||||
return subname[:-len(r.Subname)] + flattenSubname(r.Object,r.Subname)
|
return subname[:-len(r.Subname)] + flattenSubname(r.Object,r.Subname)
|
||||||
|
|
||||||
|
@ -710,8 +719,7 @@ class AsmElement(AsmBase):
|
||||||
for i,hierarchy in enumerate(hierarchies):
|
for i,hierarchy in enumerate(hierarchies):
|
||||||
for path in hierarchy:
|
for path in hierarchy:
|
||||||
if path.Assembly == assembly:
|
if path.Assembly == assembly:
|
||||||
sub = flattenSubname(path.Object,
|
sub = path.Subname[path.Subname.index('.')+1:]
|
||||||
path.Subname[path.Subname.index('.')+1:])
|
|
||||||
hierarchies[i] = AsmElement.Selection(
|
hierarchies[i] = AsmElement.Selection(
|
||||||
Element=element,
|
Element=element,
|
||||||
Group=path.Object,
|
Group=path.Object,
|
||||||
|
@ -771,7 +779,7 @@ class AsmElement(AsmBase):
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
group = selection.Group
|
group = selection.Group
|
||||||
subname = selection.Subname
|
subname = flattenSubname(selection.Group,selection.Subname)
|
||||||
|
|
||||||
if isTypeOf(group,AsmElementGroup):
|
if isTypeOf(group,AsmElementGroup):
|
||||||
# if the selected object is an element of the owner assembly, simply
|
# if the selected object is an element of the owner assembly, simply
|
||||||
|
@ -849,6 +857,7 @@ class AsmElement(AsmBase):
|
||||||
|
|
||||||
element = selection.Element
|
element = selection.Element
|
||||||
|
|
||||||
|
subname = flattenSubname(group,subname)
|
||||||
dot = subname.find('.')
|
dot = subname.find('.')
|
||||||
sobj = group.getSubObject(subname[:dot+1],1)
|
sobj = group.getSubObject(subname[:dot+1],1)
|
||||||
if not sobj:
|
if not sobj:
|
||||||
|
@ -2586,7 +2595,7 @@ class AsmRelationGroup(AsmBase):
|
||||||
sobj = obj.getSubObject(subname,1)
|
sobj = obj.getSubObject(subname,1)
|
||||||
if not isTypeOf(sobj,AsmConstraint):
|
if not isTypeOf(sobj,AsmConstraint):
|
||||||
return
|
return
|
||||||
subname = flattenSubnameRecursive(obj,subname)
|
subname = flattenLastSubname(obj,subname)
|
||||||
sub = Part.splitSubname(subname)[0].split('.')
|
sub = Part.splitSubname(subname)[0].split('.')
|
||||||
sub = sub[:-1]
|
sub = sub[:-1]
|
||||||
sub[-2] = '3'
|
sub[-2] = '3'
|
||||||
|
@ -2621,21 +2630,25 @@ class AsmRelationGroup(AsmBase):
|
||||||
if not moveInfo:
|
if not moveInfo:
|
||||||
return
|
return
|
||||||
info = moveInfo.ElementInfo
|
info = moveInfo.ElementInfo
|
||||||
subname = flattenSubnameRecursive(moveInfo.SelObj,moveInfo.SelSubname)
|
subname = moveInfo.SelSubname
|
||||||
if not info.Subname:
|
if not info.Subname:
|
||||||
|
subname = flattenLastSubname(moveInfo.SelObj, subname)
|
||||||
|
subs = subname.split('.')
|
||||||
|
elif moveInfo.SelSubname.endswith(info.Subname):
|
||||||
|
subname = flattenLastSubname(moveInfo.SelObj,
|
||||||
|
subname[:-len(info.Subname)])
|
||||||
subs = subname.split('.')
|
subs = subname.split('.')
|
||||||
elif subname.endswith(info.Subname):
|
|
||||||
subs = subname[:-len(info.Subname)].split('.')
|
|
||||||
else:
|
else:
|
||||||
sobj = moveInfo.SelObj.getSubObject(moveInfo.SelSubname,1)
|
sobj = moveInfo.SelObj.getSubObject(moveInfo.SelSubname,1)
|
||||||
|
subname = flattenLastSubname(moveInfo.SelObj, subname)
|
||||||
subs = subname.split('.')
|
subs = subname.split('.')
|
||||||
if isTypeOf(sobj,AsmElementLink):
|
if isTypeOf(sobj,AsmElementLink):
|
||||||
subs = subs[:-3]
|
subs = subs[:-3]
|
||||||
elif isTypeOf(sobj,AsmElement):
|
elif isTypeOf(sobj,AsmElement):
|
||||||
subs = subs[:-2]
|
subs = subs[:-2]
|
||||||
else:
|
else:
|
||||||
raise RuntimeError('Invalid selection {}.{}'.format(
|
raise RuntimeError('Invalid selection {}.{}, {}'.format(
|
||||||
objName(moveInfo.SelObj),moveInfo.SelSubname))
|
objName(moveInfo.SelObj),moveInfo.SelSubname,subname))
|
||||||
if isinstance(info.Part,tuple):
|
if isinstance(info.Part,tuple):
|
||||||
subs += ['','','']
|
subs += ['','','']
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user