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

  1. mighty_miter.core never imports adsk. Enforced in CI by tools/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.

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

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

adapter/ boundary

converts, once

radians

core/

millimeters

radians

Export files

millimeters

All conversion lives in adapter/units.py and nowhere else.