Monday, April 22, 2019

Cura Lulzbot Edition - The Good, the Bad, and the Ugly

I've been using the "Lulzbot" version of Cura for the whole time I've been printing. It uses a different number versioning system than the original Ultimaker Cura. (I'll refer to it as Cura LE.)

I have an ancient desktop OSX machine that is still functioning. Apple maxed out its upgrades at 10.9.5 which has caused some small headaches that will only get worse. For now, it works. It handles Blender with ease. It's stable. There's old software that I don't have replacements for. And it is maxed out in Cura "Developer edition" through Lulzbot - a test build from August 2017...every upgrade I've tried to install has failed.

The Must-Solve Issue


Lately though, the 2017 Cura LE has been problematic. The amazing Micro .25 SL toolhead prints fine objects with an uneven top relatively well. Sometimes on the bottom, the walls don't meet up with the infill, but it's been mostly minor. But give Cura LE a flat top, and...it gets bad.

You can see the bottom dino meeples have what appears to be support showing through - it's actually the top printing layer...and does not get any better than that.

Dinosaurs on the top, showing the "best results" for the side on the printer bed.
Dinosaurs on the bottom showing bad cross-hatching/spiraling for their top layer.

On this T(eal) Rex, you can also see the wall not meeting up with infill. Photo is a little blurry, not the dinosaur's fault...it wasn't moving THAT fast.

T-Rex from the printer bed side - walls and infill separating

The older Cura LE is fine for printing with the .5mm nozzle, and the Micro *could* print okay on non-flat surfaces, but why make bad prints if you can solve it? Incidentally, the upcoming experience has been summarized. I probably burned about 6-8 hours this weekend troubleshooting the logs, then trying various solutions.

The Good (eventually) - Ubuntu 18.04

Let's start with the Good — this morning I managed to get my laptop running Ubuntu 18.04 to run "one-step behind current", i.e. Cura LE 3.2.32. I finally have access to ironing, in case that was necessary for the fix (it wasn't necessary to resolve the surface issues, but it's nice). The best stories are one with an element of hope.

The Bad - OSX 10.9.5

Don't bother, it's not going to work. (I tried the various OSX installs on the Lulzbot site.) Some versions would just crash and terminate, not generating a log. The best case scenario, was when it generated a log as it failed to launch. You can poke around Console>Applications>cura (stderr.log) and learn some troubleshooting.

The "useful" error log:

  File "cura/CrashHandler.pyc", line 17, in <module>
ImportError: dlopen(/Applications/cura-lulzbot.app/Contents/Resources/lib/python3.5/lib-dynload/PyQt5/QtCore.so, 2): Symbol not found: _LSCopyDefaultApplicationURLForURL
  Referenced from: /Applications/cura-lulzbot.app/Contents/MacOS/../Frameworks/libQt5Core.5.9.1.dylib
 in /Applications/cura-lulzbot.app/Contents/MacOS/../Frameworks/libQt5Core.5.9.1.dylib
  File "/Applications/cura-lulzbot.app/Contents/Resources/__boot__.py", line 81, in <module>
  File "/Applications/cura-lulzbot.app/Contents/Resources/__boot__.py", line 66, in _run
  File "/Applications/cura-lulzbot.app/Contents/Resources/cura_app.py", line 86, in <module>
    import cura.CuraApplication
  File "cura/CuraApplication.pyc", line 4, in <module>
ImportError: dlopen(/Applications/cura-lulzbot.app/Contents/Resources/lib/python3.5/lib-dynload/PyQt5/QtNetwork.so, 2): Symbol not found: _LSCopyDefaultApplicationURLForURL
  Referenced from: /Applications/cura-lulzbot.app/Contents/MacOS/../Frameworks/libQt5Core.5.9.1.dylib
 in /Applications/cura-lulzbot.app/Contents/MacOS/../Frameworks/libQt5Core.5.9.1.dylib

It turns out that the modern libraries of PyQt5 (Qt 5.10+?) aren't compatible with 10.9.5. This won't stop someone from publishing software that "works" with 10.9.5...their code is fine. It's just PyQt5 that will reject you. There's a suggestion of this problem here: https://github.com/Ultimaker/Cura/issues/4466

The Ugly - Back to Ubuntu 18.04


How can it be both Good and Ugly? Because it is. I'm pretty sure that the Lulzbot developers are Debian folks. The Ubuntu instructions...*should* work. "Jessie" is Debian 8, "Stretch" is Debian 9, and "Buster" is Debian 10...what is Ubuntu 18.04? (You can check /etc/debian_version and find out.) Buster! So...it should be easy enough. But if it's ugly, clearly there is something up.

It turns out that their most recent (3.6.3) Buster build doesn't work with 18.04. (If you want to skip ahead to the solution, go to the Lulzbot site here and grab the older 3.2.32. Afterward, go to the directory you downloaded it to, and enter this command - "sudo dpkg -i cura-lulzbot_3.2.32_amd64.deb") The current Cura LE 3.6.3 is looking for a file (GLIBC_2.28), and Ubuntu 18.04 uses GLIBC_2.27. (The event viewer for Ubuntu 18.04 is called Gnome Logging, and you can find it as an application installed on the general build.) The problem is called out in the Cura backlog, but I don't expect it to be fixed again (although it had been previously fixed the 3.2.32 version) Someone else mentioned the same solution here: Ultimaker Cura github page. (Basically, use 3.2.32, install command is done differently.)

You might be able to install 3.6.3 by using "sudo apt-get install glib2.0", to get GLIBC_2.28. I'm not an expert on Linux, and don't know what it could break. (For the most part, I use my laptop for internet, and for portable Blender/Cura...easily refreshed if I needed to do a clean reinstall.) If I hadn't spent the time setting up preferences and printers in 3.2.32, I would go back and try it.

So...what does this mean?

If you're not running straight Debian, you might be stuck with 3.2.32. I wouldn't get too hung up...3.2.32 and ironing seems to work just fine. At least the ironed T-Rex on the left thinks so...

Ironed T-Rex on the left, regular 3.2.32 T-Rex on the right


Credits:

The T-Rex meeple was remixed (thickened) from here: https://www.thingiverse.com/thing:2749410
The Teal PETG is Polymaker's PolyLite.
The Stegosaurus meeple was taken from here: https://www.thingiverse.com/thing:2749406
The Silver PETG is Filastruder.
The Triceratops meeple was remixed (thickened) from here: https://www.thingiverse.com/thing:2749413
The Orange PETG is leftover from MakerGeeks. Sadly, I can't recommend shopping with them anymore...6+ months of not fulfilling an order, I'm still unhappy about that. Used to be so great.

Wednesday, April 17, 2019

Using Blender to take a 2D image into a 3D cutout

One of the easiest and most magical things, is the speed at which you can turn an image into a 2D mesh object with depth. Calling it 3D is...tough — it doesn't turn a cutout image into a full-formed velociraptor!


This is a phone stand, remixed from a phone holder on Thingiverse — although I also added an extra piece below the holder, to make it more stable. The cutout of the velociraptor is from an image that looked like this:


Once you have the image (jpeg, png, whatever), take it to a (free) website that converts images to SVG - scalable vector graphics format. There's also techniques where you use Inkscape or Adobe Illustrator, but the free websites are pretty much drag-drop-convert.

In Blender, use File>Import to import the SVG.  It will be a microscopic "curve". I typically scale it in x/y about by *40. Important next step: Object>Apply>Scale. If you skip this, it will do crazy things to your object. Object>Convert to "Mesh from Curve/etc". This will turn the curve into a regular mesh. Next, Add Modifier>Solidify>Thickness = 1, and apply it. This gives the mesh depth, instead of just being a plane. It's solid black, which is hard to see details...under Materials, I used the slider to make it gray.



At this point, your image is now a 2D object with depth. If you weren't doing this project in your main blender file, save it, open your main blender file, and then Append>[filepath/file]>Objects>[objectname]. It should be listed in your Scene now, as a mesh object.

I thickened it to about 5mm, Object>Transform>Snap>Origin to Geometry, and then in Orthographic mode, clicked through keypad 1/3/7, adjusting the orientation and rotation of the cutout piece. (For example, in the phone stand, rotated it 90 degrees while looking from above. From the side of the stand, rotated it 55 degrees to match the plane of the upper part of the stand. Once you have your object aligned, scaled, and rotated...I usually hide it, then select the primary object. Add Modifier>Boolean>Difference, then apply.

You're stamping through the main object - make sure nothing is left hanging. For example, if you look at the capital letter "A", If you stamp an "A" through an object, that triangle in the upper half is going to be hanging in mid-air. (Maybe you have your stamp go halfway through the wall of the primary object.) An example of this is another stand, using a Zelda-based image:


Part of the FDM printing process, behind the Zelda icon...the back wall was not a clean print. Probably because the stamp almost went through the wall. A thicker wall, or a shallower boolean could have eliminated it. Not really a problem, as people aren't going to see that back wall, but an imperfection.





Monday, April 1, 2019

Flexible Filament (and buying a printer from Craigslist)

October 2018, I listed a bunch of filaments and my experiences with them. It was an older post than that, but had never gotten around to posting before then...and it was correct for the time. I had picked up some flexible filament earlier in 2018 as well as a toolhead to print flexible filament...but didn't get around until this past month.

The Craigslist Printer from February 2018



When I bought my (used)backup Lulzbot Mini from Craigslist, it was $1000 for the printer, and a spare flexystruder head (which at the time was about $300, designed for TPU use). I paid the guy an extra $40 or so for the remains of his two Ninjaflex (TPU) spools. He had been posting the printer locally for several months without buyers, and I had negotiated the flexystruder head in with his original price of $1000.

Was it a good deal?

Kind of. New retail for 1.04 at the time was $1250, plus tax. The Flexystruder head at the time was $275 — it was the only way a Mini could print flexible filament. The Ninjaflex, was probably break-even, maybe trending towards not. Within 4 months, the glass bed cracked. I also noticed that the "scrub" phase of warmup, it would knock into the plastic frame that held the scrub pad. (And he must have printed a replacement frame.)

Fixing up the Craigslist printer


My 1.03 Mini was 18 months in, and its glass was still good. (I actually stole that bed to the Craigslist one, because the 1.03 was out of commission. It's now over 30 months in use, so maybe the seller didn't treat his 1.04 right. I printed a new scrub pad frame, and manually edited the startup gcode to rub on the pad correctly. (This is awkward, because I have to check a text file every time I tamper with the printer's settings.)

When I bought the printer from Craigslist, I did have the guy run through a sample print, so I could see warm-up and first layers. I just missed the scrub issue. (And forgot the printer came with a putty knife, single-ended pick.) It wasn't the worst deal, but 4-5 months later, Lulzbot announced the Mini 2, and I picked up a refurbished Mini 1.04 from them for $1000. No issues with that one.

I guess I still have the Flexystruder head. And the Ninjaflex. I never got around to swapping out a head to print it. I wasn't really sure what I wanted to print, that would be worth the time to swap the head in and out and change settings around.

Remember the Micro .25 SL toolhead from three months ago (December 2018)? In addition to printing normal filament, it can also print 3mm flexible filament. (I have two 1.04 machines, the refurbished "standard" machine, and the other with the Micro toolhead. The original 1.03 is still in the closet, waiting for me to fix the z-axis.)

Trying out Flexible Filament aka TPU


The orange "Cheetah" line of Ninjaflex was nothing short of magic. 230 degrees, just like PETG. The bed was 40 degrees. Printed very easily, with a little bit of extra stringing. With two shells, and 20% infill it was spongy but firm (for a solid object). The filament feels similar - it has a slight give, but firm overall. If you flick it, there's a bit of bounce as it returns to its semi-rigid state.

I printed a voronoi-style ball, about 3.5cm across - it bounces a little. The TPU also made for an excellent 20-sided die, with just the right amount of bounce.

The white Ninjaflex was probably a more generic TPU. It was much more flexible. Printing a solid object like the orange TPU, you could definitely tell it was a soft version...you could gently pinch the same model and it would collapse all the way through. It was still solid — I couldn't tear it apart with my fingers. The solid object would still stand upright and not deform. More stringing occurred than with the orange.

Swapping out TPU seemed problematic. It felt like it was harder to get the initial flow correct, and also difficult to swap back out to PETG. Normally switching from one PETG color to another PETG, is usually 60 mm of extrude to flush out the previous filament. After 120, there were still bits of PETG in the TPU. I probably won't be going back-and-forth between the two often, but it's much easier than swapping in toolheads (maybe a 30-minute process, and then another 30 to verify all of the settings are correct.)

Overall, the Cheetah was really good. I could see using that in designs. The more basic white was flimsy feeling. I'm sure it has a purpose, but something to design for.