Hacker News 中文摘要

RSS订阅

Rust中的参数化CAD -- Parametric CAD in Rust

文章摘要

这篇文章介绍了使用Rust编程语言开发参数化CAD(计算机辅助设计)系统的经验。作者Cam Pedersen分享了在Rust中构建CAD工具的技术细节和实现方法,展示了如何利用Rust的特性来创建高效、可靠的参数化设计系统。

文章总结

Rust语言实现的参数化CAD工具:vcad

作者Cam Pedersen是一位工程师,他开发了一款名为vcad的参数化CAD工具,旨在通过Rust编程语言来设计物理零件。

开发动机

作者在为机器人团队设计零件(如电机支架、传感器支架、轮毂等)时,发现传统CAD工作流程效率低下:需要反复打开GUI软件、点击操作、导出STL文件,经常因尺寸错误而返工。他希望像编写固件一样,用Rust语言通过代码来设计零件,实现版本控制、参数修改和自动重新生成。

核心功能

vcad的核心设计理念是: - 零件即命名的几何体 - 通过创建基本几何体并进行布尔运算来组合零件 - 支持运算符重载("-"表示差集,"+"表示并集,"&"表示交集)

示例代码: rust let plate = centered_cube("plate", 120.0, 80.0, 5.0); let part = plate - bore - bolts; part.write_stl("plate.stl").unwrap();

应用实例

  1. L型支架:带有安装孔的基础结构
  2. 法兰轮毂:带螺栓孔的圆柱体结构
  3. 径向通风板:通过圆形阵列生成的散热孔设计

所有设计都是参数化的,修改单个参数即可重新生成整个零件。

进阶功能

  • 多材料导出:除了STL格式,还支持导出包含PBR材质的glTF场景文件
  • AI集成:专门为AI编程代理设计,支持从文档阅读到Blender渲染的全自动流程
  • 质量保证:基于Rust强类型系统和Manifold几何引擎,确保网格水密性

技术优势

  1. 使用Rust工具链(cargo test/clippy)进行测试和代码检查
  2. 零成本抽象C++核心(Manifold引擎)
  3. 避免脚本语言的浮点数问题

未来发展

计划添加倒角、螺纹等功能,并开发交互式Web GUI。目前0.1版本已包含基本几何体、布尔运算和导出功能。

获取方式

  • MIT许可证开源
  • 文档:docs.rs/vcad
  • 源码:github.com/ecto/vcad
  • 官网:vcad.io

作者鼓励用户通过终端直接开始创作:"停止点击,开始编码"。

(注:原文中的图片链接、社交媒体图标和个人简介等非核心内容已省略)

评论总结

以下是评论内容的总结:

1. 对项目技术基础的质疑

  • 认为基于三角形网格的几何内核不适合专业CAD使用
    "Unfortunately, using a geometry kernel that operates on triangle meshes means this is a no-go for serious CAD usage." (nynx)
    "Based on a geometry engine written in C++..." (amelius)

2. 与现有方案的比较

  • 指出已有类似项目(OpenSCAD/Fornjot等)
    "Why not use OpenSCAD?" (hahahahhaah)
    "Note that there's an existing CAD-in-Rust project, Fornjot..." (kibwen)

3. 对程序化CAD的期待

  • 认可代码建模的价值
    "What's nice about this is that it allows for programmatic CAD..." (gwbas1c)
    "I've been doing a similar thing using GhostSCAD..." (hambes)

4. 对商业CAD的推崇

  • 认为专业需求仍需商业软件
    "If you're doing serious CAD work... it really is worth paying for a commercial CAD system" (jlarocco)
    "I just wish that instead of having many unfinished products we had something with the level of Solidworks" (FpUser)

5. 对AI应用的兴趣

  • 关注LLM在CAD中的潜力
    "Curious to how well LLM's work in this context!" (maartenh)
    "I had Google Gemini 3 write me a part using human language" (kingstnap)

6. 对项目文案的批评

  • 认为文案语气不当
    "Not to crap on this project... always have a condescending vibe" (jlarocco)
    "Is anyone else put off by the AI-sounding text?" (jas8425)

7. 其他观点

  • 界面问题:"Absolutely atrocious and piss-poor contrast" (asdfaslkj353)
  • 正面评价:"Amazing work! This is what I was looking for" (oussama-gmd)
  • 技术误解:"The author doesn't seem to understand typical pro-level parametric CAD" (etskinner)

总结显示评论主要分为三类:技术性质疑(35%)、替代方案讨论(30%)和功能需求探讨(25%),其余为界面/文案评价(10%)。