Mighty Miter¶
1:1 printable miter templates generated from an existing Autodesk Fusion model.
A miter template is a paper strip printed at exactly full size. You wrap it around a tube, scribe along the printed curve, then cut and file to the line — the standard low-capital alternative to a mitering jig or a CNC tube notcher.
The user models the intersection; this add-in reads geometry and never creates it. Computing the miter is an explicit non-goal.
How to read these documents¶
This documentation has one artifact and two audiences: the human maintainer and the coding agent. Both are served by the same things — explicit context, resolved cross-references, worked examples with reproducible numbers, and assumptions stated rather than assumed.
Theory takes a reader from novice to able to implement, one subject per chapter.
API reference is generated from the docstrings, which carry units, frames, tolerances and the correctness hazard each function touches.
Architectural decisions records every architectural decision. An ADR is immutable once accepted; superseding one means writing a new ADR that references it.
Validation record is the physical evidence: printed, wrapped, cut and measured.
Glossary defines every domain term once.
The specification is prd/miter-template-plugin-prd.md in the repository, and it is the
source of truth. These pages reference it by section number, always explicitly.
The three rules that shape the codebase¶
mighty_miter.corenever importsadsk. Enforced in CI bytools/check_core_purity.py. This is what makes the geometry reusable outside Fusion and what makes the majority of the project testable with no CAD kernel present.Pure standard library at run time, third-party libraries as dev-only oracles. No shipped dependencies and no compiled extensions. The other half of that rule is not optional: anything hand-written instead of taking a dependency is differentially tested against an independent implementation.
This is not a bicycle tool. Bicycle frame building is the motivating example and the hardest test case. Roll cages, process piping, ductwork and handrails are equally in scope, so there is no bicycle vocabulary anywhere outside documentation examples and test fixture names.
Units, once¶
Layer |
Length |
Angle |
|---|---|---|
Fusion API (internal) |
centimeters |
radians |
|
converts, once |
radians |
|
millimeters |
radians |
Export files |
millimeters |
— |
All conversion lives in adapter/units.py and nowhere else.
Contents
- Theory
- API reference
- Architectural decisions
- ADR-001 — Pure-stdlib Python, no third-party dependencies
- ADR-013 — Pure-stdlib Python, reaffirmed on corrected evidence
- ADR-014 — Carry analytic surface parameters and exact arc length across the core/adapter contract
- ADR-015 — Derive the template datum from geometry, never from the reported parametric window
- ADR-016 — License the project under MPL-2.0, without Exhibit B
- Validation record
- Glossary