39 行
2.0 KiB
Python
39 行
2.0 KiB
Python
# -*- 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)
|