109 行
8.1 KiB
Markdown
109 行
8.1 KiB
Markdown
# 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~~\`,废掉总装引用)。
|