BOM Management- Multiple Part Solutions

How to create Library Symbols and BOM with multiple part solutions? I want to build a single BOM for a project so I build domestically and overseas.

Similar to this:
https://www.altium.com/documentation/altium-designer/bom-management-with-activebom-ad?version=19.0

An example of what I am trying to achieve would be attached if new users could attach attachments.

Edit: Attachment now available
Altium BOM Export.xlsx (17.4 KB)

You should be able to do an attachment now.

I use a work around that I developed in the KiCost tool. Check the parts with subparts in the manual
Filling the manf# or equivalent field of X1 component with: “PART1; 2: SCREW ; 0.5: CABLE ; 3/4 : SOMETHING” it generate a cost spreadsheet with
X1#1 -> 1 x PART1
X1#2 -> 2 x SCREW
X1#3 -> 0.5m x CABLE
X1#4 -> 3/4 x SOMETHING

If you run kicost -i %file.xml% --no_price the spreadsheet will not be populated with distributors price and, I think it could be that you want.

Thanks.
Altium BOM Export.xlsx (17.4 KB)

A example did by KiCost with prices (and using the multiple parts)
acquire-PWM_2.xlsx (79.9 KB)
And using the --no_price directive
acquire-PWM_2_noprice.xlsx (15.7 KB)

@hildogjr Thank you for your reply. Seems like you have a really cool solution on your hands.

While this is close, it is not exactly what I am after. For example, our CM uses Uni-Royal parts. But I’d like to add the solution for a Digikey cross from Panasonic because this is where our corporate account is. And if our proto-house uses Venkle, I’d like to add that as an option. Altium has the ability to choose different part solutions from different vendors (and/or part numbers) for each BOM line.

Appear that is need a custom solution. I think this have to be made be your self (or expand some KiCad tool that some other user have already designed).

@hildogjr Thank you for confirming. I just wanted to make sure I wasn’t missing something.

I would think this would be a common problem as most PCBAs are built overseas with overseas parts while some engineering is still done on entirely different continents.

For the few companies that I’ve worked for, they use in-house part numbers on schematics. These in-house part numbers point to assets in their inventory control software that takes care of sourcing parts from different vendors/manufacturers. (Often the resulting boards then get put into the inventory control software to be used with other parts to build up a completed widget.) Even if the EDA package that they use has some form of inventory control, they don’t bother using it because the company wide inventory control has to manage more than just the parts that go onto a board.

I just external assembled at Jlcpcb and they use the LCSC parts catalog code. Because that, I added it to KiCost.
I don’t know about others housing (usually we buy empty boards).

I do it this way and did it this way as i was still using Altium. In the schematic, all parts have a custom field named “placed” and most parts also have a custom field “description” and “id”. Some parts also have the custom fields “description2”, “id2”, “description3” and “id3”.
I use this fields to define which components are used for which assembly. The “placed” field describes which assembly uses which part number or if a part is never placed (testpoint, fiducial, …). In the “description” field, i add the part description of the part normally used. The “id” is the part number in our part database. If there was a alternative used in some assembly, i add a “description2” and “id2” for that assembly.
With this data i generate a general BOM. This BOM is then read by a script and BOMs for the individual assembly are generated.

Example of a generated general BOM.

designator;    placed;                id;        description;            id2;       description2; ...
....
E100;          -
R100;          "always";             "23-545";  "Resistor 1k 2012";
C100;          "PCB010 1, PCB012 2"; "11-312";  "Capacitor 100nF 2012";  "11-332";  "Capacitor 10nF 2012";
....

A script would then generate 2 BOMs. Both would not contain E100. Both would contain a 1k Resistor at R100. One would contain a 100nF at C100 the other would contain a 10nF at C100.

This way needs a bit of initial work. I needed to define a format, wrote a script and had to add the “placed” field to all my library symbols.
It is a bit of a hack, but now i can define all assembly variants in the shematic.

However, it is not handled here when there are multiple manufacturers which produce the same part and we may want to use both. That is done at the parts database level, completely outside of the EDA software.

This is also possible with KiCost, we call a variant system. There is some feature request to add this directly to KiCad

Basically, in KiCost I use the variant field to inform in what variant the component will be added (I resistor with variant = buck will be added only if I run kicost -i %FILE.xml% --variant buck). But I also can change one field by the variant, a resistor with kicost.v1:manf# = CODE1,kicost.v1:value = 1k, kicost.v2:manf# = CODE10,kicost.v2:value = 10k will be 1k ifkicost --variant v1and 10k ifkicost --variant v2`.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.