I've started to look at OpenSDRAW - Its fairly complicated but seems very powerful, allowing you to manipulate libraries of parts and create animations (without having to get stuck into something like Blender). I rendered a couple of the example animations...
Currently, I don't really know how it all works in detail - but I like what it can do!