← Back to team overview

kicad-developers team mailing list archive

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

 

Forrest,

Answering your second question, AFAIR there are no strict rules about
getting committer access, but sending patches to the mailing list is a
really good idea. In fact, even the committers send patches here to get
them tested and reviewed. If you have any fixes (or new features after
we release v5), do not hesitate to send them to the mailing list.

Regards,
Orson

On 01/23/2018 01:50 AM, 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.
> 


Attachment: signature.asc
Description: OpenPGP digital signature


Follow ups

References