assembly: change GoToRelation behavior on constraint and element

This commit is contained in:
Zheng, Lei 2019-04-30 12:08:47 +08:00
parent ddd3250fdd
commit 7f72f93d4e

View File

@ -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]