一个用纯 Rust 构建的开源参数化 3D CAD 应用。

通过参数化特征时间线进行草图绘制、约束和实体建模。修改一个尺寸,就能看到模型重新构建。可以在桌面端、浏览器中运行,或者让 AI 智能体通过内置的 MCP 服务器进行建模。

SolidCraft 0.6: model a Raspberry Pi 4 case from an empty design: a sketch dimensioned with parameters, extrude, fillets and shell, standoffs patterned on the board's mounting holes, port cut-outs, vent slots, a colour and a height change in Parameters

从空白设计开始制作一个 Raspberry Pi 4 外壳:用开发板的参数标注尺寸的草图、拉伸、圆角、抽壳、在 58 × 49 mm 孔矩形上阵列的 M2.5 支柱、端口开孔、通风槽和一种颜色,然后在 Parameters 中把高度从 24 → 32 mm,整个模型都会重新构建。6× 播放速度。完整视频,使用演示脚本录制。

下载

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

这些下载尚未签名。在 Windows 上,如果 SmartScreen 发出警告,请选择更多信息,然后仍要运行。在 macOS 上,首次运行时,在 Applications 中右键点击 SolidCraft 并选择打开。

旧版本、校验和其他格式都在发布页面上。安装细节、从早期版本升级以及从源码构建都在入门指南

中。文档:SolidCraft 手册(用户指南、开发者指南和命令参考;源码在docs/book)。

状态:处于早期阶段,但可用于简单零件。76 个公开参考零件中有 75 个docs/oracle.md与其解析计算或 FreeCAD 计算的体积、面积、质心和包围盒匹配(docs/features.md);另一个是已记录的 bug。这些检查并不能确立完整的几何或工作流等价性。SolidCraft 拥有的命令按领域列在ROADMAP.md中;状态和计划在GitHub issues中,欢迎帮助:参见CONTRIBUTING.md。

可用功能

  • 草图在原始平面、偏移平面或平面面上:直线、矩形、圆、圆弧、多边形、槽、椭圆、拟合/控制样条、圆锥曲线和文本;构造几何、投影、修剪、圆角与倒角,包括原点处的角点。新的面附着保留受支持的构造标识和所选实例;缺失的源会暴露一个显式的平面修复工作流。参见。
  • 约束和尺寸由我们自己的求解器求解。约束相对于已知几何固定的点通过构造精确放置(轨迹交点和刚性簇分解,依据 Owen 1991 和 Fudos–Hoffmann 1997);Levenberg–Marquardt 求解其余部分,其雅可比矩阵的秩给出剩余的 degrees of freedom。约束:重合、点在曲线上、水平/垂直、平行、垂直、相切、曲率(G2)、相等、同心、共线、中点、对称、固定;线性、对齐、水平、垂直、点到线、半径、直径、角度、圆弧扫掠、弧长和槽长尺寸由参数驱动。过度约束的编辑会被拒绝;完全约束的几何变为黑色。拖拽时每帧求解草图,并在拖拽结束时重建模型一次。选择一条直线或其两个端点,输入其尺寸并按 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          #带示例零件的桌面应用
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 -- part.step          #将 STEP 文件作为新设计打开
cargo run --release -p solidcraft-cli -- eval part.step #测量导入的 STEP 文件
cargo xtask ci                                          #fmt、clippy、测试、资源、图层、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 规则可以做到这一点,例如/etc/udev/rules.d/70-3d-mouse.rules对于具有 3Dconnexion 厂商 ID 的设备:

SUBSYSTEM=="hidraw", ATTRS{idVendor}=="256f", TAG+="uaccess"

较旧的 SpaceNavigator 使用 Logitech 的厂商 ID046d;添加一条带有其产品 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是一个Model Context Protocol基于 stdio 的服务器。无头模式下它运行自己的设计会话;配合--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 服务器(无头或桥接到应用)
应用 solidcraft,solidcraft-cli 桌面应用、无头 CLI

贡献

来自 Autodesk Fusion?SolidCraft 使用熟悉的参数化 CAD 工作流:受约束的草图、实体特征、可编辑的时间线、参数和装配体。参见路线图了解支持的操作和当前限制。

参见CONTRIBUTING.md:如何构建和测试、代码地图、净室和许可规则,以及最需要帮助的地方。

许可

MIT OR Apache-2.0,由你选择。在净室贡献规则下开发;第三方代码和资源保留其记录的许可和署名。

SolidCraft 是独立的。其行为基于公开文档、通用 CAD 惯例和用户反馈设计。参考测试使用解析值和开源工具。SolidCraft 与 Autodesk 无关联、未受其赞助或认可。Autodesk 和 Fusion 是 Autodesk, Inc. 的商标。