-
Fork and clone the repository:
git clone git@github.com:your-username/fritzing-parts.git
-
Create a branch for the part you want to contribute:
git branch your-part git checkout your-part
-
Place the
.fzp
file in the core folder and the related.svg
in the view-specific folders:partname.fzp -> core/ partname_icon.svg -> svg/core/icon/ partname_breadboard.svg -> svg/core/breadboard/ partname_schematic.svg -> svg/core/schematic/ partname_pcb.svg -> svg/core/pcb/
if the partname is allready used see the obsolete parts-instructions
See below for exporting your
.fzpz
file to the correct structure.You may also find the separate files in your home directory (e.g.
C:\Users\<user>\Documents\Fritzing\parts\user\
;C:\Users\<user>\Documents\Fritzing\parts\svg\user\
) after you saved the part with the editor. -
Then test and push!
please commit your pull-requests to the develop branchIn order to make Fritzing recognize the new part, run Fritzing and select Part > Rebuild parts database.... The part will now be included in the database/index, and become available in the library window.
If you created your part inside the Fritzing app, you will first need to export it and then extract it into the correct structure:
-
Export a
.fzpz
bundle of the part:Find the part in the parts library, right-click it and select Export Part...
-
Extract the
.fzpz
:First, make sure the filename is a good and concise description of your part. If not, rename it.
Use the fzpzclean.py python script to extract the bundle into the proper structure
python fzpzclean.py -f <folder-with-fzpzs> -d <fritzing-parts-folder> -o core -r
-
Give it a unique moduleId
Since you now have the same part twice, they will have conflicting IDs. In the first line of the
.fzp
file, find the propertymoduleId
and change it to something unique. Usually, the full part name will do (without spaces).
This is optional, because even if your part is not directly visible in one of the bins, it is still accessible via the search and as alternative to similar parts (via a property change).
Open the corresponding "bin" file, for example bins/core.fzb
for the Core library bin. Then simply add an entry at the position where you want your part to be shown, for example:
<instance moduleIdRef="ResistorModuleID" modelIndex="3" path=":/resources/parts/core/resistor.fzp">
<views>
<iconView layer="icon">
<geometry z="-1" x="-1" y="-1"></geometry>
</iconView>
</views>
</instance>
Note that the modelIndex
property has no meaning. All that matters is the moduleIdRef
and path
.
Fritzing has an update mechanism. When loading a project, Fritzing will check if updates for any of the project parts are available, and ask if the parts should be replaced with the newer version. Minor fixes should be done without replacing the part. Minor changes could be: Fix spelling errors in labels, improve display elements in the graphics (not the connectors), color changes Fixes and changes that might break a project should make use of the update mechanism. Breaking changes could be: swapping RX/TX, replacing an obsolete part with a currently available one, add missing connections. Also note that identical replacement parts could have subtile changes, like a new I2C address. In any of those cases, use the update mechanism.
To use the update mechanism: The new part should have a different file name (TODO: check if that is really necessary) The old part should be moved to the obsolete folder if it is not available anymore, or if it has severe errors. Do not change the moduleId of the old part. The new part should have a new moduleId, for example by adding a hash to the part name, or using a different has. Add a 'replacedby' attribute to the version tag of the old part. The attribute value should be the new parts ID: '''4'''
Update the Fritzing database, and test that everything works by loading a fritzing project that uses the old part. Fritzing should then ask if you want to replace the part. Answer no, and check that the project can be loaded like before. Then, close the project, do not save it. When you load it again, Fritzing should ask again. This time, answer yes, and check that the part was properly replaced.
See the part file format reference for a detailed description.