R2 刀片:金手指两侧开台阶(插不进插槽)+ 铺铜补齐并跟着台阶重画
⛔ 根因:禁布区 ≠ 板材。ZONES['finger'] 早写着「槽体 ~9mm 要让开」,但那只是 「别放件」,板框从来没开台阶 —— outline_pts() 第一段就是 (r,0)→(BW-r,0), 90 mm 宽的板材一直到 y=0。插槽塑料体只有 39 mm 且两端封闭 ⇒ 插不到底。 板框(用户拍板):舌头 36.0 mm(x 27~63)/ 台阶高 12.0 / 内凹角 R1.0,切掉 648 mm²(10.6%)。 放行核算:被切区里铜 0 / 孔 0 / 焊盘 0 / 器件 0(板上读回与缓存两种口径一致); 7 个定位孔最南 y=14.46 全在板材上;铣穿槽 y 56.86 不受影响。 代价:主板投影底边在舌头两侧悬空 1.0 mm,靠 7 个 M1.6 尼龙立柱压住,无害。 铺铜:抓板发现板上只有 11 块(L1/L4 的 GND 底填整层缺失,而记录写的是 25/25)。 补齐后按台阶重画成 31 块(L2 11 + L1 9 + L4 9 + L3 两岛),填充 31/31,DRC 间距 0 条。 +12V 岛改成阶梯形单环:舌头段仍下探 y=9.0 接 12V 三指 launch 孔,东段抬到 12.5, 断面 11.0 → 7.5 mm(1 oz 内层约 5.1 A,需求 1.5 A 峰值)。 两条判据上的坑: - 阶梯形多边形不能按包围盒判越界(+12V 岛会误报)⇒ 改成逐边 0.25 mm 采样。 - pcb_pour.inner_poly()/outer_poly() 是死函数,plan() 只用 gnd_tiles()。 Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_0168Bu6SEx3cXXCJLkdnE6zB
这个提交包含在:
+64
@@ -3325,3 +3325,67 @@ FAN_PWM_L (10.30, 83.90, 22.50, 87.30) 盖住 J27.4 与 Q6.3
|
||||
|
||||
工具:**`silk_base.py`**(`--push` 走 `pcb_PrimitiveAttribute.modify(id, {x, y, rotation})`,
|
||||
下发后读回逐个核对),快照 `_base_silk.json`、方案 `_base_silk_plan.json`。
|
||||
|
||||
## 40. 刀片金手指两侧开台阶(2026-09-12 用户指出「插不进插槽」)+ 铺铜补齐
|
||||
|
||||
用户:「解决刀片板与插槽干涉的问题,完善刀片板铺铜」→「金手指两侧没有开槽,应该会插不进插槽」。
|
||||
|
||||
### 40.1 ⛔ 根因:刀片底边是一条直线,而 PCI-E 卡在这一段必须是「凸」字形
|
||||
|
||||
`outline_pts()` 原来第一段就是 `(r, 0) → (BW-r, 0)` —— 整块 90 mm 宽的板材一直到 y=0。
|
||||
而插槽塑料体只有 **39 mm 长且两端封闭**(`PCIE-64P11L`,焊盘外框 42.0 × 9.2),
|
||||
高度约 9 mm。卡插下去时,x < 29.5 / x > 68.5 的板材会压在塑料体两端壁上,**插不到底**。
|
||||
|
||||
⚠ 这一条 §3.1 的分区图里其实写着「金手指区 11 mm(**槽体高度 ~9 mm 要让开**)」,
|
||||
但那只写进了 `ZONES['finger']`(禁布区),**板框没有跟着开台阶** —— 禁布区管的是"别放件",
|
||||
不等于"这里没有板材"。两者是两回事,这次才暴露。
|
||||
|
||||
### 40.2 定稿尺寸(用户拍板)
|
||||
|
||||
| 项 | 值 | 说明 |
|
||||
|---|---|---|
|
||||
| 舌头宽 | **36.0 mm**(x 27.00~63.00)| 金手指本身跨 33.70(x 28.15~61.85),两侧各余 1.15 |
|
||||
| 台阶高 | **12.0 mm** | 槽体 ~9,余 3 |
|
||||
| 内凹角 | **R1.0** | 外形铣刀下不去直角(嘉立创外形最小 R0.5) |
|
||||
| 切掉 | **648 mm²**(占 10.6%)| 左 27.0×12.0 + 右 27.0×12.0 |
|
||||
|
||||
常量在 `pcb_blade.TONGUE_X0/TONGUE_X1/STEP_H/STEP_R`;`outline_pts()` 改成凸字形,
|
||||
**第一段仍是舌头底边**(`segments()` 与 `outline_polygon()` 都按这个前提把防呆缺口插进去)。
|
||||
|
||||
### 40.3 放行前逐项核过(两种口径交叉验证)
|
||||
|
||||
被切区(x<27 或 x>63 且 y<12)里:**铜 0 段 / 过孔 0 / 焊盘 0 / 器件本体框 0**
|
||||
(板上读回 + `_blade_pads.json` 缓存两种口径一致)。
|
||||
7 个定位孔最南 `H5` 在 y=14.46,全在板材上;两条铣穿槽在 y 56.86 起,都不受影响。
|
||||
|
||||
⚠ **唯一代价:手机主板投影底边在舌头两侧悬空 1.0 mm**
|
||||
(`PHONE_ORG.y = 11.0` < 台阶 12.0;左 x 1.50~27.00、右 x 63.00~68.59,合计 31.09 mm²)。
|
||||
主板是 7 个 **M1.6 尼龙立柱**压住的(§3.2 中框式焊盘,螺柱间隙 1.0),不靠边缘托 ⇒ 无害。
|
||||
`selfcheck` 里改成判「悬空量 ≤ 1.5」+「定位孔不许落进台阶区」,不再用原来那条
|
||||
`phone.y0 >= finger.y1`(台阶之后 finger 区只剩舌头,那条断言已经没有意义)。
|
||||
|
||||
### 40.4 铺铜跟着台阶改
|
||||
|
||||
- 新常量 `pcb_pour.STEP_POUR_Y = STEP_H + INSET = 12.5`:**舌头两侧的铜下沿**。
|
||||
舌头那一段仍按 `TOP_POUR_Y`(外层 11.5) / `INSET`(内层 0.5) 走。
|
||||
- `gnd_tiles()` 的竖条切分点加入舌头两端,舌头外的条 `y_lo` 抬到 12.5
|
||||
⇒ 外层 L1/L4 每层 7 → **9 块**,内层 L2 由 9 → **11 块**(内层下沿是 0.5,被舌头切得更细)。
|
||||
板上铺铜合计 **25 → 31 块**(L2 11 + L1 9 + L4 9 + L3 两岛)。
|
||||
- **`+12V` 岛(L3)改成阶梯形单环**:舌头段仍下探到 y=9.0 去接 12V 三指的 launch 孔
|
||||
(x 28.5~30.5 / y 11.75,全在舌头内;下沿 9.0 是为了避开地母线的孔 y 7.0/8.2),
|
||||
舌头以东抬到 12.5。断面由 11.0 收到 **7.5 mm**(1 oz 内层 ≈ 5.1 A,需求 1.5 A 峰值)。
|
||||
|
||||
⚠ **`inner_poly()` / `outer_poly()` 是死函数** —— `plan()` 只用 `gnd_tiles()`。改铺铜边界时
|
||||
别去改那两个(改了不生效,看着像"改了没用")。
|
||||
|
||||
### 40.5 一条判据上的坑:阶梯形多边形不能按包围盒判
|
||||
|
||||
给 `selfcheck` 加「铜不许伸进台阶切掉的区域」时,第一版按**整个环的包围盒**判:
|
||||
`+12V` 岛 min(y)=9.0 且 max(x)=84 ⇒ 直接误报,而它 y=9.0 的那一段其实只在舌头内。
|
||||
⇒ 改成**逐边采样**(0.25 mm 步长)判每个点。阶梯形/L 形铜面都要这么判。
|
||||
|
||||
### 40.6 顺带补齐:刀片外层铺铜原本整层缺失
|
||||
|
||||
抓板发现刀片上只有 **11 块铺铜**(L2 九块 GND + L3 两个岛),而 `plan()` 计划 25 块 ——
|
||||
**L1 七块 + L4 七块 GND 底填全都不在板上**(交接记录写的"铺铜 25/25"与板上不符)。
|
||||
已重建。台阶改动后每层 GND 由 7 → 9 块。
|
||||
|
||||
在新工单中引用
屏蔽一个用户