Créer un via aveugle ou enterré avec l'API Python de pcbnew
Faites passer un via d'un traversant classique à un via aveugle ou enterré, limité à certaines couches internes, par script — avec pcbnew ou l'API IPC de KiCad.

Le tuto création de via crée un via traversant, qui perce la board de part en part. Sur une board multicouche, un via aveugle (d’une couche externe vers une couche interne) ou enterré (entre deux couches internes uniquement) permet de gagner de la densité de routage sans traverser toute l’épaisseur.
Choisir le type de via et sa paire de couches
SetViaType change le type, puis SetLayerPair définit les deux couches entre lesquelles le via est percé :
import pcbnew
board = pcbnew.GetBoard()
from pcbnew import PCB_VIA, VIATYPE_BLIND, VECTOR2I, FromMM, F_Cu, In1_Cu
via = PCB_VIA(board)
via.SetPosition(VECTOR2I(FromMM(30), FromMM(20)))
via.SetViaType(VIATYPE_BLIND)
via.SetLayerPair(F_Cu, In1_Cu) # aveugle : d'une couche externe vers une couche interne
board.Add(via)⚠️ Il n’existe pas de VIATYPE_BLIND_BURIED : pcbnew distingue toujours VIATYPE_BLIND et VIATYPE_BURIED.
Même logique, avec des propriétés dédiées au type et à la paire de couches — cette dernière se règle via le padstack, pas une propriété layer_pair directe. ViaType propose bien une valeur générique VT_BLIND_BURIED, mais elle ne survit pas au aller-retour serveur : KiCad la réévalue et la remplace silencieusement par VT_BLIND ou VT_BURIED selon la paire de couches réellement fournie. Autant utiliser directement la valeur précise, comme côté pcbnew :
from kipy import KiCad
from kipy.board_types import Via, ViaType
from kipy.geometry import Vector2
board = KiCad().get_board()
via = Via()
via.position = Vector2.from_xy_mm(30, 20)
via.type = ViaType.VT_BLIND
via.padstack.drill.start_layer = board.get_layer_by_name("F.Cu")
via.padstack.drill.end_layer = board.get_layer_by_name("In1.Cu")
board.create_items(via)⚠️ Testé : assigner ViaType.VT_BLIND_BURIED puis relire le via créé renvoie VT_BLIND — pas d’erreur, mais la valeur qu’on a fixée n’est pas celle qui est réellement stockée. VT_BLIND et VT_BURIED, en revanche, persistent exactement tels qu’assignés.
Essayez ci-dessous : changez de type pour voir la coupe transversale du via évoluer selon les couches traversées.
Pour aller plus loin
Un via enterré (entre deux couches internes, sans jamais atteindre F.Cu ni B.Cu) suit le même principe : il suffit de choisir une paire de couches internes, par exemple In1_Cu/In2_Cu (VIATYPE_BURIED côté pcbnew, ViaType.VT_BURIED côté IPC — vérifié sur une board 10 couches). Ces types de vias nécessitent généralement un empilement de couches (stackup) et un fabricant qui les supportent — vérifiez les règles de fabrication avant de vous en servir massivement.