Créer une zone d'interdiction de routage (keepout) avec l'API Python de pcbnew
Réservez par script une zone où aucune piste, via ou cuivre ne pourra être placé — autour d'un connecteur ou d'une antenne — avec pcbnew ou l'API IPC.
Une zone d’interdiction (keepout) empêche pistes, vias et remplissage de cuivre d’empiéter sur une région précise — typiquement autour d’un connecteur mécanique, d’une antenne, ou d’une découpe de board. Elle se construit comme une zone de cuivre classique, avec des drapeaux d’interdiction en plus.
Créer une zone de type “rule area”
SetIsRuleArea(True) transforme la zone en zone de règle plutôt qu’en zone de cuivre remplie, puis chaque drapeau active une interdiction spécifique :
from pcbnew import ZONE, F_Cu
zone = ZONE(board)
zone.SetIsRuleArea(True)
zone.SetLayer(F_Cu)
zone.SetDoNotAllowTracks(True)
zone.SetDoNotAllowVias(True)
zone.SetDoNotAllowCopperPour(True)
board.Add(zone)Avec l’API IPC, les mêmes interdictions se déclarent à la création :
from kicad import KiCad
kicad = KiCad()
board = kicad.get_board()
zone = board.create_zone(layer="F.Cu", rule_area=True)
zone.keepout_tracks = True
zone.keepout_vias = True
zone.keepout_copper_pour = True
board.update_items(zone)Définir le contour
Le contour se construit exactement comme pour une zone de cuivre classique :
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)Là aussi, même logique que pour la zone de cuivre standard :
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 la zone d’interdiction évoluer sur le PCB.
Pour aller plus loin
La même mécanique sert à protéger une zone de montage mécanique, à garder une antenne dégagée de tout plan de masse, ou à interdire le routage sous un connecteur à travers plusieurs zones de règle empilées sur les couches concernées.