Drogheda/03-Architecture-Hardware/Auditoria-Final-V56-V57/scripts/render_boards.py

49 lines
3.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import sys, time
sys.path.insert(0,'.')
from gerb import *
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle, FancyBboxPatch
import matplotlib.patheffects as pe
base="../in/03-Architecture-Hardware/kicad/production"
CU="#C8A05A"; CU2="#B8894A"; SILK="#F4F4F4"; BOARD="#1E3A2E"; EDGE="#333333"
INDIGO="#2C3C5B"; CYAN="#51F3DA"; TEAL="#17A08C"
def board_fig(b, prod, title, blocks, out, dpi=200):
t0=time.time()
cu,mac=parse(f"{base}/{prod}/hbox-watchdog-{b}-F_Cu.gtl")
silk,mac2=parse(f"{base}/{prod}/hbox-watchdog-{b}-F_Silkscreen.gto")
mask,mac3=parse(f"{base}/{prod}/hbox-watchdog-{b}-F_Mask.gts")
g_cu=geoms_of(cu,mac); g_silk=geoms_of(silk,mac2)
fig,ax=plt.subplots(figsize=(14,10.2))
ax.add_patch(Rectangle((60.19,40.32),140,100,facecolor=BOARD,edgecolor=EDGE,lw=1.5,zorder=0))
draw_geoms(ax,g_cu,CU,alpha=0.95,bg=BOARD,zorder=1)
draw_geoms(ax,g_silk,SILK,alpha=0.9,bg=BOARD,zorder=2)
for blk in blocks:
x0,y0,x1,y1,label,col=blk[:6]; pos=blk[6] if len(blk)>6 else "top"
ax.add_patch(FancyBboxPatch((x0,y0),x1-x0,y1-y0,boxstyle="round,pad=0.3,rounding_size=1.2",fill=False,edgecolor=col,lw=2.2,zorder=5))
if pos=="top": tx,ty,va=x0+0.8,y0+0.9,"top"
else: tx,ty,va=x0+0.8,y1-0.9,"bottom"
t=ax.text(tx,ty,label,color="white",fontsize=9.5,fontweight="bold",va=va,ha="left",zorder=6,
bbox=dict(boxstyle="round,pad=0.25",facecolor=col,edgecolor="none",alpha=0.92))
ax.set_xlim(58,202); ax.set_ylim(142,38.5) # y down like KiCad
ax.set_aspect("equal"); ax.axis("off")
ax.set_title(title,color=INDIGO,fontsize=15,fontweight="bold",loc="left")
fig.tight_layout(); fig.savefig(out,dpi=dpi,facecolor="white"); plt.close(fig)
print(out, f"{time.time()-t0:.1f}s")
common=[
(147,104,167,122,"U6 LTC4040 · L6 · RS1 · Q7 — respaldo y carga","#E9533A"),
(131,104,147,122,"U7 AP64350 · L7 — riel 3.3 V del módem","#F2A93B","bottom"),
(170,76,200,92,"J7/J8 zócalo XBee — 4G NTRIP Master","#9B59B6"),
(112,52,134,74,"U16 STM32F411 · Y3/Y4","#2EA3F2"),
(62,46,104,66,"U11 W5500 · J10 RJ45 — Ethernet","#3BB273"),
(150,62,163,108,"U10 SC16IS752 · U14 RS-485 · U15 RS-232 · U13","#3BB273"),
(131,124,158,136,"P15 RS-485 · P16 RS-232","#3BB273"),
(62,88,138,135,"MOD1 simpleRTK2B Pro (cara inferior)","#BBBBBB"),
(150,50,166,64,"K1 Modo B","#F2A93B"),
(172,128,194,139,"P1 GX16 (24 V · GND · IGN)","#E9533A"),
(86,41,100,50,"U26 SC7A20","#2EA3F2"),
]
v56=common+[(182,52,198,74,"U2 · L2 buck del ventilador (24 V)","#E9533A"),(176,114,200,127,"D10 · Q10 · C10 — entrada 24 V","#E9533A"),(101,41,122,50,"P2 5 V (SD-15B) · P10","#E9533A")]
v57=common+[(176,45,199,74,"U25 TPS54360B · L22 · D34 · C149/C150 — fuente 9–32 V","#E9533A"),(173,114,200,127,"F2 · D10 · Q10 · C10 — entrada 9–32 V","#E9533A")]
board_fig("v5","HBOX_v5_Rev6_PROD","EinarBoard V5.6 — cara superior (Gerber HBOX_v5_Rev6_PROD, 22-oct-2026)",v56,"fig/fig-v56-top.png")
board_fig("v57","HBOX_v5_Rev7_PROD","EinarBoard V5.7 — cara superior (Gerber HBOX_v5_Rev7_PROD, 22-oct-2026)",v57,"fig/fig-v57-top.png")