# -*- coding: utf-8 -*- u"""跑 PCB 的 DRC 并把结果读回来。 /c/Python314/python .claude/drc_read.py [--no-check] # 下板 /c/Python314/python .claude/drc_read.py --pcb2 [--no-check] # 载板 ⚠️ **不加 `--pcb2` 跑的是下板** —— 2026-09-06 在这上面白查过半天 (读到 649 条,里面全是 `KEY_OE#` / `SDA` 这些下板才有的网络)。 ⚠️⚠️ **「连接性错误」这一支在程序化建线 / 建过孔之后是陈旧的, 必须 `location.reload()` 之后再跑才准。** 2026-09-06 实测: 下发完 12 个差分网络后读到 403(每个网络还报 2~7 条「与其他相同网络的对象断开了连接」), 而按实际铜自算(`pcb2_net_conn.py`)是 22/22 全连通、`pcb_Net.getNetLength()` 也等于算出来的长度;重载客户端后立刻变成 338(比布线前少 26,正合预期)。 「间距错误」那一支倒是即时更新的。 ## 为什么要有这个脚本 `pcb_Drc.check()` **只返回一个 boolean**,`pcb_Drc` 的 40 多个方法里 一个结果 getter 都没有,也没有 DRC 标记层可读 —— 一度以为结果拿不回来。 **但 DRC 面板在 DOM 里是挂载着的**(和设计规则对话框不一样,那个窗口不前台就不挂载)。 两个关键手法: 1. **左边的分类树要用 React 的 onClick 点,`el.click()` 不管用。** 从元素身上找 `__reactProps$*`,一路往上找到带 `onClick` 的那层,直接调。 不点就不选中,右边明细区一直显示「空列表」。 2. **明细表的 innerText 尾巴上粘着一大段 CSS**(分页组件的 `