Skip to content

Reading settings

Theme
Text size
Line spacing
Reading width
Code text size
Dyslexia-friendly font · Motion

Musa CAD 0.2.0

Completemade from Musa CAD's own dataChecked against Musa CAD 0.8.0Verified

Tolerances, GD&T, tables, dimension text control, the command line.

Released
File format
Saves .musa version 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.


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.

A documented CLI (#11) — the shipped binary is scriptable:

Terminal window
musacad drawing.musa # open in the GUI
musacad --check drawing.musa # validate; non-zero exit on a bad file
musacad --plot drawing.musa out.pdf \ # headless, no display needed
--paper A4 --portrait --scale 1:5 --window x0,y0,x1,y1

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

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.

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.

  • 435 tests, green under ASan/UBSan and ThreadSanitizer; release builds with zero warnings.
  • Hot structs unchanged (LineData 40 B, CircleData 32 B, EntityProps 8 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.

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.

Terminal window
chmod +x MusaCAD-0.2.0-x86_64.AppImage
./MusaCAD-0.2.0-x86_64.AppImage

No 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).