I love openscad, and you can use it to make some fairly complex things if you dig into its nooks and crannies. I love the ability to parametrically define many of the objects I'm interested in printing.
Parametric is the only way to fly when "rapid prototyping" something.
I set my object measurements to variables, then define thicknesses as variables and use math plus union() and difference() while creating modules (c functions) of the various stages that nest in each other.
It can get pretty hacky sometimes with the nested translations to center things relative to each other but it's a wicked awesome way to model.