* claim: #9827 * Sketch Offset: an Instances count stacks offsets one behind another (#9827) Offset made one offset at a time, so a set of evenly spaced outlines meant running it again on the curves it had just made, once per ring: a separate undo step and a separate driving dimension each time. `sketch.offset` now takes `instances`, a whole number or a unitless expression from 1 to 100 (1, today's behaviour, by default). The per-group work the command did inline becomes `offset_rung`, and `offset_ladder` runs it once per instance, each rung offsetting the one before it the same distance again, so instance n stands n distances from the curves picked. Every rung of a side is driven by that side's own dimension, so editing it moves the whole set and keeps the spacing even, and each side of a Two Sides or Symmetric offset grows its own ladder. A rung the shape has no room for refuses the whole command and names which instance it was. A later rung reads its side from the geometry, through the rung's own normal-distance annotation, rather than from the distance's sign: an output's stored ends need not run the way the chain through them is walked, and a reversed walk reads the same sign as the other side. A circle is the exception and keeps the sign, because it offsets concentrically with no chain to walk, and a step past a ring smaller than the distance lands beyond the centre, where the circle's "outside the current radius" side test reads as the outward side: an inward ladder turned round and grew again (1, 4, 1, 4 mm) instead of running out of room. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * Sketch Offset: the Instances row in the offset window (#9827) The offset window gets an Instances row under Distance: a whole number with step arrows, 1 by default, so the count can be walked up a ring at a time and the preview follows each step. The count is not kept in the design, as Mirror's and Scale's values are not, so the window sends the number it evaluates to rather than the text. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * UI kit: a count's step arrows are not text (#9827) The arrows stand inside the editor, which asks for the text cursor across its whole rect, so hovering one showed an I-beam and the arrows read as part of the number. They take the ordinary cursor back after it, and the pointer is read from the arrow's rect rather than from the hover the editor underneath competes for, which keeps the hover highlight in step with it. The pattern Quantity rows share this field and had the same thing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * Sketch Offset: Instances label in the complete catalogs and the other shipped languages Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Sketch Offset Instances: translations for the complete catalogs Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com> Co-authored-by: bherbruck <brennen.herbruck@gmail.com>
SolidCraft
An open-source parametric 3D CAD application built in pure Rust.
Sketch, constrain, and build solids with a parametric feature timeline. Change a dimension
and watch your model rebuild. Run it on your desktop, in your browser, or let AI agents
model through the built-in MCP server.
Website ·
Download ·
Try it in the browser ·
Documentation ·
Discord ·
SolidCore
A Raspberry Pi 4 case from an empty design: a sketch dimensioned with the board's parameters, extrude, fillet, shell, the rim rounded in one pick, an M2.5 standoff patterned on the 58 × 49 mm hole rectangle, port cut-outs, vent slots, "Pi 4" engraved in DejaVu Sans Bold and a PETG material defined in the design, with its mass in Properties, then height 24 → 32 mm in Parameters and it all rebuilds. 6× playback with the idle pauses cut. Full video, recorded with the demo script.
Download
- Windows: the installer.
- macOS: the disk image (Apple silicon and Intel).
- Linux: the AppImage, or
sudo snap install solidcraft(Snap Store). - Web: try it in your browser, no install.
ARM64 and 32-bit builds, portable zip, .deb, .rpm, Flatpak and the other packages are on the downloads page. The macOS app is signed with a Developer ID and notarized by Apple. The Windows downloads aren't signed yet: choose More info, then Run anyway in SmartScreen. On SolidCraft 0.11 to 0.14, download once by hand; see updating.
What works
Early but usable for simple parts: 75 of 76 public reference parts match their analytic or FreeCAD-computed volume, area, centre of mass and bounding box (oracle); the other is a tracked bug.
- Sketches and constraints: lines, arcs, splines, text and more, solved by our own constraint solver, with parameter-driven dimensions.
- Features: extrude, revolve, sweep, loft, fillet, chamfer, shell, draft, holes, threads, patterns, mirror, split and combine on an editable parametric timeline.
- Parameters and configurations with unit-aware expressions.
- Assemblies with joints, motion studies, contact sets, interference and mass properties.
- Sheet metal with flanges, hems, fold/unfold and flat patterns, and plastic enclosure features.
- Files: STEP, IGES, 3MF, STL, OBJ and glTF in and out where supported, URDF export,
.scdesigns (.solidcraftfiles from earlier releases still open). - Desktop app, browser app, headless CLI and MCP server, all running the same commands.
The full list is in docs/capabilities.md and docs/features.md; status and plans are in ROADMAP.md. See also what people built, 3D mouse support and the architecture.
Build from source
cargo run --release -p solidcraft -- --sample # desktop app with a sample part
cargo run --release -p solidcraft-cli -- commands # the command registry
cargo run --release -p solidcraft-cli -- run examples/bracket.json --out bracket.step
cargo xtask ci # fmt, clippy, tests, icons, assets, layers, wasm
More commands, the Windows cross-build and the browser build are in docs/building.md.
AI agents (MCP)
solidcraft-cli mcp is a Model Context Protocol server. Headless it
runs its own design session, or with --connect it drives the running app so you can watch.
Claude Code: claude mcp add solidcraft -- solidcraft-cli mcp. If a terminal doesn't find
solidcraft-cli (older Windows installers don't put it on PATH), give its full path (by default
"C:\\Program Files\\SolidCraft\\solidcraft-cli.exe"). Tools, access rules and an example session:
docs/mcp.md.
Scripts
A script is a JSON list of the same commands the UI runs, executed with solidcraft-cli run.
Format and example: docs/scripts.md. Pages can also be driven through the
browser command API.
Contributing
Help is welcome. CONTRIBUTING.md covers how to build and test, the code map, the clean-room and licence rules, and where help is wanted most. Open work is in GitHub issues; chat is on Discord.
Sponsors
SolidCraft's continuous integration runs on Blacksmith, which sponsors its CI minutes.
Disclaimer
The files in this repository are provided as is, without warranty, liability or indemnity, and Tangency Labs and the contributors accept no responsibility for any harmful or unlawful use of them: read DISCLAIMER.md.
Licence
MIT OR Apache-2.0, at your option. Developed under the clean-room contribution rules; third-party code and assets retain their documented licences and attribution.
SolidCraft is independent. Behaviour is designed from public documentation, general CAD conventions and user feedback. Reference tests use analytic values and open-source tools. SolidCraft is not affiliated with, sponsored by or endorsed by Autodesk, Dassault Systèmes, PTC, Siemens or any other CAD vendor. Fusion, AutoCAD, Inventor, SolidWorks, Onshape, Creo, Blender and Tinkercad are trademarks of their respective owners, named only to describe compatibility (see NOTICE).

