IPC-2581 bottom pads are (sometimes) mirrored and rotated incorrectly vs. Valor/CST/Cadence/circuithub.com

Description

IPC-2581 export is expected to match other PCB analysis and manufacturing tools, in this case Valor, but this issue is the same with Cadence, CST Studio, and circuithub.com

KiCad 8.0.8 produces copper pads that are incorrectly mirrored unless the component and pad angle add up to zero (mod 360 degrees), then rotated incorrectly (probably correct angle * -1)

ir_drop_v05_kicad_minimal.zip

In this demo, an SOT-23-5 footprint was modified to have pads with no mirror symmetry. The silkscreen indicating the pad shape is completely separate from the footprint, and indicates the ideal orientation and mirroring of the pads.

KiCad bottom silk + copper + Courtyard

ir_drop_v05_kicad_bottom.PNG

Valor bottom silk + copper + component body

Pad 1-3 are mirrored everywhere except U10

Pad 4-5 are mirrored everywhere except U14

ir_drop_v05_C_valor_bottom.PNG

CST Studio bottom copper + component body

Matches Valor

ir_drop_v05_C_cst_bottom.PNG

Steps to reproduce

  1. Use pads that have no mirror symmetry (we do this for newer footprints regularly)
  2. Place component on bottom side with a total pad rotation other than zero

KiCad Version

Application: KiCad x64 on x64

Version: 8.0.8, release build

Libraries:
	wxWidgets 3.2.6
	FreeType 2.13.3
	HarfBuzz 10.0.1
	FontConfig 2.15.0

Platform: Windows 10 (build 19045), 64-bit edition, 64 bit, Little endian, wxMSW
OpenGL: Intel, Intel(R) UHD Graphics P630, 4.6.0 - Build 31.0.101.2115

	wxWidgets: 3.2.6 (wchar_t,wx containers)
	Boost: 1.86.0
	OCC: 7.8.1
	Curl: 8.10.1-DEV
	ngspice: 44
	Compiler: Visual C++ 1942 without C++ ABI

Build settings:
Edited by eben kunz