Over the years I have had the privilege to try my hand at several 3D CAD programs -- in particular, I worked with BRL CAD because I wanted to experiment with Finite Element Analysis, and when I took a course in Finite Element Analysis, the curriculum was based on Ansys. I have also gone through a LinkedIn course on Solidworks (albeit without access to the program itself), tinkered with Blender (but not too deeply, because Blender doesn't work nicely with Finite Element Analysis), and poked at OpenSCAD and tore my hair out when I tried FreeCAD -- but then it was just as it was transitioning from version 0.21 to version 1.0.0.
And, while it's not exactly a CAD program, several years ago I experimented with using quaternions to handle rotations in Python, with the unfulfilled ambition of creating a 3D version of Nibbles called Nibbles 3D.I'm pretty sure there are other platforms I have encountered and played with, but I cannot think of what they are at this time.
So, while my experience with 3D CAD software has been spotty, I have nonetheless had enough time to find myself frustrated by several platforms. But despite my frustrations, I quickly discovered that, even when frustrating, CAD programs provide a valuable service: when I was first trying to learn BRL CAD, I struggled to convert PDF blueprints into BRL CAD shapes -- so decided I should pull out my trusty compass, protractor, and ruler, and try my hand at drawing the part the "old fashioned" way -- but I quickly found myself trying to pinch and twist the paper drawings trying to get different perspectives!
Why is it that 3D CAD programs rub me the wrong way? Simply put, I have yet to use a 3D CAD program that works the way I think. I tend to think in terms of points making lines and planes and even volumes, I want to describe curves and surfaces with equations, I would like to explore differential geometry and viewpoints that follow curves and other weird things. And I want to move in a way I find natural! But as far as I can see, CAD programs aren't all that configurable when it comes to movement. (Perhaps I haven't just explored enough -- FreeCAD in particular had several options for 3D space navigation ... and it's not implausible that they have a way to create your own conventions.)
I am not alone about my concerns with 3D CAD! One Franklin Veaux on Quora disputes the notion that 3D printing is popular; one of his gripes concerns the state of 3D CAD:3D modeling programs are currently in about the state word processing was in back in the days of WordStar. There are basically two tiers of 3D modeling programs: primitive, limited programs with terrible user interfaces, and powerful, full-featured programs with UIs that are beyond terrible. I come from a time when it was considered “normal” to buy a commercial program and then copy-paste the BIOS hooks for your particular CP/M machine into the program and assemble it yourself, and modern 3D apps have the worst user experience I have ever encountered. When your program makes patching a CP/M app look user friendly, you’ve made some poor life choices.In a Formlabs Short, Adam Savage (of "Tested" and "Mythbusters" fame) expressed his own concerns that 3D CAD makes it difficult to create aesthetically pleasing drawings and other things.
So, what the heck would I do differently? I would draw on my experience with Vim and Emacs and Tmux -- make the system highly configurable and extendible. I would draw from my experience playing Descent and make movement casual and completely controllable. I would further draw on game design, adding in real-time collision detection and a physics engine, and even attempt to run Finite Element Analysis in real time. I would like to blur the lines between the base computer language (Common Lisp), computer algebra systems, and computer graphics. When I want to do something, I would like to do it in a nice, intuitive, mathematical way -- a good portion of my frustrations with CAD comes from having to jump through hoops to do what I want to do, and in too many cases, what I want to do is altogether impossible -- but I should be able to define a line anywhere, darn it! and put notes and stuff wherever I want!
I admit to approaching the subject with a tad bit of naivety -- I'm sure that *some* of this has been implemented in *some* CAD systems -- but not really. If I design a part, I want to just "drop it in place" (in some cases, literally), and let the geometry, the physics engines, and whatever artificial constraints I wish to throw in or deactivate at the last minute, all as a natural part of the design process. I cannot do that with any system currently available.
And, having said all that, I'm not even sure I'm "the one" who will make 3D CAD intuitive -- I am, after all, using freaking Common Lisp and Vim and Emacs as my inspiration! I have reasons for doing that, to be sure, but those reasons deserve more explanation.
Perhaps all this is just an excuse -- a way to justify starting from scratch with "first principles", and see what can grow from there -- after all, we live in a world where pretty much everything seems to have been already discovered, debugged, and packaged nicely in little black boxes that let us be ignorant of what's inside -- and, to be fair, to some degree that ignorance is justified, even necessary, if merely because the world is a complex and overwhelming place, and it's impossible to implement All the Things anyway.
Then again, if no one ever starts out from first principles, to learn what we already know, how in the world can we push against the frontiers of knowledge, to extend them beyond what we currently know and understand?
No comments:
Post a Comment