Type: boards, footprints
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. Footprints present in the part file downloaded from lcsc contains files, in the pro format.
The file saved from pro is really a zip that has a project file, may contain multiple PCBs and contains all necessary footprints as a local lib (of separate files). The std format has single file boards (json) with all footprints embedded.
pcb-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.
Layer color import depends on the config nodes plugins.io_easyeda.load_color_*; it is possible to import all EasyEDA layer colros or no EasyEDA colors or importing colors for certain layer types only.
Font differs a lot between EasyEDA and pcb-rnd. Text objects are generally placed where they should be, but their size may differ. Multiline text objects are not supported in pcb-rnd (as of 2024).
An EasyEDA pro project files may contain multiple board files. Pcb-rnd can load only one board file for editing. There are two ways of controlling which board of a multi-board project is loaded:
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.
The POUR object has either a direct, hardwired rule to use for determining the clearance (it's the "custom" rule in EasyEDA GUI) or a "network based" mechanism, through complicated RULE_SELECTOR lines. pcb-rnd supports the former but not the latter. For any net-based poly clearance a hardwired value of 5 mil is used and a warning is thrown.
pcb-rnd's clearance model differs a lot from EasyEDA's. The closest thing pcb-rnd can do is using polygon-side clearances, so on EasyEDA imports:
EasyEDA has special objects for representing restrictions. While pcb-rnd has enough features to represent most of the keepouts, currently the plugin is not loading this information.
EasyEDA stores properties of physical layers (material, thicnkess); pcb-rnd can represent similar properties but the plugin does not load these.
EasyEDA has a complex object type called DIMENSION which displays a dimension line with the length printed. pcb-rnd has a similar extended object. The plugin's std loader loads the DIMENSION object but places static objects instead of an extended object (so the result looks like in EasyEDA but is not easily editable in pcb-rnd). The pro loader ignores DIMENSION objects.
In EasyEDA polygons are clipped by the outline of the board. It's a common trick there to draw large POUR objects covering the whole board; if they are on multiple layers, multiple POUR objects are drawn and moved by a small offset so the objects are easier to select on the EasyEDA GUI. Since all the POUR countours are outside of board outline this offseting doesn't change the final board export.
pcb-rnd does not clip polygons on board outline so these large polygons will be preserved as they are drawn in EasyEDA.
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. Manually unzipped board files can not be loaded (but footprints can be).