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.
@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.
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.
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`.