From 1ccaf45740f620e7a59519160f5f727003c72f66 Mon Sep 17 00:00:00 2001 From: Seth Hillbrand Date: Wed, 12 Jul 2023 11:13:58 -0700 Subject: [PATCH] Record hole knockouts in zone filler earlier Spokes are placed across an entire pad when filling, so the hole knockouts need to knocked out prior to deflating Fixes https://gitlab.com/kicad/code/kicad/-/issues/15160 (cherry picked from commit 3030c80de7cc2c28ed9e76ef2ae1ac8c6e4660b3) --- pcbnew/zone_filler.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pcbnew/zone_filler.cpp b/pcbnew/zone_filler.cpp index ae12c6e18e..01a24bf6a9 100644 --- a/pcbnew/zone_filler.cpp +++ b/pcbnew/zone_filler.cpp @@ -1457,6 +1457,10 @@ bool ZONE_FILLER::fillCopperZone( const ZONE* aZone, PCB_LAYER_ID aLayer, PCB_LA */ buildCopperItemClearances( aZone, aLayer, noConnectionPads, clearanceHoles ); + + for( PAD* pad : thermalConnectionPads ) + addHoleKnockout( pad, 0, clearanceHoles ); + DUMP_POLYS_TO_COPPER_LAYER( clearanceHoles, In3_Cu, wxT( "clearance-holes" ) ); if( m_progressReporter && m_progressReporter->IsCancelled() ) @@ -1598,9 +1602,6 @@ bool ZONE_FILLER::fillCopperZone( const ZONE* aZone, PCB_LAYER_ID aLayer, PCB_LA * islands */ - for( PAD* pad : thermalConnectionPads ) - addHoleKnockout( pad, 0, clearanceHoles ); - aFillPolys.BooleanIntersection( aMaxExtents, SHAPE_POLY_SET::PM_FAST ); DUMP_POLYS_TO_COPPER_LAYER( aFillPolys, In16_Cu, wxT( "after-trim-to-outline" ) ); aFillPolys.BooleanSubtract( clearanceHoles, SHAPE_POLY_SET::PM_FAST );