Créer un nouveau net par script et l'attribuer avec l'API Python de KiCad
Créez un net qui n'existe pas encore sur la board et attribuez-le à une via ou un pad — avec le piège testé qui le fait disparaître silencieusement.

Les tutos vias et pistes de ce site rattachent toujours leurs objets à un net déjà présent sur la board (board.FindNet("GND")). Mais un script de génération procédurale — un plan de masse par zone, une grille de vias de stitching sur un net de test — a parfois besoin de créer le net lui-même avant de s’en servir. Cette étape supplémentaire cache un piège testé sur les deux API : un net flambant neuf ne survit pas toujours à la sauvegarde.
Créer le net
Un net est un objet à part entière, NETINFO_ITEM, qu’il faut ajouter à la board avant de l’utiliser :
import pcbnew
from pcbnew import NETINFO_ITEM
board = pcbnew.GetBoard()
new_net = NETINFO_ITEM(board)
new_net.SetNetname("MY_NEW_NET")
board.Add(new_net)Côté IPC, il n’existe pas de méthode create_net dédiée sur Board : Net(name=...) est un simple objet valeur, créé à la volée au moment où on l’assigne à un item du board :
from kipy.board_types import Net
new_net = Net(name="MY_NEW_NET")⚠️ L’attribuer à une via : le piège de la persistance
⚠️ Testé : une via créée et rattachée au nouveau net avec via.SetNet(new_net) puis board.Add(via) montre bien le bon net en mémoire (via.GetNetname() renvoie "MY_NEW_NET", le compteur de nets passe de 112 à 113) juste avant SaveBoard. Mais après SaveBoard puis LoadBoard sur le fichier généré, la via est repassée sur son net précédent ("GND") — un grep "MY_NEW_NET" sur le fichier .kicad_pcb ne trouve rien du tout. Le net n’est tout simplement pas écrit : une via seule ne suffit pas à faire persister un net.
⚠️ Testé, avec un comportement différent : via.net = Net(name="MY_NEW_NET"); board.create_items(via) fait bien apparaître le net dans board.get_nets() (112 → 113 nets) — mais si la via touche physiquement du cuivre existant d’un autre net (un plan de masse, une piste), un simple board.get_vias() juste après montre que son net est déjà repassé sur celui du cuivre touché (GND dans nos essais), sans même passer par une sauvegarde. Le moteur de connectivité de KiCad tourne en continu sur une instance ouverte et réattribue le net d’un item isolé en fonction de ce qu’il touche physiquement.
Placée dans une zone du board sans aucun cuivre à proximité, la même via garde son net après relecture (board.get_vias()) et après un board.save() — confirmé par grep sur le fichier généré, qui trouve bien (net "MY_NEW_NET").
L’attribuer à un pad
Même scénario, mais en attachant le nouveau net à un pad d’un footprint réel (pad.SetNet(new_net)) au lieu d’une via : après SaveBoard/LoadBoard, grep "MY_NEW_NET" trouve bien (net "MY_NEW_NET") dans le fichier. Contrairement à la via seule, un net attaché à un pad persiste correctement — KiCad élague les nets non rattachés à un pad à la sauvegarde, mais garde ceux qui le sont.
⚠️ Testé, et plus restrictif que pcbnew : réassigner le net d’un pad déjà existant sur la board à un nom de net inédit, via pad.net = Net(name=...); board.update_items(pad), revient systématiquement en arrière dès la prochaine lecture (board.get_pads()) — même sans sauvegarder, et même si le pad n’est pas au contact d’un autre cuivre. Le nouveau net n’apparaît même pas dans board.get_nets() dans ce cas. Sur une instance KiCad ouverte avec un projet complet (schéma + PCB), le net d’un pad reste piloté par la connectivité issue du schéma — le forcer par script ne suffit pas à le faire persister. Créer un net inédit et l’attribuer à un pad déjà présent sur la board ne fonctionne donc pas du tout côté IPC ; seule une via isolée (voir ci-dessus) le permet.
Pour aller plus loin
Retenez la règle testée sur les deux API : un net tout juste créé ne survit que s’il est rattaché à quelque chose que KiCad considère comme “réel” — un pad côté pcbnew, un item isolé (typiquement une via, pas un pad déjà lié au schéma) côté IPC. Si le script génère un plan de cuivre complet sur ce nouveau net (voir le tuto création de zone), rattachez d’abord le net à au moins un pad ou une via qui respecte cette règle avant de vous fier à sa présence après sauvegarde.