From 94a3390544be253312414fd55e724dbff50c7b9f Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Sun, 6 Nov 2016 19:50:38 +0100 Subject: [PATCH] * Pcbnew: in fill zones calculations, make polygons strictly simple before fracturing them. --- .../zones_convert_brd_items_to_polygons_with_Boost.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pcbnew/zones_convert_brd_items_to_polygons_with_Boost.cpp b/pcbnew/zones_convert_brd_items_to_polygons_with_Boost.cpp index bc79c76d66..c02d57027f 100644 --- a/pcbnew/zones_convert_brd_items_to_polygons_with_Boost.cpp +++ b/pcbnew/zones_convert_brd_items_to_polygons_with_Boost.cpp @@ -447,7 +447,10 @@ void ZONE_CONTAINER::AddClearanceAreasPolygonsToPolysList_NG( BOARD* aPcb ) if (g_DumpZonesWhenFilling) dumper->Write( &holes, "feature-holes-postsimplify" ); - solidAreas.BooleanSubtract( holes, true ); + // Generate the filled areas (currently, without thermal shapes, which will + // be created later). + // Generate strictly simple polygons needed by Gerber files and Fracture() + solidAreas.BooleanSubtract( holes, false ); if (g_DumpZonesWhenFilling) dumper->Write( &solidAreas, "solid-areas-minus-holes" ); @@ -476,8 +479,9 @@ void ZONE_CONTAINER::AddClearanceAreasPolygonsToPolysList_NG( BOARD* aPcb ) if( !thermalHoles.IsEmpty() ) { thermalHoles.Simplify(); - // Remove unconnected stubs - solidAreas.BooleanSubtract( thermalHoles ); + // Remove unconnected stubs. + // Generate strictly simple polygons needed by Gerber files and Fracture() + solidAreas.BooleanSubtract( thermalHoles, false ); if( g_DumpZonesWhenFilling ) dumper->Write( &thermalHoles, "thermal-holes" );