← Back to team overview

kicad-developers team mailing list archive

Re: [RFC] Experimental grid pattern in zone fill

 

Just the other day a user on IRC showed us this image of a hexagonal fill
he hacked into his board by using bitmap2componet. Sort of a hack^3.

1) export gerbers and convert to PNG with gerbV
2) custom Python Imaging Library (PIL) script
3) bitmap2component

https://i.imgur.com/ThqIz5Y.png

Having native support in kicad is nicer. :) I don't imply we necessarely
need hexagonal fill pattern, this was just an example as inspiration.

In relation to the patch, is it not better to prefix the keyword token with
fill instead of grid?

Just a few comments on how it works in the copper zone properties. I know
you probably didn't invest too much time in this, but I will note it in
case you want some feedback to that. It looks like the combobox for the
fill style is empty when I try to open a zone. This is on an already
existing zone. It errors with a popup that the size and thickness does not
have the proper ratio. Maybe some defaults are needed here for usability.

2018-03-13 21:27 GMT+01:00 Jon Evans <jon@xxxxxxxxxxxxx>:

> OK, Makes sense.
>
> On Tue, Mar 13, 2018 at 4:25 PM, jp charras <jp.charras@xxxxxxxxxx> wrote:
>
>> Le 13/03/2018 à 20:47, Jon Evans a écrit :
>> > I wonder if it might be a faster algorithm to calculate the perimeter
>> (and holes) of zones, offset
>> > it in by the zone thickness as a polygon, and then draw in the grid as
>> line segments rather than as
>> > more holes in the polygon?
>>
>> This is the first thing I tested. I abandoned this approach:
>> * It is not compatible with the current zone connectivity algo and the
>> current algo to remove
>> insulated islands.
>> * It can be very costly in drawing time because line segments can be very
>> numerous if the zone min
>> thickness is very small (because line segments must be set to this value
>> to be able to "fill" the
>> zone), much more the full polygon approach.
>> (try to fill a zone with a very small min thickness with segments)
>>
>> The zone as polygon is the best way for me.
>>
>> Removing holes in filled areas is not time consuming.
>> Removing not connected copper islands and the connectivity calculation is
>> more time consuming just
>> because there are more vertices.
>> This is also true when using 32 segments instead of 16 segments by circle.
>>
>> >
>> > On Tue, Mar 13, 2018 at 3:44 PM, jp charras <jp.charras@xxxxxxxxxx
>> <mailto:jp.charras@xxxxxxxxxx>>
>> > wrote:
>> >
>> >     Le 13/03/2018 à 20:38, Jon Evans a écrit :
>> >     > For the last point, you could use the approach I put in GerbView
>> of start measuring the time, and
>> >     > then throw up a progress window if the time exceeds N seconds
>> (with a button to cancel the operation)
>> >     > That way you don't even see the window on small boards, but you
>> get the feedback and can cancel the
>> >     > operation on large boards.
>> >
>> >     Hi Jon,
>> >     Filling zones has already this progress window.
>> >     Grid pattern just can modify the calculation time due to more
>> vertices in zone outlines.
>> >
>> >     >
>> >     > On Tue, Mar 13, 2018 at 3:28 PM, jp charras <
>> jp.charras@xxxxxxxxxx
>> >     <mailto:jp.charras@xxxxxxxxxx> <mailto:jp.charras@xxxxxxxxxx
>> <mailto:jp.charras@xxxxxxxxxx>>>
>> >     > wrote:
>> >     >
>> >     >     Le 13/03/2018 à 18:24, Seth Hillbrand a écrit :
>> >     >     > Hi JP-
>> >     >     >
>> >     >     > I gave it a spin and definitely like it!  I have been using
>> custom footprints for capacitive
>> >     >     > sensors, but this is much better.  A couple thoughts:
>> >     >     >
>> >     >     > 1) I'd prefer to have the angle saved as a parameter in the
>> file rather than a fixed list of options.
>> >     >
>> >     >     Yes, good idea.
>> >     >
>> >     >     > 2) We'll definitely need to address the polygon issue.  I
>> created a 10cmx10cm board and filled it
>> >     >     > with 45° at the minimum width/50% fill and my computer
>> froze for 2 minutes while it thought about
>> >     >     > it.  Strangely, when I checked it was only using one core,
>> so I'm not sure why the wm froze during
>> >     >     > the calculation.  Maybe some interaction with the graphics
>> card.
>> >     >     >
>> >     >
>> >     >     Strange.
>> >     >     What is the zone setup?
>> >     >
>> >     >     For basic boards, the fill zone calculation time is not
>> noticeable on my computer.
>> >     >     Noticeable calculation time (a few seconds) happens only for
>> *large* boards.
>> >     >
>> >     >
>> >     >     > If we can't fix the polygons before this, we should
>> probably have a dummy-check pop-up warning of
>> >     >     > long compute times.  The polygons get calculated twice on
>> closing the zone edit window.  Once with
>> >     >     > the cursor showing busy and then again with no indication
>> of work.  This happens again when
>> >     >     > highlighting.
>> >     >     >
>> >     >     > Best-
>> >     >     > Seth
>> >     >
>> >     >     Trying to guess if the calculation time is long is really not
>> easy.
>> >     >
>> >     >
>> >     >     >
>> >     >     > 2018-03-13 <20%2018%2003%2013> 8:48 GMT-07:00 jp charras <
>> jp.charras@xxxxxxxxxx <mailto:jp.charras@xxxxxxxxxx> <mailto:
>> jp.charras@xxxxxxxxxx
>> >     <mailto:jp.charras@xxxxxxxxxx>>
>> >     >     <mailto:jp.charras@xxxxxxxxxx <mailto:jp.charras@xxxxxxxxxx>
>> <mailto:jp.charras@xxxxxxxxxx
>> >     <mailto:jp.charras@xxxxxxxxxx>>>>:
>> >     >     >
>> >     >     >     Le 13/03/2018 à 14:05, Jon Evans a écrit :
>> >     >     >     > Nice work!  It may just be experimental, but it seems
>> pretty close to a feature
>> >     for 6.0 to me :-)
>> >     >     >     > I gave it a try on various boards I have worked on
>> recently and it seems to work
>> >     as advertised and
>> >     >     >     > is not noticeably slower than a solid fill on my
>> computer.
>> >     >     >     >
>> >     >     >     > Assuming we work out any issues related to this, I
>> thought of two features we
>> >     might want to add
>> >     >     >     > after this:
>> >     >     >     > 1) Allow 45-degree grids instead of just 90
>> >     >     >     > 2) Add a DRC check for stitching vias that would have
>> connected to a solid fill
>> >     but are off-grid and
>> >     >     >     > thus disconnected in grid fill?
>> >     >     >     >
>> >     >     >     > -Jon
>> >     >     >
>> >     >     >     Attached the experimental grid pattern in zone fill
>> patch, with 45 degree grid option.
>> >     >     >
>> >     >     >     >
>> >     >     >     > On Tue, Mar 13, 2018 at 4:10 AM, jp charras <
>> jp.charras@xxxxxxxxxx
>> >     <mailto:jp.charras@xxxxxxxxxx> <mailto:jp.charras@xxxxxxxxxx
>> <mailto:jp.charras@xxxxxxxxxx>>
>> >     >     >     <mailto:jp.charras@xxxxxxxxxx <mailto:
>> jp.charras@xxxxxxxxxx>
>> >     <mailto:jp.charras@xxxxxxxxxx <mailto:jp.charras@xxxxxxxxxx>>>
>> >     >     <mailto:jp.charras@xxxxxxxxxx <mailto:jp.charras@xxxxxxxxxx>
>> <mailto:jp.charras@xxxxxxxxxx
>> >     <mailto:jp.charras@xxxxxxxxxx>> <mailto:jp.charras@xxxxxxxxxx
>> <mailto:jp.charras@xxxxxxxxxx>
>> >     >     <mailto:jp.charras@xxxxxxxxxx <mailto:jp.charras@xxxxxxxxxx>
>> >>>>
>> >     >     >     > wrote:
>> >     >     >     >
>> >     >     >     >     I wrote a purely experimental option to fill
>> zones (copper and not copper)
>> >     with a grid patter.
>> >     >     >     >     It is only an experimental feature made mainly to
>> know what issues can be
>> >     created by this feature.
>> >     >     >     >
>> >     >     >     >     The main issue is the fact polygons have much
>> more corners, thus creating a
>> >     longer calculation time.
>> >     >     >     >     (However, grid pattern is expected to be used in
>> specific cases)
>> >     >     >     >
>> >     >     >     >     It should be compatible with the current DRC.
>> >     >     >     >
>> >     >     >     >     Regards
>> >     >     >     >
>> >     >     >     >     --
>> >     >     >     >     Jean-Pierre CHARRAS
>> >     >
>> >     >
>> >     >
>> >     >     --
>> >     >     Jean-Pierre CHARRAS
>> >     >
>> >     >     _______________________________________________
>> >     >     Mailing list: https://launchpad.net/~kicad-developers
>> >     <https://launchpad.net/%7Ekicad-developers> <
>> https://launchpad.net/%7Ekicad-developers
>> >     <https://launchpad.net/%7Ekicad-developers>>
>> >     >     Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx> <mailto:
>> kicad-developers@xxxxxxxxxxxxxxxxxxx
>> >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>> >     >     Unsubscribe : https://launchpad.net/~kicad-developers
>> >     <https://launchpad.net/%7Ekicad-developers> <
>> https://launchpad.net/%7Ekicad-developers
>> >     <https://launchpad.net/%7Ekicad-developers>>
>> >     >     More help   : https://help.launchpad.net/ListHelp <
>> https://help.launchpad.net/ListHelp>
>> >     <https://help.launchpad.net/ListHelp <https://help.launchpad.net/Li
>> stHelp>>
>> >     >
>> >     >
>> >
>> >
>> >     --
>> >     Jean-Pierre CHARRAS
>> >
>> >
>>
>>
>> --
>> Jean-Pierre CHARRAS
>>
>> _______________________________________________
>> 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
>>
>
>
> _______________________________________________
> 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