The point of this post was to talk about a framework that is units-agnostic. I’m not suggesting taking away anybodies preferred measuring system. The unit that one uses to annotate a drawing for other humans is still completely open. Many of you are talking about your “real-world” existential experiences. This is not about that, its about the machinations of internal code.
I assume the reason Sketchup has an internally denominated unit is so that no matter where an imported model comes from, it lands in a new model at the correct relative size. For example Warehouse downloads. This seems a little unusual in the 3d world, a bit hand-holdy, but it does make sense.
My point is, surely the choice of unit should be for the user to decide, and declared in the .skp file header, not deep down in the software code that generates the model in the first place. This way, all the files can still play together and land correctly scaled. If you use multiple unit types (poor Canadians) then this will work just fine. Or, if you use a single unit only, it will also work just fine, whatever the unit. In fact, the end user notices no difference from the current workflow whatsoever. It just means that when writing code that manipulates a dataset, there’s no need to constantly check and translate from system A to system B. I guess you could say I’m suggesting the user interface would do any unit translation needed.
Now, Sketchup is presented as a clean, moddable, unencumbered tool for making things. A digital green field. Sketchup is awesome. Through its intentional lack of tools, it encourages expanding the functionality of the software. Tools to make better tools. Sketchup would not be what it is today without the warehouse models and add-on developers. Sketchup however, forces expert users and developers to constantly keep tabs on working with inches regardless of their location in the world. This is not freedom, equality, and liberty for all.
Being a complete noob, the thing that I’m considering learning over the next 10 years, is akin to sending a probe to Mars. I don’t want my probe to crash because of a single bad unit declaration (yes this really happened, look it up, Mars Climate Orbiter). Because I have the luxury of not being invested, I can look around for the most convincing, confidence inspiring environment. This might seem overly picky, glass jawed perhaps, but from what I’m taught in Computing Methodology CS106A (Thankyou Mehran Sahami & Stanford’s free online lecture series), the best time to make for clean algorithms, is right at the start. My impression thus far from tinkering, and from those who have engaged here with the real issue and are clearly years ahead of me and perhaps more invested, is that Dynamic Components are easily compromised outside of inches. The next step deeper would be Ruby, and I’d still need to convert. Next would be the C API to maniputlate .skp’s outside of Sketchup, oh now I’ve got a bigger mountain to climb AND it’s all still in inches. One dimension is easy enough, its the areas and volumes and all the permutations of interactions that I’m more wary of. One or two components should be doable, but I’m contemplating much more complex models than that.
All this leads me to thinking I should invest my time outside of Sketchup. Since Sketchup is not Unit-agnostic, the better foundation for my project is Sketchup-agnostic. Therefore, I’m still free to use Sketchup to execute the process of turning a 3d model into a set of black and white contract documents that sometimes millions of dollars are riding on. Its great for presentations, page layout, and quick explorations of ideas. However, this internal inches issue, my gut seems to have decided now, is enough to send me to develop externally, where whatever variables I declare can be just another floating point number. The units can be decided at the end use. The brains of my problem will be safe from the unnecessary complications of Sketchup’s Imperial lords.
This no doubt makes my challenge much broader, and that’s probably a good thing.