Help & OpenSCAD Cheat Sheet
Welcome to SCADLite, a completely offline, browser-based OpenSCAD environment. Below you'll find quick keyboard shortcuts, additional use instructions, compatibility notes, and the OpenSCAD Cheat Sheet, which contains helpful OpenSCAD modeling syntax references.
Keyboard Shortcuts
[F1] : Toggle Help and OpenSCAD Cheat Sheet Menu
[Ctrl] + [,] : Toggle Workspace Settings
[F5] or [Ctrl] + [Enter] : Preview Model
[F6] : Render Model
[F7] : Export to STL/3MF
[Ctrl] + [S] : Download Editor Cache as .scad Text File
[Ctrl] + [O] : Open .scad File
Link Sharing, Workspaces, and Multiple Instances [Show]
Link sharing can be enabled in Workspace Settings. Enabling it gives you a second workspace, the Link Workspace, in addition to the Main Workspace. Workspaces can be toggled between freely. Code written in either workspace persists in local storage, written on a per keystoke basis. However, opening a URL containing an encoded model will overwrite the Link Workspace. When Link Sharing is enabled in settings, use the Share Link button to encode your current model into a URL and copy it to your clipboard for sharing. Note that complex models may run into problems, since URL parameters are limited in length. Link sharing is best suited for smaller models or demo purposes, not as a primary save method. Also, sharing a link while the Main Workspace is selected will overwrite the Link Workspace with the Main Workspace's code.
Multiple instances of the page/PWA can be open at once, but the Main and Link workspaces are shared, global storage, not separate per instance. Each new instance loads whichever version of the workspaces most recently saved. If you work with multiple instances open simultaneously, only the last modified code editor caches will be written to storage. Thus, an earlier instance's unsaved changes can be silently lost, even if that instance is still open. The moment a page refreshes, reloads, or a new instance is opened, it will pull the shared storage's current contents from the last instance that had code edited. If you need to work on more than one model at a time, save each to a .scad file as needed rather than relying on the workspace storage caches to hold multiple versions. Code is retained independently in each instance's code editor while that instance stays open, so multiple instances can be used simultaneously. Though when using multiple instances, avoid refreshing the instance you're relying on until you've saved your work as a .scad file. Note that [F5] keypresses are intercepted to perform a Preview operation, as opposed to refreshing. Though refreshing is still possible via right-click context menu or with [Ctrl] + [R] when using Firefox, so care is needed to not refresh the page unintentionally.
Compatibility Notes [Show]
Imported STL files must be in ASCII format. Binary-formatted STL files are not supported. OpenSCAD can be configured to export STLs in ASCII format in Preferences › Advanced › Export Features. Note that ASCII STLs are much larger in size.
OpenSCAD Cheat Sheet
Scroll down for syntax. Click to highlight, then copy and paste directly into the editor.
Syntax & Includes
var = value;
module name(...) { ... }
name();
function name(...) = ...;
include <filename.scad>
use <filename.scad>
2D Shapes
circle(radius | d=diameter);
square(size, center);
square([width, height], center);
polygon([points]);
polygon([points], [paths]);
text(text, size, font, halign, valign, spacing, direction, language, script);
3D Shapes
sphere(radius | d=diameter);
cube(size, center);
cube([width, depth, height], center);
cylinder(h, r|d, center);
cylinder(h, r1|d1, r2|d2, center);
polyhedron(points, faces, convexity);
Transformations
translate([x, y, z])
rotate([x, y, z])
rotate(a, [x, y, z])
scale([x, y, z])
resize([x, y, z], auto)
mirror([x, y, z])
multmatrix(m)
color("colorname", alpha)
color([r, g, b, a])
offset(r|delta, chamfer)
hull()
minkowski()
Boolean Operations
union()
difference()
intersection()
Extrusion & Projection
linear_extrude(height, center, convexity, twist, slices, scale, $fn, $fa, $fs)
rotate_extrude(angle, convexity, $fn, $fa, $fs)
projection(cut)
surface(file, center, invert, convexity)
Modifiers
* Disable (ignores the subtree)
! Show only (ignores everything else)
# Highlight (draws in transparent pink)
% Transparent (draws in transparent gray)
Loops & Conditionals
for (i = [start:end]) { ... }
for (i = [start:step:end]) { ... }
for (i = [...]) { ... }
intersection_for(i = [start:end]) { ... }
if (...) { ... } else { ... }
List Comprehensions
[ for (i = range|list) i ]
[ for (i = ...) if (condition(i)) i ]
[ for (i = ...) let (a = ...) a ]
Math & String Functions
abs(), sign(), sin(), cos(), tan(), acos(), asin(), atan(), atan2()
floor(), round(), ceil(), ln(), len(), let(), log(), pow(), sqrt(), exp()
rands(), min(), max(), norm(), cross(), concat(), lookup()
str(), chr(), ord(), search(), version(), version_num(), parent_module()
Other
echo(...)
render(convexity)
import("....ext")
Special Variables
$fa Minimum angle
$fs Minimum size
$fn Number of fragments
$t Animation step
$vpr Viewport rotation
$vpt Viewport translation
$vpd Viewport camera distance
$children Number of module children
The OpenSCAD Cheat Sheet content was adapted from the
OpenSCAD CheatSheet
written by Peter Uithoven
at Fablab Amersfoort,
and is licensed under
CC-BY.