KiCad doesn't yet support full padstacks, but at least we can use the
solder mask / solder paste expansion to import a better result. Also
we can disable the specific layer if the shape has a size of zero.
The CADSTAR post processor has a peculiar feature called "route offset"
which effectively shortens tracks when the pad, track or via that it
connects to has a smaller width. This operation is not saved in the
design itself, but applied as a post processing operation meaning that
the importer has to apply it when loading on the board.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6648
The reference designator is stored separately with the Tracks, so we
need to extract position/size data from it there and match back to the
components later.
Fixes https://gitlab.com/kicad/code/kicad/issues/7733
Find all intersecting points both forward and back between the filled
areas and the outlines in order to determine the proper net assignment
for the zones
Also creates rule areas for special zones instead of filled zones
Fixes https://gitlab.com/kicad/code/kicad/issues/7732
Old boards were using UNDEFINED_DRILL_DIAMETER value in file for via drill when
the via drill value was the netclass value.
Recent boards always set the via drill to the actual value, but now we need
to be sure always store the drill value, because netclass value is not stored
in the board file. Otherwise the drill value of some (old) vias can be unknown
The rotate mirror actions need to line up with the expectation.
FABMASTER keeps elements board-referenced while KiCad has some elements
referenced to the board and some referenced to the footprint
Between the time the user loads the footprint preview in cvpcb or Add
Footprint in pcbnew, we don't need to verify cache integrity to display
the footprint. We use the cache copy when displaying until we close the
selection window and re-open. This limits our need to iterate over the
full directory on every footprint display.
Alternate solutions for v7 should include looking into libfswatch for
change detection
Timestamps were checked using a different routine than they were
generated with, leading to the cache always being out of date.
This uses the same routine for both. While it iterates over the
directory twice during the initial load, this will never be dominant
Fixes https://gitlab.com/kicad/code/kicad/issues/7711
- Rename member variable names to use the 'm_' prefix
- Rename a few object types that clashed with KiCad object names, such
as BOARD and SCHEMATIC, to avoid the use of '::' to access the KiCad
objects.
- Remove some unused code.
Some CADSTAR designs use zero sized pads because CADSTAR did not allow
arbitrarily assigning pad numbers: they had to be sequential. The
workaround to this was to use zero sized pads. However this causes DRC
errors in KiCad, so we load them just in a mask layer.
1. Make sure to convert to KiCad units
2. There are some KiCad rules that have no CADSTAR equivalent.
Make a guess as to what an appropriate rule could be.