BLCAD will be an independent, headless-first parametric CAD system for Linux with an optional desktop UI, in active development.
All architecture, feature contracts, persistence semantics, roadmaps, and current implementation status
live in docs/. This README is intentionally kept small and evergreen — it is not a status
page.
The assembly sequence is implemented through Block 47, Part Construction MVP-6 is complete through
Block 94, GUI Feature Validation MVP-7 is accepted through Block 105, Interactive Sketcher MVP-8 is
accepted through Block 121, and Interactive Part & Assembly Modeling MVP-9 is accepted through Block
131. Blocks 106–120 implement the contextual Sketch workspace, device-independent plane interaction,
stable shared SketchPointId topology, deterministic planar solving with local DOF/conflict
diagnostics, solver-backed semantic-handle dragging, line/conic/slot creation, spline editing,
parameter-backed Sketch text, geometric constraint authoring, typed driving/reference Sketch
dimensions, trim/extend/split/fillet/chamfer modification, line-chain/loop offset, associative
projection/include, construction references, explicit break-link conversion, selected-geometry
move/rotate/scale/copy/mirror, rectangular/circular Sketch patterns, multi-region recognition,
profile selection, contour diagnostics, atomic Finish Sketch candidates, and direct Sketch3D point/
line placement and manipulation.
Block 119 adds connected-component region recognition over solved line geometry, stable open/self-crossing/ambiguous diagnostics, point-based profile selection, and fail-closed Finish Sketch materialization. Block 120 adds orthogonal axis/plane locks, typed XYZ and distance/angle placement, atomic 3D point/line creation, shared-point handle editing, persistent guide roles, and explicit planar-Sketch point projection source intent without introducing a full 3D variational solver. Block 122 adds the shared selection-first Part/Surface/Assembly workspace authority: capability-exact preselection, deterministic contextual command recommendations, Finish-Sketch handoff, command repeat, synchronized selection filters, and transient ViewCube/home/bookmark navigation. Block 123 adds reusable candidate-only linear, angular, radial, translate/rotate-triad, and pattern handles with model-space mapping, fixed-DIP hit testing, exact final release, and bidirectional numeric-HUD coupling.
Canonical Interactive Sketcher contracts include
docs/gui-interactive-sketch-workspace-mvp8.md,
docs/gui-sketch-plane-interaction-mvp8.md,
docs/sketch-shared-topology-mvp8.md,
docs/sketch-planar-constraint-solver-mvp8.md,
docs/gui-sketch-solver-drag-mvp8.md,
docs/gui-sketch-basic-creation-mvp8.md,
docs/gui-sketch-conic-slot-creation-mvp8.md,
docs/gui-sketch-spline-text-mvp8.md,
docs/gui-sketch-constraint-authoring-mvp8.md,
docs/gui-sketch-dimension-authoring-mvp8.md,
docs/gui-sketch-modify-mvp8.md,
docs/gui-sketch-offset-project-mvp8.md,
docs/gui-sketch-transform-pattern-mvp8.md,
docs/gui-sketch-regions-finish-mvp8.md, and
docs/gui-sketch3d-interaction-mvp8.md. Block 121 adds the
machine-checked coverage manifest, GUI/headless equivalence, atomic interaction checks, and measured
performance acceptance in
docs/interactive-sketcher-mvp8-acceptance.md.
The optional Qt desktop covers document, Sketch, Part, Surface, Assembly, motion, analysis, and
STEP-export validation workflows without moving authority out of Core/Geometry. Block 122 starts
Interactive Part & Assembly Modeling with the selection-first workspace contract in
docs/gui-modeling-workspace-mvp9.md. Block 123 implements the
shared manipulator and numeric-HUD infrastructure in
docs/gui-viewport-manipulators-mvp9.md. Block 124
implements interactive Extrude, path Extrude, and Revolve authoring in
docs/gui-interactive-extrude-revolve-mvp9.md.
Block 125 implements interactive Fillet, Chamfer, Shell, and Draft authoring in
docs/gui-interactive-finishing-mvp9.md. Block 126
implements interactive Pattern, Mirror, Body Boolean, and Body Transform authoring in
docs/gui-interactive-pattern-body-mvp9.md. Block 127
implements interactive PathCurve, Sweep, and Loft authoring in
docs/gui-interactive-path-sweep-loft-mvp9.md.
Block 128 implements interactive Surface authoring and surface-to-solid conversion in
docs/gui-interactive-surface-mvp9.md. Block 129 implements
the feature edit lifecycle and Core feature-update commands in
docs/gui-feature-edit-mvp9.md.
Block 130 implements interactive Assembly placement, compatibility-filtered relationships, joint
frame preview, and coordinate motion in
docs/gui-interactive-assembly-mvp9.md. Block 131 adds
read-only Measure, coverage manifest v2, and integrated acceptance in
docs/interactive-modeling-mvp9-acceptance.md.
STEP Import MVP-10 starts next with Block 132.
include/blcad/— public headers for Core model and optional Geometry/GUI boundariessrc/— Core and optional Geometry/GUI implementationtests/— Catch2 testsexamples/—.blcad.json/.blcad.project.jsonexamples and headless flowsdocs/— architecture, implemented contracts, sequences, and roadmaps
Start here:
docs/project-goal.md— what BLCAD is and whydocs/architecture-summary.md— layered architecture and authority modeldocs/mvp-plan.md— implementation sequence and current statusdocs/development-setup.md— building, testing, and focused test tagsdocs/file-format.md— save-format authoritydocs/sketch-shared-topology-mvp8.md— shared planar topology/migrationdocs/sketch-planar-constraint-solver-mvp8.md— planar solver/DOF/diagnosticsdocs/gui-sketch-solver-drag-mvp8.md— semantic handles/live solver/atomic dragdocs/gui-sketch-spline-text-mvp8.md— spline editing and Sketch textdocs/gui-sketch-constraint-authoring-mvp8.md— constraint intent, inference, glyphs, and conflict previewdocs/gui-sketch-dimension-authoring-mvp8.md— driving/reference dimensions, typed values, expressions, and in-canvas editingdocs/gui-sketch-offset-project-mvp8.md— offset, associative projection/include, and break-link semanticsdocs/gui-sketch-transform-pattern-mvp8.md— selected-geometry transforms, mirror, and pattern intentdocs/gui-sketch-regions-finish-mvp8.md— regions, profile selection, diagnostics, and Finish Sketchdocs/gui-sketch3d-interaction-mvp8.md— axis/plane locks, typed 3D placement, handles, guides, and projectiondocs/gui-modeling-workspace-mvp9.md— selection-first modeling commands, filters, handoff, repeat, and transient navigationdocs/gui-viewport-manipulators-mvp9.md— reusable candidate-only handles, mapping, hit testing, and numeric couplingdocs/gui-interactive-assembly-mvp9.md— placement, relationships, joints, and coordinate motion
See LICENSE.