Standardization of Fritzing part design

:studio_microphone: Fritzing Standards for good design :pen:

Hello Fritzing community,

I have been using the Fritzing on past university project (very few) and forgot about this software for some months, but now, while doing some stuff for my final project of my engineering career, I had to make some new parts in order to fit my needs.

I wasn’t used to work with Inkscape or Illustrator for svg design since I am not a graphic designer but have done good aesthetic / working Fritzing parts as you can check on these forum (in just 2 weeks approx.)

As you saw on those discussions, I struggled to make things work on Fritzing but thanks to @Old_Grey and @vanepp suggestions and tips, I managed to accomplish new parts (which I pushed to github repo already).

Now, I noticed there isn’t a proper guideline for making part creation learning curve easiest for most of us and even thought there are some youtube tutorial series (by Old_Grey), I felt we lack a proper “standard book” for doing it.

Hence I made this new discussion in order to set up proper guidelines for development of new parts and organize all of them in one topic (and therefore a github wiki page).

By the way, this dude rocks making parts.

:blush: PD: Forgive my english.

My Inkscape settings

  1. Page properties tab:
  • Display units: px
  • Page size units: in
  • Scale: 10,41667 user unit per px
  1. Page properties tab:
  • Grid #1
    • Grid units: px
    • x, y origin: (0, 0)
    • x, y spacing: (0.01, 0.01)
    • Primary line each: 10
  • Grid #2 (optional)
    • Grid units: px
    • x, y origin: (0, 0)
    • x, y spacing: (0.1, 0.1)
    • Primary line each: 100
  1. fit tab:
  • object: 10 if closest
  • grid: 10 if closest
  • guides: 10 if closest

From vanepp:

“Which when zoomed way in gives a 10 thou grid and when zoomed out to normal size creates a .1 in grid. You can then move the x/y start positions so the grid matches one of the connectors and the rest of the connectors should then align on the grid if they are correct.”

This was actually discussed, but it didn’t go far.

Basically there are 3 main part makers, 2 wanted it with one knowing how to implement stds to parts and me that didn’t, and 1 that didn’t citing that if it worked who cares. I’ve seen another EDA go through a major overhaul of their parts and put in place a very strict system to ensure quality parts, which is mandatory to be professional, but they were able to do it because they have a huge work force of contributors to draw from.

FZ is kind-of it own worse enemy because it’s for beginners and beginners aren’t smart enough to help FZ.

That’s me. If the only way to make parts was the way @vanepp explains I would not use Fritzing at all. In all honesty I can’t even follow 99% of what he says and I believe it only makes part creation harder than it needs to be and scares away more people than it helps. For all the parts I make for making PCBs if it takes more than half an hour to make a part I have done something wrong. If Fritzing would allow parts with embedded PNGs into the main repo for Breadboard view it would easy. You would just take a picture of a real part and add the connectors.

I would say this is true but for a different reason. I think Fritzing is a great EDA and the only part that makes it look like a toy and makes making parts hard is the Breadboard view. If it didn’t have it people would take it much more serious and parts creation would be a breeze. You would start with a generic ic to generate the schematic and then the only thing left would be make the PCB view which is easy because it is only copper and silkscreen.

The part std is too advanced for me too, but non std bad parts aren’t great either. Some old parts are so strange in their format and have so much junk attached you just have to throw them away and start again because it’s too confusing to just do a simple mod to make into something else. Standardised parts would make mods much more simple and would be faster than making new. Basically it pain now for reward latter.

You can ‘Trace to Bitmap’ PNGs in INK - I have a tutorial - and just add some connectors. For one-off or low demand parts this is probably the best way.

I was thinking about getting rid of the BB view, or changing svg drawing to CAD drawing so we have 3D view because it’s the same work as now, but basically BB view is the only reason it should exist because there is plenty of other EDAs. Besides helping beginners it’s good a documenting stuff for tutorials.

BB view is complex to draw, but everyone trips up on the group structure of PCB view so it’s probably not as simple as getting rid of BB view.

The same can be done here but of course, with the help of devs and the part makers. I really learned it quickly and even though I am not the fastest (since I spent like 2 days per part), I feel pleased with the final results.

It’s because most people doesn’t like making parts or don’t have time to make one since they just want those for their projects.

That’s true, maybe vanepp has too much experience and his instructions would be complex at first, but after following them carefully (and digging into Inkscape featureS), you will catch up quickly.

For example, his most recent tip regarding how grid alignment works, made me understand (and save time) while making part fixes.

I didn’t understood this line, what is std part?

Breadboard view is what makes Fritzing so good :smiley:

As I can say as newbie user, we should redo the tutorials.

I meant that Van’s part standardisation was so complex I didn’t understand it.

I have no experience in this field at all so it took me over 1 year to make a part because I had to learn FZ and INK from scratch. I asked the forum for part help about 2 years ago and didn’t get one response - basically there was no one here -, and when I looked at the guides they weren’t comprehensive enough to make parts and expected you to already know stuff. Basically there was nothing for a total beginner that never heard of this stuff before. Even now we are discovering new stuff as we stumble across it, because the creators never told anyone anything.

