文件

8.1 KiB

R2 外壳建模脚本(SolidWorks 侧)

这些脚本通过 pywin32 挂已经开着的 SolidWorks 实例建模, 产物落在 D:\DCDC\新建文件夹\5blades\(不进 git,太大)。

动手前必读 .claude/skills/solidworks-assembly/NOTES-probed.md §33~§35 —— 本机的 API 口径与坑(基准面轴映射、AddToDB、FeatureCut4 不可靠、 判据要用圆柱面直方图而不是包围盒……)每一条都真实踩过。

✅✅ 现行外壳:TopShell_v11 + BottomPlate_v6(2026-09-30,Type-C 外侧沉槽)

用户实测 v10 的两个 Type-C 口墙太厚、线插不到底。make_v11.py 从 v10 派生:贯穿孔仍 = 母座口 8.34×2.60 R0.7, 外侧加 13.4×7.4 R3.2 沉槽、深 1.4,槽底留 1.0 薄壁(用户:不要完全掏空);标识右移到口中心 +10.5。 运行:make_v11.py → topshell_v11.py → place_v11.py → export_stl_v11.py(底盖不变)。 ⚠ place_v11.py 之前要先在 SolidWorks 里打开总装和 TopShell_v11 / BottomPlate_v6 / OD6010_m0_frame 三个零件, 否则 AddComponent4 返回 None(零件必须已在内存里)。参数在 make_v11.py 文件头 PK_*。

螺丝(2026-09-30,screws_v1.py)

用户:原配螺丝太短。建 3 种螺丝零件并装进总装(16 颗),长度只改脚本头 SPECS 的 L 后重跑:

位置 规格 数量 头下长度去向
底盖 → 顶盖角柱 M3×10 薄头内六角 DIN 7984(头 Ø5.5×2.0,平顶) 4 头埋进沉孔 Ø6.5 深 2、与底面齐平;1.6 板 + 8.4 进角柱(孔深 82)
PCB → 底盖立柱 M3×8 同上 4 1.68 板(STEP 实测)+ 6.3 进立柱(孔深 10,余 3.7)
风扇 → 端墙 风扇自攻螺丝 5×12(螺纹 Ø5,平头 Ø7×2) 8 2.4 墙 + 9.6 进风扇(风扇厚 10,螺尖不进分风腔)

复验:包围盒 16/16 在位;干涉 368 = 基线 360 + 8 处「风扇螺丝 ↔ 风扇孔」(自攻咬合,预期),底盖 / PCB 螺丝 0 处。 ⚠ 实物要核:热熔螺母长度(按 ≤ 6 选的长度)、风扇螺丝螺纹外径(墙孔 Ø5.2,外径 > 5.1 就穿不过墙)。

⛔ 已被 v11 取代:TopShell_v10 + BottomPlate_v6(嵌入式底盖)

make_v10.py(从 topshell_v9 / bottomplate_v5 / place_v9 派生)→ topshell_v10.py → bottomplate_v6.py → add_fillets.py BottomPlate_v6.SLDPRT 1.0 z → place_v10.py。配合间隙参数 CLR(默认 0.3)在 make_v10.py 文件头。

⛔ 已被 v10 取代:TopShell_v9 + BottomPlate_v5(格栅加横筋,可打印)

make_v8.py(v8:3 条 1.2 横撑,已被 v9 取代)→ patch_make_v9.py 产出 make_v9.py → topshell_v9.py → place_v9.py(复验已改为不忽略隐藏实体)→ render_v9.py。 格栅参数在 make_v9.py:GR_W/GR_RIB(槽宽/竖筋)、XB_W/XB_SEG(横筋宽/最长槽段)。

⛔ 已被 v9 取代:TopShell_v7 + BottomPlate_v5(美化 + 无滤网,整机 134.3)

派生链(每步都是纯文本补丁、锚点断言次数): make_v4.py 产物 → make_v5.py(顶面圆角 / 圆头槽 / 东格栅 / 标识;新写 bottomplate_v4.py;filterframe_v3.py) → make_v6.py(两端都格栅)→ make_v7.py(删滤网导轨与滤网框,底盖西沿回 −17.9)。 运行:topshell_v7.py → bottomplate_v5.py → add_fillets.py BottomPlate_v5.SLDPRT 2.5 z → place_v7.py → render_v7.py(按视线方向截图)。 filterframe_v*.py 与 v5/v6 的顶盖、总装脚本只作派生源,不再运行。

⛔ 已被 v7 取代:TopShell_v4(开口精简)

在短机版流程第 2 步之后加:make_v4.py(从 topshell_v3.py / place_v3.py 派生)→ topshell_v4.py → place_v4.py。 北墙无开口;南墙 Type-C 开口 = 母座口内侧轮廓(USB_W/USB_H/USB_R = 8.34/2.60/0.70,母座实测见 probe_usbc2.py)。

