The purpose of of the bomcheck program is to compare BOMs (Bills of Materials) derived from a CAD program (like SolidWorks) and compare them to BOMs from an ERP database program (like that of SyteLine). The CAD and ERP programs must be able to export to Excel files. BOMs are gathered for comparison from these Excel files. Bomcheck is run from a command line interface (CLI). Bomcheck has a companion program called bomcheckgui that allows bomcheck to be run via a graphical user interface (GUI).
A program called getbc.py (i.e. get bomcheck) is available that you can use to get and install or upgrade bomcheck and bomcheckgui. For more information about how to obtain and use this program, see getbc_help.
Drag and drop SolidWorks and SyteLine BOMs onto the bomcheck user interface. To make bomcheck analyze these BOMs, click the first green triangle icon. After a short time, results will appear. (To learn about the functionality of the other icons see slow_moving_help.)

The file names for BOMs that come from the CAD program should be the part no. of the BOM followed by _sw.xlsx. That is, names like 0300-2010-005_sw.xlsx, 093352_sw.xlsx, and 35K2445_sw.xlsx are all legitimate file names. Similarly the names of the files from the ERP database should end with _sl.xlsx. Thus the names will look like 0300-2010-005_sl.xlsx, 093352_sl.xlsx, and 35K2445_sl.xlsx. The program will match the 0300-2010-005_sw.xlsx file to the 0300-2010-005_sl.xlsx file, and so forth.
A BOM from a SyteLine can be a mulilevel BOM. For the BOM to be recognized as a multilevel BOM, a column named "Level" must exist. The Level column gives the relative level of subassemblies within a main assembly. The Level column starts out with "0" for the top level assembly, "1" for parts/subassemblies under the main assembly, "2" for a parts/subassembly under a Level "1" subassembly, and so forth.
A BOM from a CAD program can also be multilevel. For a CAD BOM to be recognized as multilevel BOM, it must have a column named "ITEM NO.". The numbers in that column should look something like this: 1, 2, 3, 3.1, 3.2, 3.2.1, 3.2.2, 3.3, 4, etc..
Tip: If two or more underscore characters exist within a file name, like 094433_testBOM_sw.xlsx, the characters between the first and last underscore characters will be ignored. In this case testBOM.
Shown below is an example showing what bomcheck's results look like. SolidWorks and SyteLine BOMs are shown side by side. If there are diffences between the two, one or more Xs show up in the column labeled IQDU. An X directly below the I means that the Item is not shown in either the SW or SL. If under Q, the quantities don't match between the two. If under D, then descriptions don't match. And if under U, the units of measure don't match.
If everything matches up correctly four dashes, ----, will be shown under IQDU. If no dashes or Xs are shown, that is, if the IQDU field is blank, it means that the part number is repeated two or more times in the SyteLine BOM. The part number should only appear once in SyteLine, therefore you should correct the SyteLine BOM.

If a unit of measure (U/M) is not given for a value in the LENGTH column of a SolidWorks' BOM, then the U/M is assumed to be Inches (unless changed in the bomcheck.cfg file). However the U/M can be explicity specified, e.g. 336.7mm. The program will recognize the following abreviations for U/Ms, and only these:
in, inch, ”, ft, ', feet, foot, yrd, yd, yard, mm, millimeter, cm, centimeter, m, meter, mtr, sqin, sqi, sqft, sqf, sqyd, sqy, sqmm, sqcm, sqm, pint, pt, qt, quart, gal, g, gallon, ltr, l, liter.
Units of measure are not case sensitive. So, for example, you can use sqin or SQIN. Also, sq in is not the same as sqin, so sq in will not be recognized.
When the program is run, values will be converted to the U/M shown in the ERP database program. For example, 336.7mm will be converted to 1.10 ft, and 8 pints will be converted to 1.00 gal. Other names that can be substituted for the column name LENGTH in a SolidWorks BOM are: SIZE, Length, L, SIZE, AMT, AMOUNT, and MEAS. (Column names are case sensitive.)