We have decided to release the new Parts Editor in two phases. The first phase, included in release 0.7.9, is already easier to use  and more powerful than the old Parts Editor, but you still have to do a lot of preliminary work using an SVG editor like Inkscape, Illustrator, or CorelDRAW. In the next phase we hope to eliminate much of the need to use these programs.

How to start

The new approach is very different from that of the old Parts Editor, and explaining that difference is the purpose of this document. The first big change is that you cannot create a new part from scratch--you must begin with a part that already exists. So the best thing to do is to find a part that is pretty close to what you eventually want. If your part is really different from anything else, then just to try to match the number of connectors. For example, if your part needs 39 pins, then start with a generic IC part, change it to a SIP (single inline package) and give it 39 pins. Though finding a part to begin with may seem like a burden, it will save you effort as you go through the process.

You can open the new parts editor by right-clicking a part in a sketch and choosing the 'Edit' option; choosing 'Edit' from the Part menu; right clicking a part in the Parts Bin and choosing the 'Edit' option; or using the Parts Bin drop down menu.

Six views

The new Parts Editor no longer tries to display everything in a single view.  Instead, it works like the sketch window which has multiple tabs with only one tab visible at a time.  In the new Parts Editor there are six tabs: Breadboard view, Schematic view, PCB view, Icon view, Metadata view, and Connectors view. As you might expect, the first four views are for the part images; the Metadata view is where you enter the part's title, author, and other properties; and the Connectors view is for editing connector metadata, and for adding or removing connectors. For the latter, you just type in the number of connectors you want.

Loading new images


To load the SVGs for your part, switch to the appropriate view, and use File > Load image for view. As before, you can load SVGs in all views and gEDA .fp files and KICAD .mod files in PCB view only. To create an SVG for any view, you must use an external SVG editor (Inkscape, Illustrator, CorelDRAW, or a text editor) to layout the elements that will be used as connectors. The SVG example below uses <circle> elements for connectors.

Loading PNG or JPG images directly is possible, but since these become SVG images with only a single element, there is no way to place individual connectors. We also  discourage the use of PNG and JPG because these are raster-based rather than vector-based, so they don't look good when scaled. If you still prefer to use PNG or JPG, we recommend that for now you open them in an external SVG editor and add connector elements there (see below for more about 'connector elements'). Save the result as an SVG, and use that in the Parts Editor.  In phase 2 you will be able to add connector elements directly in the Parts Editor.

Since you have already begun with a part, it may be that you will only have to load a single image for a particular view--you do not have to replace all the images in the original part.

It is still necessary to prepare SVGs for PCB view by grouping elements in layers: copper0, silkscreen, copper1, etc. (Layering will be handled in the phase 2 parts editor.) The best way to understand the layers is to open up one of the core pcb svg files, For example have a look at the file crystal_hc49U.svg. Silkscreen layer has four while lines, the two copper layers share a pair of circles as connector elements.

<?xml version="1.0" encoding="UTF-8"?>
<svg baseProfile="tiny" height="0.20306in" version="1.2" viewBox="0 0 46684 20306" width="0.46684in" xmlns="http://www.w3.org/2000/svg">

<desc>Fritzing footprint SVG</desc>
<g id="silkscreen">
<line stroke="white" stroke-width="1000" x1="1000" x2="45684" y1="1000" y2="1000"/>
<line stroke="white" stroke-width="1000" x1="45684" x2="45684" y1="1000" y2="19306"/>
<line stroke="white" stroke-width="1000" x1="45684" x2="1000" y1="19306" y2="19306"/>
<line stroke="white" stroke-width="1000" x1="1000" x2="1000" y1="19306" y2="1000"/>
</g>
<g id="copper1"><g id="copper0">
<circle cx="13736" cy="10153" fill="none" id="connector0pin" r="2750" stroke="rgb(255, 191, 0)" stroke-width="2000"/>
<circle cx="32948" cy="10153" fill="none" id="connector1pin" r="2750" stroke="rgb(255, 191, 0)" stroke-width="2000"/>
</g></g>
</svg>

Sometimes you will want to reuse the breadboard image as your icon image. There is a shortcut for this under File > Reuse breadboard image. You can also find the options: File > Reuse schematic image, and File > Reuse PCB image.

For certain parts--like a breadboard--there is only one view image. For technical reasons, you have to tell the Parts Editor this is what you want.  Use View > Make only this view visible from the current view (one of Breadboard, Schematic, or PCB) to make the part invisible in the other two views.

Undo, save, show in folder

The next big difference from the old Parts Editor is that undo is always available, even after loading view images. Furthermore, you can save your changes at any point and keep working--the new Parts Editor is less like a dialog and more like a full document window.

If you start with a core part (i.e. a part from the Fritzing distro), saving from the Parts Editor is disabled. You must use Save as new part, because you cannot change a core part. Save as new part creates a new part in your local storage area (explained below) and this part is added to the "My Parts" Bin--it is a copy of the original part (plus whatever changes you have already made so far using the Parts Editor). If you are editing a custom part that was in a sketch, the part will be updated whenever you save. If you want the new part to display in the My Parts Bin the next time you run Fritzing, remember to save the bin (use the drop down menu at the upper left of the bin). If you start editing from a part in the My Parts Bin you have a choice between Save (which will overwrite the part), and Save As New Part (which will create a new part and add it to the My Parts Bin). If you copy a part into My Parts Bin from some other bin, then probably Save will be disabled.

On Windows the local storage folder is something like C:\Users\[username]\AppData\Roaming\Fritzing\parts\user\, and SVGs are stored in C:\Users\[username]\AppData\Roaming\Fritzing\parts\svg\user\. On Linux and Mac this would be ~/.config/Fritzing/parts/user/ and ~/.config/Fritzing/parts/svg/user/.

To find the SVG image for the current view on the desktop, choose File > Show in Folder. On Mac and Windows this will open a folder on your desktop with the SVG file selected. Under Linux you get the folder but no file selection (if anyone has advice about how to get selection to work, we would be grateful).

Associating a connector with its SVG counterpart


The next task will be to associate each connector with its counterpart in the SVG for each view. This is handled very differently from before. For an example, I am going to use images from a part created by Shunichi Yamamoto (who graciously gave us permission to include them in this tutorial, and who also helped beta test the new Parts Editor). 

The new part will have 39 pins, so we begin with a Generic IC part and drag it into an empty sketch. There we use the Inspector to change it a to SIP and give it 39 pins. Then we open that in the new Parts Editor with a right-click. 

starting up

Next we load the new breadboard image using File > Load image for view.  In the Tools widget at the upper right, you see a list of connectors. Choose one to make it the current or active connector. If it has already been associated with an SVG element, that element will display a marquee highlight. Since we are just starting out, we will choose pin1 which is not currently associated with any SVG element.

pin1

To create the actual association click the "Select graphic" button over in the Connectors widget. This basically puts you in a "mode" that lasts until the next time you mouse down. If you want to escape the mode, click anywhere outside the part or use the escape key. You can only make the association when you are in this mode (this keeps you from accidentally associating a connector to a graphic when you didn't intend to).

In the mode, move your mouse over the SVG. As you do so, different SVG elements will highlight. It is often the case that any given mouse location can refer to multiple SVG elements (or groups of elements). Use the shift-key plus the mouse wheel to highlight other elements above or beneath the currently highlighted one (in the z-order)--the mouse wheel without the shift key will pan or zoom as usual (depending on your preferences setting for wheel events). If you are already on the bottom layer then the next wheel "downward" will make the element flash white; a similar white flash will occur if you are already at the top layer and wheel "upward". In other words, the flash signifies you can't move any further in the z-order in that direction.

Here are three highlights from the same mouse position, using the mouse wheel + shift:

highlight1
highlight2
highlight3

The first highlight is the one we want so we mouse down when the wheel gets us back to that small rectangle. Now the element has a marquee to show that it is the current pin, and you also see the terminal point as a crosshair which defaults to the center. The terminal point is the place where a wire attaches to the connector.

assoc1

After associating pin2 and pin3 we have:

pin3

Adjusting terminal points

In PCB and Breadboard view the terminal point is usually the center of the connector so you don't have to do any thing else.  But in schematic view the terminal point is usually near the end of the connector. So let's go to schematic view.  We start with the original SVG image. Note how the connectors are already showing their anchor points. Pin3 is the current connector.

schematic

Now we load the new schematic image and start associating pins.

schematic2

Here is what the Connectors widget looks like with pin3 as the current connector:

tools1

Notice that since we have selected graphics for three of the connectors, those connectors are checked in the connector list.

You can use the buttons or spinners to adjust the terminal point. Here is a close up after hitting the W button, and clicking the X spinner twice (look at the pin marked 'AN2'):

schematic3

You can also drag the terminal point directly by mousing down on it when its SVG element is highlighted.

Setting internal connections


An internal connection is when a two or more connectors in a part are already connected, for example the GND connectors on the Arduino UNO. You can specify and edit internal connections by clicking on the "Set internal connections" checkbox in the Connectors widget--it's beneath the connectors list (you can see it in the image of the Connectors widget, above). Since we are talking about the Arduino UNO, here is what it looks like when Set internal connections is checked:

bus1

The green lines represent the internal connections. To remove an internal connection, right-click the line and choose "Remove internal connection". To add a new connection, just drag a line out from one connector to another.

Known limitations

The following feature are due in phase two:

Bye for now

That's pretty much the phase one story. We hope you like what you've seen. Stay tuned for phase two.