From 5c7ac1bb7e700f0dd63f736d7ba772fd7d030423 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Mon, 17 Feb 2020 13:27:39 +0100 Subject: [PATCH] ZONE_FILLER: fix incorrect thermal clearance of pads having "not in zone" option. Pads inside a zone of the same net having the "not in zone" option have a "antipad" clearance. The value in this case is the biggest between zone clearance and thermal clearance (the net clearance is 0 betwen items of the same net) However a bug created a incorrect value, due to the fact the minimal zone width was incorrectly taking in account in calculations. --- pcbnew/zone_filler.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pcbnew/zone_filler.cpp b/pcbnew/zone_filler.cpp index 63876219fa..bdfd83b928 100644 --- a/pcbnew/zone_filler.cpp +++ b/pcbnew/zone_filler.cpp @@ -460,9 +460,7 @@ void ZONE_FILLER::buildZoneFeatureHoleList( const ZONE_CONTAINER* aZone, } else pad->TransformShapeWithClearanceToPolygon( aFeatures, - clearance, - segsPerCircle, - correctionFactor ); + clearance, segsPerCircle, correctionFactor ); } continue; @@ -476,7 +474,7 @@ void ZONE_FILLER::buildZoneFeatureHoleList( const ZONE_CONTAINER* aZone, || ( pad->GetShape() == PAD_SHAPE_CUSTOM && aZone->GetPadConnection( pad ) != PAD_ZONE_CONN_FULL ) ) { int gap = zone_clearance; - int thermalGap = aZone->GetThermalReliefGap( pad ); + int thermalGap = aZone->GetThermalReliefGap( pad ) + outline_half_thickness; gap = std::max( gap, thermalGap ); item_boundingbox = pad->GetBoundingBox(); item_boundingbox.Inflate( gap );