关于 stl-generator
STL Generator 是一项技能,可用 build123d 参数化脚本制作木工夹具和替换零件,并导出经过打印检查的 STL。它提供现成生成脚本,以及测量、配合间隙、打印方向和模型验证指导。
主要功能
- 01生成夹具和替换零件 STL
- 02使用现成参数化脚本
- 03检查打印床适配与可打印性
- 04依据实测尺寸建模
- 05可选导出 STEP 文件
适用场景
- 01制作路由器圆形切割夹具
- 02制作角度楔块或间距块
- 03复刻实测尺寸的螺纹灯罩
- 04打印前验证自定义零件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ihistand/ claude-skills --skill stl-generator安装后在 Claude Code 中输入/stl-generator确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/build123d_patterns.mdprinter_specs.mdscripts/angle_wedge.pycircle_cutting_jig.pyprintcheck.pyspacing_block.pythreaded_globe.py详细介绍
用于夹具和替换零件的 STL 生成器
将夹具和替换零件设计为参数化的 build123d 脚本,并导出 STL,确保一次打印成功。交付物是 STL:打印机只关系到零件能否放进打印平台,以及哪些间隙合适,这两项都可以设为参数。
运行 build123d
脚本位于 ${CLAUDE_SKILL_DIR}/scripts/(此技能的文件夹)。使用 uv 运行,无需设置,并且适用于任何 Python 版本:
uv run --with build123d python ${CLAUDE_SKILL_DIR}/scripts/spacing_block.py 10
如果不使用 uv:创建虚拟环境并运行 pip install build123d,然后使用该虚拟环境中的 Python 运行。将 STL 写入用户的工作目录(或用户指定的位置),绝不要写入技能自身的文件夹。
可直接使用的脚本
所有脚本都支持通过 --bed XxYxZ 指定非默认打印机的打印平台尺寸,通过 -o 指定输出名称,并通过 --help 查看所有选项及其默认值。以下示例简写为 python scripts/...;请按照上文所示使用 uv 运行。每个脚本都经过测试,并会执行打印就绪检查,因此其输出无需额外测量。
scripts/circle_cutting_jig.py:用于切割圆盘和圆环的圆规式铣刀夹具。
python scripts/circle_cutting_jig.py 300 250 --mount <BC>:<N> # ring: 300 OD, 250 ID
python scripts/circle_cutting_jig.py 200 --bit 12.7 # disc only, 1/2" bit
一块底板用螺钉固定在铣刀上;一根臂上为每个切割位置各设一个枢轴孔,孔位根据铣刀头确定(外圆边缘在 D/2 + 铣刀头/2 处,内圆边缘在 D/2 - 铣刀头/2 处),因此切出的圆尺寸正好符合要求。运行前,询问用户两个无法自行假定的信息:铣刀头的切割直径,以及铣刀底板螺钉孔的分布(在其铣刀上测得的节圆直径 <BC> 和螺钉数量 <N>)。如果用户暂时无法提供这些信息,仍然生成夹具,使用默认的 1/4" 铣刀头且不加 --mount,并告知用户这两项假设:没有螺钉孔的底板可以用铣刀自身的底板作为模板钻孔。
切割圆环时,先切外边缘,最后切内边缘:内圆切开后,会释放用来固定枢轴销的中心圆盘,因此之后便无法再转动。请告知用户这一点,并提醒其将坯料固定在牺牲板上,避免切下后两部分发生移位。脚本也会输出切割顺序。
scripts/angle_wedge.py:将工件固定在精确角度。
python scripts/angle_wedge.py 15
python scripts/angle_wedge.py 22.5 --depth 80 --width 40
侧放打印,使斜面沿 XY 平面成形,而不是因逐层打印而形成阶梯。高度由角度决定,绝不会反过来用高度决定角度,因此角度精确;如果角度过陡,导致零件过高而放不进打印平台,检查会拒绝生成,此时应减小 --depth。
scripts/spacing_block.py:用于装配和定位的间隔块,可生成单个或配套组。
python scripts/spacing_block.py 10
python scripts/spacing_block.py --set 5,10,15,20
测量面保持平整(带雕刻标签、侧边凹槽,以及一个倒角,用作方向标记)。一组中的每个间隔块都平放在打印平台上。对于无法被 0.2 mm 层高整除的高度,脚本会发出警告,因为这些高度无法精确打印。
scripts/threaded_globe.py:用于替换螺纹灯罩(中空球体安装在螺纹套环上,并旋入灯具,类似门廊灯的“固定环”式灯罩)。
python scripts/threaded_globe.py --inches --diameter 5.700 --height 6.2 \
--crest 3.235 --root 3.110 --pitch 0.232 --collar 0.713 --thread-length 0.700 \
--bore 2.825
python scripts/threaded_globe.py <same measurements> --collar-test # print this first
所有尺寸均取自用户的卡尺测量(参见下文“替换零件”)。螺纹采用类似玻璃螺纹的圆弧形设计,--clearance(默认 0.2 mm)会略微缩小螺纹直径,让打印件能够旋入。默认情况下,灯罩会沿赤道分为两半,并通过粘合的半搭接结构连接;每半部分均以边缘朝下打印,使支撑结构留在内部、不易显眼。中空球体若整体打印,支撑结构会在外表面留下痕迹(--one-piece 仍可强制整体打印)。
务必先建议使用 --collar-test:它只耗用约七分之一的塑料,并能在制作整个灯罩前验证螺纹是否匹配。打印的灯罩需要配 LED 灯泡;PETG 在接近 80 C 时会软化。对于户外灯具,ASA 比 PETG 更耐日晒。--step 会额外生成 STEP 文件。
根据实测原件制作替换件
原件就是规格,因此是否适配取决于测量结果。请询问卡尺测量值;切勿根据照片估算尺寸,因为照片没有比例尺。请具体询问:
- **螺纹:**牙顶处的直径、牙槽底部的直径(即牙底直径,应在零件本身上测量,而不是从配合零件上获取)、跨越多个牙顶测量后再除以牙槽数所得的螺距、牙脊形状(圆弧形还是尖锐形),以及旋向(顺时针旋入吗?)。
- **所有与其他物体配合的直径:**开口、套环、孔径。
- 总高度,以及每个不同部分的高度。
- **必须承受的条件:**灯泡或电机产生的热量、阳光、水、负载。
建模前检查测量值是否合理:螺距比螺纹长度还长、牙底直径大于牙顶直径,或各部分尺寸相加不等于总高度,这些都说明测量有误。请先询问确认,不要直接建模;脚本会拒绝这些情况。之前有个相同灯罩的模型没有进行这些检查,结果把灯具插座的牙底尺寸当成了灯罩的尺寸,做出了深度为 0.45 mm 的螺纹,而玻璃本身的槽深实测为 1.6 mm。
定制夹具
编写代码前,请阅读 references/build123d_patterns.md 和 references/printer_specs.md;其中包含能确保零件放在打印平台上的间隙、最小尺寸和 build123d 惯用写法。然后:
- 使用
scripts/printcheck.py中的export_checked导出,而不是直接使用export_stl。将printcheck.py复制到自定义脚本旁边,让两个文件一起移动,而不要从技能文件夹导入它。它会拒绝无效形状、会悬空打印的实体,以及无论如何旋转都大于打印平台的零件;如果只有对角线方向放得下,它也会旋转零件。它还会对超过 45 度的倾斜表面发出警告,因为这些表面需要支撑。如果它拒绝导出,就修改设计(将长夹具拆分成能彼此定位的多个阶段,或缩小夹具);绝不要交付它拒绝的 STL。 - 通过测量实体来验证,而不是重新阅读代码。 使用
is_inside检查孔位,使用bounding_box()检查高度,根据面的法线检查角度。该技能的早期版本曾发布过一些能顺利运行的脚本,却做出了没有枢轴孔的梁式圆规,以及角度为 45 度、实测值却是 26.6 度的楔块;只有测量才能发现这些问题。
木工设计中的重要规则
- 基准面必须保持平整。 任何放置在工件上或抵住工件的表面,都是测量面。标签应采用雕刻(绝不要凸起),并放在不会接触工件的表面上。
- 不要做刀刃状边缘。 薄于约 1 mm 的锥形末端无法打印。加上一小段垂直凸足;这不会改变斜面的角度。
- 精密特征应放在 XY 平面内。 轴线垂直的孔可以打印成圆形;在 XY 平面内绘制的斜面和角度能达到打印机的最高精度。调整零件方向,让关键尺寸位于 XY 平面内。
- 根据配合情况留间隙。 枢轴销和衬套:+0.1 至 0.2 mm。螺钉:+0.3 至 0.5 mm。钻孔导向件:钻头直径加 0.1 至 0.2 mm,以免钻头偏移。
- 将一排孔拆分为分段定位,而不是使用第二个夹具。 当一排孔的长度超过打印平台时,制作一个较短的夹具,让用户沿着孔排移动夹具,并将定位销穿过夹具的第一个孔,插入已经钻好的最后一个孔。移动前后的孔距都能保持精确。
- 对于打印时朝下的表面,文字应镜像。 在打印方向上贴着平台的表面上雕刻的文字,从该侧观察时会是反的,除非在模型中镜像草图。
- 反复钻孔会磨损塑料。 使用次数超过几次的钻孔导向件应安装钢制衬套(采用压入配合,尺寸根据衬套外径确定),而不是让钻头直接接触裸露的 PLA。
交付结果
告知用户:
- STL 的完整路径、文件大小和实体数量(来自
export_checked的输出) - 打印方向(导出时的方向:STL 已处于打印方向),壁数和填充率,以及是否需要支撑及其位置:导出时的悬垂警告会说明这些信息(夹具通常不需要支撑;球体总是需要)
- 打印后需要用卡尺检查的尺寸;对于任何需要配合的部件(销钉、五金件、衬套),建议先只打印该特征的小型测试件;不同打印机和耗材的间隙会有所不同
如果用户之后可能想在 CAD 中编辑,也使用 export_step 导出 STEP 文件。