Vias have different layer requirements compared to normal through hole pads. This means they need to be handled separately
A first limited implementation was added with #288 but it has some limitations that stem from the chosen design:
Reliance on the footprint name for identifying possible exposed pads with vias
The largest (integer) pad number is assumed to be the pad that holds possible vias
Footprints with non integer pad numbers are ignored.
Different pad numbering conventions (example the use of pad 0 for the EP) are not supported
Does not support handling pads other than exposed pads
A possible replacement could work as follows:
split pads in three lists (smd, tht, non copper)
check all tht pads if they overlap any smd pad.
Mark such a pad as a via.
Check if it has the same pad number as the smd pad it touches.
Check if it has at least "all copper" layers active.
The hard part of this implementation is finding a way to check if a pad is overlapping another pad. A simplification could be to only consider circular vias and rectangular (or roundrect) smd pads. This would already cover most of the cases found in the official library.
A later extension to supporting other pad types for the SMD pad could be split into another issue.
Vias have different layer requirements compared to normal through hole pads. This means they need to be handled separately
A first limited implementation was added with #288 but it has some limitations that stem from the chosen design:
A possible replacement could work as follows:
The hard part of this implementation is finding a way to check if a pad is overlapping another pad. A simplification could be to only consider circular vias and rectangular (or roundrect) smd pads. This would already cover most of the cases found in the official library. A later extension to supporting other pad types for the SMD pad could be split into another issue.