print-bench

captive-spinner

A one-piece, support-free, no-assembly fidget: a rotor ring captured on a fixed post + cap, spinning about the vertical axis after you shear the break-in fusion.

Overview

Studio product shot of the purple 3D-printed captive-spinner

Hero Detail 1 / 2

Studio product shot of the purple 3D-printed captive-spinner

A one-piece fidget spinner that comes off the print bed already assembled and spinning — no supports, no assembly. A rotor is captured on a fixed post under a 45° cone cap; the first spin shears the microscopic print-in-place fusion and then it runs free. A worked example of print-in-place kinematics (docs/advanced-techniques.md, Domain 3).

What you get

  • captive-spinner — one print, 44 mm across × 16.8 mm tall, made of two separate bodies (fixed base+post+cap, and the free rotor ring, OD 32 × 10 wide with six finger scallops).
  • Material: PLA is fine
  • Layer height: 0.2 mm (the clearances are quantized to it — see below)
  • Infill: 15–20 %
  • Supports: none needed — the ring's underside bridges over the axial gap by design, and the cap's cone is a self-supporting 45° lip
  • Orientation: as modelled (base on the bed, axis vertical)
  • First use: give the rotor a firm first spin to break it free.

The two gaps are deliberately different numbers because different physics govern them: the radial bore↔post gap is spread-limited so it's tight and derived from your process constants (k_xy · line_w ≈ 0.21 with a 0.4 mm nozzle), while the axial float below/above the rotor is sag-limited and snapped to whole layers (z_layers · layer_h = 0.4). A single global tolerance is the classic print-in-place bug.

Parameters

ParameterDefaultWhat it does
k_xy0.45radial clearance factor — the tuning knob for the rotor↔post fit
z_layers2axial float in whole layers (sag-limited)
nozzle_d0.4 mmyour nozzle — drives line_w and therefore xy_tol
layer_h0.2 mmdrives the axial gap quantization
rotor_or16 mmrotor outer radius (ring OD 32)
cap_lip3 mmhow far the cap overhangs the bore (capture)
scallops6finger grip notches

All parameters are at the top of captive-spinner.scad; override with -D 'k_xy=0.5'. If the rotor won't free, print a copy with k_xy +0.05 — start with the coupon (captive-spinner-coupon.scad) to tune fast.

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 12 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.