Musa CAD 0.2.0
Tolerances, GD&T, tables, dimension text control, the command line.
- Released
- File format
- Saves
.musaversion 20, and opens every version from 1 to 20. Files saved by 0.2.0 need 0.2.0 or newer; files from 0.1.0 open unchanged. - Downloads
The release on GitHub, with checksums and every file.
- Newer
- This is not the newest release. Musa CAD 0.8.0 is.
The notes below are the release notes from the Musa CAD repository, as published with the release.
The annotation release. v0.1.0 could draw and modify; v0.2.0 is about saying what a drawing means — tolerances, geometric tolerancing, tables, and the dimension-text control a drafter needs on every real sheet — plus a documented command line so Musa CAD can be driven from a script.
Linux only. This release ships the Linux AppImage. The Windows installer is built and verified separately on real Windows hardware; see the note at the end.
Annotation
Section titled “Annotation”Dimension tolerances, fit classes and prefixes (#7) — a dimension can now carry a
prefix/suffix and a tolerance mode: symmetric (50 ±0.1), limits (the two limit values
stacked), basic (the ASME Y14.5 box) and reference (parenthesised). The measured
value is still computed from the definition points and can never be authored, so a
dimension still cannot lie about the geometry.
Dimension text override (#20) — AutoCAD’s <> field. <> H7 keeps tracking the
geometry; 2x<>, ⌀<> THRU and a full replacement all work. The measurement stays
computed, so an override can always be inspected and removed.
Dimension text position (#21) — every dimension now has a grip on its text. Drag it anywhere; the value stays measured, a connector leader appears when the label leaves its dimension line, and the Properties palette’s Text moved row restores it (“home text”). This works on radius and diameter dimensions too, where the text used to be pinned inside the part.
ISO 129-1 narrow dimensions (#12) — when the value and/or the arrowheads no longer fit between the extension lines, the value moves outside and the arrowheads flip to point inward. Text and arrows are decided independently, so a dimension whose arrows fit keeps them inside. Previously a small feature’s value collided with its own extension line and the only workaround was to shrink the text.
GD&T (#8) — real feature control frames and datum feature symbols: an ordered
cell list with borders and dividers derived from the dimension style, so GD&T annotation
matches the drawing’s dimensions automatically. Commands TOLERANCE/TOL and DATUM.
Drafting symbols in the stroke font (#9) — 26 new glyphs: counterbore, depth,
countersink, the full GD&T characteristic set, the material-condition modifiers, and the
feature-form symbols. Reachable from any text via %%b / %%h / %%v and the general
\U+XXXX escape, so they work in TEXT, MTEXT, leaders and dimension text alike.
TABLE entity (#22) — real tables for bills of materials, revision blocks and hole
schedules: rows and columns with stored sizes, merged cells, per-cell alignment, and
borders/grid/text derived from a named table style. Command TABLE/TB.
Command line
Section titled “Command line”A documented CLI (#11) — the shipped binary is scriptable:
musacad drawing.musa # open in the GUImusacad --check drawing.musa # validate; non-zero exit on a bad filemusacad --plot drawing.musa out.pdf \ # headless, no display needed --paper A4 --portrait --scale 1:5 --window x0,y0,x1,y1Exit codes 0 ok / 1 usage / 2 load / 3 output. --plot uses the same loaders,
snapshot builder and plot renderer as PLOT in the GUI, and forces the offscreen Qt
platform so it works from cron, CI or ssh. See docs/CLI.md.
Raster images (partial)
Section titled “Raster images (partial)”IMAGE entity (#10, partial) — a .musa can carry an image (a logo, a shaded
pictorial) either as a path relative to the drawing or base64-embedded so the file
stays self-contained. Images are selectable, movable, bounds-correct and plot at
output resolution. Viewport display, the IMAGEATTACH/IMAGECLIP commands and DXF interop
are deferred — the issue stays open.
- Plotted text ignored its lineweight (#19) — stroke-font TEXT/MTEXT/leader/dimension glyphs always printed as a cosmetic hairline regardless of the entity’s lineweight, so dimension text and notes were unreadable on paper while LINE entities at the same weight printed correctly. Text now plots at its resolved weight. Behaviour change: text that relied on the old hairline output will now print at its actual (often ByLayer 0.25 mm) weight. On-screen appearance is unchanged.
- A hatch loaded from a file was never indexed, so it could not be picked, hovered, window-selected or erased. One created in-session worked, which is why it went unnoticed.
- Fifteen printable ASCII characters had no glyph —
% ! ? $ & @ [ ] { } ^ _| ~drew blank, so50% FULLplotted as50 FULL`. - The basic-dimension frame drew its lower edge on top of the dimension line.
Compatibility
Section titled “Compatibility”The native format is now v20 (was v14). Every older version still loads, each with an explicit regression test. Files written by v0.2.0 cannot be opened by v0.1.0.
DXF gaps are stated rather than faked: GD&T, tables and images are native-only for now, and are tracked as issues.
Under the hood
Section titled “Under the hood”- 435 tests, green under ASan/UBSan and ThreadSanitizer; release builds with zero warnings.
- Hot structs unchanged (
LineData40 B,CircleData32 B,EntityProps8 B) — every new entity lives in its own cold arena. - Scene draw calls still 4 (6 with drawing aids); insert throughput unchanged.
- New:
docs/ROADMAP.md, a grouped survey of what is not implemented, mapped to issues #20–#33.
Windows
Section titled “Windows”This release ships Linux only. The Windows installer is produced by
.github/workflows/build-windows.yml and must be installed and exercised on real Windows
hardware before publishing — see issue #6. That verification is deliberately a human step.
Install (Linux)
Section titled “Install (Linux)”chmod +x MusaCAD-0.2.0-x86_64.AppImage./MusaCAD-0.2.0-x86_64.AppImageNo dependencies to install: Qt6 and the platform plugins are bundled. DWG import/export
additionally needs an external converter you install yourself (see docs/BUILD.md).