Visual Logic

Program the Impossible.
Visual Toolpath Logic.

Visual block-based programming for custom G-code. Design woven structures, non-planar layers, and algorithmic patterns that traditional CAD can't handle.

SynthBlocks Interface

How it works

SynthBlocks uses a blocks-to-G-code pipeline. The same blocks with the same seed always produce the same output—deterministic and reproducible.

SynthBlocks toolpath: Toolpath with paths, Set Radius, Travel Relative, Path Group with Circle

Logic flows from top to bottom. Nested blocks define the hierarchy of the toolpath.

Generated 3D Toolpath Preview

Design

Drag blocks to the canvas and snap them together. Build circles, spirals, and transforms in minutes—no code, no scripting. Your toolpath, your way.

Tweak

Change radius, height, or any variable and watch the 3D preview update instantly. Nail the shape before you hit export.

Export

The engine turns your blocks into clean G-code—geometry sampled, speeds and retractions applied. Ready for your printer.

The toolbox

Ten block categories, each with its own color. Snap them together to build any toolpath you can imagine.

Structure

The skeleton of every program. Toolpath roots, Path Groups, loops, and sequences that define execution order and scope.

View in docs

Geometry

2D shapes that become your toolpath: circles, rectangles, polylines, Bezier curves, polygons, stars, spirals, slots, and stroke/outline text.

View in docs

Z Strategy

Turn flat shapes into 3D prints. Spiral Up for seamless vases; Stack Layers for layered builds with full per-layer control.

View in docs

Transforms

Position, rotate, and scale geometry anywhere on the bed. Nest transforms to build complex assemblies from simple shapes.

View in docs

Process

Fine-tune the print in real time. Set speed, flow, temperature, fan, acceleration, jerk, and inject raw G-code at any point.

View in docs

Travel

Control non-printing moves between paths. Retraction, unretraction, dwell, and explicit travel positioning with full XYZ control.

View in docs

Variables

Create named values you control. Set a variable, read it anywhere, and watch it update live in the 3D viewport as an interactive slider.

View in docs

Math

The engine room. Arithmetic, trigonometry, Map Range, Clamp, Random, Noise, and context variables like normZ and layerIndex.

View in docs

Safety

Guard rails for your design. Bounds checking warns when paths leave the bed; Sampling controls point density; Preview Markers help debug.

View in docs

Printer Settings

Read-only access to your machine config: bed dimensions, layer height, line width, and nozzle diameter—so your program adapts to any printer.

View in docs

Your first program

A growing-radius spiral vase in under a minute. Variables, math, and geometry—all wired together visually.

SynthBlocks program: growing-radius spiral vase with variables, Travel Relative, Spiral Up, and Circle blocks

Block-by-block breakdown

  1. Toolpath—the program root. Every SynthBlocks design starts here.
  2. Set Variable Radius = 20 and increment = 0.25. Both are flagged show, so they appear as live sliders in the viewport—tweak them without touching the blocks.
  3. Travel Relative X = Bedsize X / 2, Y = Bedsize Y / 2, Z = Layer Height / 2. Centers the nozzle on the bed and lifts it to the first layer.
  4. Path Group—an independent toolpath group. Everything inside it prints as one continuous path.
  5. Spiral Up from Z 0.2 mm to 50 mm, 50 rotations. Extrudes a continuous spiral—no layer seams.
  6. Set Variable Radius = Get Radius + Get increment. Each revolution adds 0.25 mm to the radius, so the circle grows outward—producing the tapered vase shape.
  7. Circle cx 0, cy 0, radius = Get Radius. Draws each revolution at the current radius value.
Try it yourself: Change the increment slider to 0 for a straight cylinder, or crank it to 0.5 for a wider flare. The viewport updates instantly.

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.

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 Set and Get blocks. Variables with numeric initial values also appear as interactive controls.

Seed and randomness

The Toolpath block has a seed field (shown when you use a Random block). All Random blocks use this seed for 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.

Tutorials

Learn SynthBlocks step by step. Each tutorial builds a printable design from scratch and introduces new blocks and techniques along the way.

24+

SynthBlocks tutorials

48+

G-code lessons

Saving & 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.

Ready to program?

Build toolpath logic visually. No code required.