The main reason I use Fritzing over Eagle which I used to use is because the views are tied together. I can lay everything out on the PCB and then make the schematic after based on the ratsnests to confirm I made it as I have it in my head. With some other EDAs you could work on the PCB first too but after that you would have to start over to make the schematic and never know if you got the PCB right. You can also use it to reverse engineer things by working in PCB first.

I can make a part in 1/10 the time it takes him and they work as they are supposed to so there is nothing to catch up on.

As for the alignment tip if you had used a generic IC to generate the Schematic and assign its labels you wouldn’t have ever needed the tip. It is only because things are being done the hard way that that information is even needed. And if you assign the pins in the Editor instead of wasting time putting them in the SVG I believe it aligns them correctly for you (I could be wrong as 99% of the parts I use/make are SMD since they are so much easier to solder and I turn off the grid because the alignment I need is so fine it makes Fritzing unusable).

Have you read my Inkscape tips and tricks thread?

Yeh, FZ has some nice features - that’s why I like it -, but if you switched to the slower work flow EDAs it would be negated by faster part making. You get used to other EDAs eventually.

This in my view is the underlying issue here. There are not that many people making parts, and basically no one developing. The original developers or even anyone familiar with the code base do not appear to respond in the forums so development is a challenge to say the least. That is the number one issue that we need to address in my view. If we can kick start development we maybe can make progress. The parts check script is a start to making the parts maintainer’s job easier. He is almost the only one of the original developers (AFAIK) that is doing much, and he expressed the desire for a more automated way to check parts for inclusion in core. That is where the standardize parts thread started, but there are too few of us involved to come to any useful conclusion I fear.

Since my first part (with 4 whole pins in a DIP package) took me about 2 months to get to a semi reasonable state and probably about 6 months of elapsed time learning about Fritzing and Inkscape don’t feel bad :slight_smile: .
A number of complex parts I’ve made have taken me very long times (about 6 months for Brad’s education board) but through it all I learn more and more. That knowledge of the internals of parts are what drove the parts check script.

and as I have said before, in my view, breadboard is the unique feature of fritzing. It allows documenting the interconnection of modules in breadboard to document a project made of a series of modules (with no pcb views in use). No other package I know of does this.


Hello @all,

it has been a long time i wasn’t around in the forum. the discussions are very known about the parts making procedure and it is time to make it much more straight forward.

therefore we begun with some node.js based things. there is now a fritzing-parts-api that uses the fritzing-parts-repository as some kind of api.

the aim is to firstly build a react parts-viewer. we are at a very good starting point at the moment. next would be to make a parts-creator out of the parts-viewer. so, at some point users do not need to get into the fzp business.

if you want to join the development, please let me know…

greetings fabian

True, because the lack of tutorials regarding how to use Inkscape for svg creation and making those work perfectly on Fritzing which is what we are discussing right now.

I haven’t seen any part made by you since I just go ahead and try to make my own parts design while sticking as much as I can to the real looking in order to obtain a high quality part and accomplish user needs.

I haven’t done anything like IC since I want to produce the same looking PCB of real parts. As you can see, the three current parts done by myself have been 2 little modules and one big board (LinkIt One).

I feel like pin label assignment is way better achieve through svg id renaming instead of doing it on Fritzing editor. The first way does let me edit the piece, move things around and such stuff, then just load it on editor and it automatically assign them for you.

It is my personal thought since I had problems while trying to import the pieces due to generated temp files every time I load a new breadboard svg file that gets stored on fritzing folder.

I hadn’t idea of these tutorial :blush:

I have the same opinion about Fritzing strongest feature so far.

I don’t want to sound rude but it seems that we don’t have a common agreement on how to make the process of the parties friendlier and the best possible for this.

As I can see, the learning curve has been different for many of us, but seems to be some who are in favor of making the pieces work with the grid of the program, others looking for a piece as accurate as possible (in measures) to the real one and finally, some that only want the piece to be functional no matter what else.

I really didn’t found an Eagle file for my current pieces and just downloaded eagle in order to check an Arduino Ethernet Shield 2 size (today), but I do rather prefer making the pieces good looking and sticking into Fritzing grid (doesn’t matter if pin / headers doesn’t match real positioning) if its cost me like 2 days or more (which is my current average).

Great! So you guys are gonna do some kind of “Part creation guidelines” along with this new API client?

You do not need to be making an ic to use the generic IC as a starting point. It allows you to assign the pins in a pop up by clicking edit pin labels in the inspector after you set the number of pins you want on your new part. You then have a completed schematic. Then once that is done you create your BB and PCB svgs and go into the parts editor and upload the new image for each view and assign the pins which already have the correct labels because you labels them when it was still an ic.

Also if you use the editor you should never ever ever open the Fritzing parts folder. You use the editor to export and import SVG images. You never have to open the fzp files or unzip fzpz files at all. If you edit the files Fritzing creates when making parts you are likely to run into these corruption issues and complaints of parts already existing etc.

