◧ print-bench

calibration-cube

Simple dimensional-accuracy test print; also serves as the repo's starter design demonstrating the parameter conventions.

Overview

Product shot: the printed cube, satin orange PLA on a studio backdrop

Product Hero Studio render 1 / 5

Product shot: the printed cube, satin orange PLA on a studio backdrop

A 20 mm test cube for checking your printer's dimensional accuracy — and the starter design demonstrating this repo's parameter conventions. The bottom edges carry a 0.6 mm 45° chamfer so the first layer releases cleanly, and the top face is engraved with the cube's edge length, so every print labels its own intended size.

What you get

No assembly. Two ways to print:

  • cube — the starter single cube, 20 × 20 × 20 mm at default settings (size is parametric), with chamfered bottom edges and the edge length engraved 0.4 mm deep into the top face. Optional X/Y/Z side letters are off by default (face_letters).
  • Multi-size strip — four separate cubes (5 / 10 / 20 / 30 mm) as distinct objects on one plate, not a fused bar. The 20 / 30 tops read as those numbers. The 10 mm marker is slightly thickened so its engraved strokes clear a 0.4 mm nozzle. The 5 mm cube is the smallest on the plate (cube5); its top engraving is a blob at showroom and slice scale, not a readable 5 — do not treat that mark as the size label.

Deliverable for the strip. STL carries no object separation, so the printable strip is the multi-object 3MF from ./scripts/plate.sh calibration-cube (build/calibration-cube-plate.3mf) — cube5, cube10, cube20, cube30 as four objects. part="sweep" is a layout preview only; do not slice that STL. Import the plate (or the four part STLs) and keep them as separate objects, side by side and flat. Leave the 4 mm air gap; do not add a brim. The 5 mm cube's first layer after the 0.6 mm chamfer is a 3.8 mm patch — small, but that is the dimensional sample, not a defect to pad.

  • Material: any — use the filament you want to calibrate
  • Layer height: 0.2 mm or finer (the engraved marker is sized to survive slicing at 0.2 mm layers)
  • Infill: 100% if you'll check dimensional accuracy under load; otherwise your usual default
  • Supports: none needed
  • Brim: no brim — PrusaSlicer's skirt default is fine. On the multi-size strip, leave the 4 mm air gap between cubes; Bambu Studio's stock Auto brim can pad the 5 mm cube's 3.8 mm first-layer patch and chain the four objects across that gap.
  • Orientation: as modeled — flat face down
  • Seam: park the seam on a rear corner before you measure. A stock aligned seam on a face leaves a ridge a caliper will catch. This is slicer guidance (the model does not force a face seam): PrusaSlicer → Seam position → Rear, or paint the seam to a back corner; Bambu Studio → Seam position → Back, or use scarf seam / paint the seam to a back corner.

Parameters

ParameterDefaultWhat it does
partcubecube (parametric), cube5/cube10/cube20/cube30 (fixed strip sizes), or sweep (layout preview)
size20 mmEdge length of the cube part; the engraved marker updates to match (ignored by fixed-size parts)
bottom_chamfer0.6 mm45° chamfer on the bottom edges so the first layer releases cleanly (0 to disable)
face_lettersfalseEngrave X / Y / Z on the side faces so a caliper reading names its axis; off keeps the clean dimensional cube. Faces under 10 mm (the 5 mm cube) stay blank.
$fn64Curve resolution — 32 while iterating, 64+ for production

All parameters are at the top of calibration-cube.scad, grouped in Customizer sections; override on the command line with -D 'size=25', -D 'part="cube10"', or -D 'face_letters=true'.

Assembly & use

Nothing to assemble. Print a cube (or the strip plate), then measure the X, Y, and Z faces with calipers and compare against the intended size — on X and Y, measure above the bottom chamfer, not on the bed footprint. The default 20 mm cube (and the 10 / 20 / 30 strip cubes) engrave that size on top. The 5 mm cube does not: identify it as the smallest object on the plate. If you want a different single reference size, change size and reprint — the marker follows automatically. Turn on face_letters to stamp X / Y / Z on the side faces when you need to attribute which axis is off.

Design rationale and modeling decisions live in NOTES.md.

Workbench

View in 3D

Inspect the real geometry — drag to rotate, scroll to zoom. The model is rendered from this design's own source at its default settings, right in your browser; nothing is uploaded.

Make it fit

This design has 5 tunable parameters. Change them and render your own STL — OpenSCAD runs in your browser, so nothing is uploaded and nothing is installed.

