Créer un via avec l'API Python de pcbnew
Ajoutez, positionnez et dimensionnez un via de traversée sur un PCB par script, avec pcbnew ou l'API IPC de KiCad.

Une grille de vias de stitching autour d’un plan de masse, ou une rangée de vias thermiques sous un footprint : dès qu’il faut poser plus de quelques vias identiques, le placement manuel devient long et peu précis. pcbnew comme l’API IPC permettent de créer ces vias par script, avec un contrôle exact de la position, du diamètre et du perçage.
Une via (et la piste qui y mène) créées par script, filmées en direct dans KiCad (1 min 16) :
Créer le via
On instancie un objet PCB_VIA rattaché à la board, puis on l’ajoute :
import pcbnew
board = pcbnew.GetBoard()
from pcbnew import PCB_VIA
via = PCB_VIA(board)
board.Add(via)Avec l’API IPC, on instancie un objet Via vierge ; il n’existe pas encore sur le board tant qu’il n’a pas été créé explicitement :
from kipy import KiCad
from kipy.board_types import Via
kicad = KiCad()
board = kicad.get_board()
via = Via()Positionner et dimensionner le via
Position, diamètre de pastille et perçage se fixent séparément, en unités internes (nanomètres), converties depuis des millimètres avec FromMM :
from pcbnew import VECTOR2I, FromMM
via.SetPosition(VECTOR2I(FromMM(40), FromMM(25)))
via.SetWidth(via.TopLayer(), FromMM(0.6))
via.SetDrill(FromMM(0.3))La position se fixe en millimètres via Vector2.from_xy_mm, mais le diamètre et le perçage sont des entiers en nanomètres : il faut les convertir explicitement avec from_mm :
from kipy.geometry import Vector2
from kipy.util.units import from_mm
via.position = Vector2.from_xy_mm(40, 25)
via.diameter = from_mm(0.6)
via.drill_diameter = from_mm(0.3)Essayez ci-dessous : déplacez les curseurs pour voir comment position, diamètre de pastille et perçage affectent le via sur le PCB.
Relier le via à un net
Le via doit être rattaché à un net existant (typiquement GND pour un via de stitching) :
via.SetNet(board.FindNet("GND"))Côté API IPC, le net se référence directement par son nom. C’est aussi à ce moment, une fois toutes les propriétés fixées, que le via est réellement créé sur le board :
from kipy.board_types import Net
via.net = Net(name="GND")
board.create_items(via)Pour aller plus loin
Placer un via isolé n’est presque jamais le but final. La vraie valeur du scripting est de générer une grille entière de vias de stitching autour d’un plan de masse, ou une rangée de vias thermiques sous un footprint de puissance, en quelques lignes de boucle plutôt qu’à la main.