Type: schematics, symbols.
EasyEDA is an EDA tool for the schematics-pcb-simulation workflow. It is proprietary but offers essentially unlimited free access both as an online web service and an offline desktop software. As of 2024 neither the service nor the software do too much to lock users in:
EasyEDA alien format support may be of interest to Ringdove users because EasyEDA is connected to:
EasyEDA offers two variants, called std and pro. The two variants are essentially two distinct software projects with differing file formats and menus. It seems like symbols are always in the pro file format, even when loaded by the std variant. Symbols present in the part file downloaded from lcsc contains files, including the symbol, in the pro format.
The file saved from the std variant is really a project file that may contain multiple sheets (pages). A schematic sheet in the std format contains all symbols as embedded (in the std format), but there seems to be no way to export or save symbols separately in the std format.
sch-rnd provides support for loading:
Before trying any of these, make sure you use the right variant (std or pro), the user interface and file formats really differ a lot.
There are some details that are not imported; the data model and the logics of the software differ, so there are some manual editing steps needed after loading alien format data. Below is a list of known cases for EasyEDA.
In EasyEDA each drawing object has its own stroke and fill color and text objects have font size and font properties. In sch-rnd objects have a pen that determines all these. Sch-rnd will throw away color information and will use standard pens on import.
Font differs a lot between EasyEDA and sch-rnd. For typical longer text, like titleblock fields or symbol part number suffixed with lcsc identifier sch-rnd's render tend to be half the width of EasyEDA's. In some cases EasyEDA decides to store multiple text objects in a column anchored at their right side ends. These text objects happen to line up in EasyEDA render because the right-side coordinates are computed with EasyEDA font in mind. While sch-rnd will place these text objects accurately, also setting alignment properly, they won't line up since sch-rnd font is much narrower.
Whenever in doubt, enable the text meta layer. If an unaligned text object has its origin in the bottom right corner, it's an indication of the above problem.
An EasyEDA std schematics file is always a multi-page file even if it contains only a single sheet. Sch-rnd won't behave differently with a single-page file and will always import the file as if it was a project file. In the sheet selector the project name is deduced from the file name and the sheet names are copied from sheet titles.
In EasyEDA there's a single point, typically the outer endpoint, of the terminal that is sensitive to wire and terminal connections. In sch-rnd the whole terminal is sensitive. EasyEDA wires crossing the insensitive middle section of a terminal are connected to the terminal when importing the file in sch-rnd and upon compilation a multi-connection warning is generated unless it is disabled.
It is also common in EasyEDA to connect two or more terminals and a wire in the same endpoint. While this works in sch-rnd, it is generating the multi-connection warning on compilation. Best practice is to move the terminals apart and make sure it's always exactly two objects participating in a connection (green circle).
The multi-connection warning can be disabled via a config node called multiport_net_merge.
In sch-rnd each terminal of a symbol must have a name that is unique within the symbol. If a part has 4 GND pins, the symbol is either drawn as a single terminal and is assigned 4 physical pin numbers or if the symbol is drawn with 4 GND terminals they have 4 different name name attributes (e.g. GND1..GND4).
In EasyEDA there's no such requirement on uniquely named terminals so many EasyEDA symbols will have multiple GND and VCC pins. Such a symbol will break in sch-rnd and generate errors during compilation. The only way to fix this is manually renaming the redundant terminals to unique names.
EasyEDA sheets may contain images (svg, png, etc.). These are embedded in base64 encoding into the std sheet file. These objects are not imported in sch-rnd. The bounding box of the image object is drawn instead.
Slotting works very differently.
EasyEDA pro stores a separate complete symbol for each slot within the same symbol file. In sch-rnd when loading slotted EasyEDA symbols from the library, only the first slot is loaded. When open directly in the "symbol editor mode", all slots are rendered in a horizontal arrangement, as a single symbol. When loading a pro sheet the loader saves each slot as a separate symbol in a temporary cache and places (embeds) the right one.
EasyEDA std doesn't have slotting in its symbol format. Instead slots are simply stored as separate symbols, one symbol per symbol file, which sch-rnd loads properly, without any slotting information. When loading an std sheet, this doesn't matter because the right slot symbols are embedded in the drawing at each component in the sheet file.
sch-rnd can not load sheet files manually extracte from a zip file, but can read only the zip file. It is because how symbols are stored: in the pro variant symbols are not embedded in the sheet file but are stored as separate symbol files within the same zip. The sheet file makes sense only together with the symbols, thus the whole (unpacked) zip is required.
I decided not to introduce a libzip dependency, rather just call unzip as an external utility. Any zip implementation can be used as long as it provides two functionality:
For example on Debian-like systems the packgae unzip can do these.
The actual command lines for these two functions are configured, see config nodes plugins/easyeda/zip_extract_cmd and plugins/easyeda/zip_list_cmd; %s is substituted with the full path of the zip file and CWD is set before calling the extract command.
This is a weak dependency: any of these is required only if pro files are to be open.