Scope

The scope of the plugin is to load sheets and symbols from gEDA file formats with a good approximation of how gEDA editors load them. Since the data model of sch-rnd differs a lot from gEDA, the transfer is not lossless and the user is expected to hand edit the result as needed.

At the moment there is no plan to save in gEDA file formats. This is mainly because gEDA is on its way out of existence. Loading old gEDA designs to resurrect/preserve project is important. But converting to gEDA has very low priority as it's very unlikely a lot of users would want to start using gEDA at this state of the gEDA project.

Text placement

How text objects are specified differs a lot between sch-rnd and gschem. Thus text objects are typically slightly off, both in size and placement, after load. The user is expected to correct font placement as needed.

gschem seems to rely on a Arial ttf font for correct rendering, while sch-rnd uses whatever Ringdove font it can find. gschem depends on font heights expressed in pt, which may result in different effective size depending on which font is available; sch-rnd uses coord specified heights.

Symbols

Symbol graphics and pins and attributes are loaded correctly.

Text placement is off, see above.

Although attributes are loaded correctly, their meanings differ a lot. This is true for both "core" attributes that the gschem GUI understands (e.g. slotting) and for attributes understood (differently) by gnetlist backends. For most of these attributes, especially for non-core attributes, the rule of thumb is: you will need to fix them up manually, after loading the file.

The coord system, especially coordinate values and grid conventions are different in gschem. When loading gEDA files, all coordinates are multiplied by conf node plugin/io_geda/coord_mult (default value: 20).

TODO: what attributes do we convert?

Sheet: embedded symbols

Single sheet files with embedded symbols are loaded correctly. It is recommended to embed all symbols in the sheet, e.g. using gschlas(1), before loading in sch-rnd.

All text and symbol considerations described above apply to sheets as well.

Sch-rnd tries to load files 1:1; on most gschem created sheets objects start not around 0;0 but some large offset. Sch-rnd does keep this offset on load, so all graphics of the sheet can be found in the top right corner of a largish sheet.

Gschem's idea on hierarchic design is different from sch-rnd's, such sheets will not work without the user editing attributes after load.

Sheet: external symbols

If a sheet file contains external (referenced, non-embedded) symbols, sch-rnd will go and map all directories listed in conf node plugins/io_geda/library_search_paths, recursively and automatically load symbols from there.

It is possible to set search paths from the command line:

./sch-rnd \
 -c plugins/io_geda/library_search_paths=/foo/bar \
 -c plugins/io_geda/library_search_paths+=/baz/symdir \
 my_geda_project.sch

In this example the first -c uses a plain "=" which overwrites the whole list, the second -c uses "+=" which appends to the list. The right side of the equation is always a path to a symbol dir that is then mapped recursively.

Beware: even the stock gEDA symbol library contains redundant symbol names implementing incompatible variants of the same symbol, e.g. resistor-1.sym. If the sheet references such symbol, sch-rnd may pick up a different one than gschem would, because sch-rnd does not attempt to load gafrc (see below). Thus it is recommended to embed all symbols in the sheet, e.g. using gschlas(1), before loading in sch-rnd.

gafrc, "project" files

Config and rc files of gschem and lepton-eda are scheme scripts. This means it's practically impossible to parse them and pick out specific settings (e.g. library paths) without executing the "config" files in a full featured scheme interpreter. Such thing is out of scope for io_geda, thus no gafrc or other gEDA config file is ever read in sch-rnd.

gEDA projects do not have a proper project file that list basic settings and source files (e.g. schematics files). Thus it is impossible for sch-rnd to load a whole project. It can only load sheets.

File format version

The first line of the input file must be a 'v' line. The third word in that line is the file format version. The second word is tool version which is ignored by sch-rnd.

Sheet file format version 2; symbol file format version 1 and 2 are supported. There's no header telling if the file is a sheet or a symbol, that is usually guessed from context or file name.

Note: last gschem version that did not have a file format word (only the tool version) was 20030921. From then on file format version was 1. It got bumped to 2 by commit c2c94821ec6c9a83d0144adad7f6fa190f403af3 in November 2008. This means sch-rnd can handle sheets saved after 2008 and symbols saved after 2003. If you have a file with an older version number, please use gschem to load and save it to get it converted to v2. At the moment I have no plans to support earlier file format versions.