首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

显示 HN:LuaCAD – 用 Lua 编写的参数化 CAD 脚本

摘要

Scriptable CAD with Lua. Write parametric 2D and 3D models in Lua and export them to 3MF, STL, OBJ, PLY, OFF, AMF, or SCAD, or render them straight to a PNG. LuaCAD embeds Lua 5.4 in a Rust engine tha...

luacad model lua and dev LuaCAD Lua OpenSCAD my_cube my_sphere
2026-08-15 1 阅读 约7分钟阅读 adius
分享:
字号:
使用 Lua 编写脚本化 CAD。在 Lua 中编写参数化 2D 和 3D 模型并将其导出为 3MF、STL、OBJ、PLY、OFF、AMF 或 SCAD,或直接将其渲染为 PNG。 LuaCAD 将 Lua 5.4 嵌入 Rust 引擎中,直接评估 CSG 操作(通过 Manifold )或生成用于外部渲染的 OpenSCAD 代码。为什么是卢阿?与 OpenSCAD 语言类似的语法,但更好: 更强大 更一致 更快 易于嵌入 自然 CSG 语法的运算符重载( a + b 、 a - b 、 a * b ) 已在 LibreCAD 和 Autodesk Netfabb 等其他 CAD 软件中使用 LuaCAD 示例: my_cube =cube { size = { 1, 2, 3 } } function my_sphere(radius) return sphere({ r = radius }):translate(5, 0, 0) end model = my_cube + my_sphere(2) render(model) 等效 OpenSCAD: module my_cube() {cube(size=[1,2,3]); } 模块 my_sphere(radius) { 翻译([5,0,0]) 球体(r = 半径); } union() { my_cube();我的球体(2); } 入门 cars install luacad # 用于运行和转换 LuaCAD 脚本的 CLI Ca​​rgo install luacad-studio # 具有实时 3D 预览的 GUI 桌面应用程序 或者来自源代码,这需要 Rust : git clone https://github.com/ad-si/LuaCAD.git cd LuaCAD make install 两个包都提供了 C/C++ 依赖项,因此不需要安装系统库 - 但必须有 C++ 编译器和 CMake 来构建它们。 luacad 构建 Manifold 和 Clipper2; luacad-studio 另外构建了 OpenCSG ,它需要 OpenGL 开发头文件(在 Debian/Ubuntu 上: libgl1-mesa-dev 、 libx11-dev 、 libxcb1-dev 、 libxkbcommon-dev 、 libxrandr-dev 、 libwayland-dev )。 CLI 用法 luacad Convert model.lua output.3mf # 转换为 3MF luacad Convert model.lua output.stl # 转换为 STL luacad Convert model.lua output.scad # 导出为 OpenSCAD luacad watch model.lua output.3mf # 根据文件更改重新构建 luacad render model.lua Preview.png # 渲染为 PNG 图像 luacad info model.lua # 打印三角形计数和边界框luacad lint model.lua # 使用 selene 进行 Lint(也需要目录) luacad run model.lua # 执行(仅副作用)转换并观察从输出扩展推断格式; --format 覆盖它,并且 --via-openscad 将导出交给已安装的 OpenSCAD 二进制文件,而不是使用 Manifold 构建网格。 BOSL2 LuaCAD 完全支持 Belfry OpenSCAD 库 v2 ,在 LuaCAD 本身中重新实现,因此无需安装 OpenSCAD 或 BOSL2 即可渲染、预览和导出到网格: bosl.cuboid { {40, 40, 40}, rounding = 2 } bosl.regular_prism { 5, r = 10, h = 25 } bosl.spur_gear { circ_pitch = 5,牙齿= 20,厚度= 5}导出到.scad仍然会编写BOSL2调用本身,这使得导出的文件与生成它的脚本一样短。文本和导入 text() 将系统字体轮廓化为草图,text3d() 一步将其挤出,因此文本成为真正的几何图形而不是 SCAD 输出: render(text("LuaCAD", { size = 12, halign = "center" }):linear_extrude(2)) import() 读取 LuaCAD 写入的每种网格格式并返回一个可以像任何基元一样转换和组合的实体; SVG 和 DXF 返回 2D 草图,准备挤出。支持的导出格式 SCAD - OpenSCAD 格式 3MF - 3D 制造格式 STL - 用于 3D 打印的标准三角语言 OBJ - Wavefront 3D 对象格式 PLY - 多边形文件格式 OFF - 对象文件格式 AMF - 增材制造文件格式 脚本返回的每个值都会成为其自己的 3MF 对象,因此切片器将它们加载为单独的可移动部件。用 :name(...) 标记它们以控制它们在对象列表中的显示方式。其他格式无法表达单独的对象,因此它们将所有内容展平为单个网格。
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