✅✅ 现行方案:短机版(2026-09-13,整机 140.7)

风扇 60×60×10(孔距 50.2)+ 分风腔 10。生成顺序:

  1. make_v3.py —— 从 topshell_v2 / bottomplate_v2 / filterframe_v1 / place_filter 文本派生出 v3 四个脚本(几何常量集中在文件头)
  2. patch_v3_cut.py —— 把顶盖的面上切除换成「读 ModelToSketchTransform 先验平面、再按变换精确画」(必须跑,否则东墙那刀可能切到顶板上)
  3. topshell_v3.py(圆角已内联)、bottomplate_v3.py → add_fillets.py BottomPlate_v3.SLDPRT 3.0 z、filterframe_v2.py
  4. import_fan6010.py(Orion OD6010 STEP → SLDPRT,只查干涉用)
  5. place_v3.py —— 换件 + 风扇 25→10 + 干涉 / 螺丝孔 / 风扇腰孔 / 滤网间隙 全套复验

改实物尺寸(螺丝外径、头高、分风腔)只动 make_v3.py 文件头常量后按上面顺序重跑。

⛔ 前一版(已被短机版取代):两件式(2026-09-13)

件 定稿文件 脚本
一体顶盖 TopShell_v2.SLDPRT make_topshell_v2.py 从 topshell_v1.py 派生出 topshell_v2.py(圆角已内联,不要再跑 add_fillets:导轨让包围盒判据漏掉西侧两角)
底盖 BottomPlate_v2.SLDPRT bottomplate_v2.py → add_fillets.py BottomPlate_v2.SLDPRT 3.0 z
滤网框 FilterFrame_v1.SLDPRT filterframe_v1.py(判据:贴墙面/外表面面积等于设计值 ⇒ 窗口与格孔都开出来了)
入总装 + 复验 — place_filter.py(由 make_place_filter.py 从 place_twopiece.py 派生;含滤网滑槽间隙核对)

topshell_v1.py / bottomplate_v1.py / place_twopiece.py 是无滤网版,留作派生源。

⛔ 六件式(已作废,仅作参考):定稿件 ↔ 脚本

件 定稿文件 脚本
托盘 Tray_v9.SLDPRT tray_v2.py(⚠ 文件里的 DST 已指向废版 v11,跑之前把 DST 改回想要的版本号)
端板 ×2 EndPlate_v13.SLDPRT endplate_v11.py(几何 + C 组 + 北侧 A 组)→ endplate_v12_south.py(南侧 A 组)→ add_fillets.py … 3.0 x → endplate_v13_foot.py(L 脚锁孔)。endplate_v10.py 是无孔版
装配内同轴核对 — check_coaxial.py(螺母孔 ↔ 相邻板过孔、脚锁孔 ↔ 托盘,只读)
南板 SouthPanel_v4.SLDPRT southpanel_v4.py
北板 NorthPanel_v3.SLDPRT northpanel_v3.py
顶盖 TopPanel_v4.SLDPRT toppanel_v4.py
圆角(全部件) — add_fillets.py <零件名> <半径> <轴>(端板轴 x / 南北板 y / 顶盖 z / 托盘 z)
入总装 + 复验 — place_v10.py(15 mm 分风腔版的整体摆位);只换端板用 swap_endplate_v13.py

add_panels.py / add_endplates.py 是 152.8 短机版的旧入口,已被 place_v10.py 取代,留作参考。

分析 / 探测(只读,不改模型)

脚本 用途
probe_top.py 回读总装顶层件的包围盒 + 刀片通道间距,存 _top.json
probe_plenum.py 查分风腔切片与南北条带里有哪些底板器件(挡风板能占哪儿)
shroud_feas.py 纯本地算(吃 _top.json):逐通道风口覆盖率、旁通面积、分风腔深度 ↔ 阻力比
contact_map.py 贴合面检查 —— 干涉为零 ≠ 装配成立,托盘悬空那次就是这么查出来的
screw_plan.py 按实测贴合面算螺丝位置(⚠ 内含的 A/C 组坐标是旧的 x −13.70/111.70,已被角柱方案取代)

三条固定纪律

  1. 改几何就换版本号,别覆盖正开着的文件 —— 同名 SaveAs3 会返回 err=1 且不写盘。
  2. 不信返回值:另存看 os.path.exists + 时间戳;打孔看圆柱面半径直方图(按孔径分桶); 开口看面数。包围盒对通孔/圆角没有分辨力。
  3. 零件保持打开 —— AddComponent4 要求目标文档在打开状态。 清理文档只能点名关,绝不能 CloseAllDocuments(会清空 %TEMP%\swx*\IC~~\,废掉总装引用)。