A parametric, feature-based CAD app written in Rust, with a Bevy UI and its own pure-Rust B-rep modeling kernel. Its workflow is sketch on a plane, constrain and dimension, build parts from features, put them together in assemblies, and make drawings from them.
- Sketching: lines, rectangles, circles, arcs, splines, Bézier curves, ellipses, polygons, slots, points and text. Snapping and inference to points, midpoints, centres, intersections, alignments and part edges. Geometric constraints and driving dimensions, with a least-squares solver that keeps the sketch consistent while you drag. Trim, extend, split, offset, mirror, patterns, and Use (project) of part edges.
- Part Studios: extrude, revolve, sweep, loft, fillet, chamfer, shell, draft, hole (counterbore, countersink, tapped; ISO and ANSI tables), linear and circular patterns, mirror, booleans, Transform, planes, mate connectors, thicken, fill and helix. Every feature can be edited later, and the part rebuilds.
- Assemblies: instances, fastened, revolute, slider, cylindrical, planar and other mates, a triad to move parts, mate connectors, exploded views and a bill of materials.
- Drawings: standard and projected views, sections, dimensions, annotations, callouts and BOM tables.
- More: versions and history, derived parts and linked documents, a variable table and expressions, measurement and mass properties, linear static simulation (FEA), a path-traced renderer, PCB Studio with IDF import and export, and STEP, IGES and STL import and export.
- Drag and drop: drop SVG, EPS, PDF, DXF or DWG drawings onto a Part Studio or an open sketch to get editable sketch curves, pictures to place them, and STEP, IGES or STL models to import them (EPS and PDF need Ghostscript and Poppler installed).
- Onshape import: bring your own Onshape documents across with their feature history instead of dead STEP geometry (tools/onshape).
- AI assistants (MCP): So an AI assistant on your machine (Claude Code, Claude Desktop, Cursor, …) can drive the running app: create documents, draw sketches, add and edit features, read back faces and edges, export STEP and take screenshots. Turn it on in Preferences › AI assistants (MCP); the app then serves Streamable HTTP on
http://127.0.0.1:7680/mcp(loopback only; the port is a preference). Every tool call runs through the command layer, so the assistant's steps show in the feature list and undo like your own. The repository's.mcp.jsonregisters the server with Claude Code for this project (approve it with/mcpthe first time;claude mcp listshows whether it is connected). Elsewhere,claude mcp add --transport http cadrs http://127.0.0.1:7680/mcpdoes the same, and other clients take the URL in their MCP settings.
| Crate | What it is |
|---|---|
cadrs |
The binary: command-line flags, windowed or headless |
cadrs_app |
The app's Bevy plugins: documents page, tabs, viewport, tools and dialogs |
cadrs_ui |
A reusable Bevy widget library (theme, buttons, inputs, menus, dialogs, lists) |
cadrs_core |
The document model, features, rebuild, commands and undo, persistence (no Bevy) |
cadrs_sketch |
Sketch geometry, constraints, the solver, snapping and hit testing (no Bevy) |
cadrs_kernel |
The B-rep modeling kernel (pure Rust) and its API, with persistent face and edge names |
cadrs_drawing |
Drawing views, projection and annotations |
cadrs_fea |
Linear static finite-element analysis |
cadrs_render |
A CPU path tracer for photorealistic renders |
cadrs_idf, cadrs_pcb |
IDF files and PCB boards |
cadrs_harness |
Scripted scenarios, synthetic input and screenshots |
cadrs_mcp |
The MCP server through which AI assistants drive the app |
cargo test -r -p cadrs_core --test reference_parts -- --nocapture
Thank you to: