Créer une zone de cuivre (plan de masse) avec l'API Python de pcbnew

Publié le 9 septembre 2026 par leZ

Générez une zone de cuivre reliée à un net et lancez son remplissage par script, avec pcbnew ou l'API IPC de KiCad.

Un plan de masse dessiné et rempli à la souris doit être refait à chaque modification du routage. En scriptant la création et le remplissage de la zone, on obtient un plan de masse reproductible, régénérable en une seule commande après chaque changement.

Créer la zone

On instancie un objet ZONE, on choisit sa couche, puis on l’ajoute à la board :

from pcbnew import ZONE, F_Cu

zone = ZONE(board)
zone.SetLayer(F_Cu)
board.Add(zone)

Avec l’API IPC, la création et le choix de couche se font en un seul appel :

from kicad import KiCad

kicad = KiCad()
board = kicad.get_board()
zone = board.create_zone(layer="F.Cu")

Définir le contour

Le contour est un SHAPE_POLY_SET auquel on ajoute les sommets du polygone, en unités internes :

from pcbnew import SHAPE_POLY_SET, FromMM

outline = SHAPE_POLY_SET()
outline.NewOutline()
for x, y in [(0, 0), (50, 0), (50, 30), (0, 30)]:
    outline.Append(FromMM(x), FromMM(y))
zone.SetOutline(outline)

Côté API IPC, le contour est une simple liste de points en millimètres :

from kicad.geometry import Vector2

points = [(0, 0), (50, 0), (50, 30), (0, 30)]
zone.outline = [Vector2.from_mm(x, y) for x, y in points]
board.update_items(zone)

Essayez ci-dessous : ajustez largeur et hauteur pour voir le contour de la zone évoluer sur le PCB.

outline.NewOutline()
for x, y in [(0, 0), (50, 0), (50, 30), (0, 30)]:
    outline.Append(FromMM(x), FromMM(y))
50
30
GND

Relier au net et remplir

On rattache la zone à un net, puis on déclenche le remplissage via ZONE_FILLER :

from pcbnew import ZONE_FILLER

zone.SetNet(board.FindNet("GND"))

filler = ZONE_FILLER(board)
filler.Fill(board.Zones())

Même principe, avec une commande de remplissage globale côté API IPC :

zone.net = board.get_net("GND")
board.update_items(zone)
board.refill_zones()

Pour aller plus loin

Ce squelette se réutilise pour générer un plan de masse complet par couche, découper des zones autour de composants sensibles, ou relancer automatiquement le remplissage après chaque modification de routage plutôt que de cliquer sur « Remplir toutes les zones » à la main.