pcb-rnd knowledge pool
io_kicad: KiCad file format support limitations
io_kicad by Tibor 'Igor2' Palinkas on 2019-04-12
Tags: insight, kicad, io_kicad, alien, file, format
Abstract: Detailed description of pcb-rnd's KiCad file format support, focusing on features which are not yet or not fully supported.
1. Reading s-expression (KiCad version 3+) files
Round corner zones/polygons
Karl Hammar observes: It also seems that kicad polygons have rounded corners which depends on min_thickness. Look at the difference between these files:
Resolution: the polygon lib in pcb-rnd does not have support for calculating where edges/hairpins of a polygon needs to be triggered, thus pcb-rnd is importing these polygons with sharp corners. There is no plan to support this at the moment.
A test case pack (CUCP#39) contributed by Karl Hammar is available for later development/testing.
Resolution: At the moment pcb-rnd does not have support for polygon specified clearance. This extension is planned in the next issue of the data model, where the both the clearing object and the polygon can set the clearance and the larger value is used. Until that is implemented, clearance values are not imported properly.
Polygon clipping details
Since we generally store the "as drawn" polygon and calculate the "clipped" polygon using all object clearances and other factors, there are, and always will be differences between how polygons behave or look like:
- resolution of arc-approximation
- fine details like rounding or hair/bridge removal
- how polygon islands are handled
Resolution: Always check your polygons after import!
Polygon keep-away from the outline
In KiCad there seems to be a margin/clearance applied from the outline to copper polygons.
Resolution: pcb-rnd does not have anything like that, so the polygons you import may extend to or even beyond the manual drawn board outline. We have long term plans to provide a (completly different) solution to the generic problem KiCad's cross-layer clearance is trying to solve.
KiCad mirrors text horizontally (when fp_text or gr_text effect's justidy has the mirror keyword in the s-expression file). Unfortunately pcb-rnd can mirror text vertically only, so this mirroring is skipped for now.
Resolution: Text position is calculated properly, but mirroring is not done.
Custom shaped pads vs. convex hull clearance
Resolution: Not supported, the convex hull clearance is ignored with a warning. Later on pcb-rnd may have support for custom (user defined polygon) clearance shape for padstacks; that's when this can be revised. Until that, polygon clearances in pcb-rnd will be calculated as if the convex hull clearance was not selected in KiCad.