kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #41568
Re: What's the state of the zone outline thickness stuff?
I did a bit more digging around, and as far as I can tell our current implementation is (c).
I think we need to move it to (a). Eurocircuits (at least) says to use Eagle’s polygon boundary width to control necking (ie: Kicad's zone-min-width). Eagle doesn’t appear to have any other parameter which controls that.
> On 14 Jul 2019, at 21:13, Jeff Young <jeff@xxxxxxxxx> wrote:
>
> Hi Seth,
>
> I’m still not following this. When Eagle strokes the boundary, it does so with a round pen (at least going by the pngs in the bug report). So all corners have a radius of 1/2 the stroke width.
>
> How do we currently represent that in Kicad?
> a) inflate the boundary by 1/2-eagle-stroke-width and set min-width to eagle-stroke-width?
> b) inflate the boundary by 1/2-eagle-stroke-width and set corner filleting to 1/2-eagle-stroke-width?
> c) inflate the boundary by 1/2-eagle-stroke-width and let Clipper round the corners?
>
> If it’s (c), I’m saying that doesn’t actually work. (Or at least it didn’t.) You’re probably seeing the effects of (a), only with a default min-width so the radiuses won’t necessarily exactly match.
>
> I’ve changed (c) to also round by 1/2-min-width, so that it can be equivalent to (a) when “stroke-zone-boundaries” is off.
>
> Cheers,
> Jeff.
>
>
>
>> On 14 Jul 2019, at 20:21, Seth Hillbrand <seth@xxxxxxxxxxxxx> wrote:
>>
>> Hi Jeff-
>>
>> The bug was that Eagle strokes on the boundary. We stroke inside. When we convert, we need to expand strictly as a square to get the equivalent KiCad zone. Mitering and rounding will give excess polygon points. The only way I have found to get this in Clipper is to use jtMiter and set the miterlimit to 0. Oddly, just setting the parameter to jtSquare gave a mitered corner.
>>
>> It sounds from your description that you've changed this behavior in Clipper. If that is the case, Eagle converted zones will no longer be correct.
>>
>> -Seth
>>
>> On 2019-07-14 14:22, Jeff Young wrote:
>>> Hi Seth,
>>> I looked at that bug report, and all the Eagle zones have rounded
>>> corners, not square. So I don’t think you were actually getting
>>> anything out of the mitering, but that was being masked by the fact
>>> that we _do_ in fact stroke the outer zone boundary (therefore giving
>>> you rounded corners).
>>> Just to be clear, we stroke with the zone-min-width stroke, rather
>>> than the zone boundary’s linewidth. We first deflate the zone by
>>> 1/2-min-width (which drops out all the min-width features), and then
>>> stroke it with min-width which expands it back to size and gives us
>>> some corner rounding as a bonus.
>>> JP has recently introduced a new mode where we don’t stroke the
>>> boundary anymore (I think primarily for performance, but I’m not
>>> 100% sure). Under this algorithm we still deflate the zones by
>>> 1/2-min-width, but we then inflate them again to bring them back to
>>> size. My changes are largely to add corner rounding to this case.
>>> Cheers,
>>> Jeff.
>>>> On 14 Jul 2019, at 18:53, Seth Hillbrand <seth@xxxxxxxxxxxxx> wrote:
>>>> Please be super careful here. I was using that implicit fallback in
>>>> the Eagle import to get a square inflation that is needed to mimic
>>>> the Eagle zones. I didn't think we were using that type of
>>>> inflation anywhere else (but that could have changed). If we are
>>>> using that elsewhere, can you verify that the change to clipper
>>>> doesn't re-introduce https://bugs.launchpad.net/kicad/+bug/1817312 ?
>>>> Thanks-
>>>> Seth
>>>> On 2019-07-14 13:17, Jeff Young wrote:
>>>> Hi Seth,
>>>> We weren’t calling it directly anywhere. But jtMiter has a
>>>> MiterLimit, after which it falls back to square. I’ve changed
>>>> that
>>>> fallback to round (and enforced a much lower MiterLimit so that it
>>>> mimics the smoothing we used to get by drawing the border with a
>>>> 1/2-min-width thick stroke).
>>>> Cheers,
>>>> Jeff.
>>>> On 14 Jul 2019, at 17:50, Seth Hillbrand <seth@xxxxxxxxxxxxx> wrote:
>>>> On 2019-07-14 05:31, Jeff Young wrote:
>>>> I made another optimisation, this time within the Clipper library.
>>>> When the offset exceeds the MiterLimit it will perform jtRound
>>>> instead
>>>> of jtSquare. I *think* this makes the zero-width-border algorithm
>>>> materially indistinguishable from the old algorithm (well, except
>>>> that
>>>> several bugs are fixed in the new one and it’s faster).
>>>> Hi Jeff-
>>>> Were we using jtSquare somewhere? I had added an option to inflate
>>>> using jtMiter but this was for Eagle import only. I thought all
>>>> other inflations were using jtRound.
>>>> Best-
>>>> Seth
>
>
> _______________________________________________
> 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
References
-
What's the state of the zone outline thickness stuff?
From: Jeff Young, 2019-07-13
-
Re: What's the state of the zone outline thickness stuff?
From: Jeff Young, 2019-07-13
-
Re: What's the state of the zone outline thickness stuff?
From: Jeff Young, 2019-07-13
-
Re: What's the state of the zone outline thickness stuff?
From: Jeff Young, 2019-07-14
-
Re: What's the state of the zone outline thickness stuff?
From: Seth Hillbrand, 2019-07-14
-
Re: What's the state of the zone outline thickness stuff?
From: Jeff Young, 2019-07-14
-
Re: What's the state of the zone outline thickness stuff?
From: Seth Hillbrand, 2019-07-14
-
Re: What's the state of the zone outline thickness stuff?
From: Jeff Young, 2019-07-14
-
Re: What's the state of the zone outline thickness stuff?
From: Seth Hillbrand, 2019-07-14
-
Re: What's the state of the zone outline thickness stuff?
From: Jeff Young, 2019-07-14