Interactive Html Bom Plugin for KiCad

3 posts were merged into an existing topic: BOM from Eschema

I know this is probably blasphemy on this forum but EasyEDA support was implemented. If anyone here uses EasyEDA feel free to test.

Also I made it fairly easy to add other ecad software support. Just implement an EcadParser according to the data format.

1 Like

Where is the thumbs down button in this forum!? :stuck_out_tongue_winking_eye:

Blasphemy or not, KiCad allow us to be a laboratory for new IT technologies. Also KiCost, at the past, made me develop some BOM XML Altium and CSV compatibility. The intention was made less hard the user migration and re-use old design.
But of course, the full compatibility / integration of this tools will be reach just in KiCad.


1 Like

4 posts were split to a new topic: Trouble with pos file

Plugin now can show some stats about the board and progress of ticking off checkboxes



Nice statistics add-on. But what are Groups? Are those collections of same value component (like all 100k resistors on a side is one group, all 0.1uF caps on one side another group, etc)?

Yes, component groups, i.e. rows in bom table.

V2.2 is released
New in this release:

  • Board stats, checkbox progress bars
  • Option to show DNP components in outline mode
  • Datasheet field can be used as extra field
  • EasyEDA support
  • Option to normalize extra field name case
  • Options to hide references and values

And some bug fixes.


Nice tool I started using it recently and I’m suprised of the quality of this work. While with most of the boards I designed it works correctly with some of them I got an error on startup and no results:

I’m running the last version of the plugin on KiCAD 5.1.4 on Windows 10 Pro 64bit.

This’s the error message copied from the dialog box:

Exception on python action plugin code
Traceback (most recent call last):

  File "C:\Program Files\KiCad\share\kicad\scripting\plugins/InteractiveHtmlBom/ecad/", line 438, in Run
    ibom.run_with_dialog(parser, config, logger)

  File "C:\Program Files\KiCad\share\kicad\scripting\plugins/InteractiveHtmlBom/core/", line 315, in run_with_dialog

  File "C:\Program Files\KiCad\share\kicad\scripting\plugins/InteractiveHtmlBom/dialog/", line 37, in set_extra_data_path

  File "C:\Program Files\KiCad\share\kicad\scripting\plugins/InteractiveHtmlBom/dialog/", line 201, in OnNetlistFileChanged
    netlist_file, self.normalizeCaseCheckbox.Value)

  File "C:\Program Files\KiCad\share\kicad\scripting\plugins/InteractiveHtmlBom/ecad/kicad_extra/", line 20, in parse_schematic_data
    return parser.parse(normalize_case)

  File "C:\Program Files\KiCad\share\kicad\scripting\plugins/InteractiveHtmlBom/ecad/kicad_extra/", line 22, in parse
    data = self.get_extra_field_data()

  File "C:\Program Files\KiCad\share\kicad\scripting\plugins/InteractiveHtmlBom/ecad/kicad_extra/", line 16, in get_extra_field_data
    xml = minidom.parse(self.file_name)

  File "C:\Program Files\KiCad\lib\python2.7/xml/dom/", line 1918, in parse
    return expatbuilder.parse(file)

  File "C:\Program Files\KiCad\lib\python2.7/xml/dom/", line 924, in parse
    result = builder.parseFile(fp)

  File "C:\Program Files\KiCad\lib\python2.7/xml/dom/", line 207, in parseFile
    parser.Parse(buffer, 0)

ExpatError: not well-formed (invalid token): line 1, column 207


In attach the board file: (80.3 KB)

Issue is not with the board file, looks like there is an xml file in project directory that the plugin assumes to be extra field data file but it doesn’t have expected format. Try renaming or moving that file or just generate new netlist file, that should solve the issue.

thnx is probably the file produced by KiCAD to be passed to another BOM tool.

Xml file produced by kicad (eeschema to be exact) is exactly the one that is expected so if that is indeed the case then it’s likely a KiCad bug. Please check that there are no other xml files.
If you can post xml file here it will also help.

