Skip to content

TypeScript Design API

Fluent authoring, lowering, simulation, verification, and G-code emission APIs.

Design

Source: sdk/ts/src/design.ts

ts
export class Design

Fluent builder for Dry L1 authoring operations and engine-backed resolution calls.

Method summary

MethodSignatureSampleSummary
geometrygeometry(width: number, height: number): thisSet the extrusion bead cross-section (mm).
extruderextruder(on: boolean): thisTurn the extruder on/off (off => subsequent moves are travels).
speedspeed(printSpeed: number): thisSet the print feedrate (mm/min).
pointpoint(x: number | null = null, y: number | null = null, z: number | null = null): thisMove to a point; an omitted axis is inherited from the running position.
arcarc(a: { cx: number; cy: number; x?: number | null; y?: number | null; z?: number | null; clockwise?: boolean }): thisA circular arc about (cx, cy) to an end point; clockwise => G2, else G3.
splinespline(points: [number | null, number | null, number | null][]): thisA Catmull-Rom spline from the running position through each (x, y, z) control point.
temperaturetemperature(nozzle: number): thisSet the nozzle temperature channel (°C).
fanfan(speed: number): thisSet the part-cooling fan channel (0..1).
flowflow(ratio: number): thisSet the flow multiplier channel (scales deposited volume; default 1.0).
tooltool(index: number): thisSet the active tool channel.
orientorient(i: number, j: number, k: number): thisSet the toolframe orientation: the tool-direction vector (i, j, k). Identity is +Z.
dwelldwell(seconds: number): thisPause in place for seconds (emits a G4 dwell).
manualGcodemanualGcode(text: string): thisInject verbatim custom G-code.
retractretract(distance: number | null = null, speed: number | null = null): thisRetract filament.
unretractunretract(distance: number | null = null, speed: number | null = null): thisPrime filament back after a retraction.
depositdeposit(volume: number, speed: number): thisStationary extrusion of a set volume (mm³) at feedrate (mm/min).
gcodegcode(printer = 'generic', relativeE = true, travelG1E0 = false, fiveAxis = false, rotaryAxes = 'ab'): string[]Author a pathResolve + emit motion g-code (an array of lines). rotaryAxes is the rotary-axes selector (the
simulatesimulate(printer = 'generic'): MetricsSimulateResolve + simulate; returns metrics (time, distances, material, peak flow).
irir(printer = 'generic'): ToolpathLower to the Dry IRResolve to the L2 Dry IR ({ version, segments }).
optimizedIroptimizedIr(printer = 'generic'): ToolpathOptimizeResolve through the standard L2 optimization pipeline.
balancedIrbalancedIr(printer = 'generic', kinematics?: MachineKinematics): ToolpathOptimizeResolve through the kinematics-aware balanced optimization pipeline. When kinematics is
binarybinary(printer = 'generic'): Uint8ArrayResolve + encode to the binary DRY1 format; returns the raw bytes.
verifyverify(printer = 'generic', maxFlow = 0, minTemp = 0, bounds: string | number[][] = '', monotonicZ = false, speedRange: string | [number, number] = '', maxRetractionDistance = 0, maxRetractionSpeed = 0, maxTravelWithoutRetract = 0, firstLayerHeightRange: string | [number, number] = '', firstLayerSpeedRange: string | [number, number] = '', kinematics?: MachineKinematics): ReportVerifyResolve + verify against machine-safety contracts; returns the safety report findings. The

geometry

ts
geometry(width: number, height: number): this

Parameters

ParameterTypeDefaultRequired
widthnumberYes
heightnumberYes

Returns: this

Set the extrusion bead cross-section (mm).

extruder

ts
extruder(on: boolean): this

Parameters

ParameterTypeDefaultRequired
onbooleanYes

Returns: this

Turn the extruder on/off (off => subsequent moves are travels).

speed

ts
speed(printSpeed: number): this

Parameters

ParameterTypeDefaultRequired
printSpeednumberYes

Returns: this

Set the print feedrate (mm/min).

point

ts
point(x: number | null = null, y: number | null = null, z: number | null = null): this

Parameters

ParameterTypeDefaultRequired
xnumber | nullnullNo
ynumber | nullnullNo
znumber | nullnullNo

Returns: this

Move to a point; an omitted axis is inherited from the running position.

arc

ts
arc(a: { cx: number; cy: number; x?: number | null; y?: number | null; z?: number | null; clockwise?: boolean }): this

Parameters

ParameterTypeDefaultRequired
a{ cx: number; cy: number; x?: number | null; y?: number | null; z?: number | null; clockwise?: boolean }Yes

Returns: this

A circular arc about (cx, cy) to an end point; clockwise => G2, else G3.

spline

ts
spline(points: [number | null, number | null, number | null][]): this

Parameters

ParameterTypeDefaultRequired
points[number | null, number | null, number | null][]Yes

Returns: this

A Catmull-Rom spline from the running position through each (x, y, z) control point.

temperature

ts
temperature(nozzle: number): this

Parameters

ParameterTypeDefaultRequired
nozzlenumberYes

Returns: this

Set the nozzle temperature channel (°C).

fan

ts
fan(speed: number): this

Parameters

ParameterTypeDefaultRequired
speednumberYes

Returns: this

Set the part-cooling fan channel (0..1).

flow

ts
flow(ratio: number): this

Parameters

ParameterTypeDefaultRequired
rationumberYes

Returns: this

Set the flow multiplier channel (scales deposited volume; default 1.0).

tool

ts
tool(index: number): this

Parameters

ParameterTypeDefaultRequired
indexnumberYes

Returns: this

Set the active tool channel.

orient

ts
orient(i: number, j: number, k: number): this

Parameters

ParameterTypeDefaultRequired
inumberYes
jnumberYes
knumberYes

Returns: this

Set the toolframe orientation: the tool-direction vector (i, j, k). Identity is +Z.

dwell

ts
dwell(seconds: number): this

Parameters

ParameterTypeDefaultRequired
secondsnumberYes

Returns: this

Pause in place for seconds (emits a G4 dwell).

manualGcode

ts
manualGcode(text: string): this

Parameters

ParameterTypeDefaultRequired
textstringYes

Returns: this

Inject verbatim custom G-code.

retract

ts
retract(distance: number | null = null, speed: number | null = null): this

Parameters

ParameterTypeDefaultRequired
distancenumber | nullnullNo
speednumber | nullnullNo

Returns: this

Retract filament.

unretract

ts
unretract(distance: number | null = null, speed: number | null = null): this

Parameters

ParameterTypeDefaultRequired
distancenumber | nullnullNo
speednumber | nullnullNo

Returns: this

Prime filament back after a retraction.

deposit

ts
deposit(volume: number, speed: number): this

Parameters

ParameterTypeDefaultRequired
volumenumberYes
speednumberYes

Returns: this

Stationary extrusion of a set volume (mm³) at feedrate (mm/min).

gcode

Author a path rendered preview
Sample: Author a pathCreate a fluent L1 design and emit motion G-code.typescript: docs/site/examples/author.ts · python: docs/site/examples/author.py
ts
gcode(printer = 'generic', relativeE = true, travelG1E0 = false, fiveAxis = false, rotaryAxes = 'ab'): string[]

Parameters

ParameterTypeDefaultRequired
printerany'generic'No
relativeEanytrueNo
travelG1E0anyfalseNo
fiveAxisanyfalseNo
rotaryAxesany'ab'No

Returns: string[]

Resolve + emit motion g-code (an array of lines). rotaryAxes is the rotary-axes selector (the ab/ac/bc STRING) choosing which two rotary axes carry the toolframe orientation in 5-axis emit — distinct from the machine motion-limits kinematics object used by balancedIr / verify.

simulate

Simulate rendered preview
Sample: SimulateCompute toolpath metrics such as time, distances, material, and peak flow.typescript: docs/site/examples/simulate.ts · python: docs/site/examples/simulate.py
ts
simulate(printer = 'generic'): Metrics

Parameters

ParameterTypeDefaultRequired
printerany'generic'No

Returns: Metrics

Resolve + simulate; returns metrics (time, distances, material, peak flow).

ir

Lower to the Dry IR rendered preview
Sample: Lower to the Dry IRResolve an authored design into Dry's structured L2 toolpath IR.typescript: docs/site/examples/lower.ts · python: docs/site/examples/lower.py
ts
ir(printer = 'generic'): Toolpath

Parameters

ParameterTypeDefaultRequired
printerany'generic'No

Returns: Toolpath

Resolve to the L2 Dry IR ({ version, segments }).

optimizedIr

Optimize rendered preview
Sample: OptimizeResolve through the optimization pipeline and inspect optimized IR.typescript: docs/site/examples/optimize.ts · python: docs/site/examples/optimize.py
ts
optimizedIr(printer = 'generic'): Toolpath

Parameters

ParameterTypeDefaultRequired
printerany'generic'No

Returns: Toolpath

Resolve through the standard L2 optimization pipeline.

balancedIr

Optimize rendered preview
Sample: OptimizeResolve through the optimization pipeline and inspect optimized IR.typescript: docs/site/examples/optimize.ts · python: docs/site/examples/optimize.py
ts
balancedIr(printer = 'generic', kinematics?: MachineKinematics): Toolpath

Parameters

ParameterTypeDefaultRequired
printerany'generic'No
kinematicsMachineKinematicsNo

Returns: Toolpath

Resolve through the kinematics-aware balanced optimization pipeline. When kinematics is provided its acceleration/junction-velocity limits shape the output (arc centripetal speed clamping + junction-velocity capping) on top of all standard optimizations. Omitting kinematics falls back to the safe pipeline (same as optimizedIr).

binary

ts
binary(printer = 'generic'): Uint8Array

Parameters

ParameterTypeDefaultRequired
printerany'generic'No

Returns: Uint8Array

Resolve + encode to the binary DRY1 format; returns the raw bytes.

verify

Verify rendered preview
Sample: VerifyCheck a resolved design against machine-safety contracts and inspect findings.typescript: docs/site/examples/verify.ts · python: docs/site/examples/verify.py
ts
verify(printer = 'generic', maxFlow = 0, minTemp = 0, bounds: string | number[][] = '', monotonicZ = false, speedRange: string | [number, number] = '', maxRetractionDistance = 0, maxRetractionSpeed = 0, maxTravelWithoutRetract = 0, firstLayerHeightRange: string | [number, number] = '', firstLayerSpeedRange: string | [number, number] = '', kinematics?: MachineKinematics): Report

Parameters

ParameterTypeDefaultRequired
printerany'generic'No
maxFlowany0No
minTempany0No
boundsstring | number[][]''No
monotonicZanyfalseNo
speedRangestring | [number, number]''No
maxRetractionDistanceany0No
maxRetractionSpeedany0No
maxTravelWithoutRetractany0No
firstLayerHeightRangestring | [number, number]''No
firstLayerSpeedRangestring | [number, number]''No
kinematicsMachineKinematicsNo

Returns: Report

Resolve + verify against machine-safety contracts; returns the safety report findings. The structured limits cross to the engine as native typed contracts (no CSV round-trip):

  • bounds — build volume as [[x0,x1],[y0,y1],[z0,z1]] (mm). The legacy CSV string "x0,x1,y0,y1,z0,z1" is still accepted for backward compatibility.
  • speedRange — extruding feedrate [min, max] (mm/min); the legacy "min,max" CSV is accepted.
  • maxFlow (mm³/s), minTemp (°C), monotonicZ (bool); 0 means unset for the scalar ceilings.
  • maxRetractionDistance (mm), maxRetractionSpeed (mm/min), maxTravelWithoutRetract (mm) — retraction / stringing limits.
  • firstLayerHeightRange, firstLayerSpeedRange — first-layer adhesion limits, each [min, max] (or a "min,max" CSV string).
  • kinematics — machine motion limits (max_acceleration_mm_s2 and/or max_junction_velocity_mm_s). When supplied, enables the peak-acceleration and junction-velocity verify rules; omitting it disables them.