Schematic Symbol Exclude from Bill of Materials

I just pushed a commit that implements excluding schematic symbols from the bill of materials (BOM) export. This new feature allows adding symbols to schematics that represent footprints on the board such as mounting holes, fiducials, that do not have an associated component that is required to populate the board. You will no longer need to lock these types of footprints to prevent them from being removed when updating the board from the schematic

This feature required a change to the library file format so you wont be able to open the schematic files with older versions of Eeschema. It will be available in the next round of nightly builds.

Excluding symbols form bill of materials export is accomplished by checking the new “Exclude from bill of materials” check box in the schematic symbol properties dialog.

7 Likes

Useful, thank you

How do you connect your parts to actual parts for order?
When I export the BOM, I find myself having to manually edit in a spreadsheet the weblinks for each individual entry in the BOM. Then if I change a part, and re-export the BOM, I have to do it all over again. Have you any recommendations for this? Is there a way to add particular links to parts either from the PCB BOM or scheme BOM? Something that will be connected like the Datasheet field…

Thanks

@Scott_Cox Try editing the field values directly in the Symbol Editor.
For example, look at symbols provided by Digikey or Mouser which add more fields with their own part numbers.
You can make any field name you want and include anything there to be picked up by the BOM, then you only need to remove the columns not required or you make a custom BOM script to pick only the fields you want.
image
image

How do you connect your parts to actual parts for order?

This is the age-old problem. Many users put a “part number” field in the symbols. That can be either a proper manufacturer’s part number (in which case it’s useful to also have a field for “manufacturer name”). An alternative is to use “part number” field for “house” or “company” part numbers.

The BOM exported from Kicad will have that part number field. You have to maintain a database (or spreadsheet) of your parts (which is keyed by the house number and includes all necessary ordering information), and then use a script or whatever to match the “house” part number in the exported BOM to the orderable part number to create something you can use for ordering.

How you then manage the lookup to a real part rather depends on the size of your setup - there are big, commercial ERPs that will handle large company inventory management and ordering (at great expense). If your needs are more modest, you might consider the spreadsheet suggested by @Andy_P.
I use PartKeepr for my inventory management - after a few recent problems this now seems to be under active development again. There is a python script here https://github.com/Gasman2014/KC2PK which will parse your BOM and identify the components in your stock. It will also obtain comparative quotes from multiple suppliers with stock levels and suggest the cheapest solution. It does depend on Octopart - who sadly no longer provide free API keys. I would also suggest that you also look at KiCost https://github.com/xesscorp/KiCost.

When first time experimenting with BOM in kicad_netlist_redaer.py I found:

"# You may exlude components from the BOM by either:
"#
"# 1) adding a custom field named “Installed” to your components and filling it
"# with a value of “NU” (Normally Uninstalled).
“# See netlist.getInterestingComponents(), or”

So I have just added to my symbols to be excluded from BOM the field 'Installed" with the value “NU” and I have those symbols not listed in BOM.

Moving to KiCad I didn’t looked for KiCad specific solutions but I just copied my spreadsheet solution I am using since about 15 years.
At one tab I have a list of all elements I use.
To second tab I copy the BOM got from KiCad by little modified bom_csv_grouped_by_value_with_fp.
In my past solution I needed only the element symbol, number of used and reference list. Moving to KiCad I decided that from now on I will be using symbol + footprint to identify the element (previously I had 1k and 1k_04 now both 1k 0603 and 1k 0402 have the same symbol name).
Then the columns to be shown in BOM are filled by copying the right columns form first tab. Among them I have the column with symbols used to sort my BOM as I wont, so after that columns are filled I sort all by that column and by the symbol name column. Then I copy all as only texts (breaking the functions used to fill the info about elements) to my final BOM.
In LibreOffice the key function to use is (I have the Polish version and they used also Polish names for functions) SEARCH.VERTICALLY (ore something close to it). When moving to KiCad I have done some experiments and found that this Search can also use connected texts to serach (probably CONNECT.TEXTS). So In my first tab I added the column containing connected symbol+footprint and when searching I use SEARCH.VERTICALLY(CONNECT.TEXTS($C6;$D6);…). In column C I have symbols, and in D footprints from KiCad schematic.

Please do not hijack this topic. The discussion about the new exclude symbol from bill of materials feature has nothing to do with ordering components from vendors. This topic should be moved to it’s own thread. I would venture to guess that it’s already been discussed elsewhere.

1 Like

What a nice commit dude, congrats! this is a really useful feature to add!

Sadly we will need to update our custom symbol files to add this tag, but should be a really simple add, like “BOM_status = true”, right?

The default is true (yes) so when converting legacy symbol libraries to the new file format. You will have to manually change them to exclude them from the BOM. The syntax in the file format is (in_bom yes|no) and is only applicable to root symbols.