Hacker News 中文摘要

RSS订阅

Show HN: LuaCAD – 用Lua脚本编写的参数化CAD -- Show HN: LuaCAD – Parametric CAD Scripted in Lua

文章摘要

LuaCAD是一款基于Lua脚本的可参数化2D/3D建模工具,支持导出多种格式或直接渲染为PNG。其引擎在浏览器中通过WebAssembly运行,无需安装。它使用Rust引擎直接计算CSG操作,或生成OpenSCAD代码。

文章总结

LuaCAD是一款基于Lua脚本的可编程CAD工具,支持在Lua中编写参数化的2D和3D模型,并导出为3MF、STL、OBJ、PLY、OFF、AMF或SCAD格式,也可直接渲染为PNG图像。其引擎通过WebAssembly在浏览器中运行,无需安装或上传文件。LuaCAD将Lua 5.4嵌入Rust引擎中,可直接执行CSG操作(通过Manifold库),或生成OpenSCAD代码供外部渲染。

选择Lua的原因包括:语法与OpenSCAD相似但更强大、一致、快速且易于嵌入;支持运算符重载以实现自然的CSG语法(如a + ba - ba * b);已在LibreCAD和Autodesk Netfabb等CAD软件中使用。

示例对比显示,LuaCAD代码更简洁,例如定义立方体和球体并组合的模型,而OpenSCAD需要额外的模块和联合操作。

安装方式:通过cargo install luacad安装命令行工具,或cargo install luacad-studio安装带实时3D预览的桌面应用。从源码安装需Rust环境,并依赖C++编译器和CMake。CLI支持转换、监视、渲染、信息查询、代码检查及执行等命令,格式由输出扩展名自动推断。

LuaCAD完整支持Belfry OpenSCAD库v2(BOSL2),以Lua重写,无需安装OpenSCAD或BOSL2即可渲染和导出网格。导出为SCAD时保留BOSL2调用,保持文件简洁。

文本功能:text()将系统字体轮廓化为草图,text3d()一步挤出为几何体;import()可读取多种网格格式并返回实体,SVG和DXF则返回2D草图。

支持的导出格式包括SCAD、3MF、STL、OBJ、PLY、OFF和AMF。脚本返回的每个值在3MF中成为独立对象,可通过:name(...)标记控制其在对象列表中的显示,其他格式则合并为单一网格。

评论总结

根据评论内容,总结如下:

主要观点:

  1. 积极评价(认可度高):多数评论者对项目表示兴趣和赞赏。如 tolugenius 称“Really interesting!”,并提到自己使用 FreeCAD 的经验;manny_rat 表示“Love it!”,认为 OpenSCAD 语法痛苦;psd1 肯定“A scripting engine is a great feature in cad”。

  2. 功能询问(中性):WillAdams 询问是否支持文件系统读写,并分享自己的 PythonSCAD 项目;fhn 询问是否有在线 playground,并推荐 PythonSCAD 的 playground。

  3. 质疑与对比(平衡观点):adastra22 提出“Isn't OpenSCAD's limited language a feature?”,认为非图灵完备语言可能是优点;manny_rat 询问是否支持倒角/斜角,担心与 OpenSCAD 有相同限制;psd1 表示个人不感兴趣,因曾用 AutoCAD 的 Lisp,认为 Lua 虽合理但平淡。

关键引用: - “Really interesting! I actually use freecad so I'm use to that layer of the process but I'll check this out.” (tolugenius) - “Love it! OpenSCAD has very painful syntax.” (manny_rat) - “Isn't OpenSCAD's limited (non-Turing complete) language a feature?” (adastra22) - “A scripting engine is a great feature in cad, you should be proud of your achievement.” (psd1)