IPC-2581 export places copper-only SMD pads on solder paste layers

Description

The IPC-2581 exporter can emit solder paste LayerFeature pads for SMD copper pads that are not on a KiCad solder paste layer.

This produces incorrect IPC-2581 artwork for footprints that intentionally model solder paste separately from copper, such as exposed-pad QFN/QFP footprints. A common pattern is:

  • one large copper/mask thermal pad, with no paste layer
  • several smaller anonymous paste-only pads that define the stencil apertures

In the board, the center pad looks like this:

(pad "33" smd rect
  (at 0 0 180)
  (size 3.45 3.45)
  (property pad_prop_heatsink)
  (layers "F.Cu" "F.Mask")
  (net "GND")
  (zone_connect 2))

and the paste apertures are separate pads like:

(pad "" smd roundrect
  (at -1.15 -1.15 180)
  (size 0.93 0.93)
  (layers "F.Paste")
  (roundrect_rratio 0.25))

The exported IPC-2581 file includes the center pad on F.Paste anyway:

<LayerFeature layerRef="F.Paste">
  ...
  <Pad padstackDefRef="PADSTACK_6">
    <Location x="142.0" y="-108.550"/>
    <StandardPrimitiveRef id="RECT_6"/>
    <PinRef componentRef="U2" pin="33"/>
  </Pad>
  ...
</LayerFeature>

This looks related to the earlier fix for #16658 (closed) / commit 37b23ef8, which fixed missing solder mask openings for SMD pads. That fix also added missing paste layers. The mask part makes sense, but I think paste is different: if a KiCad pad is not on F.Paste, that usually means “do not put paste here”.

Steps to reproduce

  1. Open a board with an exposed-pad SMD footprint where the center pad is only on F.Cu/F.Mask.
  2. Make sure paste is defined with separate F.Paste pads.
  3. Export IPC-2581.
  4. Inspect LayerFeature layerRef="F.Paste".

KiCad Version

> kicad-cli version --format about
Application: kicad-cli arm64 on arm64

Version: 10.0.2-15-gdce8610261, release build

Libraries:
        wxWidgets 3.2.8
        FreeType 2.14.3
        HarfBuzz 14.2.0
        FontConfig 2.17.1
        libcurl/8.7.1 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.12 nghttp2/1.68.0

Platform: macOS Version 26.4.1 (Build 25E253), 64 bit, Little endian, wxBase

Build Info:
        Date: May  9 2026 14:30:42
        wxWidgets: 3.2.8 (wchar_t,wx containers)
        Boost: 1.90.0
        OCC: 7.9.3
        Curl: 8.7.1
        ngspice: 46
        Compiler: Clang 21.0.0 with C++ ABI 1002
        KICAD_IPC_API=ON
        KICAD_USE_PCH=OFF