move everything to 'old' directory before merge
This commit is contained in:
92
old/scripts/KiBoM/bomlib/csv_writer.py
Normal file
92
old/scripts/KiBoM/bomlib/csv_writer.py
Normal file
@@ -0,0 +1,92 @@
|
||||
# _*_ coding:latin-1 _*_
|
||||
|
||||
import csv
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
def WriteCSV(filename, groups, net, headings, prefs):
|
||||
"""
|
||||
Write BoM out to a CSV file
|
||||
filename = path to output file (must be a .csv, .txt or .tsv file)
|
||||
groups = [list of ComponentGroup groups]
|
||||
net = netlist object
|
||||
headings = [list of headings to display in the BoM file]
|
||||
prefs = BomPref object
|
||||
"""
|
||||
|
||||
filename = os.path.abspath(filename)
|
||||
|
||||
# Delimeter is assumed from file extension
|
||||
# Override delimiter if separator specified
|
||||
if prefs.separatorCSV is not None:
|
||||
delimiter = prefs.separatorCSV
|
||||
else:
|
||||
if filename.endswith(".csv"):
|
||||
delimiter = ","
|
||||
elif filename.endswith(".tsv") or filename.endswith(".txt"):
|
||||
delimiter = "\t"
|
||||
else:
|
||||
return False
|
||||
|
||||
nGroups = len(groups)
|
||||
nTotal = sum([g.getCount() for g in groups])
|
||||
nFitted = sum([g.getCount() for g in groups if g.isFitted()])
|
||||
nBuild = nFitted * prefs.boards
|
||||
|
||||
if (sys.version_info[0] >= 3):
|
||||
f = open(filename, "w", encoding='utf-8')
|
||||
else:
|
||||
f = open(filename, "w")
|
||||
|
||||
writer = csv.writer(f, delimiter=delimiter, lineterminator="\n")
|
||||
|
||||
if not prefs.hideHeaders:
|
||||
if prefs.numberRows:
|
||||
writer.writerow(["Component"] + headings)
|
||||
else:
|
||||
writer.writerow(headings)
|
||||
|
||||
count = 0
|
||||
rowCount = 1
|
||||
|
||||
for group in groups:
|
||||
if prefs.ignoreDNF and not group.isFitted():
|
||||
continue
|
||||
|
||||
row = group.getRow(headings)
|
||||
|
||||
if prefs.numberRows:
|
||||
row = [str(rowCount)] + row
|
||||
|
||||
# Deal with unicode characters
|
||||
# Row = [el.decode('latin-1') for el in row]
|
||||
writer.writerow(row)
|
||||
|
||||
try:
|
||||
count += group.getCount()
|
||||
except:
|
||||
pass
|
||||
|
||||
rowCount += 1
|
||||
|
||||
if not prefs.hidePcbInfo:
|
||||
# Add some blank rows
|
||||
for i in range(5):
|
||||
writer.writerow([])
|
||||
|
||||
writer.writerow(["Component Groups:", nGroups])
|
||||
writer.writerow(["Component Count:", nTotal])
|
||||
writer.writerow(["Fitted Components:", nFitted])
|
||||
writer.writerow(["Number of PCBs:", prefs.boards])
|
||||
writer.writerow(["Total components:", nBuild])
|
||||
writer.writerow(["Schematic Version:", net.getVersion()])
|
||||
writer.writerow(["Schematic Date:", net.getSheetDate()])
|
||||
writer.writerow(["PCB Variant:", ' + '.join(prefs.pcbConfig)])
|
||||
writer.writerow(["BoM Date:", net.getDate()])
|
||||
writer.writerow(["Schematic Source:", net.getSource()])
|
||||
writer.writerow(["KiCad Version:", net.getTool()])
|
||||
|
||||
f.close()
|
||||
|
||||
return True
|
Reference in New Issue
Block a user