
SolidCraft 项目解析:纯 Rust 写的开源参数化 3D CAD,桌面、浏览器、MCP 三端同引擎
SolidCraft 用纯 Rust 实现参数化 CAD 全流程:自研约束求解器、水密显示网格与特征时间线,改一个参数整条链路重建;同一引擎跑桌面、浏览器与 MCP,AI Agent 可直接建模。开源十二天即获 5800+ star,最新版本 v0.16.2。
相关标签
项目概览
SolidCraft 是一个用纯 Rust 写的开源参数化 3D CAD:草图、约束、拉伸、圆角、抽壳、装配,改一个尺寸就看整个特征时间线重建。它同时提供桌面应用(egui + wgpu)、浏览器版本(WebGPU,可退回 WebGL2)和一套 MCP 服务器——AI Agent 可以直接建模、测量、截图。
仓库建于 2026 年 10 月 7 日,十二天时间已累积 5,815 star / 674 fork,最新发布版本 v0.16.2(2026-10-19,补丁版,修透视视图下绕拾取点旋转会漂移的问题)。README 对自身状态的描述很克制:“early but usable for simple parts”——76 个公开参考零件里有 75 个的解析解或 FreeCAD 计算值在体积、面积、质心、包围盒上完全对上,剩下一个是已记录的 bug。
它解决什么问题
参数化 CAD 长期是商业软件的领地,开源方案要么历史包袱重,要么是脚本层套在别人内核上。SolidCraft 走的是另一条路:自己的约束求解器 + 自己的显示网格生成器 + 自己的 iOS 式分层 crate 架构,几何内核边界用 truck,其余全自研,浏览器里跑的是同一套引擎编译成 WebAssembly。
它想解决的核心体验是改一个数,整条链路跟着重建:草图里的尺寸可以挂参数表达式(2 * width + 5 mm、angle / 2),参数一改,特征时间线增量重算,模型自己生长。README 的演示就是拿树莓派 4 的外壳做例子——从空设计开始画带参数的草图、拉伸、圆角、抽壳,M2.5 铜柱按板子的 58 × 49 mm 孔位矩形阵列,再开端口、开散热槽、刻 “Pi 4” 字样、指定 PETG 材料看质量,最后把高度从 24 改成 32 mm,全部重算。
核心机制
草图与约束:原点平面、偏移平面或实体平面上画线、矩形、圆、弧、多边形、槽、椭圆、样条、圆锥曲线和文字;约束由自研求解器处理——约束能确定相对已知几何的点直接按构造法精确放置(轨迹求交 + 刚性簇分解,参考文献是 Owen 1991 与 Fudos–Hoffmann 1997),剩下的交给 Levenberg–Marquardt,其雅可比矩阵的秩给出剩余自由度。过约束的编辑会被拒绝,完全约束的几何变黑。拖拽时每帧求解草图,松手才重建一次模型。
一切都是命令:引擎层是一个命令注册表,UI、脚本、CLI、MCP 用的是同一批命令。一个脚本就是 JSON 命令列表:
{"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}}
]}
显示网格不是黑箱:每个面被规划成一张 (u, v) 点与三角形的方案,边缘节点与相邻面共享,所以网格是水密的;被裁剪的面切成四边面片(孔洞周围是方块、圆面是”蝴蝶”、凹角处跑摩托车轨迹,参考 Lyon et al. 2019),每片按 Coons 网格细化。整场景的规划用 compute shader 一次派发评估,GPU 建不起来时回退 CPU。78 个参考体的规划与评估约 65 ms,比上一代网格器快 50–65 倍。
与同类方案的区别
| 维度 | Fusion 360 | FreeCAD | SolidCraft |
|---|---|---|---|
| 授权 | 商业、订阅制、云端 | 开源(LGPL) | MIT 或 Apache-2.0 双许可 |
| 实现 | 商业闭源内核 | C++ / Python,几何内核 OpenCASCADE | 纯 Rust,自研求解器与网格器,内核边界 truck |
| 形态 | 桌面 + 云 | 桌面 | 桌面 + 浏览器(同一引擎编到 WASM)+ 无头 CLI |
| 自动化 | 脚本 / API | Python 宏 | 命令注册表 + JSON 脚本 + MCP 服务器 |
| 成熟度 | 生产级 | 多年积累,功能广 | early but usable for simple parts |
SolidCraft 明确声明与 Autodesk 无任何关联,行为只从公开文档、通用 CAD 惯例和用户反馈中设计(clean-room 规则)。
设计取舍
- 水密优先于快:宁可花力气做共享边缘节点的网格规划,也不出一堆”看着像实体、其实是散面片”的三角汤——因为后面 STEP 导出、布尔、测量都建立在这个基础上。
- 命令优先于 GUI:UI 只是命令注册表的一个前端。好处是自动化天然完整(Agent 能做的和你能点的一样多),代价是 UI 层必须把交互状态也建模成命令。
- 诚实的自评:README 不吹”完全等价”,只报 75⁄76 的参考零件对得上,并明确写”这些检查不构成完整的几何或工作流等价”。已知限制放在 ROADMAP 里,1,140 个 open issue 摆在明面上。
技术栈与边界
分层架构按 crate 划死(cargo xtask ci 里的 layers 检查会把关):
| 层 | crates | 职责 |
|---|---|---|
| L0 | geom |
向量、平面、轮廓、网格与度量 |
| L1 | sketch、kernel、render |
约束求解与轮廓;B-rep 内核边界(truck);视图数学与无头场景描述 |
| L2 | doc |
参数、表达式、特征时间线与增量求值 |
| L3 | io |
设计文件、STL/OBJ/STEP/3MF 导出与导入 |
| L4 | engine |
会话与命令注册表(一切皆命令) |
| L5 | gpu、ui-egui、mcp |
compute shader 评估网格、可替换桌面前端、MCP 服务器 |
| apps | solidcraft、solidcraft-cli |
桌面应用、无头 CLI |
几个值得一提的工程细节:
- 3D 鼠标:Win/macOS/Linux 三端都认 3Dconnexion 的 HID 多轴设备(也认自称该协议的 DIY 设备),平移缩放、倾斜旋转;Linux 优先走
spacenavd,没有就直接读/dev/hidrawN;浏览器版通过浏览器也能读。 - 文件格式:
.solidcraft是设计容器(二进制网格负载无损),同时兼容纯 JSON;导出 STEP(AP242,带实体名、颜色、组件作为装配;旋转面还原为原生平面/圆柱/圆锥/球/环面)、IGES 5.3、3MF、STL、OBJ,装配带关节还能导出 URDF 给机器人仿真器。 - 浏览器 API:
window.solidcraft.execute(...)/request(...),Agent 可以直接控制网页标签页里打开的文档。 - 渲染是预览级:不透明表面支持金属度、粗糙度、介质 IOR,但 HDRI、折射、贴图都没实现——README 自己写明了。
AI Agent 接入(MCP)
solidcraft-cli mcp 是一个 stdio 上的 MCP 服务器。无头模式自己开一个设计会话;加 --connect 127.0.0.1:PORT 就接管用 solidcraft --control PORT 启动的应用,你能亲眼看着 Agent 建模。工具包括 list_commands、execute、batch、inspect_design、measure、body_topology、set_parameter、screenshot(直接返回图像)、export、crash_reports、undo/redo、new_design、open、save。
文件访问有边界:只能碰当前设计所在目录(且必须在 home 之内,不能是 home 本身或隐藏目录)、恢复目录,以及 --allow-path DIR 显式给的路徑。
Claude Code 一行接上:
claude mcp add solidcraft -- solidcraft-cli mcp
社区已经用它跑出过东西:一个科学考察车 SELENE 完全通过 MCP 建出来,3,323 步可编辑的时间线,重建零报错,模型可以下载。
快速开始
cargo run --release -p solidcraft -- --sample # 桌面应用,带一个示例零件
cargo run --release -p solidcraft-cli -- commands # 命令注册表
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 # 直接打开 STEP 作为新设计
cargo run --release -p solidcraft-cli -- eval part.step # 量一个导入的 STEP
cargo xtask ci # fmt、clippy、测试、图标、资源、分层、wasm
浏览器版:
cd apps/solidcraft-web && trunk build --release --public-url ./
不想编译也行:Windows(MSI / 便携 zip / WinGet winget install bherbruck.SolidCraft)、macOS(通用 DMG)、Linux(AppImage / deb / rpm / Snap / Flatpak)、以及直接开网页版。注意安装包目前未签名,Windows SmartScreen 会警告,macOS 首次要右键”打开”。
项目状态与许可
MIT 或 Apache-2.0 双许可,按 clean-room 贡献规则开发。0.11–0.14 的用户注意:内建的”立即更新”装不上 0.15.0 及以后(发布地址换了),需要先手动下载一次新版,之后自动更新恢复正常。
能力覆盖面已经很宽:草图与约束、特征时间线(拉伸/旋转/扫掠/放样/圆角/抽壳/拔模/孔/螺纹/阵列/镜像/分割/组合)、参数与配置、装配(关节、运动研究、接触集、干涉检查、材料质量属性)、钣金(翻边、折弯展开、展开图与折弯表)、DXF 视图导出、STEP/IGES/3MF/STL/OBJ/glTF 导入导出、URDF。但几何等价性、工作流等价性都还需要时间验证——它适合拿去试简单零件,而不是把生产线押上去。
获取与了解
- 仓库:https://github.com/tangency-labs/solidcraft
- 最新发布:https://github.com/tangency-labs/solidcraft/releases/tag/v0.16.2
- 官网:https://solidcraft.io | 网页版:https://solidcraft.io/app
- 文档(用户指南 + 开发者指南 + 命令参考):https://docs.solidcraft.io/
- 状态与路线图:
ROADMAP.md、docs/features.md、docs/oracle.md
更多资讯
想看更多优质内容?
浏览所有资讯