storytold/cadcraft · 上手攻略
- 仓库:storytold/cadcraft
- 链接:https://github.com/storytold/cadcraft
- 分类:生产力工具 · CAD / 工程制图 / Rust
- 作者:Tom
- 更新:2026-10-11
§0 自检
- GitHub URL fetched ✅
- 顶会/年份:无(工具类,无学术论文归属)✅
- README 子模块 anchor:why-cadcraft / what-works-today / quick-start / agents-mcp-cli / architecture / roadmap ✅
- ⚠️ 版本号:README 内未标注显式版本号,下载文件名含版本占位符(需从 release 页确认最新版本)
是什么
CADCraft 是一款开源、清洁室(clean-room)实现的 AutoCAD 替代品,用纯 Rust 从零重写,不依赖任何 AutoCAD 组件。兼容 AutoCAD 的命令行操作方式、图层系统、对象捕捉、标注、填充、块(Block)和 DXF 文件格式。
说得直白一点:用 Rust 重新实现了一套 AutoCAD 的核心功能,兼容 DXF/DWG,可以跑在 macOS、Windows、Linux、FreeBSD,甚至浏览器里(WebAssembly)。
关键特色:
- 命令行驱动:像 AutoCAD 一样敲命令,L 画线,C 画圆,OFFSET 偏移,TRIM 裁剪
- 纯 Rust:性能好,跨平台,内存安全
- DXF 原生读写:R12~2018 的 ASCII 和二进制 DXF 都支持,输出 R2000 格式
- DWG 读(通过 acadrust 库):可打开既有 DWG 文件
- Agent / MCP / CLI:可以通过 MCP 协议或 JSON 控制通道让 AI Agent 驱动它画图
- 双许可证:MIT 或 Apache-2.0,可以闭源使用
解决什么问题
- 想用开源工具替代 AutoCAD,不需要商业许可
- 需要让 AI Agent 直接驱动 CAD 画图(MCP 协议支持)
- 跨平台需要 CAD:Windows / macOS / Linux / FreeBSD 都能跑
- 不想装厚重臃肿的商业 CAD 软件,只画 DXF 图
- 想在浏览器里直接打开 CAD 图(WebAssembly 版本)
- 对 DXF/DWG 有定制化需求,Rust 生态可扩展
⚠️ 注意:CADCraft 处于早期活跃开发阶段(honest status),不是所有 AutoCAD 功能都已实现,具体 parity 数字见 ROADMAP.md。
快速安装
方式一:下载预编译包(推荐)
访问 https://getartcraft.com/apps/cadcraft 或 GitHub release 页,根据平台选包:
macOS(Apple Silicon / Intel)
下载 cadcraft--macos-arm64.dmg 或 cadcraft--macos-x86_64.dmg
双击打开,将 CADCraft.app 拖入 Application
Windows(x64)
下载 cadcraft--windows-x86_64.msi 或 cadcraft--windows-x86_64.zip(便携)
MSI 双击安装
Linux(x64)
下载 cadcraft--linux-x86_64.tar.gz
tar -xzf cadcraft--linux-x86_64.tar.gz
./cadcraft # 或通过显示管理器启动
FreeBSD(x64)
下载 cadcraft--freebsd-x86_64.tar.gz
解压后运行 cadcraft
浏览器(WebAssembly)
下载 cadcraft-web-.zip(静态文件)
任意静态服务器托管即可,例如:
python3 -m http.server 8080
然后浏览器访问 http://localhost:8080
方式二:从源码编译
依赖:Rust 1.95+(桌面版),Rust 1.90+(核心工作区)
# 克隆仓库
git clone https://github.com/storytold/cadcraft
cd cadcraft
# 编译并运行(带示例图纸)
cargo run --release -p cadcraft -- --sample
# WebAssembly 版(需 trunk)
cd apps/cadcraft-web
cargo install trunk # 如果没有 trunk
trunk serve
# 浏览器打开 http://localhost:8080
⚠️ CADCraft 不捆绑字体,使用系统已安装的 TrueType/OpenType 字体(.ttf/.otf/.ttc)。中文字体支持依赖系统安装的 CJK 字体(Noto Sans CJK、微软雅黑等)。
核心用法
基本绘图命令(对照 AutoCAD)
# 画线:L → 输入起点 → 输入终点
line 0,0 @10,0 @0,5 c a
# L: LINE 命令
# 0,0: 起点
# @10,0: 相对坐标(往右 10)
# @0,5: 相对坐标(往上 5)
# c: close,闭合图形
# a: 输入下一个点的角度(极轴模式)
# 画圆:C → 圆心 → 半径
circle 5,2 1
# 偏移:OFFSET → 偏移距离 → 选择对象 → 选侧
offset 0.25
# 选择要偏移的圆
# 点击偏移侧
# 缩放视图
zoom e # zoom to extents,缩放到充满窗口
zoom w # zoom window,缩放到窗口范围
精度工具(对象捕捉)
常用对象捕捉(Object Snap)快捷键:
| 捕捉类型 | 关键词 |
|---|---|
| 端点 | end |
| 中点 | mid |
| 圆心 | cen |
| 交点 | int |
| 垂足 | per |
| 切点 | tan |
| 最近点 | nea |
输入 OSNAP 或在设置里打开「运行对象捕捉」,持续生效。
图层管理
# 新建图层
layer new mylayer
# 设置颜色
layer set mylayer color red
# 冻结图层
layer freeze mylayer
# 锁定图层
layer lock mylayer
文件操作
# 打开 DXF 文件
open drawing.dxf
# 保存
save mydrawing.dxf
# 导出其他格式
export pdf mydrawing.pdf
export svg mydrawing.svg
export png mydrawing.png
Agent / MCP / CLI 驱动
MCP 服务器(stdio 模式,无头):
cadcraft-cli mcp
# 输出 JSON-RPC 格式,可被 AI Agent 连接
MCP 服务器(桥接到运行中的 GUI):
# 先启动 GUI,加 --control 7979
cadcraft --control 7979
# 再在另一个终端
cadcraft-cli mcp --connect 127.0.0.1:7979
一次性无头运行:
# 用示例图纸跑脚本,然后保存/导出
cadcraft-cli run --sample \
--script 'CIRCLE 22,3 1\n' \
--save out.dxf --export out.png
# 查图纸信息
cadcraft-cli info drawing.dxf
# 格式转换
cadcraft-cli convert drawing.dxf drawing.svg
# 导出局部窗口
cadcraft-cli convert drawing.dwg detail.png \
--window 0,0,20000,15000
环境变量:
| 变量 | 作用 |
|---|---|
CADCRAFT_CONFIG_DIR |
指定配置目录(默认平台标准位置) |
RUST_LOG |
日志级别,如 RUST_LOG=debug,cadcraft_io=trace |
CADCRAFT_FONTALT |
字体找不到时的替代字体 |
CADCRAFT_FONTFALLBACK |
字体缺字时的回退字体列表 |
典型适用场景
| 场景 | 推荐方式 |
|---|---|
| 日常工程制图(DXF 为主) | GUI 版,直接拖拽 |
| 让 AI Agent 画 CAD 图 | MCP 模式,Claude/GPT 通过 MCP 连接 |
| 批量转换 DWG/DXF 文件 | cadcraft-cli convert 脚本化 |
| 浏览器里快速查看图纸 | WebAssembly 版,零安装 |
| 自动化出图报告 | CLI 脚本 + PDF 导出 |
| 参与 CADCraft 开发 | 源码编译,RUST_LOG=debug 看详细日志 |
坑与注意
- 不是所有 AutoCAD 命令都有:目前实现约 70%+ 常用命令,详见 ROADMAP.md。复杂 AutoCAD 脚本可能无法直接移植。
- 字体兼容性:CADCraft 不捆绑字体。如果 DXF 文件用了 SHX 字体(含大字体如 chineset.shx),CADCraft 会用自带的笔画字体替代,可能会与原始显示不同。
- DWG 写入有限制:DWG 读取通过 acadrust 库支持,但写入只支持 R2000 格式;更新的 DWG 版本写入可能丢数据。
- 中文字体依赖系统:CJK 字符显示依赖系统安装的 Noto Sans CJK、微软雅黑等字体,否则会回退到笔画字体。
- 早期版本 API 可能变:MCP 协议和 CLI 接口仍在活跃开发,版本间可能有 Breaking Change。
- 日志文件增长限制 16 MiB:日志文件达到 16 MiB 后停止写入,崩溃诊断请在 16 MiB 到达前抓取日志。
- WebAssembly 版性能有限:复杂图纸在浏览器里运行可能有性能瓶颈,不适合大图纸。
- 平板/触控支持弱:主要针对键鼠操作设计,触控板支持一般。
与同类对比
| 工具 | 语言 | 许可证 | DXF | DWG | 平台 | Agent/MCP |
|---|---|---|---|---|---|---|
| CADCraft | Rust | MIT/Apache-2.0 | ✅ R12~2018 读写 | ✅ 仅读(R2000) | 全平台 + WASM | ✅ MCP + CLI |
| FreeCAD | C++/Python | LGPL | ✅ | ⚠️ 有限 | 全平台 | ⚠️ 有限 |
| LibreCAD | C++ | GPL | ✅ | ❌ | 全平台 | ❌ |
| QCAD | C++ | GPL/商业 | ✅ | ❌ | 全平台 | ❌ |
| OpenSCAD | C++ | GPL | ❌(.scad) | ❌ | 全平台 | ❌ |
| BricsCAD | C++ | 商业 | ✅ | ✅ | 全平台 | ⚠️ LISP API |
CADCraft 的独特优势:
- 纯 Rust 实现,性能和内存安全兼得
- 原生 MCP 协议支持,AI Agent 驱动画图开箱即用
- AutoCAD 命令行操作习惯完全对齐(别名、透明命令、@dx,dy 等)
- 双许可证(MIT/Apache-2.0),可闭源商业使用
- 浏览器可直接打开(WebAssembly)
一句话结论
CADCraft 是目前最值得关注的开源 AutoCAD 替代品:Rust 写的、性能好、原生支持 AI Agent 通过 MCP 驱动——既适合个人工程师日常画 DXF,也适合拿来让 AI 直接帮你画图,推荐配合 MCP 使用。
三证 checklist:GitHub URL ✅ | 顶会/年份:无(工具类)✅ | README 子模块:why-cadcraft / quick-start / agents-mcp-cli ✅