I’ve been tinkering a bit with an example, and I think I managed to get something usable. I first made a little bogus schematic, just to have something to put on a PCB:
Then I designed a footprint for a DIP8, and I made pads with both an SMT pad on the bottom layer only and a NPTH hole. And then I put it on the PCB to see if it works. I also put a copper pour over the whole front of the PCB.
The front looks like:
And the back:
With the way I designed the footprint, DRC is mostly OK with it, but there are has a few problems.
One problem is that the center of the SMT pads can not be reached, because it’s in the hole, and this makes it a bit difficult to connect tracks to the pads. A way to circumvent it is to first draw a track segment, and then move it over the pad (or just copy some existing track segment).
The other problem is with the clearance. DRC complains about the hole clearance. But that is relatively easy to fix by setting: PCB Editor / File / Board Setup / Design Rules / Constraints / Copper to Hole clearance to zero. After that change the only complaint by DRC is about some silkscreen thing for another footprint, and there is something with the schematic parity, but I have not looked into that.
I’ve attached the test project below, I hope you find it useful.
2022-08-02_asdf_Dip8_SingleLayer.zip (21.1 KB)
Some other things to consider:
KiCad can generate a “drill map” file, and this groups holes with specific diameters. You can make use of this by using specific hole sizes for specific purposes. For example if you want to make your own via’s and want to use those hollow staples, then use a specific drill diameter for that, and make sure that drill diameter is used nowhere else.
I made the footprint in KiCad’s footprint editor, but started with the wizard for a DIP package. Those wizards are quite simple (a few pages of code) Python scripts. If you want to continue in this way, then I suggest you make a copy of that script, and then modify the copy so it generates pads with all the right properties.