警告「Ignoring unknown module」,或者少了一块
代码调用了原生 OpenSCAD 没有的东西:rounded_cube()、fillet() 这类函数常常是 AI 编出来的。警告里写着是哪一行。让 AI 改用 cube()、cylinder()、hull() 或 minkowski() 来做这一块。
让 ChatGPT、DeepSeek、豆包、Kimi 帮你做一个能 3D 打印的零件,拿到的往往不是文件,而是一段 OpenSCAD 代码。把它贴进来:真正的 OpenSCAD 在你的浏览器里一秒左右渲染出来;有错会标出行号,原样贴回对话就行;尺寸变成滑块;最后导出 STL 给切片软件。不用安装,不用登录。
聊天 AI 只会写文字,而 OpenSCAD 正好用文字描述 3D 模型,所以「帮我做个 3D 模型」它通常就回你一段 OpenSCAD。代码要在 OpenSCAD 里跑一遍才变成形状,而 AI 自己从来看不到这个形状——所以第一版常常差一点。这个页面补上的就是这一步:先看到零件,再准确告诉 AI 改哪里。
01
说清零件做什么用,关键尺寸用毫米给出。让它把每个尺寸写成文件开头的变量(下面的提示词就是这么要求的),之后调尺寸不用再来回问。
02
打开预览器,把代码贴进编辑框;或者让 AI 直接给一个预览链接,点开就行。代码一改,半秒后重新渲染。
03
错误和警告显示在编辑框下面,带行号,比如 model.scad:12:5。原样复制给 AI,或者直接描述哪里不对:「挂钩高了 10 mm」。
04
带 Customizer 注释的变量会变成滑块和下拉框。拖一下,代码里那个值就跟着改,你打印的版本就是你能贴回对话的版本。
05
一键存下和屏幕上一样的二进制 STL,拖进 PrusaSlicer、Cura、OrcaSlicer 或 Bambu Studio。要进 CAD 软件?同一页还能导 STEP。
复制到对话里,把空填上。每一行都有用:毫米、滑块、平放在热床上的一个实体、不许编造函数。
用 OpenSCAD 写一个 ___。
- 单位是毫米。
- 每个尺寸都写成文件开头的变量,带 Customizer 注释,比如 width = 60; // [20:1:150]
- 做成一个实体,底面平放在 z = 0 的热床上,尽量避免需要支撑的悬空。
- 只用原生 OpenSCAD:不用库,不要调用代码里没定义的模块。
- 可选:再给我一个 Forgent3D 预览链接,https://app.forgent3d.com/scad#code=<把代码 encodeURIComponent 之后放这里>按上面的要求写的一个手机支架:尺寸都在开头,分组给 Customizer。打开它,拖滑块,导出 STL。
// 手机支架。每个尺寸都是开头的变量,带 Customizer 注释,
// 所以会变成滑块。拖一拖试试。
/* [支架] */
// 靠背与桌面的夹角(度)
angle = 65; // [50:1:80]
// 支架宽度
width = 70; // [50:5:120]
// 壁厚
wall = 4; // [3:0.5:8]
/* [手机] */
// 手机厚度(含手机壳)
phone = 12; // [6:0.5:20]
// 前挡高度
lip = 10; // [4:1:20]
/* [Hidden] */
depth = 80;
rest = 90;
notch = 16;
foot = depth * 0.35;
difference() {
union() {
cube([depth, width, wall]); // 底板
translate([foot, 0, 0]) rotate([0, 90 - angle, 0]) translate([-wall, 0, 0]) cube([wall, width, rest]); // 靠背
translate([foot - phone - wall, 0, 0]) cube([wall, width, wall + lip]); // 前挡
}
// 前挡上留给充电线的缺口
translate([foot - phone - wall - 1, (width - notch) / 2, wall]) cube([wall + 2, notch, lip + 1]);
}打开一个现成的例子 →AI 写的 OpenSCAD 出问题,基本就这几种。下面是你会看到什么、该跟 AI 说什么。
代码调用了原生 OpenSCAD 没有的东西:rounded_cube()、fillet() 这类函数常常是 AI 编出来的。警告里写着是哪一行。让 AI 改用 cube()、cylinder()、hull() 或 minkowski() 来做这一块。
BOSL2 和 MCAD 已经内置,但代码里还得先载入:用 cuboid() 要在开头写 include <BOSL2/std.scad>。漏了就补上这一行。
多半是 translate() 或 rotate() 的正负号、坐标轴写错了。转动视角找到那个零件,告诉 AI 它在哪、应该在哪:「挂钩比底板高了 10 mm,而且朝后」。
OpenSCAD 的变量在一个作用域里只取最后一次赋值,循环里也不会像 Python 那样累加。让 AI 直接把值算出来:用函数或列表推导。
minkowski() 和很高的 $fn 会让计算量成倍增加。先点「停止」,调试时把 $fn 调低,导出前再调回去。
ChatGPT 写 OpenSCAD 时看不到结果。Forgent3D 的 AI CAD agent 会先把零件建出来、量尺寸、看截图,确认过了才交给你;给你的是能继续改的参数化模型,能导出 STEP 和 STL。它写的是自己的 CAD 代码,不是 OpenSCAD。
试试 AI CAD agent →普通对话里它给的是代码。开了代码执行时,它有时能用 Python 写出 STL,但下载之前你还是看不到零件。OpenSCAD 代码加上这个预览器,几秒就能看到、调整、重新导出。
行。不管谁写的 OpenSCAD 代码都能跑。
不会。OpenSCAD 在你的浏览器里运行;#code= 链接里的代码也只留在浏览器里。
OpenSCAD 2025 年的开发版快照,带 Manifold 几何内核,编译成 WebAssembly 运行。MCAD、BOSL2、Write.scad 已经内置。
这个页面只负责显示和导出代码做出来的东西;要改,就改代码,或把要求贴回对话。Forgent3D 的 AI CAD agent 能按描述建零件,但它写的是自己的 CAD 代码,不是 OpenSCAD。
免费。不用注册,不用安装。