文件

39 行
2.0 KiB
Python

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# -*- coding: utf-8 -*-
u"""在**现有布线缓存 + 缝合孔**之上,只跑 `router.gnd_vias()` 给铺铜够不着的 GND 脚打孔下 L2(2026-09-14,BLADE-PCB_1)。
MODE=gndvia bash .claude/r2/remote_blade.sh # 服务器上跑(打孔落点是搜索,CLAUDE.md 规定只在 10.5.5.13)
# 服务器上实际执行:DCDC_ROUTE_SERVER=1 pypy3 .claude/r2/gndvia_blade1.py
结果拉回 `_blade_routes.gndvia.json`(**只含新增**的段 / 孔 + 打不下的脚),本机核过再并进缓存下发。
为什么单独跑:整板重布会把 6 轮服务器 + 手工收尾 + 主板南移后的补线全部推翻;这里只加孔、不动别的铜。
`EXTRA_REFS`:DRC 连接性报出来、但不在 `router.GND_VIA_REFS` 里的去耦件 / 分压电阻的地脚。
"""
import io
import json
import os
import sys
sys.stdout.reconfigure(encoding='utf-8')
HERE = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, os.path.dirname(HERE))
sys.path.insert(0, HERE)
if not os.environ.get('DCDC_ROUTE_SERVER'):
sys.exit(u'⛔ 打孔落点只在 10.5.5.13 上算:MODE=gndvia bash .claude/r2/remote_blade.sh')
import router as RT # noqa: E402
EXTRA_REFS = ('C10', 'C11', 'C12', 'C40', 'C65', 'R2')
RT.GND_VIA_REFS = tuple(RT.GND_VIA_REFS) + EXTRA_REFS
cache = json.load(io.open(os.path.join(HERE, '_blade_routes.json'), encoding='utf-8'))
segs = [tuple(s) for s in cache['segs']]
vias = [tuple(v) for v in cache['vias']]
stitch = json.load(io.open(os.path.join(HERE, '_blade_stitch_pts.json'), encoding='utf-8'))
board_vias = [[x, y, 'GND', RT.VIA_D] for x, y in stitch]
pads = RT.load_pads()
s3, v3, l3 = RT.gnd_vias(pads, segs, vias, board_vias)
print(u'GND 打孔 %d 个 / 引出 %d 段;打不下 %d 只脚' % (len(v3), len(s3), len(l3)))
for m in l3:
print(u' ' + m)
json.dump({'segs': [list(s) for s in s3], 'vias': [list(v) for v in v3], 'logs': l3},
io.open(os.path.join(HERE, '_blade_routes.gndvia.json'), 'w', encoding='utf-8'), ensure_ascii=False)