← Back to team overview

kicad-developers team mailing list archive

Re: new kicadocaml release, new zone fill alg, if anyone


Tim Hanson wrote:
Hi All,

Just wanted to note here that I've released a new version of
kicadocaml. It adds a few new features, mainly improved Z-buffered
drawing (the layer last switched to is on top), improved arraying and
filtering/hiding functionality based on schematic hierarchy, and *new*
zone filling support.

Kicadocaml now reads in *both* the board file and schematic file; this
is the only way to get full knowledge of the schematic hierarchy.
With this, you may hide all parts (modules) not on a given sheet,
sub-sheet etc. This is very useful for laying out duplicated
circuitry, e.g. a multichannel system: first hide all modules not on
say the first channel, lay them out, and then use the array command to
duplicate module placements, associated tracks (association determined
by copper connectivity), and module text to the other channels.

In my last board, pcbnew failed to fill all the zones; I'm not sure
why. I tried to fix the bug, but got lazy after a while, and decided
to just write a zone-filling algorithm from scratch myself. This is
now tested and included in the source; it took 2 weeks off and on, and
about 600 lines of code (c.f. kbool: about 6,000 lines) If anyone is
interested, perhaps wants to add it to pcbnew / PCB, the alg is
described in full here:


Also! Since there has been some discussion as of late about zoom in
kicad, I would add that kicadocaml has exponential, (nearly) infinite
zoom - as close or as far as you like. The right mouse button is used
for panning, which by rough survey of everyone who has used it, is
quite addictive. It also has rollover highlighting of tracks, nets,
and modules. Still has push-routing (though it's not as good as I
might like), online DRC, gridless routing, (though you can align parts
to themselves or to a grid), ratnest, cross-probing, proper BOM
creation, etc. All in < 7 kloc. Maybe someone will use it other than
me.. :-)



After your zone triangle algorithm runs, are you left with a list of triangles? Is this the basis of the on screen polygon graphics, i.e. does each triangle get drawn separately then? (Which would seem slow.) Or are you coalescing them somehow?



Follow ups