GitHub · 项目涌现

呵

tangency-labs/solidcraft

二〇二六年十月十九日·★ 6,589·⑂ 739·Rust·Apache-2.0 ·最新发布 v0.16.2 · 2026-10-19 · GitHub 原仓库

SolidCraft: an open-source parametric 3D CAD application built in pure Rust. Desktop, web, and automation through MCP.

Download for Windows Download for macOS Download for Linux Get it from the Snap Store Try it in your browser

SolidCraft 0.8: model a Raspberry Pi 4 case from an empty design: a sketch dimensioned with parameters, extrude, fillets and shell, a rim rounded in one pick, standoffs patterned on the board's mounting holes, port cut-outs, vent slots, "Pi 4" engraved in a font, a PETG material with its mass in Properties, and a height change in Parameters

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. 9× playback. Full video, recorded with the demo script.

Download

The downloads aren't signed yet. On Windows, if SmartScreen warns you, choose More info, then Run anyway. On macOS, the first time, right-click SolidCraft in Applications and choose Open.

On SolidCraft 0.11 to 0.14? Its Update now can't install 0.15.0 or later, because the releases moved to a new address. Download the new version once from the links above; after that, updating from inside SolidCraft works again (details).

Older versions, checksums and other formats are on the releases page. Install details, upgrading from earlier builds and building from source are in Getting started.

Documentation: the SolidCraft book (user guide, developer guide and command reference; sources in docs/book).

Community: chat with users and contributors on Discord.

Status: 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 (docs/oracle.md); the other is a tracked bug. These checks do not establish complete geometric or workflow equivalence. The commands SolidCraft has are listed by area in docs/features.md; status and plans are in ROADMAP.md. Open work and known bugs are in GitHub issues, and help is welcome: see CONTRIBUTING.md.

Built with SolidCraft

SELENE, a scientific rover built entirely through SolidCraft's MCP server by @0xlillith: 3,323 editable timeline steps that rebuild with no errors, replayed here at 2× speed. Full video · download the editable model.

What works

Build and run

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 run --release -p solidcraft-cli -- snapshot examples/bracket.json --out bracket.png
cargo run --release -p solidcraft-cli -- render examples/render-studio.json --out product.png
cargo run --release -p solidcraft -- part.step          # open a STEP file as a new design
cargo run --release -p solidcraft-cli -- eval part.step # measure an imported STEP file
cargo xtask ci                                          # fmt, clippy, tests, icons, assets, layers, wasm

UI artwork changes follow the icon specification. The included review tool discovers new icons and keeps unaccepted artwork Open; run cargo xtask icons to check the collection.

Windows builds: cargo xwin build --release --target x86_64-pc-windows-msvc -p solidcraft.

On Windows, macOS and Linux, SolidCraft detects a connected 3D mouse through its HID multi-axis controller interface: a 3Dconnexion SpaceNavigator or SpaceMouse, or a homemade device that declares itself one. Move the cap to pan and zoom, and tilt or twist it to rotate the 3D view. While editing a sketch, the cap pans and zooms without changing the sketch view. The Navigation page in Preferences has an on/off switch, a speed control and, for each of the cap's six axes, an invert switch and a speed for the 3D mouse. The web app reads it too, through the browser; Firefox needs a 3DxWare setting first (see Getting started › 3D mouse in the browser).

With 3DxWare on Windows, SolidCraft follows 3DxWare's profile for it when there is one, and 3DxWare's object mode (tilt to roll, twist to spin) until there is. The mouse-wheel turns that 3DxWare makes from the cap's motion are ignored, so the view doesn't zoom in steps as the cap tilts.

On Linux SolidCraft reads the 3D mouse through spacenavd when that daemon runs (its socket /var/run/spnav.sock), so what you set in spnavcfg (swapped or inverted axes, sensitivity, dead zones) applies as it does in other programs, and no udev rule is needed. With nothing set there, the motion is the same as without the daemon. Without spacenavd, SolidCraft reads /dev/hidrawN directly, so the logged-in user needs access to the device. A udev rule that adds the uaccess tag does that, for example /etc/udev/rules.d/70-3d-mouse.rules for USB devices with 3Dconnexion's vendor id, and for its Bluetooth ones (where idVendor isn't set, so the HID id is matched instead):

