kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #01835
Re: Re: [LONG] Zone filling optimizations, first results
Magnus Beischer wrote:
I have another approach that might be worth looking at. One question
we might ask is:
- What can be done in the background (not in the GUI thread) that
helps the user to accept long processing times?
The idea is that as a user I might accept long processing times if for
instance I can keep working immediately after I have started a zone
fill (in a restricted way). For my own work I'd be happy if I could
start to fill a zone, move to the next zone and start to fill that
one, change layer and start to fill zones on that layer, take a break
from work and come back and see that all the zones are filled in a
beautifull way.
First of all, sorry for the late reply, I was on vacation :-)
I had already though about using a separate thread, but as others
already stated, this would cause problems. Basically all the
optimizations are done iterating through the linked list of zone tracks,
so bad things could happen if you add/remove zone tracks to/from the
list while the optimization is running in background. You can avoid this
disabling the zone user operations during optimization, but I don't like
this approach.
Another idea is that as a user I might want to control in my settings
if I want "fast zone generation", "beautiful zone edges" or "optimize
for redrawing speed".
I agree, this should be way to go. I'm still doing some tests and trying
some optimizations to speed it up a bit. But when the patch will be
ready and the main developers think it's worth adding in Kicad sources,
I'll be happy to add all the needed options to the zone properties
dialog (or in any other better place).
We could have two approaches: do the chosen optimizations every time a
zone is filled or apply them just once before plotting the gerbers.
It is very difficult to decide!
For small boards there is very little difference, because zone
optimizations are fast so is worth doing it every time a zone is filled.
But in small boards zone redrawing on the screen is fast too, so zone
optimization will less usefull (but it will reduce file size and memory
consumption).
For big boards more testing is needed. I work only on small boards, so
for me is difficult to say if, for example, a zone fill which takes two
minutes to complete is worth the faster zone screen redraw...
So now I'm separating the optimization code (the one that reduce the
number of segments laving the final gerber zone layout the same) from
the code that beautify (smooth) the zone margins. This way we obtain
more flexibility and anyone would decide what is the best for every board.
Fore example on a medium board one can decide to reduce the number of
segments every time he fills a zone and to do the margin smoothing only
once before plotting.
Could someone send me some 'big' board for testing purposes? (only track
and zones, no modules, etc) ?
For people working on big boards: may I assume that video.brd in the
demos is sufficiently complex that I can use it for testing or you
design much more complicated boards than that?
PS: I'm also working to add teardrops for pads ;-)
Follow ups
References