As a software engineer I’ve always felt some envy for proper engineers, who get to work with real physical objects. Because of that, I have followed with interest the development of the maker movement and the emergence of 3D printing as a hobby.
In the early days, the first hobbyist 3D printers were quite interesting, but you had to build them yourself, which was not a trivial process. After all that work you would end up with a machine that was, by all accounts, quite temperamental, and required a lot of maintenance and care. The alternative was to buy a professionally built machine, such as a MakerBot Replicator, but that would cost thousands of US dollars, which was not easy to justify. That meant that, like many others, I ended up watching the area of 3D printing with interest, …from the sidelines.
Fast forward to 2019, when reasonably good quality home 3D printers were available for a few hundred dollars / pounds. At that price point the temptation got the better of me and I ordered myself a Creality CR-20 printer. It seems that you can no longer find that version of the printer, which is now only available in its CR 20 Pro variant.
Like many owners of new 3D printer, the first thing I did was to head over to Thingiverse to find a few things to download and print. That was fun for a while, but only quenched my creative thirst for a bit. What I really wanted to do was to create my own designs, to fix actual problems I needed fixing around the house. Because, of course, the 3D printer was an essential purchase to help me fix stuff around the house, right?
If you want to design your own objects to 3D print, you need some software to do that. There are multiple options for that, but the ones I actually decided to try out are Autodesk Fusion360 and OpenSCAD.
Fusion 360 is a very capable piece of software, that does 3D Design (CAD), CAM, simulations, and many other things. As it commercially-developed software, that does genuinely useful things, you won’t be shocked to hear that it is not cheap! At the time of writing, a one year subscription was listed at £438. Fortunately there is a ‘Startup’ free licence available, that gives you access to the software for personal use, for one year; it is not clear what happens when the year expires, but have fun reading the Ts&Cs if that’s your kind of thing.
Despite its complexity, I found Fusion 360 quite easy to get into after watching a few video tutorials on YouTube. The UI is very well laid out, such that a novice user can do useful work by only pressing the buttons they understand, and ignoring the others 😀️. It also gives you a good feeling of how much more the software is capable of, and how much more you have to learn.
All that said, for me Fusion 360 was not the ideal solution. I prefer to use Ubuntu Linux as my main operating system, and Fusion 360 is not available on Linux. There is a web-based version, that runs inside Chrome or Chromium on Linux, but that is still work in progress for Autodesk, and quite limited in the set of features that it offers. The more viable option, was to run Fusion 360 inside a Windows virtual machine. That worked, but pushing against the limits of what my laptop could manage (I only have 16GB of RAM), and running inside a virtual machine was adding just enough friction to make the experience not great. I also had a niggling doubt about which rights the ‘hobbyist’ licence was actually giving me, and which not. For example, would I be allowed to share any 3D design on a web page that was generating revenue for anyone (e.g. by displaying ads)? Perhaps that’s permitted, but my list of hobbies does not include reading pages and pages of legalese, so I rather didn’t have to do that.
At this point I briefly considered FreeCad, but was put off by how all people doing video tutorials on YouTube felt the need to emphasise that it was open source software and bit rough around the edges, so we ‘shouldn’t be surprised if it crashed a bit’. I love open source as much as anyone, but life is finite, and a crashy piece of software is not fun for anyone!
When I first heard of OpenSCAD it sounded like a very weird proposition to me. This was a piece of 3D design software that didn’t really use a UI for designing the objects. What? Instead you would write code that specified the design. Really!? That concept made me think of my first computer, which was a Z80 Spectrum clone. I remember producing graphics by using loops and equations to set the colour of different pixels. That was tedious, and only possible because I had a lot more patience at that age!
The second time I heard about OpeSCAD (pronounced ‘open S-CAD’, BTW) was when I saw that Thingiverse Customizer relies on OpenSCAD to make designs that can be, well, customised, by the web site users. That was very cool, and gave me the encouragement I needed to get into learning and using OpenSCAD. I am really glad that I did!
The way you work with OpenSCAD is that you describe the design in a very simple language and, every time you save your code, the design is rendered for you so you can see if it looks as expected. You then go back to the code, make changes as required, save again, look at the output, and so on until you are done.
The real beauty of this is that your 3D design documents are actually computer code, similar to a Java or Python file. That means you can version control them using Git, and you can copy and paste from one to another. Even better than copying and pasting, you can define OpenSCAD modules, i.e. are basic pieces of design such as 2D shapes, or 3D objects that you can later import into other designs.
Thinking of designs as software code encourages you to use parameters to define important characteristics of your design, such as the diameter or length of a certain feature. That is called parametric design, and it is a very powerful feature, especially when used with modules. I will give some examples of that in future posts about OpenSCAD.