Documentation

Write parametric 3D models as code, see live previews, and share via short URLs.

Guides

Reference

PPSCAD Language Reference →

Complete documentation for the PPSCAD scripting language.

Quick example

// A box with a cylindrical hole through it
param width: float = 30 [10:100] "Width (mm)"
param height: float = 20 [5:50] "Height (mm)"
param depth: float = 10 [2:30] "Depth (mm)"
param hole_radius: float = 4 [1:15] "Hole radius (mm)"

difference {
  cube(width, height, depth)
  translate(width / 2, height / 2, -1)
    cylinder(h: depth + 2, r: hole_radius)
}

This creates a box with a cylindrical hole through it. The parameters appear as sliders in the parameter panel on the right.

PPSCAD at a glance

PPSCAD is inspired by OpenSCAD and JSCAD, with a clean modern syntax:

Primitives

cube(size) or cube(x, y, z)

Axis-aligned box. Single number creates a cube.

cylinder(h: 20, r: 5)

Cylinder. Use r1/r2 for a cone. Supports named or positional args.

sphere(r)

Sphere centered at the origin.

Boolean operations

union { ... }

Combine all children into one shape.

difference { ... }

First child minus all subsequent children.

intersection { ... }

Keep only the overlapping volume.

Transforms

translate(x, y, z) child

Move geometry. Takes a single child or { block }.

rotate(x, y, z) child

Rotate around each axis in degrees.

scale(factor) child

Scale uniformly or per axis.

2D to 3D

extrude(height) circle(r)

Linear extrusion of a 2D shape.

revolve() translate(15, 0) circle(3)

Rotational sweep around the Y axis.

Parameters

Parameters let users tweak your model without editing code. Declare them with the param keyword. When you change a slider, the model re-runs automatically.

Syntax

param name: type = default [min:max:step] "Label" "Description"

Parameter types

// Number with slider
param teeth: int = 20 [6:200] "Number of teeth"

// Float with custom step
param module: float = 2.0 [0.5:10:0.01] "Module (mm)"

// Boolean toggle (checkbox)
param chamfer: bool = true "Add chamfer"

// Dropdown select
param style: choice = round ["round", "square", "hex"] "Head style"

Sharing

Click Save to store your design and get a short URL. Anyone with the link can open your model, adjust the parameters, and download the STL.

Parameters can also be shared via URL query strings, e.g. ?width=50&height=30.