Professional Documents
Culture Documents
Fidocadj 0.24.6 User Manual: Davide Bucci
Fidocadj 0.24.6 User Manual: Davide Bucci
6
user manual
Davide Bucci
No Derivative Works You may not alter, transform, or build upon this work.
Any of the above conditions can be waived if you get permission from the copyright
holder (Davide Bucci).
All commercial names, logo, trademarks cited in this work are registered by their
owners.
ii
Abstract
This document is the FidoCadJ official user manual. After a short introduction of
the history and the birth of this software, we will describe the basic use of FidoCadJ.
Our goal is to learn how to draw very simple electronic schematics and their printed
circuit boards. The manual will end with a detailed description of the FidoCadJ
(and thus FidoCAD) format. Finally, we will give some hints about downloading and
installing FidoCadJ using the most widespread operating systems: Linux, MacOSX
and Windows.
This document presents only the program itself and the file format. It does not
deal with the integration of FidoCadJ in websites, nor with the organization of the
code and the development aspects. However, you must need to know pretty well the
contents of this manual if you want to participate to the development of the software.
iii
Acknowledgements
A number of people used this software since its first versions and helped me by provid-
ing their advices. I thus want to thank the it.hobby.elettronica newsgroup participants
for their very fruitful discussions.
This software has been very carefully tested on Linux thanks to Stefano Martini’s
patience. He is a very attentive alpha and beta tester! I would like to thank Olaf
Marzocchi and Emanuele Baggetta for their tests on MacOSX.
I would like to thank “F. Bertolazzi” who has given very useful advices about the
usability of this software. He also assembled the CadSoft Eagle compatibility library,
useful to export FidoCadJ drawings to Eagle. Many thanks to “Celsius”, who tested
the software functionalities for PCB realization, as well as its libraries. Thanks to
Andrea D’Amore, for his advice concerning FidoCadJ visual aspect on the Apple Mac-
intosh. I would like to thank Roby IZ1CYN for the useful discussions about libraries
and for having written section A.2 of this manual, dealing with the Linux installation.
Macintosh users can use FidoCadJ well integrated in the look of their operating system
thanks to the Quaqua look and feel, provided by Werner Randelshofer. Werner has
also given several useful advices about FidoCadJ’s user interface: thanks for that!
Part of this manual has been translated to English by “Pasu”. I would like to thank
him for his work. I would like to thank Miles “qhg007” as well, for the careful check
and his very useful remarks.
In April 2010, FidoCadJ has been integrated in the well known Italian web site
www.electroyou.it. It now silently runs on the server and it automagically converts
drawings posted by users of the forum. I would like to express my gratitude to the
admin Zeno Martini and webmaster Nicolò Martini and to all other users of this
site as they gave me a lot of very useful ideas about batch controlling FidoCadJ:
a very promising path has been traced which deserves to be fully explored. More
recently, the FidoReadPHP class has been prepared in order to read and interpret
FidoCadJ drawings on a PHP server. It has been used by the popular www.grix.it and
http://www.matematicamente.it websites thanks to Arniek, Sstrix and Stan. Kudos
to them!
Useful hints about FidoCadJ’s website came from Federica Garin and Emanuele
Baggetta. Sergio Juanez also greatly contributed to it, improving technical aspects
and organization of website elements.
iv
FidoCadJ License
Copyright
c 2007-2016 the FidoCadJ development team.
This software is free: you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation, version 3
of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along with this
program. If not, see http://www.gnu.org/licenses/.
v
Contents
1. Introduction 1
1.1. FidoCadJ’s philosophy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. History of this software . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3. FidoCadJ and the future . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4. Conclusion 44
A. Platform-specific information 45
A.1. MacOSX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
A.1.1. How to download and execute FidoCadJ on MacOSX . . . . . . 45
vi
Contents
A.2. Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
A.2.1. Using any platform, from terminal . . . . . . . . . . . . . . . . . 46
A.2.2. On a graphical system . . . . . . . . . . . . . . . . . . . . . . . . 47
A.3. Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
A.3.1. How to download and execute FidoCadJ . . . . . . . . . . . . . . 49
A.4. Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
B. FidoCadJ art 51
vii
List of Figures
1.1. Part of one of my posts on www.electroyou.it. With just one click
you can zoom on the schematic. With a second one, you can obtain
immediately the source code that you can paste on FidoCadJ to modify
it. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. An example of a FidoCadJ drawing integrated in a www.grix.it forum
post. You can obtain the source code of the drawing with just a mouse
click. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
viii
2.23. The new symbol definition dialog. Here you can set up all the important
characteristics of the symbol. Note the origin defined by the two red axis. 30
2.24. The freshly created symbol, shown in the symbol list and in the drawing.
On the left, there is still the drawing which has been used for the symbol
definition. Notice that just one control point is present for the new
library symbol in the drawing. . . . . . . . . . . . . . . . . . . . . . . . 31
2.25. The popup menu used for modifying symbol properties in an user library. 32
List of Tables
2.1. Summary of the drawing commands available in FidoCadJ. The key
shown on the leftmost column allows their rapid selection using the
keyboard. A right click in one of the primitive placement modes allows
us to access the properties window. . . . . . . . . . . . . . . . . . . . . . 8
2.2. List of all the export file formats available in FidoCadJ. . . . . . . . . . 25
3.1. Meaning of the a parameter for the presence of an arrow head at the
sides of a line or Bézier primitive. . . . . . . . . . . . . . . . . . . . . . . 35
3.2. Meaning of the b parameter for the arrow head style. . . . . . . . . . . . 35
3.3. Function of the bits in the text style term. . . . . . . . . . . . . . . . . . 36
ix
1. Introduction
In this chapter, we will briefly introduce FidoCadJ. In particular, we will give a descrip-
tion of the philosophy behind this software, as well as a brief history of its development.
If you need to install and run FidoCadJ, jump to appendix A, that describes how to
install FidoCadJ on the most widespread operating systems.
1
1. Introduction
2
1.3. FidoCadJ and the future
than welcome.
In November 2009, I opened a SourceForge project dedicated to FidoCadJ. From
this page, you could download all executables, manuals as well as the source code.
Unfortunately, SourceForge progressively adopted some shady practices since 2013:
advertisements with fake download buttons appeared everywhere and crap-ware added
to installers for some projects. In 2015 the site was down for about 15 days: it become
clear that it was time to change and we migrated the FidoCadJ project on GitHub.
From August 2015, the development on FidoCadJ is done using Git: feel free to fork
FidoCadJ and have a look at the code.
A deep refactoring of the existing code has been done by Kohta Ozaki and myself
between 2013 and 2014, then gradually continued in 2015. This allowed to envisage
the porting to Android platforms, which was made possible by the contribution of
other people, in particular Dante Loi. Many other persons have given a hand in that
moment.
If you want to help the community with FidoCadJ, do not worry: you do not need
to be an expert Java programmer. You can for example translate the user interface
or the manuals in a new language, check carefully the existing manuals for inconsis-
tencies, typos and errors. FidoCadJ is currently available in Italian, French, English,
Spanish, German, Chinese, Japanese and Dutch. It is quite easy to translate menus
and commands, so if you would like to see FidoCadJ in your native language, please
let me know! There is also work to be done to translate the libraries (at least the
standard ones) and of course this manual.You can also work on the standard library. . .
Consider that only half of the spare time I dedicate to FidoCadJ is in reality dedi-
cated to the coding activity. The rest is spent answering questions from users, writing
and improving the documentation and so on. On GitHub, you can participate to the
discussions, as well as suggest improvements or give a bug report:
https://github.com/DarwinNE/FidoCadJ
3
1. Introduction
Figure 1.1.: Part of one of my posts on www.electroyou.it. With just one click you can
zoom on the schematic. With a second one, you can obtain immediately
the source code that you can paste on FidoCadJ to modify it.
demonstrated by the users!3 FidoCadJ has shown to be useful also for drawings not
directly related to electronics (see appendix B to see what I mean).
The success that FidoCadJ has had on www.electroyou.it has stimulated some
requests to implement a similar system on other platforms, and in particular on
www.grix.it, another well known Italian electronics-dedicated website. FidoCadJ is
also used by the Matematicamente community. In the case of www.grix.it, the server
could not run a Java program and so the FidoReadPHP class has been written. It
can be run on a PHP interpreter to obtain the images from the FidoCadJ source code.
The FidoReadPHP project is open source and it is available on SourceForge:
https://sourceforge.net/projects/fidoreadphp/
The result is somewhat similar to what it has been obtained on www.electroyou.it,
even if the graphical capabilities of PHP are quite limited in comparison with Java. 4
3 Ifyou read Italian, here is an article I wrote:
http://www.electroyou.it/darwinne/wiki/fidocadj
4 Once again, if you read Italian, here is an article:
4
1.3. FidoCadJ and the future
http://www.grix.it/viewer.php?page=9335
5
2. Drawing with FidoCadJ
The use of FidoCadJ should be quite intuitive for those who already used a vectorial
drawing application. A screenshot of the program running on MacOSX is shown in
Expert Mac-users will notice Fig. 2.1; A few details may be different when running on other operating systems (for
that all the menus are at example Fig. 2.2 shows the result with Look and Feel Metal on Sun/Oracle), but the
their own place!
philosophy remains the same. We will see what the features of the program are, and
its basic elements (the primitives) which compose a FidoCadJ drawing.
6
2.1. Drawing Tools
7
2. Drawing with FidoCadJ
Table 2.1.: Summary of the drawing commands available in FidoCadJ. The key shown
on the leftmost column allows their rapid selection using the keyboard. A
right click in one of the primitive placement modes allows us to access the
properties window.
8
2.2. A simple schematic
the installed libraries (have a look to figure 2.3). By typing return, you can navigate
through the results.
Figure 2.4 shows an example of what we can obtain by double-clicking, in selection
mode, on a drawing element (in this case a text string). Within this window it is pos-
sible to modify all the parameters (coordinates, rotation. . . ) of any drawing element.
The aspect of this window will change because the information that can be modified
will depend on the selected element.
9
2. Drawing with FidoCadJ
Figure 2.4.: Dialog for the text’s parameters in a FidoCadJ drawing. The operating
system is Mac OS X Yosemite (10.10.4) in French.
10 k
I
Q1A Q1B
LM394 LM394
Figure 2.5.: The reference schematic: a current mirror made with NPN transistors.
10
2.2. A simple schematic
Figure 2.7.: Select and mirror with S the transistor on the left.
11
2. Drawing with FidoCadJ
Figure 2.8.: We are too close to the top edge of the sheet: let’s select the whole drawing
and move it toward the centre.
By using the tool “Line” from the toolbar, we will be able to make a few electrical
connections, until we will realize that we started our drawing to close to the edges
of the drawing area. The issue can be easily fixed by selecting the whole drawing:
in “Select” mode, we can click on the upper left corner of the drawing and, holding
the left button of the mouse pressed, drag the cursor up to the lower right corner. A
rectangle with a green contour will appear to indicate that we are trying to select all
the elements included in it. Since we want to move everything we have drawn so far,
we will have to select them all first(see figure 2.8). Now, still in select mode, we can
click on any selected element to drag the selection to the desired position.
We can then continue placing the other parts of the circuit, in particular a resistor
(Standard Library/Discrete devices/Resistor) and the label for the positive power sup-
ply (Standard Library/Basic symbols/Terminal +). We will need to rotate the latter
in order to place in the desired position. Again, we can select it and press R until
we will obtain the desired result. We should now have a screen similar to the one in
figure 2.9.
To complete the schematic we only need to add the text strings and the arrow to
indicate the direction of the current. For the latter there is a macro called “Arrow”,
contained in “Standard library/Basic symbols”. To place the text, we can press the
button “Text” from the toolbar e click in the drawing area on the desired position. As
the default text “String” will be introduced, we will need to modify its characteristics
by double-clicking in select mode (see figure 2.4). The transistor’s part number and
name used (it is actually a transistor matched pair in our example) are specified in
12
2.2. A simple schematic
the fields “Name” and “Value” which are accessed in select mode by double-clicking
on the macro.3 The suggested dimension to work with electrical circuits is 4 units in
vertical and 3 units in horizontal. The complete circuit is shown in figure 2.10.
As a curiosity, this is how the code which describes the circuit of our example looks
like. To access this code, it is sufficient to select “Insert Circuit” from the menu
“Circuit”. We are now ready to copy and paste our circuit on an e-mail message, in a
newsgroup, or in a forum.
[ FIDOCAD ]
MC 95 65 0 0 280
FCJ
TY 115 60 4 3 0 0 0 * Q1B
TY 115 65 4 3 0 0 0 * LM394
MC 55 65 0 1 280
FCJ
TY 20 60 4 3 0 0 0 * Q1A
TY 20 65 4 3 0 0 0 * LM394
LI 55 65 95 65 0
LI 40 75 40 95 0
LI 110 75 110 95 0
LI 40 40 40 55 0
MC 40 30 0 0 115
3 The feature which allows us to add a name and a value to a macro or a component’s symbol
is actually an extension introduced with FidoCadJ not present in the original FidoCAD. See
section 3.4 for more information on compatibility.
13
2. Drawing with FidoCadJ
LI 40 15 40 30 0
LI 30 15 40 15 0
MC 30 15 2 0 010
LI 40 50 60 50 0
LI 60 50 60 65 0
SA 60 65 0
SA 40 50 0
LI 110 45 110 55 0
LI 110 35 110 40 0
LI 110 25 110 30 0
MC 40 95 0 0 040
MC 110 95 0 0 040
TY 45 30 4 3 0 0 0 * 10 k
TY 115 50 4 3 0 0 0 * I
MC 110 50 1 0 074
If you are interested in the export format used by FidoCAD, there is a detailed de-
scription on chapter 3.
However, there is no need to use the “Insert circuit” dialog; we can simply select the
entire drawing, copy it (by selecting “edit/copy” or by pressing Ctrl+C ) and paste
it onto the message we are writing and the code will be added automatically.
Depending on the current settings, FidoCadJ can apply or not a diagonal shift to
the copied elements. The x and y width and height are equal to the grid pitch. The
default behaviour is to proceed in such a way, in order to differentiate the pasted
14
2.3. The layers
elements from the original ones. Since in some situations this can be problematic, the
settings can be changed in the “Options”.
15
2. Drawing with FidoCadJ
In R1 R2
Out
C2
+
C1 +
R4
C3
R3
Alimentazione
- +
Figure 2.11.: A very simple amplifier stage using an NPN transistor connected in a
common emitter configuration.
tasks where the user’s experience still plays an important role. FidoCadJ constitutes
a very immediate and fast way to draw small PCBs on a DIY scale. We will see here
how to draw a very simple, yet complete, one.
I would suggest to start with a clear idea of where to place each component and
how to draw all the tracks so that they will cross each other as less as possible.
Here we will cheat a little and we will start from the result we want to obtain, as
shown in figure 2.11. It is a simple common-emitter amplifier built around an NPN
transistor, type BC547 or similar. It will be useful to think of the board as it was
transparent, by looking from the components side. For this purpose the silk-screen
with the components drawing will be very useful, although probably we do not want
to print it out onto the actual board for a DIY project.
The first thing I would suggest to do is to place all the components as best as possi-
ble. In our example these would be the transistor (from the library “PCB footprints/3
terminals semiconductors/TO92”), the resistors (“PCB footprints/Resistors/Resistor
1/4 W 0,4 i”), and the electrolytic capacitors (“PCB footprints/Electrolytic capaci-
tor/Vert. diam. 5 mm 2.5 mm pitch”). In order to delimitate the board, it may be
useful to place an empty rectangle on the silk-screen layer (layer No. 3). To do so
we can use the rectangle primitive making sure that we selected the appropriate layer
first. We should get a result similar to the one shown in figure 2.12.
We can then introduce the copper areas which will provide the positive and negative
power supply. These are specified by drawing a polygon (using the poly line primitive)
and double clicking near its border in selection mode to tell FidoCadJ (through dialog
box) that we want a filled polygon. Before placing the polygon, make sure that the
current layer is the one where we want to place the copper area (layer No 1, or copper
solder side). The use of a filled area for the power supply lines may be useful to
ensure that these connections will have a low stray inductance. We should be able to
reproduce the result shown in figure 2.13.
16
2.5. A simple PCB
Figure 2.12.: The most important devices are placed on the board.
Figure 2.13.: Added the power supply connections using polygonal lines.
17
2. Drawing with FidoCadJ
To complete the electrical connections we can use the PCB line primitive. I chose
a track thickness of 10 units (1.27 mm), which helps the soldering process.
We realize that we need a few connectors: one for the input, one for the output and
one for the power supply. We can use the footprint designed for a polyester capacitor.
It will probably have the right dimensions. Let’s not forget that FidoCadJ is thought
as a replacement for the transfers. . .
We can also place a “+” and a “−” on the copper layer and place a ceramic capacitor
Be careful with the track in parallel with the power supply. Let us put the writing on the top side as well. To
widths: something that looks write on the copper layer, after selecting the proper layer it will also be necessary to
like a motor-way on the
screen will probably be a track
mirror all the writings. This is easily done within the usual properties dialog accessed
so thin that will detach from by double-clicking on the string we want to modify when we are in selection mode. It
the board during the will need a few tries to obtain the right dimensions for the characters. To give an idea
soldering. it is useful to have a ratio of 3/4 between the horizontal and the vertical dimensions of
the characters. Figure 2.15 shows the result obtained using 11 units for the horizontal
and 18 units for the vertical dimension of the text.
At this stage the only thing missing is the text with the name of each component,
that can be placed on layer 3 (silk-screen). The program with the PCB completed is
shown in Figure 2.16.
Once the drawing is completed, we will probably need to print it either on a trans-
parency to use it with a printing box or to use it with other methods such as the
“Press&Peel”. To do so we need to make invisible all the layers that we do not want
to print. This is done from the dialog window accessed from the menu “Vista/Layer”.
In our case it will be sufficient to hide the layer 3 containing the silk-screen. The
18
2.5. A simple PCB
19
2. Drawing with FidoCadJ
+ -
Figure 2.17.: The PCB, as it appears when printed (mirrored) on a ISO-UNI A4 sheet.
20
2.6. Using the ruler
PL 35 90 35 225 10 1
PL 55 130 95 130 10 1
PL 250 130 305 130 10 1
PL 215 130 230 130 10 1
PL 195 140 215 130 10 1
PL 115 130 175 130 10 1
MC 155 220 3 0 PCB . R01
MC 75 80 0 0 PCB . R01
MC 270 185 2 0 PCB . R01
MC 270 80 2 0 PCB . R01
MC 230 130 3 0 PCB . CE00
MC 115 130 1 0 PCB . CE00
MC 40 175 0 0 PCB . CC50
PL 190 80 190 120 10 1
PL 190 140 190 185 10 1
PL 155 80 155 120 10 1
PL 155 120 175 130 10 1
PL 155 140 175 130 10 1
PP 30 30 30 105 90 105 130 55 215 55 260 105 320 105 320 30 1
PP 320 240 320 155 260 155 215 205 135 205 90 155 55 155 55 240 1
MC 190 120 0 0 PCB . TO92
MC 305 90 1 0 PCB . CPBX352
MC 55 90 1 0 PCB . CPBX352
MC 80 225 2 0 PCB . CPBX352
TY 290 65 12 8 0 0 3 * Out
TY 40 60 12 8 0 0 3 * In
TY 95 225 12 8 0 0 3 * Alimentazione
TY 70 190 12 8 0 0 3 * C3
TY 230 95 12 8 0 0 3 * C2
TY 115 150 12 8 0 0 3 * C1
TY 120 170 12 8 0 0 3 * R4
TY 220 200 12 8 0 0 3 * R3
TY 230 55 12 8 0 0 3 * R2
TY 100 55 12 8 0 0 3 * R1
RV 30 5 320 255 3
21
2. Drawing with FidoCadJ
Figure 2.18.: Right click and drag to activate the FidoCadJ ruler.
PCB’s).
22
2.7. Arrow and stroke styles
Z1 Z2 Z3 Z4
Z5
Figure 2.19.: An electrical drawing (an Antoniou’s GIC) in which some FidoCadJ ex-
tensions have been used.
Figure 2.20.: The parameter window of the Bézier curve shown used in the schematics
of figure 2.19 (French locale).
23
2. Drawing with FidoCadJ
know what you are doing. If you need to have a complete FidoCAD compatibility,
you can activate the option “Strict FidoCAD compatibility” in the “FidoCadJ exten-
sions” tab of the “FidoCadJ preferences” window. In this way, the program will not
allow you to introduce graphical elements which would give compatibility problems
with FidoCAD. If you need more details about the compatibility of the new graphical
elements with FidoCAD, have a look at section 3.4.
2.8. Exporting
One of the most important thing to me about FidoCadJ is the possibility to create
simple schematics for typographic use. For this reason I introduced a feature that
allows the exportation of drawings through a number of different file formats.
To export the current drawing, select the command “Export” from the menu “File”.
A vectorial format stores the The Table 2.2 shows a list of graphic file formats currently available. For every file
elements that compose the format, the Table (but also the export dialog in FidoCadJ) specifies whether it is
drawing. A bitmap format
works on a matrix of pixels.
vectorial or bitmap. Whenever possible it is better to choose a vectorial format to
obtain the best results.4
For the bitmap file formats it may be useful to enable the option “Anti aliasing”, to
reduce the annoying effect of the quantization, visible especially on diagonal lines. The
resolution and the “Anti aliasing” options are not used when exporting to a vectorial
file format. In this case, you may instead specify a scaling factor.
The option “Black&White” allows the printing of any visible layer in solid black.
This is important for the preparation of films to be used for typographic purposes or
with a printing box.
4 The code structure of FidoCadJ allows the addition of other file format quite easily. Please contact
me if you like to participate to the project.
5 Except for the Macintosh version, which is a stand alone application.
24
2.9. Command line options
Format Comment
jpg Very widespread bitmap format. Since the compression used
is lossy, it is not suitable to for exporting FidoCadJ schemat-
ics. It is made available due to its diffusion.
png Compressed bitmap format, suitable for exporting schemat-
ics. This is probably the best way to export a FidoCadJ
drawing when a vectorial format cannot be used.
svg W3C standard vectorial format. Some internet browsers
(such as the recent versions of Safari) allow its visualiza-
tion within a web page. Very good format for graph-
ics and schematics, it enables the use in applications such
as Inkscape to modify the drawings made with FidoCadJ.
There are currently some limitations with the exportation of
rotated and mirrored text.
eps Encapsulated Postscript vectorial format. Very useful to
those who use professional graphics applications, or want
to use a FidoCadJ drawing in a LATEX document. The draw-
ings exportation should be fully working. This is the option
used to obtain Figure 2.11, page 16 in this manual (passing
through a pdf conversion, since I use pdfLATEX).
pgf Vectorial format to be used directly in a LATEX document,
when using the pgf package, available in the CTAN archive.
This exportation option was thought in particular to export
schematics and uses an easily editable script. The text at-
tributes will not be translated. This allows the introduction
of LATEX code directly into the drawing and it is the tech-
nique used in this manual to obtain Figure 2.5, page 10.
scr FidoCadJ allows the exportation of a drawing to a script
that can be imported in CadSoft Eagle. To use this feature,
it is necessary to install the library FidoCadJLIB.lbr into the
directory lbr of the current installation of Eagle. The library
can be downloaded from FidoCadJ’s website. At the time of
writing, this option works only with schematics containing
only the most common symbols. Some drawing elements
such as pads and tracks are not available yet. These will not
be exported to the Eagle script.
Table 2.2.: List of all the export file formats available in FidoCadJ.
25
2. Drawing with FidoCadJ
If a file is specified in the command line, FidoCadJ will try to open it. For example
(on a Unix machine):
java - jar fidocadj . jar ~/ FidoCadJ / test . fcd
FidoCadJ will be run and it will try to open the file ~/FidoCadJ/test.fcd (provided
that this exists).
There are some other interesting things FidoCadJ can do. Option -h shows a listing
of the FidoCadJ options:
[ davidebucci@davide - bucci - portable ] $ java - jar fidocadj . jar -h
[ file ] The optional ( except if you use the -d or -s options ) FidoCadJ file to
load at startup time .
Example : load and convert a FidoCadJ drawing to a 800 x600 pixel png file
without using the GUI .
java - jar fidocadj . jar -n -c 800 600 png out1 . png test1 . fcd
Example : load and convert a FidoCadJ drawing to a png file without using the
graphic user interface ( the so called headless mode ) .
Each FidoCadJ logical unit will be converted in 2 pixels on the image .
java - jar fidocadj . jar -n -c r2 png out2 . png test2 . fcd
26
2.9. Command line options
The most simple option is -n, with which the software. . . does nothing, i.e. it
does not activate the GUI and just exits. In this case, the Java environment variable
java.awt.headless is set to true. Obviously, this option is not so much useful alone,
but it will be precious when using in combination with other functionalities we are
about to describe. Option -d allows to specify the directory where FidoCadJ will seek
for libraries to be loaded at startup. Option -c allows to make FidoCadJ convert a
FidoCAD file (which must be specified) into an image in a vector or raster format.
This can be very useful, as FidoCadJ can be used as a converter in a non interactive
way (along with the -n option)
We can thus have a look at the first example given in the help:
java - jar fidocadj . jar -n -c 800 600 png out1 . png test1 . fcd
FidoCadJ will run without activating the GUI and will export in the png format the
file test1.fcd. The output file will be called out1.png and will have a 800x600 pixel
size. There is an alternative version of the -c option, which will allow to specify how
many pixels should be used to convert one logical unit (we will call this factor rp ).
FidoCadJ does not deal with half logical units (they are always integers), by choosing,
let’s say, rp equal to two pixels per logical unit ensures that schematics will be always
understandable (even if probably a little bit small). The rp factor can be non integer,
as in the following example:
java - jar fidocadj . jar -n -c r1 .25 png out2 . png test2 . fcd
To know the total size (in logical units) of a schematic, you can use the -s option.
Remember anyway that, during the exports, FidoCadJ adds always a tmargin = 3
logical units margin for each side of the drawing. So, if tw is the width of the drawing
in logical units given by -s, you might expect that pw the width of your drawing in
pixel is calculated as follows:
There is also the classic Motif look & feel, shown in Figure 2.216 :
6 Thisstyle may somehow shock those well acquainted with very refined graphical interfaces such as
Aqua, with MacOSX. However, I saw a few years ago a synchrotron control system which had a
graphical interface based on Motif. Pretty though stuff!
27
2. Drawing with FidoCadJ
Figure 2.21.: The appearance of the program on MacOSX, using the Motif look & feel.
Obviously, the commands listed above are meant to be sent from a terminal, making
sure that the current directory contains the file fidocad.jar and writing everything on
the same line.
28
2.10. Library management
In version 0.23, thanks to Roby IZ1CYN, I could include the IHRaM 3.1 library
directly inside the FidoCadJ distribution. I have done this because among all the
libraries I have seen, this one has appeared to be one of the most complete and ratio-
nally constructed. Exactly as it happens for the other libraries embedded in FidoCadJ,
if there is a file called IHRAM.FCL in the current library search path, this one will be
loaded at the place of the version embedded in the program. You also have an electrical
symbols library whose file is called elettrotecnica.fcl.
Other files with .fcl extension in the library search path will be considered as
libraries and FidoCadJ will try to load them when it is starting. This is done when
the application starts, when the user change the library search path, or when the
“Update libraries” option in the “Circuit menu” is chosen.
FidoCadJ allows to split non standard macros (as the original FidoCAD does). This
can be very useful when posting a drawing in a newsgroup, since in this way each macro
not belong to the standard FidoCAD libraries is expanded into its graphic primitives.
Who reads your post, thus, does not need to have the very same libraries you have
installed in your system. For copy/pasting, a command and a shortcut are available
in the “Edit” menu, called “Copy, split non standard macros” (or Control + M 8 ),
in order to make sort that the copied drawing will have all the non standard macros
split. You might also save a file with the non standard macros split, by choosing ‘Save
as..., split non standard macros”from the “File” menu. A dialog will appear to let you
choose a new file name, since usually you do not want to overwrite the one you are
working with.
29
2. Drawing with FidoCadJ
Figure 2.22.: The pop-up menu appearing with a right click allows to transform draw-
ing elements into a symbol
Figure 2.23.: The new symbol definition dialog. Here you can set up all the important
characteristics of the symbol. Note the origin defined by the two red axis.
30
2.10. Library management
Figure 2.24.: The freshly created symbol, shown in the symbol list and in the drawing.
On the left, there is still the drawing which has been used for the symbol
definition. Notice that just one control point is present for the new library
symbol in the drawing.
• The third field “Group” allows you to choose in which group you want to put
the new symbol, inside the library. Once again, if you type a new name, a new
group will be created.
• The fourth field “Name” is the name of the symbol, what it is shown in the
library tree. Once again, choose a short but meaningful symbol.
• The fifth field “Key” is a very short tag which will identify the symbol in the
code. It should be unique inside each library and should not contain spaces as
well as characters such as parenthesis, dots, and so on. FidoCadJ will propose a
short numerical code for you, but you might use mnemonic tags as well.
• By clicking in the field on the right, you must choose the origin of the symbol,
the point which will be used for placing the symbol inside the drawing. You
might choose to snap on the grid the position you choose by clicking on “Snap
origin on grid”.
• Once you click on “OK”, you should find your newly created symbol in the user
library in the library tree in the main FidoCadJ window.
31
2. Drawing with FidoCadJ
Figure 2.25.: The popup menu used for modifying symbol properties in an user library.
An example of an user symbol employed in a drawing is shown in figure 2.24. Note the
difference between the selected part of the drawing on the left (actually what it has
been used for defining a new symbol) and the new symbol placed on the right. In fact,
just one control point is available for the placement of the symbol and this control
point corresponds to the choice of the origin while doing the symbol definition. It is
thus useful to choose for that a point which has some relevance in your symbol. You
can split a symbol again in its primitives by selecting it and clicking on “Vectorize”.
32
3. Drawing format, macros and
FidoCAD libraries
This chapter contains a detailed description of the format used by FidoCAD and, as
a consequence, by FidoCadJ to store a drawing. It is a simple text format which has
the advantage of being very compact and efficient. Since the format has never been
described in detail in a document, I will try to summarize all that I learnt about it.
Since I added a few extensions which are only available on FidoCadJ, I will try to
describe them here as well. Remember that since version 0.23.4, FidoCadJ uses only
the UTF-8 encoding on all platforms.
33
3. Drawing format, macros and FidoCAD libraries
Line
Mathematicians would The line primitive is identified by the command LI and its definition requires only the
probably find the term begin and end coordinates and the layer:
“segment” more appropriate.
LI x1 y1 x2 y2 l
the points (x1 , y1 ) and (x2 , y2 ) represent respectively the initial and final coordinates,
while l is the layer, characterized by an integer number between 0 and 15.
FidoCadJ extension: starting from FidoCadJ version 0.23, LI can be followed in
the next line by an extension:
FCJ a b c d e nv
where a is an integer which represent the presence or not of the arrow heads at the
extremes of the segment (have a look at table 3.1), b represents the arrow head style
(as table 3.2). Parameters c and d give respectively the total length and the half width
of the arrow head, while e is an integer which gives the dash style. If nv is equal to
1, the FCJ command should be followed by two TY commands giving the name and the
value associated to this element.
34
3.3. Drawing elements
a Arrow head
0 none
1 at the start side
2 at the end side
3 both sides
Table 3.1.: Meaning of the a parameter for the presence of an arrow head at the sides
of a line or Bézier primitive.
Table 3.2.: Meaning of the b parameter for the arrow head style.
the points (x1 , y1 ) and (x2 , y2 ) represent the two vertices and l is the layer, character-
ized by a whole number between 0 and 15.
FidoCadJ extension: starting from FidoCadJ version 0.23, RP and RV can be
followed in the next line by an extension:
FCJ e nv
where e is an integer giving the dashing style. If nv is equal to 1, the FCJ command
should be followed by two TY commands giving the name and the value associated to
this element.
35
3. Drawing format, macros and FidoCAD libraries
TE x1 y1 text to be written
the point (x1 , y1 ) is where the string “text to be written” will be positioned. Notice
that the layer information is missing. FidoCadJ will treat this object as it was placed
on layer zero (circuit).
Advanced Text
The primitive advanced text offers much more flexibility with respect to simple text
introduced above.
It is identified by the command TY, followed by a number of parameters to determine
the text orientation (rotated or mirrored), as well as dimensions along x and y and
the font used. Due to the quantity of information to provide, the resulting command
string is quite complex:
TY x1 y1 sy sx a s l f text to be written
The point (x1 , y1 ) is where the string “text to be written” will be positioned. The
value of sy and sx indicates the horizontal and vertical dimensions of the text in
logical units. I chose to let FidoCadJ respect the vertical dimension starting from the
horizontal one, and that aspect ratio will be chanced only if this is strictly necessary.
The text rotation is managed by the term a, expressed in sexagesimal degrees, while
the value of s determines the text style, following table 3.3. The layer is given by the
usual term l, and f indicates the font to be used, or it can be an asterisk, to indicate
the use of the standard Courier New font If the font name contains spaces these must
be replaced with “++”.
The maximum length of the text is about 80 words. The counting is done in words
and not in characters because in the internal structure of the program the words (and
command terms) are separated when a line is being interpreted.
36
3.3. Drawing elements
where the points (x1 , y1 ), (x2 , y2 ). . . are the vertices that define the polyline and l is the
layer, characterized by a whole number between 0 and 15. The length of the command
line can thus vary depending on the number of vertices used. The maximum number
of vertices available has been arbitrarily fixed at 20, to avoid very long command lines.
FidoCadJ extension: starting from FidoCadJ version 0.23, PP and PV can be
followed in the next line by an extension:
FCJ e nv
where e is an integer giving the dashing style. If nv is equal to 1, the FCJ command
should be followed by two TY commands giving the name and the value associated to
this element.
the point (x1 , y1 ) represents the first vertex on the diagonal, (x2 , y2 ) is the second
vertex, and l is the layer, identified by a whole number between 0 and 15.
FidoCadJ extension: starting from FidoCadJ version 0.23, EP and EV can be
followed in the next line by an extension:
FCJ e nv
where e is an integer giving the dashing style. If nv is equal to 1, the FCJ command
should be followed by two TY commands giving the name and the value associated to
this element.
Bézier curve
A Bézier curve segment, in its cubic variant, is identified by four vertices, which are
thus required by its associated command BE:
BE x1 y1 x2 y2 x3 y3 x4 y4 l
37
3. Drawing format, macros and FidoCAD libraries
FCJ a b c d e nv
where a is an integer which represent the presence or not of the arrow heads at the
extremes of the curve (have a look at table 3.1), b represents the arrow head style (as
table 3.2). Parameters c and d give respectively the total length and the half width of
the arrow head, while e is an integer which gives the dash style. If nv is equal to 1,
the FCJ command should be followed by two TY commands giving the name and the
value associated to this element.
where a is an integer which represent the presence or not of the arrow heads at the
extremes of the curve (have a look at table 3.1), b represents the arrow head style (as
table 3.2). Parameters c and d give respectively the total length and the half width of
the arrow head, while e is an integer which gives the dash style. If nv is equal to 1,
the FCJ command should be followed by two TY commands giving the name and the
value associated to this element.
Electrical junction
The electrical junction primitive is simply a filled circle of constant dimensions and
it is used to represent a connection in an electrical schematic. It is identified by the
command SA and it only requires its coordinates and layer:
SA x1 y1 l
With FidoCadJ, the diameter of the circle is fixed internally into the program to two
logical units.
1 http://www.cse.unsw.edu.au/˜lambert/splines/natcubic.html
38
3.3. Drawing elements
PCB pad
A PCB pad is identified by the command PA and it is characterized by its style (round,
rectangular, rectangular with smoothed corners) and the diameter of its internal hole:
PA x1 y1 dx dy si st l
where the point (x1 , y1 ) represents the position of the pad, dx is the pad’s width (along
the x axis), dy is the height (along the y axis). The value si is the diameter of the
pad’s hole, while st is the pad’s style:
0 oval pad
1 rectangular pad
2 rectangular pad with smoothed corners
The value of l must be a whole number to indicate the layer where the pad is to
be placed. If PA is followed by FCJ, the FCJ command should be followed by two TY
commands giving the name and the value associated to this element.
PCB track
The PCB track is essentially a segment, the width of which can be specified. The
corners at the extremes of the segment are always rounded to facilitate the connection
with other PCB tracks or pads. The command to be used is PL, with the following
format:
PL x1 y1 x2 y2 di l
The track is drawn between the points (x1 , y1 ) and (x2 , y2 ), with total width di , and
the layer used is l. The width di can be non integer. If PL is followed by FCJ, the
FCJ command should be followed by two TY commands giving the name and the value
associated to this element.
Macro call
A macro is a drawing or a symbol contained in a library. Generally, this is the way
frequently used electrical symbols are represented. The command used to calla macro
is MC, and the call is done as follows:
MC x1 y1 o m n
The macro is drawn using position (x1 , y1 ) as the reference, and the orientation is
defined by the value of o (multiplied by 90◦ clockwise) and if m is equal to 1 the macro
is mirrored. the last parameter, n, is the macro’s name within the library, specified as
library.code.
39
3. Drawing format, macros and FidoCAD libraries
The presence of the FCJ command indicates that the name and the value of the macro
speficed in the first line are given by the two TY commands which follow. Only the
coordinates and the fonts are taken into account for the text rendering.
FidoCadJ allows to activate a “strict FidoCAD compatibility mode”, in which all
extensions are disabled. This way, FidoCadJ will be perfectly compatible with the orig-
inal FidoCAD, except that FidoCadJ will continue using the UTF-8 encoding instead
of the old CP-1252 used by FidoCAD. FidoCAD for Windows is unable to understand
the additional informations carried by the FCJ command. When reading with the
original FidoCAD a FidoCadJ drawing containing some extension, the program will
prompt a few errors and will give a result which is different from the original FidoCadJ
drawing. The results will depend on what extension has been used: a dashed line will
be rendered as continuos, the arrow heads will be not drawn. The text associated to
the name and the value of a macro will instead be perfectly rendered.
Figure 3.1 shows what can be obtained using FidoCAD to read the FidoCadJ file
which describes 2.19. After ignoring the FidoCAD errors, there are some details miss-
ing (the dashing and the arrow), but the overall drawing is still understandable.
An important difference from the original FidoCAD is that FidoCadJ allows to save
a certain number of configuration hints in the output files. The command which is
used for that is FJC and it should normally be placed at the very beginning of the file.
The next paragraphs will describe the cases which are treated.
40
3.4. FidoCadJ extensions
Z1 Z2 Z3 Z4
Z5
where n represents the layer number (ranging from 0 to 15), xxxx is a 32 bit integer
containing settings about the RGB color to be used. The red component is contained
in bits 16-23, the green one in bits 8-15 and the blue one in bits 0-7. The value yy is a
single precision floating point constant which gives the layer transparency, comprised
between 0.0 (completely transparent) and 1.0 (completely opaque).
A second important information is the name of the layer, specified (if the user has
changed it) as follows:
FJC N n aaaaa
where n is the number of the layer (integer from 0 to 15), whereas aaaa is the name
of the layer to be considered. If this command is not present, the name of the layer
will be the one used by default by FidoCadJ, depending on the language and on the
local configuration of the operating system.
where aaaa is a double precision floating point value (positive) which gives the diameter
of the electrical connection, in FidoCadJ logical units.
41
3. Drawing format, macros and FidoCAD libraries
Where aaaa represents the stroke width (in logical units). The default width is inter-
nally defined to 0.5 logical units. In older versions of FidoCadJ, a command FJC B bbbb
was used to specify the stroke width of curved lines (ovals, Bézier). Since version 0.23.6,
this differentiation has been eliminated and this command is no longer adopted.
The first line contains, between square brackets, the library’s name (preceded by FI-
DOLIB). The second line must contain, between curly brackets, the library category
under which the macros, specified later on in the file, will be stored.
42
3.7. Standard Libraries
43
4. Conclusion
We have seen in this manual how to use FidoCadJ to draw an electrical schematic or
a simple PCB. At this stage the reader should possess all the elements necessary to
use FidoCadJ effectively for his needs.
FidoCadJ should not be considered uniquely for the electronics design. It can be
used for any type of 2D drawing and in many situations, provided that specific libraries
are available.
The advantages of a free program is that it is completely open to its user community.
For this reason, your feedback is very important (at least to understand if the project
is worth to be developed further, and in which direction). To contact me, open an
issue on the GitHub FidoCadJ project.1
1 https://github.com/DarwinNE/FidoCadJ/issues
44
A. Platform-specific information
A.1. MacOSX
One of the most frequent criticisms raised against the early versions of FidoCadJ from
Macintosh users (like me, by the way) was the poor integration of the program on
MacOSX. Starting since version 0.21.1, FidoCadJ is making specific efforts to comply
better with the look and the philosophy of Mac’s native applications. For this reason,
some details in the program are slightly different when FidoCadJ is run on an Apple
platform:
• by default FidoCadJ uses the Quaqua1 look and feel when the complete applica-
tion (FidoCadJ.app instead of fidocadj.jar) is run. Since Quaqua may slow down
the performance on not so recent machines, it is possible to disable it through
the settings of the Preferences menu
• The menu bar is shown at its place, that is the top of the screen
• The menu items “Preferences” and “About FidoCadJ” are at their place, which
is under the FidoCadJ menu.
• The program tells the operating system that it can open .fcd files; These are
associated to a specific icon, which should be sufficiently evocative.
45
A. Platform-specific information
where you can use it exactly like any other Macintosh application. To uninstall Fido-
CadJ, just drag FidoCadJ.app in the trash bin.
A.2. Linux
by Roby IZ1CYN
Prerequisite: JRE 6 from Sun and/or OpenJDK 6 JRE (o previous versions com-
patible with the program’s specifications) must be installed. In paragraph A.2.1 the
installation of the program using only commands from a terminal will be described. In
paragraph A.2.2, the interaction with a graphical environment will be used instead. A
poor configuration of your Java runtime environment will determine poor performances
of FidoCadJ2 .
Alternatively, or if you are experiencing problems, you can download the file from
any browser from the following URL:
https://github.com/DarwinNE/FidoCadJ/releases/download/v0.24.6/fidocadj.jar
and save the file in your /home/ directory.
Let’s create a new directory (but at first we will become a superuser by using su or
sudo -s):
$ su
-> enter password
# mkdir / usr / bin / fidocadj
2 N.d.c. I swear, it is true! Please, do not insult me if your favorite Linux distribution comes with
an higly unreliable version of Java.
46
A.3. Windows
. . . and we can move there the downloaded file (substitute <user> with the user
name of the account where the file has been downloaded):
# mv / home / < user >/ fidocadj . jar / usr / bin / fidocadj
• Let’s download the file from the browser, or with Gwget or similar tools.
• We can then launch our File Manager (Nautilus, Konqueror. . . ) as a root (if
we do not have a specific command in the menu, we just need to launch it from
the console by using sudo nautilus). We can create the following directory:
/ usr / bin / fidocadj
and then move there the file we just downloaded. It will be somewhere in:
/ home / < user >/
• Let’s do right click on the file, from the window we select the tab “rights”, we
add the check mark in front of the “Allow the execution of the file as a program”,
as shown in the figure A.1
• We can select the tab “Open as” and select “OpenJDK Java 6 Runtime” or “Sun
Java 6 Runtime”, as it can be seen in figure A.2.
• Let’s click on “Close” and we are now ready to execute FidoCadJ: a double click
on the executable, or we can add it to the main menu. The command to add is
just /usr/bin/fidocadj/fidocadj.jar.
A.3. Windows
Since version 0.23, when FidoCadJ recognizes a Windows platform, it will try to use
the native Look and Feel.
47
A. Platform-specific information
Figure A.2.: Set the execution with the Java virtual machine, on Ubuntu 8.04.
48
A.4. Android
A.4. Android
A specific version of FidoCadJ for Android is available. It shares much of the source
code with the PC version, but all the graphical user interface code had to be rewritten.
It should work on a variety of devices with at least Android 4.0: smartphones as well
as tablets. For example, figure A.3 shows the appearance of FidoCadJ for Android
with a Samsung S5 smartphone.
There are some minor differences between the Android application and the PC
application described in the manual. They of course are perfectly compatible for the
file format and can exchange drawings.
• You can not create and edit user libraries, but you can use those built on a PC.
• You store the user libraries in the external filesystem (the “SD card”), in the
FidoCadJ/Libs directory.
• The symbols are not shown all the time to save space: you have to sweep your
finger on the right of the screen to show them.
• You have an additional button in the toolbar, which allows you to move and
zoom the shown portion of the drawing. While in this “Move” state, touch the
49
A. Platform-specific information
screen and move your finger to pan the drawing. Use two fingers and “pinch”
them, to increase or decrease the zoom.
50
B. FidoCadJ art
Charles P. Steinmetz
One of the fathers of circuit analysis, in a portrait by Zeno Martini.
51
B. FidoCadJ art
O A R
R O !
52
Index
53
Index
54
Index
TE, 35
terminal, 24
text, 8, 12, 34
mirrored, 36
rotated, 36
style, 36
toolbar, 6, 12
transistor, 9
TY, 35, 36
Ubuntu, 47, 48
Unix, 24, 26
Usenet group, 1
UTF-8, 33, 40
vectorial drawing, 6
55
This manual has been written using pdfLATEX on MacOSX. Listings have been
composed by using the listings packet. The pgf packet has been used for the figure 2.5
as well for the picture at page 51. All those packets are available on the CTAN archive.