I had this thought on how to improve on the odd-even zone fills. Instead of spanning the area, start with the zone shape itself. Subtract all shapes occupying surface on the layer inside it; the remainder is the unoccupied shape, which becomes the shape of the zone itself.
While obviously more computationally demanding, not to mention potentially complex to implement, it has several advantages:
- It can be used to fill any subshape of a zone, for example if a footprint is placed its bounding box can be intersected with zones, and the resulting intersections have their fill shapes recalculated, reducing the overhead to only the affected portions. As you draw traces, place footprints, vias, and change board settings zone fill shapes can be dynamically recalculated and redrawn. This would be a benefit as it would allow immediate visual feedback on the impact on fills.
- Arcs produce fill shape arcs rather than line steps
- The zone edges are no longer immutable and can respect clearances (for an odd-even fill to do this it would need to go all the way back to the board edges)
- Zones become geometric shapes and can be placed on any layer including silk, so you could have a silk rectangle with clearance for vias if you wish
- Zones can be filled with any pattern (e.g. a thieving pattern)
- Zones can be placed anywhere in the priority order
Hybrid optimizations might be possible, for example: find a known unoccupied point within a bounding box and odd-even fill to the borders of the bounding box, but this obviously won’t produce a mathematically correct fill shape and the tradeoff between fill segment width and gerber size/complexity remains. (It also needs to be repeated until there are no more unfilled islands.)