Printable pivot pins for joints of 0.25 mm polyester (PET) sheet, through the laser-cut pivot holes. v12 binds the three fits separately: the shaft is sized from the measured hole (running fit, no radial play), the head-to-lip gap equals the sheet stack (no axial rattle), and the retention lip is a split thin-wall cone that snaps with a few newtons. The v11 lip was four r0.4 mm spheres on rigid sectors: 1 mm of material cannot flex 0.2 mm under any hand force, so nothing snapped — the barb rode the hole open and left every joint loose.
Defaults as shipped (HOLE_D 3.15 = 3.0 mm nominal +
0.15 mm kerf, FIT 0.10): head Ø5.0×0.7 mm; shaft
Ø3.05 × stack + 0.05 mm; lip Ø3.45 mm
= hole + 0.30 mm undercut, 40° shoulder, 0.12 mm land,
25° lead-in cone down to an open flat nose Ø2.30 mm; petal wall
0.45 mm with 3 slits × 0.45 mm; total length 2.84 mm, 1.64 mm
of it below a 0.50 mm stack. Prints head-down; every overhang is 40° or
steeper than vertical, so no supports and no bridges (the nose is open).
| File | Model | Stack | Facets | Size |
|---|---|---|---|---|
| fit_coupon.stl | fit coupon: 5 shaft diameters Ø3.10–3.50 (0.10 steps) × 2 stacks, 10 pins; head OD = size code | — | 15,420 | 0.77 MB |
| pin_plate_050.stl | 10-pin print plate (5 × 2, 7.5 mm pitch), head down | 0.50 mm | 15,500 | 0.78 MB |
| pin_plate_100.stl | 10-pin print plate (5 × 2, 7.5 mm pitch), head down | 1.00 mm | 15,500 | 0.78 MB |
| pin.stl | single pin, print orientation (head on the bed) | 0.50 mm | 1,550 | 0.08 MB |
| fit_coupon_pla.stl | fit coupon, PLA variant: lip 0.20 mm, wall 0.35 mm, 10 pins, same size code | — | 15,324 | 0.77 MB |
| pin_plate_050_pla.stl | 10-pin plate, PLA variant: lip 0.20 mm, head down | 0.50 mm | 15,180 | 0.76 MB |
| pin_plate_100_pla.stl | 10-pin plate, PLA variant: lip 0.20 mm, head down | 1.00 mm | 15,180 | 0.76 MB |
Every number protects one feature: the shaft is the fit surface, the lip is the snap, the three slits must stay open. Print Settings / Filament Settings below are PrusaSlicer 2.6+; the search box finds any parameter by name.
| Value | PrusaSlicer | Why |
|---|---|---|
| filament | Filament Settings → Filament: Generic PLA or Prusament PLA | PLA holds the shaft diameter best (0.2–0.4 % shrink vs 0.3–0.8 % for PETG) and does not creep under load |
| base profile 0.10–0.15 mm quality | Print Settings: 0.10 mm DETAIL | only layer height, speeds and the two fit knobs depart from stock |
| layer height 0.12 mm, first layer 0.20 | Layers and perimeters → Layer height, First layer height | lip shoulder is 0.24 mm and the land 0.12 mm: 2 and 1 layers. At 0.20 mm the hook rounds away and pull-out force drops |
| Arachne perimeter generator | Layers and perimeters → Perimeter generator: Arachne (2.4–2.5: classic plus Detect thin walls) | Arachne prints the 0.35 mm wall as one line and leaves the 0.45 mm slits empty |
| extrusion width 0.42 mm, not more | Advanced → Default extrusion width, External perimeter width | a width ≥ 0.45 fills the slits |
| 3 perimeters | Layers and perimeters → Vertical shells → Perimeters | 3 shells at 0.12 mm make the 0.70 mm head solid anyway |
| 25 % grid infill | Infill → Fill density 25 %, Fill pattern Grid | 0.22 cm³ parts; no load path depends on infill |
| external perimeters first | Layers and perimeters → Quality → External perimeters first | keeps the shaft OD on the drawn line instead of pushed out by infill |
| seam Aligned | Layers and perimeters → Seam position | Random leaves blobs on the shaft OD, which is the fit surface |
| cooling: fan 100 %, Keep fan always on, slow down below 8 s | Filament Settings → Cooling: Fan speed, Slow down if layer print time is below | 0.12 mm layers in PLA stay soft otherwise, and soft petals droop onto the slits |
| temperatures 210/215 °C nozzle, 60 °C bed | Filament Settings → Filament → Temperature (Other layers / First layer), Bed | PLA default; hotter PLA strings into the slits |
| external perimeter 25 mm/s, first layer 20, small perimeters 20 | Speed → External perimeters, First layer speed, Small perimeters | 2.8 mm tall cones: slower means less heat pileup on the petals |
| supports off | Support material → Generate support material | steepest surface is the 40° shoulder; type PLA rarely needs support at all |
| skirt 2 loops, brim 0 | Skirt and brim → Skirt loops, Brim width | coupon and plate sit on 12 mm of footprint; for pin.stl only, set brim 5 mm |
| elephant foot compensation: profile default | Advanced → Elephant foot compensation | it touches the bed face only; no bearing surface there |
| XY Size Compensation 0, then ±(error / 2) | Advanced → XY Size Compensation | the one knob for shaft diameter; it shifts every contour, slits included |
| orientation as shipped, 100 % scale | Arrange keeps the pose | heads are already on the bed; the STL is in mm |
-D SLIT_W=0.60, or set
the extrusion width to 0.35 mm.0.2/0.25 mm nozzle: 0.08–0.10 mm layers, extrusion width ≈ 0.55×nozzle. Better XY accuracy on the shaft and the hook; the slits stay open.
Same geometry, same two knobs (extrusion width, XY compensation). Only the material numbers, the file variant and the menu labels change.
| Value | PrusaSlicer + PETG | Bambu Studio + PLA | Why |
|---|---|---|---|
| files | default fit_coupon.stl, pin_plate_*.stl (lip 0.30 mm) | *_pla.stl (lip 0.20 mm, wall 0.35 mm) | the PLA variant asks less of the PET film, see the note below |
| base profile | 0.10 mm DETAIL | 0.16 mm Optimal, then pin Layer height to 0.12 | only Z resolution and speeds depart from stock |
| temperatures | nozzle 240 (first 245), bed 85 | nozzle 220 (first 220), bed 55–65 | filament defaults; PETG needs the hot bed for adhesion, PLA needs the fan |
| cooling | stock PETG curve, slow down below 10 s | Filament → Cooling: fan 100 %, slow down below 8 s | PETG layers must bond warm; PLA must freeze hard |
| speeds | external perimeter ≤ 60 mm/s, first layer 25 | Speed → Outer wall speed ≤ 60, first layer 30 | small cones: speed is heat, and heat rounds the land |
| fit knobs | Advanced → Default / External perimeter width 0.42; Advanced → XY Size Compensation | Quality → Line width 0.42; Quality → X-Y contour compensation; Strength → Wall loops 3; Seam position Aligned | the same settings under different tabs; Arachne is the Bambu default |
| orientation | Arrange keeps the pose | no auto-orient; Brim type none | heads are already on the bed; the STL is in mm |
Why the PLA files differ. The snap does not come from the petals: a
uniform radial load cannot shrink a ring, so the PET film cones over the lip instead.
At the default 0.30 mm undercut that asks the hole to open 9.5 %, and PET
film yields near 3 % — which is how the old rigid barbs coned every hole
open. The *_pla.stl files use a 0.20 mm undercut and a 0.35 mm
wall: film stretch 6.3 %, petal strain 2.1 %. Keep PLA pins out of a hot car
(Tg ≈ 55 °C vs 80 °C for PETG).
Strings come from travel moves between the ten islands, and wet filament makes them worse. The rest is cosmetic: a string that runs from one pin to the next never enters a joint, so it cannot change the fit.
Pull the remaining hair off with tweezers after peeling. Do not sand a pin: sanding rounds the land and weakens the snap.
Sizing: the fit means nothing until you know the real shaft OD and the
real hole ID, so print fit_coupon.stl with these settings, then follow
Fit. If every size is uniformly tight or loose, change
FIT in the source by that amount instead of chasing the slicer.
fit_coupon.stl (or the PLA variant). Ten pins: five shaft
diameters × two stack heights. The head diameter is the size code
— bigger head, bigger shaft. Nothing to count and nothing to read.openscad -o plate.stl --export-format binstl \ -D 'part="plate"' -D 'HOLE_D=3.30' -D 'STACK_T=0.50' web/pin.scad
-D 'COUPON_SHAFT=[3.15,3.25,3.35,3.45,3.55]' and the
same head code tells you which is which.Every dimension is a parameter at the top of pin.scad:
FIT (running clearance, 0.10), UNDERCUT (lip above hole, 0.30:
raise to 0.40 mm for a harder pull, drop to 0.20 mm if inserting bends the
sheets), WALL (petal stiffness, 0.45), FREE (axial play under
the lip, 0.05: set 0 only if your stacks are exactly 0.50/1.00 mm).
Hole size: the laser exports draw the hole at
hole_dia_mm + kerf (api/exporters.py,
hole_dia = spec.hole_dia_mm + spec.kerf_mm), so the default 3.0 mm
setting cuts a 3.15 mm hole, and up to 3.30 mm if your controller aims the cut
on the path centreline. Measure a cut part, not the drawing: the coupon is the gauge.
Whatever you measure, set HOLE_D to it and re-render.
pin.scad generates every file above (OpenSCAD 2021.01, no libraries). Also on this host: lattice builder.