Dupliquer un footprint existant avec l'API Python de pcbnew
Clonez un footprint déjà placé plutôt que d'en recréer un, pour reproduire rapidement un composant avec ses propriétés — avec pcbnew ou l'API IPC.

Quand un footprint est déjà posé et correctement configuré (empreinte, propriétés, association au symbole), le dupliquer est souvent plus rapide que de le recréer depuis zéro par FootprintLoad — utile pour reproduire un connecteur ou un composant de calibrage à plusieurs endroits.
Dupliquer le footprint
Duplicate clone l’objet et tous ses pads ; il faut ensuite lui donner une référence et une position propres :
import pcbnew
from pcbnew import VECTOR2I, FromMM
board = pcbnew.GetBoard()
original = board.FindFootprintByReference("R1")
clone = pcbnew.Cast_to_FOOTPRINT(original.Duplicate(False))
clone.SetReference("R2")
clone.SetPosition(VECTOR2I(FromMM(50), FromMM(20)))
board.Add(clone)⚠️ Duplicate attend un argument addToParentGroup (False si vous appelez board.Add vous-même), et renvoie un BOARD_ITEM générique — Cast_to_FOOTPRINT est nécessaire avant d’appeler SetReference.
Il n’existe pas de méthode de duplication dédiée côté API IPC : on clone l’objet Python avec copy.deepcopy, puis on efface son identifiant avant de le créer — sans ça, create_items le confond avec l’original et ne crée rien :
import copy
from kipy import KiCad
from kipy.geometry import Vector2
board = KiCad().get_board()
by_ref = {f.reference_field.text.value: f for f in board.get_footprints()}
original = by_ref["R1"]
clone = copy.deepcopy(original)
clone.proto.ClearField("id")
clone.reference_field.text.value = "R2"
clone.position = Vector2.from_xy_mm(50, 20)
board.create_items(clone)⚠️ Testé : sans clone.proto.ClearField("id"), create_items renvoie bien un objet qui ressemble à un succès, mais rien n’apparaît sur la board — l’identifiant copié depuis l’original fait croire au serveur qu’il s’agit du même item, pas d’un nouveau.
Pour aller plus loin
En bouclant sur une liste de références et de positions cibles, Duplicate devient la base d’un script qui reproduit un même sous-circuit (un footprint de calibrage, un connecteur répété) à plusieurs endroits de la board sans jamais rouvrir la bibliothèque de footprints.
⚠️ KiCad n’interdit pas deux footprints avec la même référence : si R2 existe déjà sur la board, vous vous retrouvez avec deux R2 sans avertissement. Vérifiez l’absence de collision avant d’assigner la nouvelle référence.