assembly: change GoToRelation behavior on constraint and element
This commit is contained in:
parent
ddd3250fdd
commit
7f72f93d4e
32
assembly.py
32
assembly.py
|
@ -52,13 +52,15 @@ def flattenSubname(obj,subname):
|
||||||
return subname
|
return subname
|
||||||
return func(subname)
|
return func(subname)
|
||||||
|
|
||||||
def flattenLastSubname(obj,subname):
|
def flattenLastSubname(obj,subname,last=None):
|
||||||
'''
|
'''
|
||||||
Falttern any AsmPlainGroups inside subname path. Only the last encountered
|
Falttern any AsmPlainGroups inside subname path. Only the last encountered
|
||||||
assembly along the subname path is considered
|
assembly along the subname path is considered
|
||||||
'''
|
'''
|
||||||
r = Assembly.find(obj,subname,recursive=True)[-1]
|
if not last:
|
||||||
return subname[:-len(r.Subname)] + flattenSubname(r.Object,r.Subname)
|
last = Assembly.find(obj,subname,recursive=True)[-1]
|
||||||
|
return subname[:-len(last.Subname)] \
|
||||||
|
+ flattenSubname(last.Object,last.Subname)
|
||||||
|
|
||||||
def expandSubname(obj,subname):
|
def expandSubname(obj,subname):
|
||||||
func = getattr(obj,'expandSubname',None)
|
func = getattr(obj,'expandSubname',None)
|
||||||
|
@ -2629,18 +2631,30 @@ class AsmRelationGroup(AsmBase):
|
||||||
def gotoRelation(moveInfo):
|
def gotoRelation(moveInfo):
|
||||||
if not moveInfo:
|
if not moveInfo:
|
||||||
return
|
return
|
||||||
info = moveInfo.ElementInfo
|
|
||||||
subname = moveInfo.SelSubname
|
subname = moveInfo.SelSubname
|
||||||
|
info = moveInfo.ElementInfo
|
||||||
|
sobj = moveInfo.SelObj.getSubObject(moveInfo.SelSubname,1)
|
||||||
|
|
||||||
|
if isTypeOf(sobj,AsmConstraint):
|
||||||
|
AsmRelationGroup.gotoRelationOfConstraint(
|
||||||
|
moveInfo.SelObj, moveInfo.SelSubname)
|
||||||
|
return
|
||||||
|
|
||||||
|
last = moveInfo.Hierarchy[-1]
|
||||||
|
if len(moveInfo.Hierarchy)>1 and \
|
||||||
|
isTypeOf(sobj,(AsmConstraint,AsmElement,AsmElementLink)):
|
||||||
|
info = getElementInfo(last.Assembly, last.Subname)
|
||||||
|
|
||||||
if not info.Subname:
|
if not info.Subname:
|
||||||
subname = flattenLastSubname(moveInfo.SelObj, subname)
|
subname = flattenLastSubname(moveInfo.SelObj,subname,last)
|
||||||
subs = subname.split('.')
|
subs = subname.split('.')
|
||||||
elif moveInfo.SelSubname.endswith(info.Subname):
|
elif moveInfo.SelSubname.endswith(info.Subname):
|
||||||
subname = flattenLastSubname(moveInfo.SelObj,
|
subname = flattenLastSubname(
|
||||||
subname[:-len(info.Subname)])
|
moveInfo.SelObj, subname[:-len(info.Subname)],last)
|
||||||
subs = subname.split('.')
|
subs = subname.split('.')
|
||||||
else:
|
else:
|
||||||
sobj = moveInfo.SelObj.getSubObject(moveInfo.SelSubname,1)
|
subname = flattenLastSubname(moveInfo.SelObj, subname, last)
|
||||||
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]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user