From 6927e75eaeddf55a68c2a9f33102151f6b758b4e Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Thu, 6 Oct 2022 15:08:22 +0100 Subject: [PATCH] Handle keepout areas with holes. Fixes https://gitlab.com/kicad/code/kicad/issues/12581 --- pcbnew/drc/drc_test_provider_disallow.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pcbnew/drc/drc_test_provider_disallow.cpp b/pcbnew/drc/drc_test_provider_disallow.cpp index dd84fdf0fa..b755dbb458 100644 --- a/pcbnew/drc/drc_test_provider_disallow.cpp +++ b/pcbnew/drc/drc_test_provider_disallow.cpp @@ -122,11 +122,11 @@ bool DRC_TEST_PROVIDER_DISALLOW::Run() if( copperZone->IsFilled() && areaBBox.Intersects( copperBBox ) ) { - // Collisions include touching, so we need to deflate outline by - // enough to exclude it. This is particularly important for detecting - // copper fills as they will be exactly touching along the entire - // exclusion border. + // Collisions include touching, so we need to deflate outline by enough to + // exclude it. This is particularly important for detecting copper fills as + // they will be exactly touching along the entire exclusion border. SHAPE_POLY_SET areaPoly = ruleArea->Outline()->CloneDropTriangulation(); + areaPoly.Fracture( SHAPE_POLY_SET::PM_FAST ); areaPoly.Deflate( epsilon, 0, SHAPE_POLY_SET::ALLOW_ACUTE_CORNERS ); DRC_RTREE* zoneRTree = board->m_CopperZoneRTreeCache[ copperZone ].get();