← Back to team overview

kicad-developers team mailing list archive

Re: Fwd: [PATCH] pcbnew: fix false DRC violations for oval pads

 

JP,

Would you please confirm this when you get a chance.

Thanks,

Wayne

On 1/22/2018 7:50 PM, Forrest Voight wrote:
> I found another related problem with oval pads: tracks intersecting
> with oval pads are sometimes *not* detected as DRC violations.
> 
> Looking at the below screenshot or PCB, the narrow track should *but
> does not* trigger a DRC violation in its current position, while it
> does generate a violation if dragged 2mm down to intersect with the
> center of the large oval pad.
> 
> I've linked a patch that fixes the issue.
> 
> Board: http://u.forre.st/kicad_bug2/track_x_oval_pad_failure.kicad_pcb
> Board screenshot: http://u.forre.st/kicad_bug2/track_x_oval_pad_failure.png
> Patch (also below):
> http://u.forre.st/kicad_bug2/0001-Fix-track-rotated-oval-pad-collision-detection.patch
> 
> As a related question, how hard is it to get committer access? I have
> several more minor fixes that I'd like to bring in.
> 
> 
> From ec6adcfb0d6b5583e132264cb84a3ba897a5da2b Mon Sep 17 00:00:00 2001
> From: Forrest Voight <forrest@xxxxxxxx>
> Date: Mon, 22 Jan 2018 13:50:33 -0500
> Subject: [PATCH] Fix track/rotated oval pad collision detection
> 
> ---
>  pcbnew/drc_clearance_test_functions.cpp | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/pcbnew/drc_clearance_test_functions.cpp
> b/pcbnew/drc_clearance_test_functions.cpp
> index e395e7d..1ab6af0 100644
> --- a/pcbnew/drc_clearance_test_functions.cpp
> +++ b/pcbnew/drc_clearance_test_functions.cpp
> @@ -1052,6 +1052,9 @@ bool DRC::checkClearanceSegmToPad( const D_PAD*
> aPad, int aSegmentWidth, int aMi
>          {
>              std::swap( padHalfsize.x, padHalfsize.y );
>              orient = AddAngles( orient, 900 );
> +            // recompute start/endPoint since they depend on orient
> +            RotatePoint( &startPoint, m_padToTestPos, -900 );
> +            RotatePoint( &endPoint, m_padToTestPos, -900 );
>          }
> 
>          // here, padHalfsize.x is the radius of rounded ends.
> 


Follow ups

References