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. 




