47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
# BOM generation script for KiCAD (6+)
|
|
# Last update: 26/03/2025
|
|
# Author: Jorian Zwerver
|
|
|
|
# This scripts formats the BOM to the format of MOUSER
|
|
|
|
"""
|
|
@package
|
|
Generate a comma delimited list (csv file type) in MOUSER style.
|
|
Components are sorted by reference and grouped by value.
|
|
Fields are (if exist)
|
|
'Mouser MPN', 'Quantity'
|
|
|
|
Command line:
|
|
python "pathToFile/SpecLib/BOM scripts/spectrum_bom_mouser.py" "%I" "%O_MOUSER.csv"
|
|
"""
|
|
|
|
# Import libraries
|
|
from libs import kicad_netlist_reader
|
|
import csv
|
|
import sys
|
|
|
|
net = kicad_netlist_reader.netlist(sys.argv[1])
|
|
|
|
try:
|
|
f = open(sys.argv[2], 'w')
|
|
except IOError:
|
|
e = "Can't open output file for writing: " + sys.argv[2]
|
|
print(__file__, ":", e, sys.stderr)
|
|
f = sys.stdout
|
|
|
|
# Generate new CSV file with header
|
|
out = csv.writer(f, lineterminator='\n', delimiter=',', quotechar='\"', quoting=csv.QUOTE_ALL)
|
|
out.writerow(['Mouser MPN', 'Quantity'])
|
|
|
|
grouped = net.groupComponents()
|
|
for group in grouped:
|
|
refs = ", ".join(component.getRef() for component in group)
|
|
component = group[0]
|
|
|
|
if not component.getField("Mouser"):
|
|
continue
|
|
|
|
out.writerow([
|
|
component.getField("Mouser"),
|
|
len(group)
|
|
]) |