Maybe they were produced with a former kiCAD release and this caused the problem. After removing them everything worked fine. I launched again EEschema BOM extraction (creating another XML file) but this haven’t triggered any error within your script.

If you can post xml file here it will also help.

Unluckly I deleted nasty XML files …

I see, thanks for the update. I’m going to fix the error anyway, the plugin shouldn’t just die with a stacktrace for invalid xml. But at least this is not a blocking issue.

1 Like

@qu1ck First, thanks a lot for this very useful tool. Installs and works perfectly in Win10, with KiCAD nigthly from Sept 2019. I’ve just soldered manually a lot of boards (600+ pcs of 100nF/1206, you can imagine) with its help.

I just add a feature request to the wishlist:
if F.Cu (or B.Cu respectively) layers would be seen dimly, it helped locating target footprint, which is not easy at a bit chaotic board.

Glad you find it useful.
By dimly do you mean different (less contrasting) color or decreased opacity?
Also have you tried tweaking which layers are enabled in the bom? With disabled pads and silk and enabled fab layer it usually becomes less cluttered.

I think it would be very light grey, regarding to the light/dark theme. I photoshopped a view I think of.

First congratulations to the great plugin and here are the ideas for Version 3 roadmap:

A project with similar attempt is known from

The idea is same than yours exept screen is swapped with paper prints. It goes back on what or fathers did with THC prototype assembly almost 50 years ago using photocopies colored by Edding. This leaded to more or less sophisticated semi manual THC pick and place machines driven by human bio robots. Best known are the THC placement workbenches produced by former German manufacturer Royonic. If you dont know that kind of workbenches, Google for Royonic reports many photos of used equipment. They consist of a 2 axis servo drive laser pointer with and without mechanical paternoster shelf to feed the components. A foot pedal switches to next BOM line, the component box is positioned below the center door and laser points to pcb location on where to populate this component. Pin 1 or Diode/Kathode polarization is indicated by blinking the symbol. Therefore operators have to know really nothing about the board to assemble and show amazing speed. We have 2 of the Royonic machines and I worked myself with them long ago for THC. For quantities up to about 100 pcs its a fun to beat the own assembly time or the time of a fellow. For numbers above that, it gets boring and as a designer of the board you soon know anything by heart. Unfortunately, the Royonic machines are too big for SMD and disappeard in recent years more and more same the manufacturers Royonic. There was also a competitor Heeb, who changed his production to SMD pick and place machines what we also run several up on today. Nevertheless for prototype numbers below 10 and depending from complexity, hand assembly is always the choice. Further we can assume, many of the Kicad users cannot invest into own pick and place machines and never have medium or high production volumes. There are only few minor feature requests to your addon with use of todays PC peripherals what allows to build own semi automatic SMD pick and place machine what is equal to the former Royonic THC attempt.

A split screen for multi monitor support allows connection of LED projector instead of screen. LED projector is mounted to a frame on the table (or to the room ceiling) while its image can be seen on the workbench. Zoom image of same size than pcb allows direct projection of the image to the pcb and I guess, this simple feature will double the assembly speed.

From gaming equipment, there are cheap and generic peripherals like USB foot switches known. Support of such HID input, allows to have both hands free for component assembly by tweezers what will double the assembly again.

We could go on further with a second projector what covers the SMD chip magazin boxes. In comparison to THC, the SMD containers are really tini and each number can be reached by hand without using mechanical positioning devices. I guess, this not only allows bug free board assembly by people who dont know anything from the design and will will double assembly speed again.

Since we have a real SMD pick and place machine, we never tried this approach. I cant promise how sufficient behaviour of resolution, distortion and thermal drift of todays cheap LED projectors are. Probably its some experiments worth what can be done without any change to the HTML bom plugin. Good luck …

I try to explain the problem for you to see clearly. Fast and cheap board is manufactured without silkscreen. When I want to solder a particular component, I must find its place, and it is easy to misplace.

and find the pads for R47 on real board:

the copper pattern could be used as navigation points