I am thinking of writing a cad tool
June 9, 2012
So I've tried about 10 different CAD programs now to try and create my robot models, and am quite simply.. ANGRY! Apologies if this post sounds a little ranty - I'm just a bit fed up, so try and read this post with your angry filter on :)
Every program seems to have it's floors or problems, that seem to come from 2 distinct areas:
- A massive feature set, which makes it hard to learn, and often results in lots of bugs - too many features = too much to fix
- A focus on the maths and coolness, without massive consideration of UI or visualisation
The thing is, this doesn't seem like a massively complex problem. OpenSCad demonstrates how few features you really need to build up a good 3d model - it consists of a few primitives that can be combined to do all kinds of awesome things. Unfortunately it contains lots of bugs and has very little focus on usability. Simple things like syntax highlighting, shadows or custom lights to make visualisation easier and nice material settings haven't really been focused on.
At the other end of the spectrum you have things like google sketchup which has a great interface, but when you get down to the nitty gritty with things like CSG it doesn't cut it.
Alternatively you have art packages like 3ds max or Maya. While these do their job well, they simply aren't targeted at making precise models.
And of course you've got the really powerful stuff like SolidWorks or AutoCad, but they cost a lot, and I just don't want to pirate things. As a software developer that makes me feel bad, and pirating is just a pain in the rear end anyhoo :)
So here's what I think a nice starting feature set would be (based on what I need):
- Ability to program components (aka OpenSCad), or draw them. Initial focus on programming them as it's simpler.
- A simple set of primitives that can be combined using CSG.
- Entirely based on convex object combinations, which keeps the maths simple!
- I should be able to take a diagram of a component with a list of measurements, and fairly quickly enter the bits needed to display it as a model
- Rendering should be of a quality you'd expect out of todays machines - nice lighting, shadows and projections to indicate positioning of objects relative to each other
As a game developer I've got a fair bit of experience in UI, maths and graphics code, so really do think I should be able to do a good job. My gut says to write it in c# using wpf, eventually moving the expensive bits into a c++ library.
I'd be interested in what people think of what features are needed, and if anybody fancies helping out. I've not decided whether to actually write it yet, but it really does seem like a simple problem. Better still, there's lots of examples of bits that work well out there - there just isn't 1 program that wraps them all up in a nice package and doesn't have loads of other issues
thoughts / comments / statements that I'm insane? :)