SolidCraft:纯 Rust 开源参数化 CAD,内置 MCP 支持
Show HN: SolidCraft – Open-Source Parametric CAD in Rust (With MCP Support)
SolidCraft 是一个用纯 Rust 编写的开源参数化 3D CAD 应用,支持草图约束、参数化特征时间轴,可运行在桌面、浏览器,并通过内置 MCP server 让 AI 智能体建模。
一个用纯 Rust 构建的开源参数化 3D CAD 应用。
通过参数化特征时间线进行草图绘制、约束和实体构建。修改一个尺寸,即可看到模型重新构建。你可以在桌面端、浏览器中运行它,或者让 AI 代理通过内置的 MCP 服务器进行建模。
从空白设计开始,在英文桌面 UI 中绘制原始的参数化电子外壳:圆角、壳体、直接在壁上绘制的 USB 端口以及四凸台阵列。在 Parameters 中将宽度从 80 → 100 mm 修改,壁厚从 2 → 3 mm,然后观察其重新构建。原始动画指针和点击提示;4× 播放速度。完整视频,使用演示脚本生成。
下载
- Windows:下载并运行安装程序。 也适用于 ARM64 和 32 位 PC,或使用无需安装即可运行的 便携式 zip。
- macOS:打开磁盘映像,将 SolidCraft 拖入 Applications (Apple 芯片和 Intel)。
- Linux:下载 AppImage,允许其作为程序运行并打开它。
或者安装 .deb(Ubuntu、Debian、Mint)或 .rpm(Fedora、
openSUSE),或使用 Flatpak。
使用 Snap:
sudo snap install solidcraft(Snap Store,或 .snap 文件)。 对于 ARM64:AppImage、.deb、.rpm。 - 网页版:在浏览器中试用,无需安装。
下载尚未签名。在 Windows 上,如果 SmartScreen 发出警告,请选择更多信息,然后 仍要运行。在 macOS 上,首次运行时,请右键点击 Applications 中的 SolidCraft,然后选择打开。
旧版本、校验和及其他格式在发布页面上。 安装详情、从早期版本升级以及从源代码构建,请参阅 入门指南。
文档:SolidCraft 手册(用户指南、 开发者指南和命令参考;源代码在 docs/book 中)。
状态:早期阶段,但可用于简单零件。76 个公开参考零件中有 75 个 与其解析计算或 FreeCAD 计算的体积、面积、质心和边界框匹配 (docs/oracle.md);另一个是已跟踪的 bug。 这些检查并不能确立完整的几何或工作流等效性。SolidCraft 拥有的命令 按领域列在 docs/features.md 中;状态和计划在 ROADMAP.md 中。 未完成的工作和已知 bug 在 GitHub issues 中, 欢迎提供帮助:请参阅 CONTRIBUTING.md。
可用功能
- 草图可绘制在原点平面、偏移平面或平面面上:直线、矩形、圆、圆弧、多边形、槽、椭圆、拟合/控制样条、圆锥曲线和文本;构造几何、投影、修剪、圆角和倒角,包括原点处的角点。新建面附着会保留受支持的构造标识和所选实例;缺失源会暴露显式的平面修复工作流。参见面附着。显式闭合的拟合样条和闭合关联偏移使用周期性 C2 插值。受支持的凸直线-圆弧偏移在内缩消耗角圆弧时保留其标识,链接的拉伸跟随当前边界。断开关联会冻结边界并保持现有拉伸可用。曲线绘制和拾取会随缩放和显示比例一起自适应,包括 Fit 时的小圆和已放置组件中的草图。
- 约束和尺寸由我们自己的求解器求解(带自由度分析的阻尼高斯-牛顿法):重合、水平/竖直、平行、垂直、相切、相等、同心、共线、中点、对称、固定;由参数驱动的线性、对齐、水平、竖直、半径、直径和角度尺寸。过度约束的编辑会被拒绝;完全约束的几何变为黑色。选择一条直线或其两个端点,输入其尺寸并按 Enter 提交一个撤销步骤。Fit 使草图几何避开调色板和导航控件。
- 轮廓自动查找,包括被直线分割的区域和轮廓内部的孔。新捕获的完整自适应边界在样条跨度数变化时保留其外轮廓和孔源标识。部分或模糊的边界不符合条件。
- 参数化时间轴上的特征:拉伸、旋转、扫掠、放样、圆角/倒角、抽壳、拔模、孔、螺纹、阵列、镜像、分割、组合、移动和构造几何。时间轴增量重建;特征可以编辑、抑制、重命名、重新排序和删除。支持的几何和当前限制在ROADMAP.md中描述。新建旋转在反转轴时保留对称和两侧角度放置;旧设计在重新打开或编辑时保留其保存的约定。
- 参数和配置支持单位感知表达式(
2 * width + 5 mm、angle / 2)、有序规则、特征抑制以及逐行实体材料/外观。 - 装配体支持嵌套组件和实例、关节、运动研究、接触集、干涉和材料感知的质量属性。记录的实体转移保留建模历史和世界放置;3D 草图线在编辑过程中保留其坐标系。
- 钣金支持法兰、卷边、折叠/展开/重新折叠、材料切除、展开图、保留的浅棱柱凹槽、精确的直线/圆弧/圆 DXF 轮廓和折弯表;塑料外壳特征和规则。凹槽深度和侧面在展开/重新折叠后保留,并在展开预览和 DXF 中与通孔轮廓分开显示。
- 文件:设计容器(
.solidcraft)带有无损二进制网格载荷; 纯 JSON 仍支持打开、另存为和导出。桌面端“打开”可显示已保存的 实验性预览(显式preview: true引擎保存),同时在编辑前检查几何。导出为 STEP(AP242,包含实体名称、颜色和 作为装配体的组件;旋转面作为原生平面、圆柱、圆锥、球面和圆环面)、 IGES 5.3(带名称和颜色的流形实体 B-rep)、3MF、STL(二进制/ASCII)和 OBJ; 3MF、STL 和 OBJ 作为网格体导入(它们可渲染、测量、移动和导出;实体特征 需要 B-rep 体)。转换网格可将受支持的闭合等截面零件重建 为具有平面和圆柱面的参数化实体; STEP 导入(AP203/AP214/AP242 实体、装配体、单位、名称、颜色)和 IGES 导入 (流形实体 B-rep,或缝合为实体的修剪和有界曲面)作为基础特征, 后续特征在其上构建——打开.step/.stp/.igs/.iges文件,将其插入 设计,或将其拖放到窗口上(docs/step-import.md)。 - 桌面应用(egui + wgpu):工具栏包含工作区标签页、浏览器、时间线、带 轴视图和导航栏的 3D 视口、草图工具、特征对话框、命令面板,以及一个 JSON-lines 控制通道,以便代理和测试可以驱动它。 特征错误和帮助可以打开可编辑的 创建 Issue 草稿,其中包含相关上下文 和可选的已审核截图;打开 GitHub 不会提交报告。
- 无头 CLI
solidcraft-cli:运行命令脚本、测量(体积、面积、质心、 面/边/顶点数量)、导出、渲染 PNG 快照并重放参考配方。 - MCP 服务器
solidcraft-cli mcp:AI 代理可在无头模式或 运行中的应用中建模、测量和查看零件(见下文)。
构建和运行
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 -- 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, assets, layers, wasm
Windows 构建:cargo xwin build --release --target x86_64-pc-windows-msvc -p solidcraft。
在 Windows 和 Linux 上,SolidCraft 通过其 多轴 HID 接口检测连接的 3Dconnexion SpaceNavigator 或 SpaceMouse。移动帽盖可平移和缩放,倾斜或扭转它可旋转 3D 视图。 编辑草图时,帽盖可平移和缩放而不改变草图视图。首选项中的导航 页面有 3D 鼠标的开关和速度控制。
在 Linux 上,SolidCraft 直接读取 /dev/hidrawN,因此登录用户需要访问该
设备。添加 uaccess 标签的 udev 规则即可实现,例如
对于具有 3Dconnexion 厂商 ID 的设备使用 /etc/udev/rules.d/70-3d-mouse.rules:
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="256f", TAG+="uaccess"
较旧的 SpaceNavigator 使用 Logitech 的厂商 ID 046d;添加一条带有其产品 ID 的规则(参见 lsusb)
而不是匹配所有 Logitech 设备。使用 sudo udevadm control --reload && sudo udevadm trigger 重新加载,然后重新插拔设备。Flatpak
沙箱不暴露 hidraw 设备,因此目前 3D 鼠标在那里只能与原生构建一起使用。
在 HID 报告 1 中发送全部六个轴的设备(一些自制设备会这样做)可从其
报告描述符中识别,因此它们也能正常工作。
在浏览器中:cd apps/solidcraft-web && trunk build --release --public-url ./(WebGPU,或
使用 ?webgl 的 WebGL2;?sample 打开示例零件)。
脚本
脚本是一个 JSON 命令列表,与 UI 运行的是同一组命令:
{"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 代理(MCP)
solidcraft-cli mcp 是一个基于
stdio 的 Model Context Protocol 服务器。无头模式下它运行自己的设计会话;使用 --connect 127.0.0.1:PORT 时它驱动以 solidcraft --control PORT 启动的应用,
因此你可以观看代理建模。工具:
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。详细信息、客户端
配置和示例会话:docs/mcp.md。
架构
| 层 | Crate | 角色 |
|---|---|---|
| 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 |
贡献
来自 Autodesk Fusion?SolidCraft 使用熟悉的参数化 CAD 工作流:约束 草图、实体特征、可编辑时间线、参数与装配体。请参阅 路线图了解支持的操作与当前限制。
参见 CONTRIBUTING.md:如何构建与测试、代码地图、净室 与许可规则,以及最需要帮助的地方。
许可
MIT OR Apache-2.0,由你选择。在 净室贡献规则下开发;第三方代码与资源保留其 文档中记录的许可与署名。
SolidCraft 是独立的。其行为基于公开文档、通用 CAD 惯例与用户反馈设计。参考测试使用解析值与开源工具。 SolidCraft 与 Autodesk 无关联、未受其赞助或认可。Autodesk 与 Fusion 是 Autodesk, Inc. 的商标。
来源:Hacker News · github.com
