mcpField
S
stl-generator

stl-generator

github.com/ihistand设计与 UI288 次安装4 周前更新
代码仓库

关于 stl-generator

STL Generator 是一项技能,可用 build123d 参数化脚本制作木工夹具和替换零件,并导出经过打印检查的 STL。它提供现成生成脚本,以及测量、配合间隙、打印方向和模型验证指导。

主要功能

  1. 01生成夹具和替换零件 STL
  2. 02使用现成参数化脚本
  3. 03检查打印床适配与可打印性
  4. 04依据实测尺寸建模
  5. 05可选导出 STEP 文件

适用场景

  1. 01制作路由器圆形切割夹具
  2. 02制作角度楔块或间距块
  3. 03复刻实测尺寸的螺纹灯罩
  4. 04打印前验证自定义零件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ihistand/claude-skills --skill stl-generator

安装后在 Claude Code 中输入/stl-generator确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
build123d_patterns.md
printer_specs.md
scripts/
angle_wedge.py
circle_cutting_jig.py
printcheck.py
spacing_block.py
threaded_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 文件。

评论

支持 Markdown