some further work on Tool interface
This commit is contained in:
parent
808766f5a9
commit
4ae98a94ed
@ -144,7 +144,6 @@ class Tool:
|
|||||||
|
|
||||||
def planS(
|
def planS(
|
||||||
self,
|
self,
|
||||||
ccw: SupportsBool | None,
|
|
||||||
length: float,
|
length: float,
|
||||||
jog: float,
|
jog: float,
|
||||||
*,
|
*,
|
||||||
@ -181,12 +180,48 @@ class Tool:
|
|||||||
"""
|
"""
|
||||||
raise NotImplementedError(f'planS() not implemented for {type(self)}')
|
raise NotImplementedError(f'planS() not implemented for {type(self)}')
|
||||||
|
|
||||||
|
def planU(
|
||||||
|
self,
|
||||||
|
jog: float,
|
||||||
|
*,
|
||||||
|
in_ptype: str | None = None,
|
||||||
|
out_ptype: str | None = None,
|
||||||
|
**kwargs,
|
||||||
|
) -> tuple[Port, Any]:
|
||||||
|
"""
|
||||||
|
# NOTE: TODO: U-bend is WIP; this interface may change in the future.
|
||||||
|
|
||||||
|
Plan a wire or waveguide that travels exactly `jog` distance along the axis
|
||||||
|
perpendicular to its input port (i.e. a U-bend).
|
||||||
|
|
||||||
|
Used by `RenderPather`.
|
||||||
|
|
||||||
|
The output port must have an orientation identical to the input port.
|
||||||
|
|
||||||
|
The input and output ports should be compatible with `in_ptype` and
|
||||||
|
`out_ptype`, respectively.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
jog: The total offset from the input to output, along the perpendicular axis.
|
||||||
|
A positive number implies a rightwards shift (i.e. clockwise bend followed
|
||||||
|
by a counterclockwise bend)
|
||||||
|
in_ptype: The `ptype` of the port into which this wire's input will be `plug`ged.
|
||||||
|
out_ptype: The `ptype` of the port into which this wire's output will be `plug`ged.
|
||||||
|
kwargs: Custom tool-specific parameters.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
The calculated output `Port` for the wire.
|
||||||
|
Any tool-specifc data, to be stored in `RenderStep.data`, for use during rendering.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
BuildError if an impossible or unsupported geometry is requested.
|
||||||
|
"""
|
||||||
|
raise NotImplementedError(f'planU() not implemented for {type(self)}')
|
||||||
|
|
||||||
def render(
|
def render(
|
||||||
self,
|
self,
|
||||||
batch: Sequence[RenderStep],
|
batch: Sequence[RenderStep],
|
||||||
*,
|
*,
|
||||||
in_ptype: str | None = None,
|
|
||||||
out_ptype: str | None = None,
|
|
||||||
port_names: Sequence[str] = ('A', 'B'),
|
port_names: Sequence[str] = ('A', 'B'),
|
||||||
**kwargs,
|
**kwargs,
|
||||||
) -> ILibrary:
|
) -> ILibrary:
|
||||||
|
Loading…
Reference in New Issue
Block a user