Ladies and Gentlemen,
Finally, there is the ratsnest compatible with the GAL available for
testing in our branch [1]. Hopefully after some testing time and main
developers approval, it will get merged to the testing branch.
The main difference introduced is that the ratsnest now takes into
account tracks and vias too. It came at some performance cost, but it
should not be a very big price for the functionality.
For those that are slightly more interested in implementation details:
- The board is processed, ie. all items are split to nodes (connection
points such as pads, vias, track endings) and connections (tracks).
- Basic grid of connections if computed by Delaunay triangulation
(ignores the fact if connections exist or not, just prepares the grid).
It is done using the TTL[2] library, tailored to the needs of the
algorithm.
- Minimum spanning tree is computed, taking into account if connections
exist or not.
For the items that are modified by the tools, it takes too much time to
recompute the whole ratsnest, so there is only one line drawn for each
node. After modifications are finished, all nets that were influenced
are refreshed.
Things that I would like to add in the nearest future:
- pool allocators - I believe this should significantly increase the
speed, but I was not able at the time being to use it properly to gain
some boost. I just need some experiments to combine those with shared_ptrs.
- toggling ratsnest per net - There could be a menu for hiding specific
nets. I used to hide power nets in my designs, as they were introducing
lots of missing connections that were littering my screen.
As usual, both tests and opinions are more than welcome. Myself, I am
going to further develop the selection tool.
Kind regards,
Orson
[1] lp:~cern-kicad/kicad/ratsnest
[2] http://www.sintef.no/Projectweb/Geometry-Toolkits/TTL/