README for the BOM Generator program by Gordon Whittam. Please read the license file accompanying the program. This is what passes for a help file. The program was created to fit my specific needs for managing Kicad/eeschema/PCBnew generated BOM and POS files. The problem: I find it easier to manage component values and manufacturer part numbers using a spread sheet. Like most people I want to keep my part inventory to a minimum. As such I have a spread sheet with all my commonly used parts, their part numbers, manufacturers and 4 suppliers listed for each part where possible. If I do this in eeschema using the component fields, if I then decide to use a different manufacturer for a component, or a component becomes unavailable I have to go through the whole schematic changing all fields for the same component, a real pain. Using the spreadsheet I can change the component in the parts inventory and it's updated in all linked fields. When I'm creating a schematic I now just enter a good description of the part in one field (as well as the value and footprint in the normal fields) including any important criteria such as voltage, current, power and bandwidth. I create the BOM with the eeschema BOM generator and paste it into an Excel spread sheet then go through the parts and Paste>Paste Special>Paste Link from the parts inventory spread sheet. From then on I manage changes such as adding and removing parts in the spread sheet. When I'm hand building more than one board and it has more than a few components I find it easier to decant the components into trays in advance. The trays I use are 10*5. I don't label them, I just reference them as a1:a10, b1:b10 etc. If I need more than one tray it becomes aa1:aa10 and so on. As the component list is now in a spread sheet it's easy to sort the components by part number and assign a bin/tray location to each part type. The second problem is when it comes to placing the components on the board. I find it easier to place the components in the same order they would be if being placed by machine. Otherwise you're forever searching all over the board for where to place the component. If the list has been sorted then you have to manually allocate and match each reference from the modules position file to its part in the spread sheet. You can't just use the *.POS file generated by PCBnew as it isn't ready to be imported into a spread sheet. Even if you convert it to a tab delimited file you can't just paste it into the spread sheet and have it line up component for component as only components with the insert value set are included in the POS file. What the BOM Generator does - two things: 1) It allows you to collate all the same parts giving a quantity for each. Eeschema can do this but then it's no good for spread sheet management of components and it has limited grouping criteria. There's no option to collate with respect to any particular field. Once collated in BOM Generator you can copy and paste into Excel but do it to a NEW sheet as links to the parts inventory are broken in the process. This is useful if you're farming out the assembly to an assembly house as the BOM list they will ask for. 2) You can import the modules position file. Bom Generator will match up the modules positions to the appropriate component. You can then paste it back into Excel and sort the list based on the x and y positions which gives you an easily referenced insert order together with the bin/tray locations - if assigned. OK. Now you want to know how to use it:) Select all the required data in your spread sheet and copy it to the clipboard. Start the BOM Generator. Click the Paste button. In The BOM Generator set the "Comp Ref Idx" value to the column number your component references are in (C1,C2,R1,R2 etc.), starting at zero. This is the column index in BOM Generator, not neccessarly the column index in your spread sheet. If you have a column in your spread sheet indicating whether a particular component is required or not, you can exclude it from collation by checking the "Skip" check box and setting the Index value to the index of the respective column and setting the "Criteria" to whatever value you've used to indicate 'do not include'. The value is case sensitive. From the File menu select Import>Modules Position (*.POS), locate the corresponding module position file you created with PCBnew - Open. BOM Generator will have placed the position information in the correct row regardless of the component order. Select all the position information. Make sure to select from the top of the grid as some entries will not have position information, only those with the insert attribute set in PCBnew. Edit>Copy then paste the position information back into your spread sheet making sure to paste it into the correct row. The component references are included in the position information to enable checking against the original references in your spread sheet. MAKE SURE you copy over the modules position information to your spread sheet BEFORE the collation operation. Once the data is collated the position information is invalid. Now to create your BOM: Make sure the "Sort index" value is the column number (from zero) with the data you wish your parts to be grouped by. Set the 'Skip' controls if needed. If you don't want to skip any rows uncheck the Skip check box. Click the Collate button or Edit>Collate. Your components will now be grouped according to whatever criteria you chose (usually the part number) and the quantity required indicated in the left most column. When using Edit>Copy or the Copy tool button, if there is no selection, everything will be copied to the clipboard. The exported clipboard format is Tab delimited which should be accepted by most spreadsheet programs. The required format for pasting into the program is also Tab delimited which is the default plain text format from Excel. I haven't tried with other spread sheet programs and have no intention of making the program compatible with anything else so please don't ask. It might work it might not. The program is written in Delphi 5. If you wish to adapt the program for your own particular needs the source code can be made available. In the distribution zip file are some real world files of my own to play with, Sample.tab and Sample.pos. File>Open Sample.tab then File>Import>Modules Position>Sample.pos. Column 2 in the file is my 'skip' index. A few of the parts are not needed for some boards. Column 2 has a zero for those items. If you set the skip criteria to a zero, skip index to 2 and check the skip check box, those items will be ommitted from the collation. Best of luck and happy board making. Gordon gordon@mgcsoft.com Revisions: 1.0.0.0 Original release. 1.1.0.0 Changed to include the exclude criteria from the imported *.POS file. 1.2.0.0 Added version info to title 1.3.0.0 Added some code to deal with items in the *.POS file missing from the parts list. Shows a message listing missing items.