PCB editor IPC-2581 exporter mishandles footprints placed on B.Cu layer
Components where the footprint is created on the top layer (F.Cu) in the footprint editor can be flipped in PCB editor to place it on the bottom layer of the PCB. But this leads to unexpected effects in the XML file generated by the exporter tool.
It appears that the exporter generates the pads for the footprint as "used-defined" primitives instead of "standard primitives". I found that Ansys (when importing the XML file) ignores user-defined primitives so the pads on the B.Cu layer are missing on importing.
The Vu2581 viewer tool renders the user-defined pads quite happily, so the issue seems more related to Ansys, but why are pads on flipped footprints treated as "user-defined" instead of standard primitives.
A work around is to edit the footprint in the footprint editor to flip it to the B.Cu layer there (so the footprint is a B,Cu footprint) and save the flipped file under a new name. Then replace the original footprint (which was flipped in PCB editor), with the new (pre-flipped) footprint which does not need to be flipped in the PCB editor . The exporter then defines the pads as standard primitives and Ansys can import them.
There is a side-effect of this workaround in PCB editor. You can only select the footprint when the F.Cu layer is enabled. Since, although its pads are on the bottom layer the footprint is actually on the top layer. I haven't checked but I may have a problem with this workaround is the footprint and the PCB have different stack-ups.
I think that the exporter should treat the pads for components on top and bottom sides in the same way and keep them all as standard primitives
KiCad Version
Application: KiCad PCB Editor x64 on x64
Version: 8.0.0-rc1-67-g7b24167398, release build
Libraries:
wxWidgets 3.2.4
FreeType 2.12.1
HarfBuzz 8.3.0
FontConfig 2.14.2
Platform: Windows 10 (build 19045), 64-bit edition, 64 bit, Little endian, wxMSW
wxWidgets: 3.2.4 (wchar_t,wx containers)
Boost: 1.83.0
OCC: 7.7.1
Curl: 8.4.0-DEV
ngspice: 42
Compiler: Visual C++ 1936 without C++ ABI
Build settings: