--- jupyter: description: 'Printed circuit boards in planex2d: px.FromKiCad reads KiCad boards, and boards from Altium, Eagle, Cadence Allegro, PADS, EasyEDA, CADSTAR, Fabmaster, P-CAD, gEDA and SolidWorks PCB through KiCad 10''s kicad-cli, as one shape per layer with the copper named by net, or as the whole board in 3D.' --- # KiCad, Altium, Eagle and more
`px.FromKiCad` reads a printed circuit board as planex2d shapes, one per layer. The copper layers come with their faces named by net and their drill holes cut out, the board outline becomes a face, and every other layer holds what KiCad prints there. Given a stackup, `FromKiCad` builds the whole board in 3D instead. The faces can then be measured, combined with other geometry, meshed by netgen or exported like any other planex2d shape. planex2d reads KiCad's own format, `.kicad_pcb`, itself. A board from another program is first converted by `kicad-cli pcb import`, the command line tool of KiCad 10 or later, and then read in the same way, so every board goes through the same call and comes back in the same form. `FromKiCad` finds the tool through the environment variable `PLANEX_KICAD_CLI`, on the `PATH`, or where KiCad installs it on macOS and Windows. Without it, a board from another program raises an error that names the missing tool. Reading KiCad boards needs no KiCad installation. `kicad-cli pcb import` has no option for mapping layers, so each importer assigns the layers of the other program to KiCad's layers by itself. KiCad's importers write the copper zones of a converted board without their fill. `FromKiCad` therefore fills every zone of the converted copy with `kicad-cli pcb drc --refill-zones` before reading it, with the zone settings and clearances as KiCad imported them. The copper pours of a converted board are KiCad's fills, which can differ slightly from those the other program computed, for example where its clearance rules have no exact equivalent in KiCad. Items on layers that KiCad could not map are taken out of the copy first, since KiCad does not load a board with them, and the board file itself is never changed. If the fill fails, `FromKiCad` warns with `kicad-cli`'s message. A KiCad board is read as it was saved, and zones left unfilled there produce a warning. | Program | Board file | |---|---| | KiCad 9 and later | `.kicad_pcb` | | Altium Designer, Altium CircuitStudio, Altium CircuitMaker | `.PcbDoc`, `.CSPcbDoc`, `.CMPcbDoc` | | SolidWorks PCB | `.SWPcbDoc` | | Eagle 6 and later | `.brd` (XML) | | Cadence Allegro | `.brd` (binary) | | PADS | `.asc` | | EasyEDA Standard | `.json`, `.zip` | | EasyEDA Professional | `.epro`, `.zip` | | CADSTAR | `.cpa` | | Fabmaster | `.txt`, `.fab` | | P-CAD 200x | `.pcb` (ASCII) | | gEDA PCB, Lepton EDA | `.pcb` |In this section
- [KiCad](kicad.md) - [Altium](altium.md) - [Eagle](eagle.md) - [EasyEDA](easyeda.md) - [PADS](pads.md) - [Other formats](other-formats.md)




