The answer to your question is fairly complex.
The fundamental idea in play with creating BOMs from the Xpedition flow is that there is not a very good way to include mechanical parts in a PCB database. Unless a component has logical pins with through or surface pads, it becomes difficult to create, add, and manage them in the PCB database. Additionally, the Variant Manager is not well suited to take care of them.
We have the further problem that our ERP system, SAP, requires a very customized BOM file format, so the part list generation tools in both Xpedition and DxDesigner are not capable of creating the files in this format.
Thus we have solved the problem by doing the following:
- We create schematic symbols for mechanical parts. We have a table in our DxDatabook database for them. Each part has a symbol with no logical pins, so there is no need for a corresponding cell and packaging. The Forward to PCB attribute in the symbol definition is set to False. The symbols have properties for Part Number, Quantity, Ref Designator, and Schematic Value. Ref Designator becomes Item Number on the BOM. The policy is that every bit of hardware that goes on the PCB Assembly gets included in the schematic. In this way, the schematic is in 100% control of the design and everything included in it, and the schematic is always in sync with the BOM.
- We have an automation application that creates the BOM files from within the schematic. This application was written from scratch to exactly suit our needs of including the mechanical parts, not including things like mounting holes and e-points, accommodating the complete functionality of the Variant Manager, and creating the BOM files as they are needed for use with SAP. Additionally we separate all of the SMT parts in their own BOM so that our assembly machines and processes don't have to try to separate them out later on.
There is no quick and easy way to get an accurate BOM from DxDesigner or Expedition that does everything you want, and gives you the format you want.