|
|
|
@ -20,6 +20,14 @@ import kicad_netlist_reader |
|
|
|
import csv |
|
|
|
import sys |
|
|
|
|
|
|
|
# A helper function to convert a UTF8/Unicode/locale string read in netlist |
|
|
|
# for python2 or python3 |
|
|
|
def fromNetlistText( aText ): |
|
|
|
try: |
|
|
|
return aText.encode('utf-8').decode('cp1252') |
|
|
|
except UnicodeDecodeError: |
|
|
|
return aText |
|
|
|
|
|
|
|
# Generate an instance of a generic netlist, and load the netlist tree from |
|
|
|
# the command line option. If the file doesn't exist, execution will stop |
|
|
|
net = kicad_netlist_reader.netlist(sys.argv[1]) |
|
|
|
@ -34,7 +42,7 @@ except IOError: |
|
|
|
f = sys.stdout |
|
|
|
|
|
|
|
# Create a new csv writer object to use as the output formatter |
|
|
|
out = csv.writer(f, lineterminator='\n', delimiter=',', quotechar='\"', quoting=csv.QUOTE_ALL) |
|
|
|
out = csv.writer(f, delimiter=',', quotechar='\"', quoting=csv.QUOTE_ALL) |
|
|
|
|
|
|
|
# Output a set of rows for a header providing general information |
|
|
|
out.writerow(['Source:', net.getSource()]) |
|
|
|
@ -44,6 +52,7 @@ out.writerow( ['Generator:', sys.argv[0]] ) |
|
|
|
out.writerow(['Component Count:', len(net.components)]) |
|
|
|
out.writerow(['Ref', 'Qnty', 'Value', 'Cmp name', 'Footprint', 'Description', 'Vendor']) |
|
|
|
|
|
|
|
|
|
|
|
# Get all of the components in groups of matching parts + values |
|
|
|
# (see ky_generic_netlist_reader.py) |
|
|
|
grouped = net.groupComponents() |
|
|
|
@ -55,11 +64,15 @@ for group in grouped: |
|
|
|
# Add the reference of every component in the group and keep a reference |
|
|
|
# to the component so that the other data can be filled in once per group |
|
|
|
for component in group: |
|
|
|
refs += component.getRef() + ", " |
|
|
|
refs += fromNetlistText( component.getRef() ) + ", " |
|
|
|
c = component |
|
|
|
|
|
|
|
# Fill in the component groups common data |
|
|
|
out.writerow([refs, len(group), c.getValue(), c.getPartName(), c.getFootprint(), |
|
|
|
c.getDescription(), c.getField("Vendor")]) |
|
|
|
out.writerow([refs, len(group), |
|
|
|
fromNetlistText( c.getValue() ), |
|
|
|
fromNetlistText( c.getPartName() ), |
|
|
|
fromNetlistText( c.getFootprint() ), |
|
|
|
fromNetlistText( c.getDescription() ), |
|
|
|
fromNetlistText( c.getField("Vendor") )]) |
|
|
|
|
|
|
|
|