I have to draw a lot of boxes and arrows diagrams, so I am currently hacking on a Python module for creating diagrams in .eps.
That is useful when you need to include it in LaTeX. There will also be SVG support, but first I want to get the design right. It has a Box, Circle (Curve), Text and some Arrow classes already, with dash, rotation and scaling support.
It is not just for drawing, but for programming such diagrams. The idea is to be able to write a program like
p = pyps.FileContents() b1 = pyps.Box() b2 = pyps.Box() a = pyps.Arrow() p.add(b1) p.add(b2) p.connect(b1, b2, a) print p.epsText()
in this example without having to specifiy coordinates at all. I am still thinking about the design for the connect method so that is not there yet. An example created with pyps is here. It was created as .eps and then translated to PNG with ghostscript (Windows install). Also shows a weakness of the Windows ghostscript: it could not find all the right fonts.
It has been a while doing such OO things, but this seems like a good case for OO. If you feel like trying it out, your comments are welcome!
Once it is mature enough, maybe there are other people who would like to join and start a project at Sourceforge.net?