There is not a full spec written yet, but I expect the future BOM exporter to allow selection of properties to include and their order; use data from either schematic or board (i.e. there will not be two different BOM exporters in pcbnew and eeschema), and include various formatting options, all in a GUI with no Python scripts involved. Of course all this data will also be available via the Python API for people who need more flexibility.
We’re talking “V7” features now, and it would be great if I could use the GUI to define my output. Even greater if we could define different export “Profiles” and switch between these.
Now, as for the V6, I agree with @eelik that there should be one CSV output that exports all the schematic’s data into an organized structure. One part per line, but including all defined fields. Rest (including grouping) can be done in a spreadsheet. Include one row header that splits nicely into columns, with fields’ names and that’s it.
The only one I use is a modified version of:
bom_csv_grouped_by_value
(I changed the separator from comma to semicolon)
but I believe what most of the people want is only the last part “collated components” and not the long list of “individual components”.
The problem is, if you want to group components you need to give the users the possibility to define how to group.
E.g. for me, grouping just by “value” is useless. I need to group by my databaseID if I want to have different physical parts grouped.
Like having 100nF 0603 capacitors with different voltage rating or ceramics type. I don’t put info like this to the Value field.
So a long list of individual components is more flexible in the way that you can do the grouping in your favourite spreadsheet app (hint: Pivot table). The other way round is much more complicated.
I agree with you on this, however I was just referring to that specific script where you get two outputs on one file “collated components” and “individual components” when the script is supposes to give you only “grouped_by_value” components. I have to remove the individual components list every time (or modify the script) to get what the script is advertising to be doing for me.
EDIT:
As I said, “what most of the people want” of course there is value in getting a big list of individual components, but then you don’t need a “grouped_by” kind of script.
The simplest BOM i know of that can be made from eeschema with kicad version 5 is to use the field editor*, group as needed and then ctrl+a ctrl+c -> open any spreadsheet application -> ctrl+v
Is easy to use, powerful, does not require understanding the complex script system and does work already in v5 so i assume will also work in v6.
So maybe an option for now would be to document this option.
Regarding the scripts available: I have to preface that i did not use the kicad inbuild ones as i personally always used this one KiCad BOM Wizard Plugin with customisable output (Can make HTML and CSV BOM) (It just makes a nicer looking BOM than anything available in kicad)
However if i had to choose one of kicads options then i would say the python scripts that create csv are what i would use. Most useful to me would be the one wich groups by value and footprint.
*) This is from memory as i don’t have access to kicad right now. So the name of the tool i used could be different. It was the tool where one can edit all fields of the schematic in a nice spreadsheet like view.
Hi Jon,
When it comes to BOM plugins, always select one which has the Manufacturing Part Number (MPN) and reference designator.
If you do not find a BOM plugin that has these fields then you can customize a BOM plugin that can give the information fields mentioned above.
Same, I mostly use BOM_csv_grouped_by_value_with_fp.
I made my custom version to add the “Manufacturer” and “manf#” fields already used by the 2 excellent plugins: KiCost and InteractiveHtmlBom.
I agree that you need to sort the BOM by both footprint and value - BUT ALSO Capacitors need a voltage rating, this also needs to go through to the BOM. A really good system would also include either a custom or manufacturer part number.
Mike.
Agreed, there are any number of additional fields that can or should be specified for a part, depending on your needs. Voltage rating, tolerance, distributor PN, manufacturer PN, house PN, etc.
It sounds like @craftyjon’s future (7.0) plans would support that nicely. In the meantime, there are options: the scripts are customizable if necessary, you can copy and paste from the bulk grid editor, the interactive HTML bom is nice, there are other external BOM plugins, etc.
Unifying the script names and descriptions would do wonders. Take off all “bom” and “bom2” from the names. The file format first, then group by, sort by, fields included. For example
- csv_groupby_value
- html_groupby_none_sortby_value
- csv_groupby_none_sortby_none_allfields
And the description. This is one example from the current set:
Generate a Tab delimited list (csv file type).
One component per line
Fields are
Ref,Value, Footprint, Datasheet, Field5, Field4, price
The first line is completely superfluous, or at least should be formalized. Other lines should be formalized for all scripts.
Output file type: csv (tab delimited)
Grouped by: -
Sorted by: -
Fields: Ref Value Footprint Datasheet Field4 Field5 price
I agree. I might try do do an MR this weekend to clean up the descriptions. I also noticed the “Help” text could use some cleanup.
@craftyjon if I did a separate MR to make a slightly improved version of the bom_csv_grouped_by_value_with_fp plugin that included all user fields in the output, would that be accepted? I think it would be a better default. Should have done this before you did the cleanup, but better late than never.
I don’t think anyone has proposed improvements to these plugins in a while and I can’t see why we would not accept them!
Haven’t been keeping up with the new updates so much, so this might have already been fixed; but its a bit annoying that by default nothing is compatible with the digikey import BOM tool. I’ve written a python script to do this, but it seems a bit strange, in my experience the only thing I use a BOM for is ordering parts, so it seems very strange to me that the BOMs generated by default are nearly useless for this purpose.
don’t know if other component sellers have import tools; all the others I’ve used (except arrow, which has their own problems) don’t allow you to view their website in english outside english speaking country, which makes them very challenging to use in general, so I just don’t.
just removing commas and then replacing semicolons with commas would fix this for digikey though; but I guess that would make some other stuff incompatible as well, but if possible something like that would be my suggestion related to BOMs
As for what I use, my current BOM script generates more but I delete all columns except reference designator, value, and footprint, and then add a new column (or two) for putting part numbers; my opinion is any more information is useless, but I guess some people disagree with that?
The bom2grouped_csv.xsl
script claims to generate a digikey compatible BOM. I have not tested it, however.
Looking at the output, I don’t see what would make it digikey-compatible while the others aren’t, though.
Welcome to the wonderful world of every entity has their own BOM format. Hell at my company we have 3 different formats depending on ERP, PLM and PCBA.
Nobody has contributed a tool specifically for Digikey to KiCad so there is none.
no idea with bom2grouped_csv.xsl; hadn’t heard of it before and with some looking into it, it looks like a thing for linux/mac people? (by this I mean I found it on github with suggested command to convert xml to csv, but that command doesn’t exist on my computer and google says it is for GNOME)
never heard of ERP or PLM, but wouldn’t PCBA require more information and so require a different format? (it was including other people doing assembly, right?)
apparently I am using a plugin called KiBoM, so if anyone has same problem as i had maybe look that up
Turns out I don’t know anything about how currently generating BOMs works, the format that I though was how kicad did boms is actually just when you go to file->fabrication outputs->bom file in the layout; in the schematic everything (except my kibom script that I guess doesn’t come with kicad by default) generates xml that i have no idea how to convert to csv
so maybe just ignore my feedback as I clearly don’t know what I’m talking about
I guess this is getting pretty off topic but would be interested what providers accept what formats for BOMs and what software everyone uses their BOMs with or for; or even just how everyone orders parts
bom2grouped_csv.xsl is one of the scripts included with Kicad. You run it from Eeschema (it does the conversion from XML to CSV that you mention)
Something wrong with my kicad then; when I run it I only get an xml file (no errors either)
do you get a file <projectname> with no extension? If so you can stick a .csv at the end of the filename.