SolidCraft 0.6:基于 Rust 的开源参数化 CAD,内置 MCP 支持
SolidCraft 是一款采用纯 Rust 编写的开源参数化 3D CAD 应用程序,既可作为桌面应用运行,也能在浏览器中使用,还支持无头 CLI 模式。它内置了模型上下文协议 (MCP) 服务器,使 AI 智能体能够执行与人类建模者相同的建模命令。该项目由作者 bherbruck 以 Show HN 的形式发布在 Hacker News 上,采用 MIT 或 Apache-2.0 许可证,并自述为“处于早期阶段,但可用于简单零件建模”。
SolidCraft 是什么
SolidCraft 是一款具备约束草图和特征时间轴工作流的参数化 CAD 应用程序,使用 Rust 编写,支持 Windows、macOS、Linux、Snap 以及 Web 平台。其明确的设计目标是为从 Autodesk Fusion 转来的用户提供熟悉的操作体验:约束草图、实体特征、可编辑的时间轴、参数和装配体。
该项目是独立的,并遵循净室贡献规则进行开发。其 README 指出,软件行为是根据公开文档、通用 CAD 惯例和用户反馈设计的,参考测试使用解析值和开源工具,且 SolidCraft 与 Autodesk 没有任何关联、赞助或背书关系。
目前的演示版本为 0.6,展示了一个从空白设计开始建模的 Raspberry Pi 4 外壳:包括带有板载参数的草图、拉伸、圆角、抽壳、在 58 × 49 mm 孔矩形上阵列的 M2.5 支柱、端口切口、通风槽和颜色设置,随后通过参数将高度从 24 mm 修改为 32 mm,模型即可自动重建。
精度状态:76 个参考零件中有 75 个匹配
SolidCraft 的 README 报告称,在 76 个公共参考零件中,有 75 个的体积、面积、质心和包围盒与解析值或 FreeCAD 计算值匹配,剩余的一个零件被记录为 Bug。项目明确提醒,这些检查并不代表完全的几何或工作流等效性。
这是项目文档中最具体的质量声明,且范围非常有限:它仅涵盖了一组固定参考零件的测量一致性,而非通用的建模正确性。
架构:一切皆为命令
SolidCraft 组织为分层 crate,README 指出“一切皆为命令”——UI 运行的命令注册表与脚本和 MCP 客户端调用的完全相同。
| 层级 | Crates | 角色 |
|---|---|---|
| L0 | geom |
向量、平面、轮廓、网格及其度量 |
| L1 | sketch, kernel, render |
约束求解器和轮廓;B-rep 内核边界 (truck);视图数学和 CPU 光栅化器 |
| L2 | doc |
参数、表达式、特征时间轴及其增量评估 |
| L3 | io |
设计文件,STL/OBJ/STEP/3MF 导出,STEP 和 3MF/STL 导入特征 |
| L4 | engine |
会话和命令注册表 |
| L5 | ui-egui, mcp |
可替换的桌面前端;MCP 服务器 |
| apps | solidcraft, solidcraft-cli |
桌面应用,无头 CLI |
B-rep 内核边界是 truck crate,这是一个现有的开源 Rust 建模内核。桌面前端使用 egui 和 wgpu。
草图、约束和特征时间轴
草图可以放置在原点平面、偏移平面或平面面上,支持直线、矩形、圆、圆弧、多边形、槽、椭圆、拟合/控制样条曲线、圆锥曲线和文本,以及构造几何、投影、修剪、圆角和倒角。
约束和尺寸由 SolidCraft 自有的求解器处理。约束相对于已知几何固定的点通过构造精确放置,使用 Owen 1991 和 Fudos–Hoffmann 1997 的轨迹交点和刚性簇分解法;其余部分使用 Levenberg–Marquardt 算法求解,其雅可比矩阵的秩给出了剩余的自由度。支持的约束包括重合、点在线上、水平/垂直、平行、垂直、相切、曲率 (G2)、相等、同心、共线、中点、对称和固定,以及由参数驱动的线性、对齐、水平、垂直、点到线、半径、直径、角度、圆弧扫描、圆弧长度和槽长度尺寸。过度约束的编辑会被拒绝,完全约束的几何图形会变为黑色。
参数化时间轴上的特征包括拉伸、旋转、扫描、放样、圆角/倒角、抽壳、拔模、孔、螺纹、阵列、镜像、分割、组合、移动和构造几何。时间轴支持增量重建,特征可以编辑、抑制、重命名、重新排序和删除。
参数和配置支持单位感知表达式,如 2 * width + 5 mm 和 angle / 2,以及有序规则、特征抑制和按行设置的实体材质与外观。装配体支持嵌套组件和实例、关节、运动研究、接触集、干涉检查和材质感知的质量属性。钣金支持涵盖法兰、卷边、折叠/展开/重折、材质切口、展开图、保留的浅棱柱形凹槽、精确的线/弧/圆 DXF 轮廓和折弯表。
文件格式与互操作性
SolidCraft 将设计保存为 .solidcraft 容器,包含无损二进制网格负载,同时仍支持打开、另存为和导出纯 JSON。
导出格式包括 STEP(AP242,包含实体名称、颜色和组件装配,旋转面作为原生平面、圆柱、圆锥、球体和圆环)、IGES 5.3、3MF、STL(二进制和 ASCII)以及 OBJ。导入涵盖 STEP(AP203/AP214/AP242 实体、装配体、单位、名称、颜色)和 IGES(流形实体 B-rep,或缝合为实体的修剪和有界曲面)作为基础特征,后续特征在此基础上构建。3MF、STL 和 OBJ 作为网格实体导入,支持渲染、测量、移动和导出,但实体特征需要 B-rep 实体;“转换网格”命令可将支持的闭合恒定截面零件重建为带有平面和圆柱面的参数化实体。
MCP 服务器:AI 智能体驱动相同命令
solidcraft-cli mcp 是一个基于 stdio 的模型上下文协议服务器。以无头模式运行时,它会启动自己的设计会话;使用 --connect 127.0.0.1:PORT 运行时,它会驱动一个通过 solidcraft --control PORT 启动的应用程序,这样用户可以在运行的 UI 中观察智能体建模。
暴露的工具包括 list_commands、execute、batch、inspect_design、measure、body_topology、set_parameter、screenshot(返回图像)、export、undo、redo、new_design、open 和 save。Claude Code 可以通过 claude mcp add solidcraft -- solidcraft-cli mcp 进行注册。
桌面应用还暴露了一个 JSON-lines 控制通道,以便智能体和测试程序驱动它。无头 CLI solidcraft-cli 可以运行命令脚本、测量体积、面积、质心和面/边/顶点数量、导出、渲染 PNG 快照并重放参考配方。脚本是 UI 运行的相同命令的 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}}
]}
平台与安装
SolidCraft 提供 Windows(x64、ARM64、32 位及便携版 zip)、适用于 Apple 芯片和 Intel 的通用 macOS 磁盘映像,以及 Linux 构建版本(AppImage、.deb、.rpm、Flatpak 和 Snap,命令为 sudo snap install solidcraft,包含 ARM64 变体)。浏览器版本可在 bherbruck.github.io/solidcraft/app/ 运行,无需安装,通过 ?webgl 查询参数使用 WebGPU 或 WebGL2。
下载文件尚未签名。在 Windows 上,SmartScreen 需要选择 更多信息 然后 仍要运行;在 macOS 上,首次启动需要右键点击应用并选择 打开。
在 Windows 和 Linux 上,SolidCraft 通过多轴 HID 接口检测连接的 3Dconnexion SpaceNavigator 或 SpaceMouse。在 Linux 上,它直接读取 /dev/hidrawN,因此登录用户需要设备访问权限——README 建议使用 udev 规则添加 uaccess 标签,例如 /etc/udev/rules.d/70-3d-mouse.rules 匹配供应商 ID 256f。Flatpak 沙箱不暴露 hidraw 设备,因此 3D 鼠标在 Flatpak 版本中仅适用于原生构建。
社区反应:内核选择、AI 编写的代码与寿命
Hacker News 的讨论焦点不在功能上,而在于三个问题:基于 truck 内核构建是否可行,AI 辅助开发能否将 CAD 内核推向成熟,以及 AI 生成的 CAD 项目在五年后是否依然存在。
评论者 bruckie 指出了内核并提出了困难:
"看起来这使用了 Truck 建模内核……Truck 看起来很酷,但创建一个 b-rep 内核的工作量巨大。鉴于此,我很好奇 SolidCraft 成熟的速度会有多快。"
同一评论者指出,ttouch 此前曾在 Truck 上构建了浏览器 CAD 工具 CADmium,后来又在 OpenCASCADE 上构建了 CADara。
SolveSpace 开发者 phkahler 认为难题不会很快解决,并建议了一种替代策略:
"我不认为这个项目进展会很快。在 Solvespace 上,我们最近收到了 Claude 的大量提交,用于修复 NURBS 布尔运算问题。分析确实令人印象深刻,大多数修复在经过多位代码专家的大量审查后被接受。我不认为这个项目能在他们仍然面临的难题上走得太远。恕我直言,他们本应该让 AI 将 OCCT 内核转换为 Rust,或者直接封装并按原样使用。"
同一评论者补充说,SolveSpace 即将发布 3.3 版本,其中包括这些 AI 辅助的修复,并且一个由 Claude 编写的 GTK4 移植分支(志愿者此前曾尝试失败)也即将合并。
zamalek 直接提出了耐用性担忧:
"关于转向 AI 生成的软件,我担心的是 CAD 文件具有极长的生命周期。这个项目在 5 年后还会活跃吗?"
几位评论者将 SolidCraft 与现有的开源选项进行了比较。mijoharas 描述了尝试使用 FreeCAD MCP 和 OpenSCAD 配合智能体,发现两者都比手动建模慢,主要抱怨是 AI 生成的几何体事后难以编辑。InsidiousWombat 报告称,跳过 MCP 直接让 LLM 编写 FreeCAD Python 代码效果更好。wccrawford 询问 SolidCraft 是否避免了 FreeCAD 在参数更改时出现的长期问题。jpettersson 是一位前 Fusion 360 重度用户,他表示 SolidCraft 在业余水平的建模方面似乎非常有能力。
关于定位,carra 指出 UI 类似于 Autodesk Inventor 或 Solid Edge,Fabricio20 指出该项目与同名的 CadCraft 不同。brunoborges 询问如果标题中没有“in Rust”,该帖子是否会受到如此多的关注。maidaman 强调浏览器版本是一个实际的胜利:“实际上可以在工作中直接使用,而无需请求 IT 部门。”
README 中未解决的两个差距被提了出来。rts-gordon 询问是否支持 3D 打印功能,androiddrew 简单地写道:“CAD 很棒,但我想要 CAM。” u8080 提出了项目被关闭的风险,larodi 则认为像这样可由智能体控制的开源工具的更广泛价值在于,它们是商业供应商通过许可限制的自动化链条中的环节。
值得关注的内容
README 指向 docs/features.md 以查看 SolidCraft 按区域划分的命令,ROADMAP.md 查看状态和计划,以及 GitHub issues 查看开放工作和已知 Bug。项目明确通过 CONTRIBUTING.md 邀请贡献,其中记录了构建和测试过程、代码映射、净室和许可证规则,以及最需要帮助的地方。
Sources
相关
- 项目
- 项目
- 项目
- 项目
- Dispatch