← Back to team overview

kicad-developers team mailing list archive

Re: Zone filling optimizations, first results


I think it would be more nice to "lock" PCBnew from being changed and
show some kind of progress dialog or something like that. Because i
have also the same with Altium Designer... i dont see its rendering
the fill, also a option could be to disable/enable render after redraw


--- In kicad-devel@xxxxxxxxxxxxxxx, "Ing. Gabriele Oberhammer"
<gabriele@...> wrote:
> 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
> 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
> disabling the zone user operations during optimization, but I don't
> 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
> 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
> 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
> 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
> 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 ;-)