I don't think the type of file format you're talking about could be saved into from a high-level CAD package without additional information. In order to have a small (say, less than a couple hundred) number of variables, you'd have to have the designer choose which the end-user can modify. With even fifty or so variables, the formulas for the locations of the individual points (which in turn define the triangles) would become unmanagably complex - as in complex enough you'd need a turing complete language to describe them.
Interestingly enough, you compared it to PDF, which is fancy postscript, and postscript IS a turing complete language. It's also a poor example for customization. PDF is a print-ready format, and completely sucks as anything else. It's the worst choice for distrubuting documents that will be read electronicly. This is despite Adobe's attempts to turn it into something else. There are extensions and such that make it somewhat customizable, but they don't always work correctly, are poorly designed, and work only with adobe's proprietary software, not with the plethora of third-party PDF viewers. PDF fill-in forms are a particularly poor choice. For anybody not using MS windows it's far, far easier to print it, fill it in by hand, and scan it.
Uhm, oops, sorry about the rant there, I hate PDF format almost as much as I hate java. PDF is absolutely great if you want to print something out somewhere else - convert to PDF, send the file, and print it at your destination. Unlike word documents, HTML, or indeed ANY other format, you can be sure that it will look on paper precisely as you intended. Any attempt to use PDF for any other purpose is misguided at best.
Err. Not done ranting I guess.
OK! Back to the topic.
There exists already a format that does what you describe. It's called "openscad" and is already in heavy use in the reprap world. As I said before, due to the extra design input required to make the described format, you'd pretty much need a turing complete language to store your point definitions in. Openscad is that language. It's not completely mature yet, but is already useful - the prusa mendel is designed in openscad, and can thus be easily adjusted for different printable areas, rod sizes, etc.
There IS a need for higher-level generators for this though. I imagine that a high-level CAD package could save to openscad format without too much difficulty. The designer would still have to choose which numbers to expose to the end user and which to leave as constants. And they'd still have to test a few different values to make sure the final object still made sense. For instance, a larger object may need thicker walls, and placement of holes would have to change for smaller objects, but change in relation to what?
Anyway, I don't think this problem is solvable by just a file format. It would be nice to have a more universal CSG file format, but I think there are a couple of proprietary formats that have become universal enough to almost qualify. The gaps between the ways that the different CAD programs understand things may prevent anything with higher-level information than a simple CSG from being universal.
Have you thought about more extended printer capabilities? For instance, people have made repraps that have a wire tool head capable of embedding wire in the finished product. That can't be described by a STL file though. And other things will come, eventually we'll have embedded electronics, valves, and other objects. Different blends and colors of plastic. And other things that I've probably not though off. Control over internal stresses? Fiber alignment direction? A description of the stresses that will be applied so the printer can put plastic just where needed on the inside of the object to get the needed strength?
Anyway, something will have to happen to enable some of those capabilities, but I for one don't know what it'll look like. Maybe openscad will evolve to have several "virtual layers" which are exported separately and sliced by the printer, and combined into commands for the various mounted tools.
--
I'm building it with
Baling Wire