From 154f64dae3ac9830e1a4d9de799a072fafb4b6e5 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Tue, 7 Mar 2023 12:21:23 +0000 Subject: [PATCH] Edge connectors shouldn't trigger edge clearance violations. Fixes https://gitlab.com/kicad/code/kicad/issues/14199 (cherry picked from commit 33e7c78533ab055a52456cf7973158ff41613560) --- pcbnew/drc/drc_test_provider_edge_clearance.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/pcbnew/drc/drc_test_provider_edge_clearance.cpp b/pcbnew/drc/drc_test_provider_edge_clearance.cpp index af8ac1f367..f50907dd0b 100644 --- a/pcbnew/drc/drc_test_provider_edge_clearance.cpp +++ b/pcbnew/drc/drc_test_provider_edge_clearance.cpp @@ -283,18 +283,23 @@ bool DRC_TEST_PROVIDER_EDGE_CLEARANCE::Run() bool testSilk = !m_drcEngine->IsErrorLimitExceeded( DRCE_SILK_EDGE_CLEARANCE ); if( !testCopper && !testSilk ) - return false; // We're done + return false; // All limits exceeded; we're done if( !reportProgress( ii++, count, progressDelta ) ) - return false; // DRC cancelled; we're done + return false; // DRC cancelled; we're done if( isInvisibleText( item ) ) - return true; // Continue with other items + return true; // Continue with other items - if( item->Type() == PCB_PAD_T - && static_cast( item )->GetProperty() == PAD_PROP::CASTELLATED ) + if( item->Type() == PCB_PAD_T ) { - return true; + PAD* pad = static_cast( item ); + + if( pad->GetProperty() == PAD_PROP::CASTELLATED + || pad->GetAttribute() == PAD_ATTRIB::CONN ) + { + return true; // Continue with other items + } } const std::shared_ptr& itemShape = item->GetEffectiveShape();