Ajouter un via de changement de couche au milieu d'un routage avec l'API Python de pcbnew
Faites passer une piste de la face avant à la face arrière via un via placé au milieu du routage, par script — avec pcbnew ou l'API IPC de KiCad.
Router entièrement sur une seule couche n’est pas toujours possible : il faut parfois traverser vers l’autre face pour contourner un obstacle. La transition se fait avec un via placé exactement au point où une piste se termine et où la suivante commence, sur l’autre couche.
Router, traverser, puis continuer sur l’autre couche
Le via se positionne au point de jonction entre les deux segments, chacun sur sa propre couche :
from pcbnew import PCB_TRACK, PCB_VIA, VECTOR2I, FromMM, F_Cu, B_Cu
track1 = PCB_TRACK(board)
track1.SetStart(VECTOR2I(FromMM(10), FromMM(20)))
track1.SetEnd(VECTOR2I(FromMM(30), FromMM(20)))
track1.SetLayer(F_Cu)
board.Add(track1)
via = PCB_VIA(board)
via.SetPosition(VECTOR2I(FromMM(30), FromMM(20)))
via.SetWidth(FromMM(0.6))
via.SetDrill(FromMM(0.3))
board.Add(via)
track2 = PCB_TRACK(board)
track2.SetStart(VECTOR2I(FromMM(30), FromMM(20)))
track2.SetEnd(VECTOR2I(FromMM(50), FromMM(20)))
track2.SetLayer(B_Cu)
board.Add(track2)Même structure : deux pistes sur des couches différentes, reliées par un via à leur point commun :
from kicad.geometry import Vector2
track1 = board.create_track()
track1.start = Vector2.from_mm(10, 20)
track1.end = Vector2.from_mm(30, 20)
track1.layer = "F.Cu"
via = board.create_via()
via.position = Vector2.from_mm(30, 20)
via.pad_diameter = 0.6
via.drill_diameter = 0.3
track2 = board.create_track()
track2.start = Vector2.from_mm(30, 20)
track2.end = Vector2.from_mm(50, 20)
track2.layer = "B.Cu"
board.update_items([track1, via, track2])Pour aller plus loin
Ce motif — piste, via, piste — est la brique de base de tout routeur qui doit alterner entre couches pour éviter les obstacles ou équilibrer la densité de cuivre entre le dessus et le dessous de la board.