3D Printing

Playing with Antimony this week led me to 3D representations of text, and I ended up 3D printing the word "fabricate" revolved around its axis.

I was slotted to teach an Antimony session to my classmates but I still hadn't explored Antimony that much, so I started exploring the 2D→3D functions. Extruding is straightforward, and I'd used that before, but I hadn't played much with lofting or revolving.

Lofting interpolates between a pair of planar surfaces to create a solid. Text characters were a quick way to make a complicated shape, so I tried lofting a triangle into a letter. It looked pretty cool, so I spelled out a word this way and put the pieces together. Initially I'd built each lofted letter individually and then added them together, but this led to ugly corners at the edges between letters. I did it a second time and lofted a full word from a platform of triangles and it turned out nicely.

Since it was easy, I tried revolving the word, and I was surprised by how good it looked. It reminded me of a Google logo. (I tried revolving "Google" but it was unrecognizable.) As an abstraction of the word fabricate this revolved solid was a cool idea, but I wanted to make it clearer what the shape was. Initially I looked for a way to revolve a 2D shape only partway around an axis, but then I realized I wasn't thinking in Antimony's terms. The right way to go about it was to take the fully-revolved shape and cut away the parts I didn't want - the internally structure of the revolved letters was being maintained even if I only saw the external surface.

I cut away 90 degrees of the revolution and could see the word nicely. And I was glad Antimony hadn't given me a "revolve-270" command, because realizing that I should subtract shapes from the full revolution was powerful. I played with a couple other things.

I liked the simplicity of the 270 degree revolution, though, so I stuck with that for my first print job. I played with various words but had come to really like "fabricate," so I stuck with that. Since I'm rotating around the base of the word, letters that dip below the ground line become unrecognizable, so avoiding {g j p q y} is important. Words that started or ended with edges looked much better than having flat ends, so {b d h l} were out as first or last letters, and k couldn't start a word. I also wanted the word to stand up nicely, so at least one of its tallest letters had to occur on both sides of center - and if it was all short letters, that looked a bit boring. It turned out "fabricate" had been a pretty perfect word!

The exposed letters that read right-side-up were the most important features to come out nicely, so I oriented my solid to print those flat and facing upwards. I added two beams connecting the dot and the stem of the i and two more beams stringing all the letters together. I cut away the beam parts that would have been inside the letters.

The smallest thicknesses (those of the beams and letter strokes) were 1/40th the height of the solid and 1/100th the width. The beams were circular, though, and the letters had curves, so I wanted multiple voxels across this thickness. I exported the shape to meshes twice, once with 5 voxels spanning this distance and once with 10. The files were big, not surprisingly, 190 and 770 MB. I tried using the larger one in Cura, Ultimaker's 3D print slicing software, and though the program eventually loaded the mesh it was unresponsive to further commands. I switched to the smaller file and it was still painful to use: there were multiple-minute delays every time I changed a setting. But I didn't want to sacrifice any more fidelity so I stuck it out.

Examining other people's prints on the Ultimaker, it looked like the smallest thickness I could trust would be 1.5mm, and 2mm was safer. I set the shape to be 15cm long (so 1.5mm minimum thickness) and Cura predicted a 7 hour print time, which seemed a bit too much. I dialed the width to 13cm and brought the print time down to just over 5 hours, which seemed acceptable. I selected the quickprint settings and saved the machine path to an SD card, then stuck it in the Ultimaker.

The 3D printer was loaded with a gray filament but I found a red one that I liked better. Swapping filaments on the Ultimaker was straightforward. On the menu I selected "change" and it told me when I could pull out the existing filament, waited for me to insert a new one, and was easy to select the material. Initially it wasn't extruding, however, and I saw that it had ground down the filament next to the motor and wasn't being pushed further. Pushing on it manually didn't help, so I unloaded the material, cut an inch off the end, and loaded it back in. When the worn down piece of the filament reached the motor, I could push it across the boundary this time because the filament tip hadn't reached the nozzle yet. Loaded up again, the nozzle still wasn't extruding, and this time the feed gears kept clicking and resetting instead of pushing the filament. I googled this clicking noise and learned the nozzle probably wasn't hot enough, which was exactly correct - it even mentioned red PLA! Apparently the red has a higher melting point, so my general PLA settings weren't sufficient. I checked the roll of filament and learned I was on the low side - I'd been at 210 C and it recommended 210-230 C. I switched to 230 (and switched the plate from 60 to 65) and everything worked. It extruded a bit of gray residue that soon turned red and came out evenly. I'm pretty pleased with Ultimaker - I'd never set up a new material before or seen anyone do it, and it was nonetheless obvious, easy, and fast to set up and to troubleshoot.

