Creating Parts Library
The objective this week was to create the parts (components) library for the schematic editor. The way we have been implementing it until now is very primitive where we need to hard code all the components details. Although it worked very well for a few number of components, yet it will be very time consuming to write the code for more than 1000 components manually. Hence this week I was experimenting with Fritzing and Inkscape.
Fritzing is open-source Electronic Design Automation (EDA) tool and it has a very rich parts library that has electronics components info and graphics in breadboard view, schematic view, and PCB view. Our first objective was to parse all Fritzing parts library and use it directly for our software. The problem with this approach is that although Fritzing is an open source, and its documentation is licensed under Creative Commons CC-By-SA license, its graphics library is not! According to Fritzing FAQ “However, we do not allow the use of Fritzing part graphics in other software systems at the moment“.
Fritzing parts consist of two parts, .fzb file, and a few .svg file. SVG files determine how does the part look like in breadboard, schematic, and PCB view, while the fzb file specify the ‘logic’ for the part, which pins can be connected, their names and description. Since we cannot use the parts graphics (SVG) we will only use the fzb files and create our own graphics. The obvious problem with this way is we are still stuck at the same problem we wanted to avoid in the first place, creating the components manually!
The proposed method we are experimenting with right now is hybrid method where we do some manual graphics work, and create the pins outs, pins names and JoinJS code automatically, based on our graphics, and Fritizing fzb files. The way to that is to use Inkscape! Inkscape is a free open source vector graphics software. The intention is to create some basic template manually, and to write an Inkscape plugin that will modify these templates automatically depending on the module specs.
My task now is to explore Inkscape, and write plugins for it. Then we will try to create our parts library using the method.