SUBSYSTEM=="hidraw", ATTRS{idVendor}=="256f", TAG+="uaccess"
SUBSYSTEM=="hidraw", KERNELS=="0005:256F:*", TAG+="uaccess"

Older SpaceNavigators use Logitech's vendor id 046d, so add a rule with their product id (see lsusb) instead of matching every Logitech device. A homemade device needs a rule with its own vendor and product id. Reload with sudo udevadm control --reload && sudo udevadm trigger, then replug the device. The Flatpak sandbox does not expose hidraw devices, so the 3D mouse only works with native builds there for now.

SolidCraft finds the axes from the device's report descriptor, so it doesn't matter how a device lays them out: translation and rotation in separate reports (3Dconnexion's wired devices), all six in one (its wireless ones and most homemade devices), after the buttons, or narrower than 16 bits. Each axis is scaled from the range the descriptor declares.

On macOS SolidCraft talks to the 3Dconnexion driver (3DxWare) when it is installed, through the driver's client API (crates/threedx-client; the framework is loaded at run time, never bundled). The driver keeps the device to itself, and sends it only to a program it can identify: SolidCraft as an .app (the packaged app). Without the driver, or with its helper not running, SolidCraft reads the device through IOKit like on Windows.

SolidCraft does not follow 3DxWare's profile on macOS. Its default is 3DxWare's object mode.

In the browser: cd apps/solidcraft-web && trunk build --release --public-url ./ (WebGPU, or WebGL2 with ?webgl; ?sample opens the sample part).

Agents can control the document open in a browser tab through window.solidcraft.execute(...) and window.solidcraft.request(...); see the browser command API.

Scripts

A script is a JSON list of commands, the same ones the UI runs:

{"commands": [
  {"command": "sketch.create", "params": {"plane": "XY"}},
  {"command": "sketch.rectangle.two_point", "params": {"p0": [0, 0], "p1": [40, 30]}},
  {"command": "solid.extrude", "params": {"distance": 20}},
  {"command": "solid.fillet", "params": {"edges": [[0, 0, 10]], "radius": 3}}
]}

AI agents (MCP)

solidcraft-cli mcp is a Model Context Protocol server on stdio. Headless it runs its own design session; with --connect 127.0.0.1:PORT it drives the app started with solidcraft --control PORT, so you can watch the agent model. Tools: list_commands, execute, batch, inspect_design, measure, body_topology, set_parameter, screenshot (returns the image), export, crash_reports, undo, redo, new_design, open, save. Tool calls reach files only in the open design's folder (when it lies inside your home folder, never home itself or a hidden folder), SolidCraft's recovery folder and folders given with --allow-path DIR. Claude Code: claude mcp add solidcraft -- solidcraft-cli mcp. Details, client configuration and an example session: docs/mcp.md.

Architecture

Layer Crates Role
L0 geom vectors, planes, profiles, meshes and their measures
L1 sketch, kernel, render constraint solver and profiles; the B-rep kernel boundary (truck); view math and the headless scene description
L2 doc parameters, expressions, the feature timeline and its incremental evaluation
L3 io design files, STL/OBJ/STEP/3MF export, STEP and 3MF/STL/OBJ/glTF import features
L4 engine the session and the command registry (everything is a command)
L5 gpu, ui-egui, mcp compute-shader evaluation of display tessellation plans; the swappable desktop front end; the MCP server (headless or bridged to the app)
apps solidcraft, solidcraft-cli desktop app, headless CLI

Contributing

SolidCraft uses a familiar parametric CAD workflow: constrained sketches, solid features, an editable timeline, parameters and assemblies. See the roadmap for supported operations and current limitations.

See CONTRIBUTING.md: how to build and test, the code map, the clean-room and licence rules, and where help is wanted most.

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. Autodesk and Fusion are trademarks of Autodesk, Inc.

译自 GitHub · 项目涌现 · 录于 二〇二六年十月十九日