Router une piste à angle droit avec l'API Python de pcbnew

Publié le 17 septembre 2026 par leZ

Créez une piste avec un coude à angle droit entre deux points non alignés, par script — avec pcbnew ou l'API IPC de KiCad.

Le tuto routage de piste trace un segment unique en ligne droite. Dès que le point de départ et le point d’arrivée ne sont pas alignés, il faut au moins deux segments reliés par un coude — la base de tout algorithme de routage un peu plus élaboré qu’une ligne directe.

Créer les deux segments

Le second segment démarre exactement où le premier se termine — c’est ce point partagé qui forme le coude :

from pcbnew import PCB_TRACK, VECTOR2I, FromMM, F_Cu

track1 = PCB_TRACK(board)
track1.SetStart(VECTOR2I(FromMM(10), FromMM(15)))
track1.SetEnd(VECTOR2I(FromMM(25), FromMM(15)))
track1.SetWidth(FromMM(0.25))
track1.SetLayer(F_Cu)
board.Add(track1)

track2 = PCB_TRACK(board)
track2.SetStart(VECTOR2I(FromMM(25), FromMM(15)))
track2.SetEnd(VECTOR2I(FromMM(25), FromMM(35)))
track2.SetWidth(FromMM(0.25))
track2.SetLayer(F_Cu)
board.Add(track2)

Même logique, en créant deux pistes distinctes qui partagent un point :

from kicad.geometry import Vector2

track1 = board.create_track()
track1.start = Vector2.from_mm(10, 15)
track1.end = Vector2.from_mm(25, 15)
track1.width = 0.25
track1.layer = "F.Cu"

track2 = board.create_track()
track2.start = Vector2.from_mm(25, 15)
track2.end = Vector2.from_mm(25, 35)
track2.width = 0.25
track2.layer = "F.Cu"

board.update_items([track1, track2])

Essayez ci-dessous : déplacez le coude pour voir les deux segments se réajuster.

track1.SetStart(VECTOR2I(FromMM(10), FromMM(15)))
track1.SetEnd(VECTOR2I(FromMM(25), FromMM(15)))

track2.SetStart(VECTOR2I(FromMM(25), FromMM(15)))
track2.SetEnd(VECTOR2I(FromMM(25), FromMM(35)))
25

Pour aller plus loin

Ce squelette à deux segments se généralise à un chemin en zigzag arbitraire en bouclant sur une liste de points intermédiaires, chaque segment reliant le point précédent au suivant — la base d’un mini-routeur qui évite des obstacles simples.