added kicad_bom.py
This commit is contained in:
parent
214c3ab297
commit
dfa025a7c1
|
|
@ -0,0 +1,100 @@
|
|||
|
||||
from __future__ import print_function
|
||||
|
||||
import re
|
||||
import csv
|
||||
import sys
|
||||
import os
|
||||
import shutil
|
||||
|
||||
DELIMITER = ","
|
||||
|
||||
here = os.path.abspath(os.path.dirname(sys.argv[0]))
|
||||
|
||||
sys.path.append(here)
|
||||
|
||||
from KiBOM.columns import ColumnList
|
||||
from KiBOM.netlist_reader import *
|
||||
from KiBOM.bom_writer import *
|
||||
|
||||
#import bomfunk_netlist_reader
|
||||
#import bomfunk_csv
|
||||
#from bomfunk_csv import CSV_DEFAULT as COLUMNS
|
||||
|
||||
global DEBUG
|
||||
DEBUG = True
|
||||
|
||||
def debug(msg):
|
||||
global DEBUG
|
||||
if DEBUG == True:
|
||||
print(msg)
|
||||
|
||||
def close(*arg):
|
||||
print(*arg)
|
||||
sys.exit(0)
|
||||
|
||||
def error(*arg):
|
||||
print(*arg)
|
||||
sys.exit(-1)
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
close("No input file supplied")
|
||||
|
||||
input_file = sys.argv[1].replace("\\",os.path.sep).replace("/",os.path.sep)
|
||||
|
||||
input_file = os.path.abspath(input_file)
|
||||
|
||||
if not input_file.endswith(".xml"):
|
||||
close("Supplied file is not .xml")
|
||||
|
||||
#work out an output file
|
||||
ext = ".csv"
|
||||
|
||||
if len(sys.argv) < 3:
|
||||
#no output file supplied, assume .csv
|
||||
output_file = input_file.replace(".xml",".csv")
|
||||
else:
|
||||
output_file = sys.argv[2].replace("\\",os.path.sep).replace("/",os.path.sep)
|
||||
|
||||
valid = False
|
||||
|
||||
for e in [".xml",".csv",".txt",".tsv",".html"]:
|
||||
if output_file.endswith(e):
|
||||
valid = True
|
||||
ext = e
|
||||
break
|
||||
if not valid:
|
||||
output_file += ext
|
||||
|
||||
output_file = os.path.abspath(output_file)
|
||||
|
||||
print("Input File: " + input_file)
|
||||
print("Output File: " + output_file)
|
||||
|
||||
#individual components
|
||||
components = []
|
||||
|
||||
#component groups
|
||||
groups = []
|
||||
|
||||
#read out the netlist
|
||||
net = netlist(input_file)
|
||||
|
||||
#extract the components
|
||||
components = net.getInterestingComponents()
|
||||
|
||||
#group the components
|
||||
groups = net.groupComponents(components)
|
||||
|
||||
if ext in [".csv",".tsv",".txt"]:
|
||||
if WriteCSV(output_file, groups, net.getSource(), net.getVersion(), net.getDate()):
|
||||
print("Success! Wrote components to " + output_file)
|
||||
else:
|
||||
print("Error writing to " + output_file)
|
||||
|
||||
elif ext == ".xml":
|
||||
WriteXML(output_file, groups, net.getSource(), net.getVersion(), net.getDate())
|
||||
|
||||
elif ext in ['.htm','.html']:
|
||||
WriteHTML(output_file, groups, net)
|
||||
|
||||
Loading…
Reference in New Issue