>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Rust

OpenCADStudio:一位爱好者如何用 Rust 编写 CAD 并在浏览器中运行

任何曾经在 Linux 或 macOS 上尝试快速打开 DWG 文件而不购买重型专有软件的人都知道这种痛苦。可选方案通常很有限:要么是专业软件的精简免费版本,要么是 2000 年代初期的老旧工具。

GitHub 上出现了一个有趣的项目叫 OpenCADStudio(OCS)。这是一个 2D 和 3D CAD 编辑器,完全使用 Rust 编写。最棒的是——作者在没有使用臃肿的第三方库的情况下实现了对 DWG 和 DXF 格式的原生支持,并构建了一个可工作的 WebAssembly 版本,可以直接在浏览器中打开。

resim

项目功能

OpenCADStudio 的界面设计参考了经典 AutoCAD。底部是带有自动补全功能的命令行,顶部是功能区菜单,两侧是图层和几何属性面板。

如果查看支持的命令列表,就会明白:这不是一个抽象概念,而是一个可工作的程序。

文件读取和写入

编辑器可以读取和保存从 R13 到 R2018 版本的 DWG 和 DXF 绘图文件。支持导出为 STL、STEP AP203 和 PDF 用于打印。如果你需要加载现成的 3D 模型,支持 OBJ 格式导入。

2D 绘图和标注

编辑器的工具库包含基本的绘图工具:直线、多段线、圆、圆弧、样条曲线和填充设置。TRIM、EXTEND、OFFSET 或 FILLET 等编辑命令适用于大多数线型。

他们也没有忘记文档功能:

  • 线性、角度、半径和坐标标注,支持 DIMSTYLE。
  • MTEXT 文本块和 MLEADER 引线。
  • 表格和 GD&T 框。
resim2

3D 建模

对于体对象操作,OCS 使用立方体、球体或圆柱体等基本体素,以及拉伸操作(EXTRUDE、REVOLVE、LOFT、SWEEP)。ACIS 实体渲染处理平面区域和复杂的 3D 实体。

图纸空间和视口

OCS 包含功能完整的图纸空间支持。你可以创建多个布局选项卡,配置带有模型投影的视口,并将最终图纸发送到物理打印机。

技术内部实现

OpenCADStudio 的核心引擎是 Rust 语言和 wgpu 图形 API。这让作者实现了清晰的 GPU 加速渲染,支持 4× MSAA 抗锯齿。

得益于 WebGPU 和编译为 WebAssembly,该项目可以在普通 Web 浏览器中运行。你可以打开项目的 GitHub Pages 并查看任何图纸,而无需在 PC 上安装程序。

渲染时考虑了 CAD 特有的功能:

  • 带实体填充的宽带多段线。
  • 包含嵌入文本和符号的复杂线型。
  • 根据工作空间浅色或深色背景自动调整几何颜色。
  • 对象遮罩(Wipeout)和光栅底图通过 IMAGE 命令实现。

如何运行编辑器

如果浏览器版本不够用,主要系统都有桌面二进制文件可用。

对于 Linux,开发者构建了一个无需额外依赖的 AppImage:

chmod +x OpenCADStudio-*-linux-x86_64.AppImage
./OpenCADStudio-*-linux-x86_64.AppImage

对于 Apple Silicon 上的 macOS 用户,通过 Homebrew 安装应用更方便:

brew install --cask --no-quarantine \
  https://raw.githubusercontent.com/HakanSeven12/OpenCADStudio/main/packaging/homebrew/open-cad-studio.rb

从源码构建是 Rust 的标准方式(需要编译器版本 1.75+):

git clone https://github.com/HakanSeven12/OpenCADStudio.git
cd OpenCADStudio
cargo build --release --bin OpenCADStudio
./target/release/OpenCADStudio

当前状态

OpenCADStudio 目前处于活跃开发状态。仓库有 570 多颗星和约 80 个开放问题,文档目前仅限于 README 文件。

对于复杂的商业工程来说,该软件可能还不够完善。但如果你需要一个轻量级的 Linux DWG 查看器和编辑器,或者想学习 Rust 中真实图形应用的架构,这个项目值得探索。尝试 Web 版本并在浏览器中直接打开你的文件,是体验现代 Rust 在图形领域能力的好方法。

相关项目