Completemade from Musa CAD's own dataChecked against Musa CAD 0.8.0Verified
The configurable AutoCAD options relevant to a 2D drafter, as the roadmap for
Musa CAD’s settings. Status: Implemented (with the phase it landed, e.g.
Ph15) or Planned. Grouped by where AutoCAD exposes them.
Typed mid-command as option keywords (the same state-machine pattern as CIRCLE’s
[Diameter]), matching AutoCAD’s RECTANG prompts.
Option
Prompt
Status
Dimensions (D)
length → width, then the cursor quadrant flips placement (NE/NW/SE/SW); click commits
Implemented
Area (A)
area → [Length/Width] → that side; the other = area / side; same quadrant-flip placement
Implemented
Rotation (R)
angle (degrees); the rectangle is rotated about the first corner
Implemented
First-corner Chamfer (C)
two chamfer distances applied to each corner
Planned
First-corner Fillet (F)
fillet radius applied to each corner
Planned
First-corner Width (W)
polyline line-width for the rectangle
Planned
First-corner Elevation (E) / Thickness (T)
Z elevation / 3D thickness
Planned (2D engine; Z staged)
Notes: a non-numeric entry at a value prompt reverts to the plain other-corner pick (you
are never trapped); Esc cancels. With Dynamic Input on (the default), each of these steps
renders on the canvas at the cursor: the [Area/Dimensions/Rotation] keyword is typed at
the other-corner step, then Length/Width/Area/Rotation each appear as an
at-cursor sub-prompt cell (driven by PreviewSpec::scalar_prompt, distinct from the
on-geometry Length/Width drag fields), and the size, once fixed, previews as a
quadrant-flipped rectangle for the final corner pick. The earlier deferred context-aware
DYN-box item is now closed — see TODO.md.
Each segment offset (lines parallel, arcs concentric with the bulge kept), corners re-mitered as the intersection of adjacent offset curves — line/line, line/arc, and arc/arc (via the shared line_line / line_circle / circle_circle primitives) — uniform spacing, clean corners (no trapezoid). An over-large inward offset that would fold the shape fails with “Offset distance too large for this polyline.” and leaves the geometry unchanged
Every selected line / arc / open polyline that shares endpoints (within the snap tolerance) merges — each connected chain becomes ONE polyline (arcs → bulged segments), inheriting the source’s layer/properties. The merged polyline is a single entity, so moving it or dragging a grip keeps it connected
Implemented
Multiple chains in one selection
Each connected group becomes its own polyline; an object that connects to nothing else selected stays separate
Implemented
Closed loop
A chain whose ends meet within tolerance becomes a closed polyline (which then OFFSETs uniformly)
Implemented
No pre-selection
Falls back to picking a source object, then targets
Implemented
Undo
The whole join is one undo group
Implemented
Alias J; Modify-panel ribbon button. Closed polylines (no free endpoints) and non-curve
entities are not joinable and are left untouched.
If objects are already selected when MA runs, the first becomes the source automatically (skips the source prompt), mirroring JOIN
Implemented
Picking a dimension
A click on the dimension’s measured text picks the dimension (the text is part of the dim, not a separate entity) — works for both source and destination
Implemented
Destination loop
Prompt “Select destination object(s) or [Settings]:” → each pick immediately applies the matched properties; Enter / right-click ends; Esc cancels
Implemented
Paintbrush cursor
Shown between the source pick and the end of the command (AutoCAD’s match-mode signal)
Implemented (a drawn brush cursor)
Universal properties
Color, Layer, Lineweight, Linetype, Linetype scale (CELTSCALE) copy across ANY source/target kinds. ByLayer/ByBlock copies as state, not as the resolved literal
Implemented
Type-specific (Basic Properties group)
Text (height/font/justify/width-factor), Dimension (per-dim overrides) and Hatch (pattern/scale/angle) copy only within a shared family; non-applicable properties are silently skipped
Implemented
Plot Style / Polyline
Shown in Settings for AutoCAD parity but disabled — plot style is not modelled, and Polyline has no type-specific registry property yet
Stated limitation
Per-target undo
Each matched target is its own undo entry (Ctrl+Z undoes matches in reverse)
Implemented
Settings (S)
Opens a dark modal listing Basic + Special categories with checkboxes (all on by default). State persists in QSettings for the session and the next MA invocation; OK applies, Cancel reverts
Implemented
MATCHPROP reuses the Phase 22 property-descriptor write path; whatever the registry exposes
as read/write, MA can match. It never changes geometry — only properties — so a circle
matched from a line stays a circle.
Click inside a region; the engine traces the enclosing boundary from surrounding geometry (planar arrangement, so a partitioning line splits the region) and treats closed entities inside as islands/holes
Implemented (Part A)
Boundary: Select objects (noun-verb)
Pre-select closed polylines, then HATCH; even-odd makes nested loops holes
Implemented (Part A)
Pattern (HPNAME)
The PR Pattern field is a dropdown of SOLID + every built-in line pattern (the same list the HATCH ▸ Pattern option offers). SOLID is a solid colour fill (a pattern name, not a separate entity); the default
Stored per hatch; editable in PR (Scale/Angle; Origin read-only) and MATCHPROP-matchable
Implemented
Line patterns (ANSI31 …, .PAT)
Stock pattern library, generated + clipped to the boundary, plotted as vectors
Implemented (Part B)
Gap tolerance (HPGAPTOL)
Bridge small gaps in the boundary when picking a point
Partial (basic endpoint bridging; full HPGAPTOL staged)
Associative hatch (HPASSOC)
Re-fill when the boundary is edited
Planned
GRADIENT
Two-colour / gradient fills
Planned
Hatch colour/layer/linetype/lineweight follow the universal property model (ByLayer default);
the fill is derived at render time so it plots as PDF vectors with no special case.