Parametric rocket-tooling drawings and manufacturing export bundles in the browser, backed by one shared geometry model for preview and CAD generation.
Live: https://ngallodev-software.uk/rts/
Case study: https://ngallodev-software.uk/projects/rts
Export verification: docs/export-verification-checklist.md
Original Rocket Tool Sketcher — Nicolaj: original project at ma.dk/rts (historical Flash/Windows application). The archived SWF contains the project URL, a nicolaj@ma.dk contact, and an authoring path under Nicolaj, supporting credit to Nicolaj. His surname is not verified by the surviving source; this deliberately preserves the evidenced name without inventing a surname. The original design and tooling formulas are credited to their original author. Rocket Tooling Designer is an independent browser/CAD adaptation, not an original invention of those formulas.
The original Flash and Windows distributions remain available in Historical tools for attribution and reference.
- What it is: a browser tool for designing rocket spindle/rammer tooling from tube dimensions and manufacturing tolerances.
- What it produces: an annotated preview plus DXF, STEP, STL, OpenSCAD, PDF, and JSON manufacturing/review artifacts.
- Key design choice: the browser and export service share the same validated geometry model, so preview and generated artifacts are derived from one source of truth.
- Deployment boundary: interactive design stays in the web UI; CAD generation runs behind the application boundary in the internal Python export service.
Rocket Tooling Designer adapts the original rockettoolsketcher.swf as a
browser application while preserving the underlying tooling formulas and making
the same validated geometry available to manufacturing exports. The browser
handles interactive sizing and review; an internal Python service produces DXF,
STEP, STL, OpenSCAD, PDF, and manifest artifacts.
tube + tolerances
|
v
validated shared geometry
| |
v v
browser drawing internal export service
|
v
CAD / PDF / JSON bundle
|
v
export verification
- Supports a
Custommode with editable A-I dimensions. - Includes the baked-in preset g dimensions for some common device types matching the original flash app.
- Uses one shared spindle and rammer geometry model for the browser preview and export work.
- Preserves the original Flash and Windows tools on a clearly marked Historical Tools page, with self-hosted Ruffle playback for the SWF.
- Generates manufacturing exports from Python:
- combined clean as well as separate, per-part
DXFfiles and / or annotatedDXFfiles - combined and individual
STEPandSTL3D models - generated parametric
OpenSCADscript - JSON manifest of the exact derived dimensions
- combined clean as well as separate, per-part
npm installStart both the browser app and export service:
npm run startThe browser will report its local address when it is ready. The development server forwards export requests to the local export service at http://127.0.0.1:8791.
For separate processes, run npm run export:server and npm run dev in different terminals.
npm run buildAfter building the app for the /rts/ base path, run:
VITE_BASE_PATH=/rts/ npm run build
npx playwright testThe test uses locally installed Google Chrome and checks that the designer renders, navigation reaches the export view, and the manifest export button issues the scoped /rts/api/export request.
Example using a baked-in preset:
python -m rts_export.cli --preset bp-core-burner --tube-id 0.75 --output exports/bp-core-burner-075List presets:
python -m rts_export.cli --list-presetsExample using fully custom A-I values:
python -m rts_export.cli --preset custom --output exports/custom ^
--a 0.75 --b 6 --c 2.5 --d 0.375 --e 1.5 --f 0.413 --g 30 --h 3 --i 0- The baseline export assumption currently matches the working interpretation used in the refactored geometry model:
Efrom axisGfrom shoulder faceIfrom face- do-not-pass groove modeled as a shallow V-groove
- The generated DXFs use separate layers for visible profiles, hidden bores, centerlines, dimensions, and text.
- The default
tooling-set.dxfis the import-friendly geometry sheet.tooling-set-annotated.dxfcarries the dimensions and titles. STEP,STL, and generatedOpenSCADgeometry are written with CAD-interchange scaling in mind. If inputs are inches, the exported 3D geometry is scaled to millimeters.- The OpenSCAD output is intended to stay editable by changing the input values at the top of the file.
The release gate is [docs/export-verification-checklist.md] Generate a canonical export and run:
python scripts/verify_exports.py exports/core-burner-075-layout-v110The verifier audits every DXF, checks embedded annotation-zone separation, validates component versions and artifact counts, validates the four-page PDF, and renders its pages for visual review. Automated checks supplement, rather than replace, the Solid Edge/Fusion 360 and rendered-page inspections in the checklist.
Component versions are maintained in [version-manifest.json], embedded in tooling-set.json, copied into every export directory, and included in every download ZIP.
- Assigned independent
1.0.0versions to the web UI, export API, geometry model, clean DXF, annotated DXF, annotated PDF, STEP, STL, OpenSCAD, tooling manifest, and verification harness. - This release records the accepted functional baseline; it does not claim that earlier prototypes had equivalent release quality.
- Changed only the combined annotated-DXF layout behavior;
dxf_annotatedis now1.1.0. - Replaced fixed part spacing with measured annotation envelopes for the spindle, each rammer, and the overview/table.
- Intended improvement: a part's title, notes, dimensions, leaders, and geometry cannot overlap or obscure the neighboring part's zone when note content grows.
- Added invisible
RTS_QAzone metadata so the saved DXF can be checked independently by the verifier. - Added the permanent export checklist and automated verifier. Geometry formulas and clean DXF, PDF, STEP, STL, and OpenSCAD generation were not intentionally changed in this release.