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.
Logic flows from top to bottom. Nested blocks define the hierarchy of the toolpath.
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 docsGeometry
2D shapes that become your toolpath: circles, rectangles, polylines, Bezier curves, polygons, stars, spirals, slots, and stroke/outline text.
View in docsZ Strategy
Turn flat shapes into 3D prints. Spiral Up for seamless vases; Stack Layers for layered builds with full per-layer control.
View in docsTransforms
Position, rotate, and scale geometry anywhere on the bed. Nest transforms to build complex assemblies from simple shapes.
View in docsProcess
Fine-tune the print in real time. Set speed, flow, temperature, fan, acceleration, jerk, and inject raw G-code at any point.
View in docsTravel
Control non-printing moves between paths. Retraction, unretraction, dwell, and explicit travel positioning with full XYZ control.
View in docsVariables
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 docsMath
The engine room. Arithmetic, trigonometry, Map Range, Clamp, Random, Noise, and context variables like normZ and layerIndex.
View in docsSafety
Guard rails for your design. Bounds checking warns when paths leave the bed; Sampling controls point density; Preview Markers help debug.
View in docsPrinter 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 docsYour first program
A growing-radius spiral vase in under a minute. Variables, math, and geometry—all wired together visually.
Block-by-block breakdown
- Toolpath—the program root. Every SynthBlocks design starts here.
- Set Variable
Radius = 20andincrement = 0.25. Both are flagged show, so they appear as live sliders in the viewport—tweak them without touching the blocks. - 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.
- Path Group—an independent toolpath group. Everything inside it prints as one continuous path.
- Spiral Up from Z 0.2 mm to 50 mm, 50 rotations. Extrudes a continuous spiral—no layer seams.
- 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. - Circle cx 0, cy 0, radius = Get Radius. Draws each revolution at the current radius value.
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:
| Variable | Range | Meaning |
|---|---|---|
z | mm | Current Z height |
normZ | 0–1 | Normalized height (0 = bottom, 1 = top) |
layerIndex | 0, 1, 2… | Current layer number |
t | 0–1 | Position along current segment |
s | mm | Absolute path length so far |
normS | 0–1 | Normalized 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.
Simple Pyramid
Use a For Z loop and Map Range to shrink a rectangle from a wide base to a point at the top.
BeginnerTwisted Prism
Create a triangular prism that twists as it rises using Rotate, Map Range, and the Polygon block.
BeginnerSine Wave Vase
Combine Sin with arithmetic blocks to make walls ripple in and out. Sculpt waves interactively with viewport sliders.
BeginnerBumpy Texture
Use a high-point Star block to create vertical ribs that look like knurling or corrugation—no complex math required.
BeginnerOrganic Bezier Vase
Build a sculptural vase with a Bezier curve cross-section that pulsates in and out as it rises using Scale and Sin.
IntermediateTwisted Tray
Design a rounded-corner tray that twists gently from base to top—like a candy dish or jewelry holder.
Intermediate24+
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.