This message is for the Cadsoft staff.
I'm looking to write a library (think libeagle.so) for reading and writing EAGLE files so that open source programs can work with EAGLE's widespread format without the need for silly export/import scripts. I'm aware of Cadsoft's intent to move to an xml based format but I'm not willing to wait two years for that to happen and would like to be able to access all existing EAGLE files.
I'm requesting information about the internal format of .sch/.brd files. A header file with struct definitions would suffice but documentation or some source code would be great. I know it's not a complex format as in an hour with hex editor and some .sch files, I was able to deduce the basic structure for schematics. It's very crude but it's a start.
If nothing else, it would be nice if you could verify what information is correct:
NOTES:
* file is almost completely composed of 18 byte rows
* rows start with a row type identifier byte
* braces indicate repeatable elements/sections
* format is: hex identifier byte then description
0x10 file_start;
0x11 unknown;
0x12 start_layers;
{
0x13 layer;
}
0x14 end_layers;
{
0x15 library_declaration;
0x17 part_declarations_start; // library name
{
0x37 package_list; // base name of packages (part name)
{
0x36 declaration; // package name
0x3C definition_reference;
}
0x2D end_package_list; // pin name base
}
0x18 part_drawings_start; // library name
{
0x1D symbol_start; // drawing
{
0x22 draw_shape;
0x2C pin_name;
0x31 text_label;
}
0x1E package_start; // package name
{
0x2A unknown;
0x2B pad_name;
0x26 unknown;
0x22 draw_shape; // repeat
0x31 text_label; // repeat
}
}
0x19 part_drawings_end
}
0x1A schematic;
{
0x38 part_from_library; // part name/value
0x30 part_position; // maybe
}
=== more stuff here ===
This is a chance to get some good PR for free.
Think it over before posting any kneejerk responses.