Type elements (shuttles, wheels, typeballs, slugs) for antique typewriters, generated to order and 3D printed.
The project has three generations. v4/ is where active development
happens; v2/ and v1/ are the OpenSCAD lineage it was ported from,
and both still open and render exactly as before.
A Python/manifold3d pipeline rather than OpenSCAD - the draft taper is
a real Minkowski sum, every assembly step is a real boolean, and each of
the 15 supported machines is driven by its own config YAML with an
interactive TUI (tune.py) for editing and live-previewing it.
- Live documentation site
v4/README.md- setup, usage, architecturev4/LAYOUT_TRANSCRIPTION.md- how the keyboard layouts were transcribed from real manufacturer type catalogsv4/SESSION_LOG.md- full development historyv4/CLAUDE.md- the conventions and hard-won invariants that keep the pipeline correct
Machines: Blickensderfer, Postal, Mignon, Bennett, Helios Klimax, Hammond, Hammond Split, Selectric I/II, Selectric III, Selectric Composer, and the Type Slug family (Type Slug, Vogue Slug, Gauge Slug, Oliver Slug, Lumi Slug).
The rest of this file covers the original OpenSCAD workflow. v2/ is
the shared-library refactor of v1/; see
CHANGELOG.md for what moved where.
Download a development snapshot of OpenSCAD.
Open an OpenSCAD file. Use the Customizer on the right to create elements and adjust parameters.
- Install font for all users (right-click the font file > Install for all users).
- Open an element file.
- Preview the element and adjust parameters in the Customizer.
Preview → Render → Export STL.
- debug / no minkowski: render element without embossing (faster)
- preview / render / export: typical OpenSCAD workflow
- Machine specifications — all dimensions and calibrated values per machine
- Glyph pipeline — how characters are rendered, draft angles, platen cutout, CharLegend
- Text centering & dead space — how
halign="center"actually centers glyphs, why narrow characters can sit off-center in their slot, and options to correct it - Resin support systems — CutGroove, rod geometry, per-machine support placement
- Calibration procedures — sweep tests, debugging symptoms, procedure order
- IBM Composer — proportional unit system, hemisphere mapping, Composer vs Selectric
- Refactoring plan — shared library architecture, extraction order, old vs new code style (executed as of v2.0, see CHANGELOG.md)
v2/ holds the current, actively-developed set of machine files — a shared
lib/ (glyph pipeline, resin support, core/shaft, layouts) plus one thin
file per machine. See CHANGELOG.md for what moved where and
which machines share the pipeline. Every v1 file below is untouched and
still opens/renders exactly as before.
- lib/glyph_pipeline.scad
- lib/resin_support.scad
- lib/core_shaft.scad
- lib/testing.scad — shared calibration-sweep array generator
- lib/layouts/ — blick, bennett, mignon, ibm, hammond (postal.scad's single fixed layout stays inline, no separate file)
- blickensderfer.scad
- postal.scad
- bennett.scad
- mignon.scad
- heliosklimax.scad
- ibm.scad
- hammond.scad
- hammond_split.scad
The following directories (now under v1/) contain the original machine-specific type elements:
- Bennett
- Blickensderfer
- Hammond
- HeliosKlimax
- IBM
- Mignon
- Postal