I do not tend to upload a lot of the parts I create unless someone comes along asking for one that I already have. All of my parts are created for making PCBs and I have ZERO interest in Breadboard. I work almost exclusively with SMD parts so all of my parts are usually little green adapter boards or ICs in BB view and even sometimes just a copy of the PCB svg which is useless for BB view.

Even though I sound against a standard I feel a set of guidelines for creating BB svgs would be very useful for those interested in using Fritzing for the Breadboard view. It just doesn’t happen to be me since I use it for PCBs and making parts for PCB creation is easy as pie :grin: Generate Schematic using mystery part or generic IC, change the labels, create PCB svg, change PCB svg in the editor and assign the PCB pins. Done and off to the board shop.

This tactic sounds interesting to me but I feel like schematic view is going to have too many pins that have the same function like multiple GND, VCC, 5V, etc. Since I am more focused on microcontroller boards parts like Arduino ones, I feel like making my own schematic should be better done without that ammount of pin connectors and instead opt for staking and hiding them.

What I mean is that every time I load a new svg to any view, the program creates the same prefix part (for each view) with a different id. But probably I am doing something wrong when trying to export as I see there are two export options on Fritzing.

As note, I use spanish fritzing version and the current translation is awful as hell!

Still gonna try your suggestion if I get a non-microcontroller board. :blush:

This is my main purpose for using Fritzing :smiley:

This is what it does but you shouldn’t ever be opening those folders so you shouldn’t know they exist. If you want just the SVG to edit you should open the parts editor, go to the view you want to export and then go to the file menu and export as SVG. You can then import it after you make changes in the same way. No need to ever open the fritzing folders.

Yes in the parts bin area the first export is export the entire bin and the one near the bottom is export part. I am sure the translation is the source of this issue.

Exporting from parts editor doesn’t work, it generates a empty .svg file :sweat_smile: I am using Windows OS in case it is a bug.

You are right, noticed it yesterday while doing some part fixes. Just an example of how things are awful for most users.

Is this a file you have created or edited the SVG manually? I find those files break things. Try exporting something from the first section of the core parts like a resistor SVG to see if it works. If it doesn’t work that is a serious bug since it is the same svg exporter used to export screen shots and svg files for home etching.

edit: missed adding the quote for context …

While obviously since I’m not them and I don’t know for sure I would expect that is a lower priority for limited time than making the code work. That may be an area where we of less skill in code development can help if we choose to. If you are familiar with how parts go together you can likely document it and the developers likely don’t need the documentation and are focused on developing the code. Manpower willing to donate time is what Fritzing needs most. There is more than enough work for anyone willing to help.

This one is actually a bug in parts editor (which I have a fix for). If you edit a part, click export as new part then export the new part from the mine parts bin and exit Fritzing, it will not actually delete the part created by parts editor. If you then try and reload the exported fzpz file (without doing anything to it outside of Fritzing) you will get the “already a part with that name” error (even though there is no such part showing in the bin that you could delete). When parts editor creates the new part, it currently does not register the files with the main window that will delete the files when you say don’t save on exit. Since parts editor doesn’t delete the files and mainwindow.cpp doesn’t know about them, the files stay in the bin and you can no longer load that part again until you manually remove them (which you can’t do from fritzing because internally they aren’t completely there). That said, I think this is now a dead end and effort should go in to the new project. Reading between the lines (and from stuff I’ve seen elsewhere, and thus maybe incorrect :slight_smile: ), I think Qt in the new project is being replaced by html5. The reason I think that is there is a white paper on the Qt site about why Qt is better than html5 which tells me that at least some of the Qt functionality is available in html5. As noted, I’m ignorant and could be wrong here.

No, schematic must have the same number of pins as bb and pcb views or the part won’t work. You can (as you did in the linkone board) stack the pins on top of each other (which I don’t like) but you must have all the pins for the part to work correctly (unless you do some manual editing in the fzp file and know what you are doing). This is what causes the part to be entirely red when loaded, pins now assigned. That is usually how I start a new part, by editing either the generic IC and changing it to the number of pins I need or doing the same with a generic header. Then all the necessary connectors for the part are in the xml and I can edit the svg and put the pins where I need them.

Yes it is likely a bug. I must have discovered that long ago and put it on the list and forgotten it. To export a part from parts editor I edit the part then save it as a new part (which puts it in the mine parts bin with the bug noted above) and then right click on the part in the parts bin and click export part which writes the fzpz file to the file of my choice outside Fritzing. I then unzip that modify the svgs and reload the part (after deleting the left over files from the bug in the user directory) to Fritzing to check it.


I think there is also a time optimization scenario, ie put your time where it best accelerates FZ.

If it’s a part that a lot of people are going to need then yes make it perfect. If it’s a part no one will want short-cut the complicated time consuming BB view.

I made this GM MAP sensor, and since hardly anyone will want it I just got a pic and ‘Trace to Bitmap’ in INK and added some contacts. For the 10 people that download it it will do just fine.

1 Like

I think this technique is great it is just to bad that they are not allowed in Frtzing core parts because of how much larger the files are compared to SVG files.

The size of the BB svg is dependant on how many scans you select in Trace to Bitmap - I think it creates 1 path per scan -, so maybe that can be optimised to cut it down.

1 Like