skill:solidworks-assembly 实测笔记与脚本、easyeda-sch-geometry 补充

Co-Authored-By: Claude Opus 5.5 <[email protected]>
这个提交包含在:
zhou yang
2026-10-04 19:24:42 +08:00
共同撰写人 Claude Opus 5.5
父节点 22a255acd7
当前提交 cd01640c40
共修改 8 个文件,包含 2283 行新增和 1 行删除
@@ -954,6 +954,14 @@ for it in out:
(`prio[k] < prio[k+1]`),不能断言「第 k 块的优先级 == k」——
`pcb2_pour.py` 第一版就是后者,白报了一次「优先级和计划对不上」。
6. ⚠️⚠️ **块数一多,连「相对次序 = 创建顺序」都不成立**(2026-09-10,R2 底板 83 块、分 7 批 `create()`)。
读回的 L1 优先级:12V 指头 13~19 → 3~9、GND 底填 12~0 → 10~22、12V 指头 12~5 → 23~30、12V 主块 → 31~34,
而创建顺序是 12V 全部在前、GND 在后。结果整板那块 GND(18)先铺、把 L1 12V 主块和 J37/J38 指头、
L4 VIN_SW 主块(23)的地盘占完 —— **83 块只填出 61 块,缺的正是大电流铜**,DRC 和 `board_check` 都不报
(后者按计划铜面判,读不到填充)。
✅ **别靠优先级做分割**:GND 底填在几何上**挖掉同层功率铜面**(`pour_base.plan()` 的 `pwr_cut`),
两边不重叠,谁先铺都一样。核对铺没铺上:数 `pcb_PrimitivePoured` 对应的铜面名,功率铜面一块都不许空。
## 9j-2. 铺铜的焊盘连接方式:`connectMode` 藏在 DRC 规则里,`0` = 十字花 / `1` = 全连接(2026-09-05)⚠️⚠️
**`PCB_PrimitivePour` 上没有这个属性** —— `create()` 的 9 个参数里没有,
@@ -1538,6 +1546,10 @@ PCB 网表里那四颗的地端是 **`$16N236` 而不是 `GND`**;
`pcb_PrimitiveComponent` 上**有 `setState_UniqueId()`**(`setState_Footprint` 没有,
所以换封装只能删了重建,见 §9z 一节的 PCB 版)。
✅ 2026-09-11 补:**只改封装内容(不换封装)不用删重建** —— PCB 实例引用的是**工程库副本**
(`getState_Footprint()` 读出 `{uuid, libraryUuid}`,libraryUuid 是工程库,不是个人库)。
`lib_Footprint.openInEditor(副本uuid, 工程库uuid)` 里改完存盘,**PCB 页 reload 之后实例就跟着变**,焊盘网名按脚号保留
(刀片 J1 缺口 1.9 → 1.6,`r2/fp_edge.py --notch`,读回 64/64 网名不变)。只改个人库原件是不会传过去的。
⚠️ **必须两阶段写**:这是一个**排列**(J27 的 ID 要给 J26),
直接按目标值挨个写会在中途出现两个元件同 ID。