3dSynth

Docs / SynthBlocks

Open in the interactive docs reader

SynthBlocks

SynthBlocks is a visual programming system for creating custom toolpaths and printer behaviour. Instead of editing a profile curve, you snap together logical blocks that describe what to print, how to move, and how to extrude — and the engine compiles it into G-code.

What can you build?

How it works

SynthBlocks uses a blocks-to-G-code pipeline:

  1. Author — drag blocks onto the canvas and snap them together
  2. Compile — the app translates your blocks into a typed data structure (Path Program IR)
  3. Generate — the engine interprets the IR, samples geometry into toolpath points, and writes G-code
  4. Preview — the 3D viewport shows the result in real time

This pipeline is deterministic: the same blocks with the same seed always produce the same output.

The interface

When you activate SynthBlocks, the workspace has three areas:

AreaWhat it does
Block canvas (left)Drag blocks from the toolbox, snap them together to build your program. Scroll to zoom; click + drag on empty space to pan. No scrollbars — endless canvas.
3D viewport (center)Live preview of the generated toolpath — same viewer as Profile mode
G-code inspector (bottom)View generated G-code, warnings, and print statistics

Your printer, nozzle, and material settings apply automatically — no reconfiguration needed.

The toolbox

Blocks are organized into ten categories in the toolbox sidebar. Each category has a distinct color:

CategoryPurpose
StructureToolpath root, path groups, sequences, loops
Geometry2D shapes — circles, polylines, curves
Z StrategyLift 2D geometry into 3D — spiral, stacked layers
TransformsMove, rotate, scale nested geometry
ProcessControl speed, flow, temperature, and G-code commands
TravelTravel moves, retraction, and unretraction
VariablesCreate and update named variables for use in loops
MathNumbers, context variables, expressions, randomness
SafetyBounds checking, sampling, and debug markers
Printer SettingsRead-only printer and build volume values

Your first program

Every SynthBlocks design starts with a Toolpath block (created automatically). Inside it, you build your toolpath.

A simple spiral vase uses just three blocks:

Example: Spiral Vase

Interactive preview is available in the interactive reader.

Interactive preview is available in the interactive reader.

Interactive preview is available in the interactive reader.

  1. The Toolpath block is already on the canvas with an empty Path Group
  2. From Z Strategy, drag a Spiral Up block into the Path Group
  3. From Geometry, drag a Circle block into the Spiral Up's geometry slot
  4. The viewport updates with a spiral cylinder

Add variation by dragging a Variable (normZ) and Map Range block into the Circle's radius input — the cylinder becomes a tapered vase.

Key concepts

Path Groups

A Path Group is an independent toolpath. The engine processes groups sequentially and inserts travel moves (with zhop and retraction) between them. Use multiple groups when you want separate, non-connected paths.

Scoping

Blocks that wrap other blocks (Translate, Rotate, Scale, Spiral Up) create a scope. Their effect only applies to the blocks nested inside them — they never affect blocks outside.

Seed and randomness

The Toolpath block has a seed field (shown only when you use a Random block). All Random blocks use this seed to produce deterministic output. Change the seed to get a different variation; keep it fixed for reproducible results.

Context variables

Math blocks can read context variables that the engine updates automatically during generation:
VariableRangeMeaning
zmmCurrent Z height
normZ0–1Normalized height (0 = bottom, 1 = top)
layerIndex0, 1, 2...Current layer number
t0–1Position along current segment
smmAbsolute path length so far
normS0–1Normalized path length

Use these with Map Range, Sin, or Clamp to create geometry and process values that change over height, position, or layer.

Named variables

The Variables category lets you create your own named variables. Click Create Variable, give it a name, and the toolbox automatically populates with ready-to-use Set and Get blocks for that variable. Unlike context variables, you control when and how named variables change — they are especially useful for accumulating values inside loops.

Variables with numeric initial values also appear as interactive controls in the 3D viewport, so you can drag to adjust values and see the result in real time without editing blocks. See the Variables documentation for details and examples.

Saving and presets

SynthBlocks designs are saved in .3dsynth project files, just like Profile designs. You can also save them as Design Presets to reuse or share. The block workspace is stored as part of the design module — no separate file format.