kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #33411
Re: Fwd: [PATCH] pcbnew: fix false DRC violations for oval pads
On 1/23/2018 11:03 AM, jp charras wrote:
> Le 23/01/2018 à 16:32, Wayne Stambaugh a écrit :
>> JP,
>>
>> Would you please confirm this when you get a chance.
>
> Yes, I confirm and I just finished the fix.
That was quick! Thanks.
>
> (the patch in the report is broken)
Please inform Forrest what was broken so he knows where the mistake was
made.
Cheers,
Wayne
>
>
>>
>> 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.
>>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help : https://help.launchpad.net/ListHelp
>>
>
>
Follow ups
References