Skip to content

GideonBa/Better-Linux-CAD

Repository files navigation

BLCAD

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.

Repository layout

  • include/blcad/ — public headers for Core model and optional Geometry/GUI boundaries
  • src/ — Core and optional Geometry/GUI implementation
  • tests/ — Catch2 tests
  • examples/.blcad.json / .blcad.project.json examples and headless flows
  • docs/ — architecture, implemented contracts, sequences, and roadmaps

Documentation

Start here:

License

See LICENSE.

About

Parametric CAD system for Linux with an OCCT-based geometry core, modern sketching, feature history, assemblies, engineering assistants, and standards-oriented machine design tools.

Resources

License

Stars

3 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages