diff --git a/masque/builder/pather_mixin.py b/masque/builder/pather_mixin.py index e2c8ca2..477c8aa 100644 --- a/masque/builder/pather_mixin.py +++ b/masque/builder/pather_mixin.py @@ -301,8 +301,8 @@ class PatherMixin(metaclass=ABCMeta): self.path_to(portspec_src, None, y=yd, **dst_args) else: # S-bend, delegate to implementations - tj, _ = port_src.measure_travel(port_dst) - self.pathS(*tj, **dst_args) + (travel, jog), _ = port_src.measure_travel(port_dst) + self.pathS(portspec_src, -travel, jog, **dst_args) elif numpy.isclose(angle, 0): raise BuildError('Don\'t know how to route a U-bend yet (TODO)!') else: diff --git a/masque/builder/tools.py b/masque/builder/tools.py index 08aaf4c..bb8a016 100644 --- a/masque/builder/tools.py +++ b/masque/builder/tools.py @@ -552,7 +552,7 @@ class AutoTool(Tool, metaclass=ABCMeta): if numpy.isclose(jog, 0): return numpy.zeros(2) - sbend_pat_or_tree = sbend.fn(jog) + sbend_pat_or_tree = sbend.fn(abs(jog)) sbpat = sbend_pat_or_tree if isinstance(sbend_pat_or_tree, Pattern) else sbend_pat_or_tree.top_pattern() dxy, _ = sbpat[sbend.in_port_name].measure_travel(sbpat[sbend.out_port_name]) return dxy @@ -802,15 +802,15 @@ class AutoTool(Tool, metaclass=ABCMeta): if data.b_transition: pat.plug(data.b_transition.abstract, {port_names[1]: data.b_transition.our_port_name}) if not numpy.isclose(data.jog_remaining, 0): - sbend_pat_or_tree = data.sbend.fn(data.jog_remaining, **(gen_kwargs | data.gen_kwargs)) + sbend_pat_or_tree = data.sbend.fn(abs(data.jog_remaining), **(gen_kwargs | data.gen_kwargs)) pmap = {port_names[1]: data.sbend.in_port_name} if isinstance(sbend_pat_or_tree, Pattern): - pat.plug(sbend_pat_or_tree, pmap, append=True) + pat.plug(sbend_pat_or_tree, pmap, append=True, mirrored=data.jog_remaining < 0) else: sbend_tree = sbend_pat_or_tree top = sbend_tree.top() sbend_tree.flatten(top) - pat.plug(sbend_tree[top], pmap, append=True) + pat.plug(sbend_tree[top], pmap, append=True, mirrored=data.jog_remaining < 0) if data.out_transition: pat.plug(data.out_transition.abstract, {port_names[1]: data.out_transition.our_port_name}) return tree @@ -831,7 +831,6 @@ class AutoTool(Tool, metaclass=ABCMeta): in_ptype = in_ptype, out_ptype = out_ptype, ) - tree, pat = Library.mktree(SINGLE_USE_PREFIX + 'pathS') pat.add_port_pair(names=port_names, ptype='unk' if in_ptype is None else in_ptype) self._renderS(data=data, tree=tree, port_names=port_names, gen_kwargs=kwargs)