3D STL
两个入口,一个输出标准:水密STL文件、参数化脚本 以及确保打印成功的切片器表格。
| 输入 | 路线 | 库 |
|---|---|---|
| 尺寸、描述的对象、文字草图 | 几何路线 | scripts/partlib.py |
| 照片或图片文件 | 图像路线 | scripts/imagelib.py |
几何路线的设置:
pip install trimesh shapely manifold3d --break-system-packages -q
图像路线只需要 Pillow 和 numpy — 不需要网格库,不需要布尔运算。
几何路线
1. 在建模前确定尺寸
这里的大多数返工源于歧义,而不是糟糕的几何形状。将零件以简短表格形式重述(尺寸 → 值 → 来源),并标记你假设的任何内容。特别注意:
- 外部尺寸 vs. 安装中心距。"87 mm 宽"和"螺丝间距 87 mm"是不同的零件 — 两者相差一个壁厚。需要询问。
- 缺失的第三维。轮廓加厚度只有三维中的两维;选择一个合理的深度,说明原因,并将其设为一个标志。
- 紧固件意图。"5 mm 螺丝"可能表示金属 M5 螺丝的间隙孔、打印的螺纹销或热嵌嵌件。三种不同的模型。
- 现有硬件。如果零件与已有零件配合,其孔间距和材料厚度是约束条件,而非偏好。
最多询问一两个会改变几何形状的问题;假设其余部分,陈述假设,然后继续。
2. 使用库建模
scripts/partlib.py 提供了轮廓构建器、extrude、threaded_rod、threaded_pin、hex_nut、place 和 finish。导入它而不是重新推导网格数学 — 螺旋螺纹很容易在细节上出错。
scripts/example_handle.py 是一个完整的示例零件(桥式把手 + 整体螺纹销 + 配套螺母)。将其复制为新手件的骨架。
将模型编写为带有 argparse 标志的参数化脚本,切勿使用硬编码数字。用户会在几分钟内要求一个变体,答案应该是一行命令而不是一个新模型。将脚本与 STL 一起交给用户。
3. 常见零件配方
| 零件 | 构建方式 |
|---|---|
| 桥式把手,⊓ 形支架 | bridge_profile + extrude |
| 带孔平板 | shapely 多边形(含内环) + extrude |
| 销、螺柱、螺栓 | threaded_pin,然后 place 到其轴线上 |
| 螺母、螺纹套筒 | hex_nut,或减去 threaded_rod(clearance=…) |
| 垫片、衬套 | 两个同心圆 + extrude |
| 挂钩、L 形支架 | 侧视图多边形 + extrude,平放在打印床上 |
| 外壳 | 外盒减去内盒;带有 0.15 mm 间隙的凸缘 |
未列出的任何零件仍然是多边形、挤出和布尔运算。
图像路线
scripts/imagelib.py 将图片转换为高度场,并缝合为一个显式顶点网格实体 — 顶面、平底面、四个侧壁。它不使用任何布尔引擎,这正是它在大尺寸或奇怪图片上也不会崩溃的原因。
python3 imagelib.py photo.jpg --mode lithophane --width 100 \
--out stl_output/lithophane.stl
python3 imagelib.py logo.png --mode relief --width 80 --base 2 \
--out stl_output/relief.stl
| 模式 | 映射 | 典型 z 值 |
|---|---|---|
relief | 亮像素凸起 | 0.6 → 4.0 mm,通常在 --base 底板上 |
lithophane | 暗像素变厚,以便背光时发光 | 0.8 → 3.0 mm,无底板 |
--res设置长边上的采样数(默认 200)。分辨率超过约 0.4 mm/采样点没有意义 — 喷嘴无法打印,文件也会膨胀。仅在大尺寸打印时才提高它。- 对比度在加载时会自动拉伸;一张平坦、低对比度的照片会产生平坦、令人失望的打印件。直接说明原因,而不是打印它。
- 浮雕光刻适合脸部和对比度高的对象。风景和复杂场景会变成一团糊。
check()验证每条边是否恰好出现两次且方向相反。仅计数无法检测到反向缝合的壁,这会产生一个"有效"但切片器会将其内外翻转的 STL。运行它并报告结果。
收尾工作(两种路线通用)
首先验证:finish()(几何路线)和 check()(图像路线)报告边界盒、水密性和三角形数量。将边界盒与要求的尺寸进行比较 — 这能立即发现符号错误和单位错误。切勿提交一个不水密的网格。
对于任何非直观的部分 — 螺纹、曲线、装配体 — 渲染一个快速的 matplotlib 预览并查看。二十秒胜过六小时打印出错误形状。
在选择方向、螺纹螺距或间隙之前,请阅读 references/design-rules.md。它涵盖了层方向强度、可打印螺纹轮廓、配合公差、图像衍生零件以及值得命名的失败模式。
回复应包含:
- 一个尺寸表格,包括假设值。
- 任何代表用户做出的决定及其原因。如果请求的特征在机械上较弱,请按用户要求构建并指出该弱点,同时提供具体的替代方案 — 切勿暗中替换。
- 一个切片器表格:层高、壁厚、填充、支撑(确切位置)、材料,以及哪个面朝下放在打印床上及其原因。
- 用于重新生成不同数值的单行命令。
- 打印前需要与现有硬件确认的所有事项。
将 STL 文件投递到 claude.ai 上的 /mnt/user-data/outputs/,或投递到 Claude Code 中当前工作目录的 stl_output/ 文件夹,并与生成脚本一起呈现。脚本位于此技能的 scripts/ 文件夹中;请通过完整路径调用它们,或将它们复制到零件脚本旁边。在 Windows 上使用 python 而不是 python3。
多零件装配
当零件相互配合时(销和螺母、盖子和盒子、铰链两半):
- 使用同一脚本中的共享参数生成两者 — 存在于两个文件中的间隙值会不同步
- 从与凸件相同的函数派生凹件,并偏移一个间隙,这样它们就不可能不一致
- 说明每种零件打印多少个,并为小零件建议一个备用件
- 当配合不确定时,提供一个公差测试:以两种间隙打印小零件,选择能旋转的那个