I set it to print my revolved word and it did. Well, it almost did. For the first three hours everything proceeded perfectly.

But three and a half hours in I noticed the nozzle was moving a couple millimeters above the in-progress print, extruding nothing. Back behind the machine, the filament had slipped off the spool and started wrapping around the rod the spool spins on. Eventually it was too tight for the Ultimaker motor to pull against. A few millimeters' gap was too much for my print to recover from, and there was no way to rewind the tool path, so that print was as complete as it was going to get. It had gotten about three-quarters of the way done, counting the support material (Cura's 5h15m estimate had overshot things). So close! Oh well. I fixed the spool and started a new print.

Since I had three-quarters of my print, constituting a half-revolution of the word fabricate, it wasn't so bad looking. I cut away the support material and wispy carry threads using wire cutters. It took about an hour.

The bottommost parts of the print that had rested on the glass were squashed, flat, and shiny, and often snapping off the support walls had left white lines of sheered plastic, and I wanted to remove these. I tried sanding them away but it was ugly and a slow process. I got much better results using a soldering iron. Initially I set the iron to the printer nozzle temperature, 450 F, which was slow, but bumping it to 500 F worked great. I fixed the wide flat spots left by the glass, reconstructed the curves of my circles, and blended the wall remnants into their surroundings. Since the print hadn't finished, the hollow insides between the letter walls were exposed. It took a little while, but I closed over all the right-side-up letters so the two halves stood out. I was pretty happy with how it turned out.

This time the Ultimaker finished my complete print. It took 4 hours. Cleaning it, however, took almost as long! I spent three hours cutting away support material and stray filament strings, then another twenty minutes making small edits with the soldering iron.

Finally, though, I had my piece. It turned out sufficiently accurately that it rolls smoothly along the full 270 degrees of its back. All the letters stand out clearly, and they both form a concrete word and behave as abstract sculptural forms. I like it best when it's oriented upside-down to me so the word-ness doesn't overwhelm the abstract shapes. It's fun to roll back and forth, fun to look at from all sorts of angles, fun especially for the separated arc of the dot on the i. I like it.

Why stop there, though? I was weary of trimming support material, but the lofted-from-triangles word didn't require any supports. I swapped the Ultimaker filament to gray and printed out my earlier design. I ran into minor troubles with the plate being too cold and the first layers of the print peeling up - apparently Cura can encode nozzle and plate temperatures into the .gcode file it outputs, and these override whatever settings you've set the printer to - but I got it working. This print took a little over an hour and required pretty much no post-processing work. Not as nice as the revolved word, but a nice counterbalance. I'm impressed with how sharp the corners turned out.

As a final print for the day, while my revolved words had been printing I'd worked with my friend Ye to 3D-scan her hand giving a thumbs up. We used a Sense scanner, which is frankly pretty frustrating to use. I'd already used it a few times and had required a couple dozen attempts and over half an hour total to pull off a successful scan, and this time was no different. The computer application corresponding to the Sense tells you whether it's successfully tracking your object during the scan and it's incredibly finicky. Getting a full 360 degrees without it failing is challenging; I haven't figured out clear tricks. Anyway, eventually we'd gotten the hand. Sense supplies nice tools for deleting accidental background objects from the scan and interpolating gaps in the surface, so we did that. The first time she printed the mesh, though, the middle part of the hand was missing. Ye spent awhile in Rhino convincing the mesh to present the appropriate sides of the surface as the outside of the shape and eventually it all worked. It looked a lot like a Facebook Like in 3D and was pretty fun, so we set the machine to print 15 of them overnight and we went to sleep.

Overall it was a pretty good day.

Here is the Antimony file for the printable words. Also, here's the file for a twisted torus design I was playing with this week.