An STL you configure here is ungated. The files this project ships have each passed a printability check and a PrusaSlicer test-slice; your variant has not. Treat it as a starting point, and print the fit coupon first if the design has one.

History

History of work together

  1. 2026-10-10 commit · git

    Refuse non-positive t, width, and E in bistable_arch_fs / span_for (#796)

    Shai Perednik shai
  2. 2026-10-10 commit · git

    Clamp stencil-glyph diagonals to 0.8 mm; refuse negative spacing (#788)

    Shai Perednik shai
  3. 2026-10-04 decision · PM.md

    Ship B2 as optional engraved X/Y/Z on the side faces, default off

    Keel approved the charter item. Letters are 0.4 mm pockets on vertical faces (no overhang); off keeps the starter 20 mm cube a clean dimensional check. The 5 mm top mark is a blob — identify that cube by plate position, not the glyph; no brim, keep the 4 mm strip gap; seam is slicer-rear-corner guidance; printable story stays the four-object plate 3MF

    Vera vera
  4. 2026-10-04 decision · PM.md

    Tighten size-sweep framing 25,22,0.42 → 20,32,0.60 (same 1280×720, orange/satin)

    Drik showroom-distance hunch: 10/20/30 read clean, the 5 is a tiny mark; raise zoom and elev so the 5 mm cube fills more of the frame. Camera-only — the grown 5 mm glyph remains a blob, not a readable size label

    Vera vera
  5. 2026-10-04 decision · PM.md

    Add tier-1 size-sweep studio shot of the B1 strip layout

    Drik fitness pass: showroom sold only the 20 mm cube while README owned the strip; charter allows adding a shot row, never repurposing

    Vera vera
  6. 2026-10-04 commit · git

    calibration-cube: multi-size sweep strip (charter B1) (#634)

    Shai Perednik shai
  7. 2026-10-04 commit · git

    lib/compliant.scad stage 1: bistable arch + root fillets (#202) (#758)

    Shai Perednik shai
  8. 2026-10-04 commit · git

    lib/spaceframe.scad — parametric space-frame truss generator (warren / pratt / vierendeel) (#755)

    Shai Perednik shai
  9. 2026-10-03 commit · git

    lib/stencil-glyphs.scad + two-sided ci.fusecheck assert (exactly-N bodies) (#612) (#618)

    Shai Perednik shai
  10. 2026-10-03 commit · git

    Add lib: helical_window brand-mark module + sever guard (#642)

    Shai Perednik shai
  11. 2026-10-03 commit · git

    lib/bevel.scad — FDM bevel and spur gear pairs, one generator, one tol (#619)

    Shai Perednik shai
  12. 2026-09-12 decision · PM.md

    Ship B1 as four separate cubes on a ci.plate 3MF, not a fused strip bar

    Each cube is an independent dimensional sample; air-gapping matches the repo's sweep-strip convention and keeps STL/3MF separation honest

    Vera vera
  13. 2026-08-30 commit · git

    Categorize the design catalog: NUGGS + technique-domain groups (#374) (#501)

    Shai Perednik shai
  14. 2026-08-30 commit · git

    Declare motion.conf seed explicitly (calibration-cube, sushi-battleship-tracker) (#419) (#492)

    Shai Perednik shai
  15. 2026-08-29 commit · git

    render.sh: emit the --render form the installed OpenSCAD build accepts (fixes the render camera opt) (#408)

    Shai Perednik shai
  16. 2026-08-29 commit · git

    Fix teardrop_hole() point orientation to +Z as documented; pin it with a mates manifest (#424)

    Shai Perednik shai
  17. 2026-08-14 commit · git

    Note lifestyle-shot provenance: committed stills predate seeding

  18. 2026-08-14 commit · git

    CI: regenerate previews and product pages

  19. 2026-08-14 commit · git

    Add tier-1.5 AI product-still stage: multi-stage PM-controlled image pipeline

  20. 2026-08-14 commit · git

    CI: regenerate previews and product pages

  21. 2026-08-13 commit · git

    Switch tier-2 lifestyle shots to image-to-image seeded from real renders

  22. 2026-08-10 commit · git

    CI: regenerate previews and product pages

  23. 2026-08-10 commit · git

    CI: regenerate previews and product pages

  24. 2026-08-08 decision · PM.md

    Add a high three-quarter size-marker studio shot beside the hero

    The hero shows the engraved size edge-on; the marker is the product's one trick and deserves a shot that makes it the subject

    Vera vera
  25. 2026-08-08 decision · PM.md

    Add a bench-calipers tier-2 lifestyle scene

    A cube-with-calipers scene reinforces the calibration use case; cosmetic and disclosed

    Vera vera