๐ ShuffleScript ยท v2
The ShuffleScript Manual
ShuffleScript (.shuf) is a plain-text, line-by-line recipe for building 3D models in ShapeShuffle. Every button click, drag, and resize is logged as a readable text command.
On this page
1. Core Concepts
ShuffleScript is simple by design: no variables, loops, or complex functions. You can read a script top-to-bottom and understand exactly what it builds.
- Permanent Object IDs: Every shape gets a permanent number (e.g.
#1,#2) upon creation. Numbers count up continuously and are never reused, even if an object is deleted. - Active Selection: Most commands act on selected objects. Use
select N(orselect 1 2 3) to pick targets, orselect allfor everything. Creating a new shape automatically selects only that shape. - Units & Axes: All dimensions are in millimeters.
XandYform the floor plane;Zis always height. New shapes start resting on the floor grid (Z=0). - Named vs Positional Arguments: Commands accept positional values (
move 10 0 5) or explicit axis names (move x:10 z:5). - Syntax Rules: One command per line. Line spacing and indentation do not matter. Anything after
#or//is ignored as a comment.
2. Adding Shapes
Use add <shape> to place a new primitive at the origin. Creating a shape automatically makes that shape the new selection.
| Command | Description |
|---|---|
add box | Cube primitive |
add cylinder | Circular cylinder |
add sphere | Sphere solid |
add cone | Pointed cone |
add pyramid | 4-sided pyramid |
add hole | Pre-configured cylindrical cut-out shape |
add wedge / add rwedge | Roof wedge (apex up) / Ramp wedge (right-triangle) |
add torus | Ring / Donut shape |
add star | 5-point extruded star |
add pentagon / hexagon / heptagon | Extruded regular polygons |
add screw / add gear | Parametric thread / involute gear (configured via params) |
add text | 3D extruded lettering (configured via content) |
add ruler | Visual reference ruler (non-printable) |
3. Moving & Rotating
Transformations act on all currently selected objects around their collective center point.
move X Y Zโ Nudge position relative to current location (e.g.move z:10).moveto X Y Zโ Move to absolute floor coordinates. Use*to keep an axis unchanged (e.g.moveto 0 * 15).rotate AXIS DEG [FRAME]โ Pivot around selection center. SetFRAMEtoworld(default) orobjectfor local axes.mirror AXIS [FRAME]โ Reflect selection across an axis (X, Y, or Z).dropโ Rest the lowest point of the selection onto the floor bed (Z=0).
4. Object Properties
These commands modify single selected objects:
size X Y Zโ Sets exact width (X), depth (Y), and height (Z) in mm.radius Rโ Rounds corners by R mm. (Supported on boxes, cylinders, cones, pyramids, wedges, and N-gons).makehole/makesolidโ Toggles whether the selected object acts as a solid or a cutting tool.content TEXTโ Updates text string on 3D text objects (e.g.content Hello World).params ...โ Customizes parametric shapes:- Screw:
params DIAMETER PITCH LENGTH [CLEARANCE](clearance: exact, tight, normal, loose) - Gear:
params TEETH MODULE WIDTH BORE KEYWAY(0/1) - Torus:
params THICKNESS FIXED(0/1) ADVANCED(0/1)
- Screw:
5. Combining & Modifying
combine [N1 N2...]โ Fuses solids together and subtracts any holes in the group. If numbers are omitted, acts on current selection. The result receives a new permanent ID.overlap [N1 N2...]โ Intersects shapes, keeping only shared volume (requires at least 2 solids). Cannot be split.splitโ Restores original pre-combine shapes from history for the selected object.copyโ Duplicates selected objects in place (zero offset).deleteโ Permanently removes selected objects from the scene.
6. Pins & Mesh Imports
pin X Y/unpin X Yโ Adds or removes visual floor alignment markers (does not affect model geometry).import LABEL ... end importโ Embeds external STL/OBJ mesh data as raw vertex coordinates (generated automatically by the Import tool).
7. Worked Example
# Create a plate
add box # id:1
size 100 60 30
# Create a cutting cylinder
add cylinder # id:2
size 20 20 40
rotate x 90
move z:15
makehole
# Combine into a plate with a hole
select 1 2
combine # id:3
drop
# Duplicate the plate
select 3
copy # id:4
move x:150 # Shift copy to the side
# Split original back into parts
select 3
split # id:5,6 (original box and hole cylinder restored)
Back to
Overview
โ