Appearance
Geometry editor specification — INDEX
This directory holds the behavior specification for every primitive, constraint, modify operation, and workflow feature in the motordevs.com 2D FEA editor.
It is the answer to: "What does feature X actually do, and how should a user invoke it?"
It is NOT:
- A tutorial (no narrative; specs are reference material)
- An implementation guide (no source-code listings beyond
file:linecross-refs) - A roadmap (see the Backlog section below for items intentionally not yet specced)
If you're new here, read SPEC-STYLE-GUIDE.md first.
Primitives
| Spec | What it is |
|---|---|
| Node | A 2D point with a stable id; the only positional entity in the scene |
| Segment | A straight line between two nodes |
| Arc | A circular arc between two nodes (3 construction methods) |
| Circle | A standalone closed circle (no endpoint nodes until crossed) |
| Spline | A Catmull-Rom curve through endpoints + interior control points |
| Rectangle | A 4-segment closed loop with auto parallel/perp constraints |
| Polygon | An n-sided regular polygon (segments + equal-length + radial distance constraints) |
| Fillet | A parametric rounded corner replacing a sharp segment-segment junction |
| Crossing | An auto-emitted virtual node at the intersection of two primitives |
| Frame | A local coordinate system (origin + rotation) that other entities can reference |
Constraints
| Spec | Kinds |
|---|---|
| Geometric | horizontal, vertical, parallel, perpendicular, tangent, coincident, equal, midpoint, symmetric, onLine, onCircle, fixed |
| Dimensional | distance, distanceH, distanceV, angle, radius, diameter |
Modify operations
| Spec | What it does |
|---|---|
| Move | Translate a selection in-place |
| Rotate | Rotate a selection about a pivot |
| Mirror | Reflect a selection across an axis (in-place or as clone) |
| Copy + Array | Clone a selection (linear, radial, or single offset) |
| Trim | Remove the segment portion bounded by intersections at click |
| Delete | Remove a selection, cascading through dependent features |
Workflow
| Spec | What it covers |
|---|---|
| MotorScript | The DSL: builtins, evaluation, error reporting, codegen ↔ canvas round-trip |
| Parameters + Smart dimensions | param sliders, valVarRef-driven constraint values |
| Save / Load / Tabs | Autosave, save-or-discard banner on reload, archive recovery, multi-tab |
| Selection + Snapping + Palette | Hit testing, snap targets, constraint palette UX |
Cross-cutting references
- SPEC-STYLE-GUIDE.md — the template every spec follows
Backlog (not yet specced)
These are roadmap items not yet shipped, and intentionally have no spec yet. Adding a spec is the commitment that says "we're committing to this design".
- Materials catalogue + per-region material assignment
- Boundary conditions (Dirichlet / Neumann / periodic)
- Circuits + winding tie-in to coil regions
- Physics (frequency, time step, magnetostatic vs transient)
- Mesh controls (per-region size, growth ratio)
- Export beyond DXF / SVG (PNG, PDF, print)
- 3D / sketch-plane orientation metadata
- History timeline ("undo to here")
- Inline canvas smart-dim editor
- Save-As dialog / scene-name management
- Account storage (currently localStorage only)
If you're starting work on any of these, the first commit should be a spec under the relevant directory, drafted to this style guide.
End of index.