Rule to detect FAB Layer

I have a large PCB where I want to make sure that all the footprints have the Fab layer. I see that by default there is a rule for the Courtyart layer but not for FAB. any ideas?

I also looked for some directive in the custom rules but couldn’t find it.

Da bisher niemand anders geantwortet hat.

Ich weiss nicht wie man benutzerdefinierten Regeln erstellt um das zu prüfen. Meine Tests damit waren leider erfolglos.

Aber hier ist ein Script, vielleicht funktioniert es damit?

#!/usr/bin/env python3

"""
Scrpit für KiCad Leiterplatten, um zu prüfen welche Footprints Elemente in einem bestimmten Layer 
 haben.
"""

import argparse
import pcbnew
import sys

# Speichere den Leiterplattenpfad, z.b. /pfad/zum/kicad/projekt/leiterplatte.kicad_pcb, in
#  kommandozeile.leiterplattenpfad
# Den Layernamen in kommandozeile.layername
kommandozeile=argparse.ArgumentParser()
kommandozeile.add_argument("--leiterplatte",action="store",type=str,required=True,dest="leiterplattenpfad",help="Pfad für die Leiterplatte")
kommandozeile.add_argument("--layername",action="store",type=str,required=True,dest="layername",help="Name des Laysers der geprüft werden sollte")
argumente=kommandozeile.parse_args(sys.argv[1:])


leiterplatte = pcbnew.LoadBoard(argumente.leiterplattenpfad)
layernummer = leiterplatte.GetLayerID(argumente.layername)

for footprint in leiterplatte.GetFootprints():
  name = footprint.GetReferenceAsString()
  for grafik in footprint.GraphicalItems():
    if grafik.GetLayer() == layernummer:
      print(argumente.layername+" gefunden für "+name)
      break
  else:
    print(argumente.layername+" nicht gefunden für "+name)

Edit: Fehler im Script korrigiert.

thank you very much I’m going to try it now

I get this error…
(everything is in German :upside_down_face:)

I had not seen this!! thank you!!

Okay, the script works. However, it still needs to be improved, my intention is to validate if the perimeter of the component exists in the Fab layer, but your script says that it is fine when there is only text in the Fab layer.
ref image


"""
Scrpit für KiCad Leiterplatten, um zu prüfen welche Footprints Elemente in einem bestimmten Layer 
 haben.
"""

import argparse
import pcbnew
import sys

# Speichere den Leiterplattenpfad, z.b. /pfad/zum/kicad/projekt/leiterplatte.kicad_pcb, in
#  kommandozeile.leiterplattenpfad
# Den Layernamen in kommandozeile.layername
kommandozeile=argparse.ArgumentParser()
kommandozeile.add_argument("--leiterplatte",action="store",type=str,required=True,dest="leiterplattenpfad",help="Pfad für die Leiterplatte")
kommandozeile.add_argument("--layername",action="store",type=str,required=True,dest="layername",help="Name des Laysers der geprüft werden sollte")
argumente=kommandozeile.parse_args(sys.argv[1:])


leiterplatte = pcbnew.LoadBoard(argumente.leiterplattenpfad)
layernummer = leiterplatte.GetLayerID(argumente.layername)

for footprint in leiterplatte.GetFootprints():
  name = footprint.GetReferenceAsString()
  for grafik in footprint.GraphicalItems():
    if grafik.GetLayer() == layernummer and grafik.GetClass() != 'FP_TEXT':
      print(argumente.layername+" gefunden für "+name)
      break
  else:
    print(argumente.layername+" nicht gefunden für "+name)

Besser?

Naja, es ignoriert nun Text. Aber welche Form die grafischen Elemente genau haben wird ignoriert.

Wäre dafür F.Courtyard nicht besser geeignet?

For the Courtyard Kicad it has a default rule, which I mentioned is in the manufacturing layer, it joins to indicate to the manufacturer the orientation of the components at the time of assembly.

The problem is that sometimes I send the PCB without some orientation limitations and they send me an email for verification and this delays the work.


imager ref

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.