My nice new printrbot Metal Plus (of which more some other time) has a bunch of holes in the kapton film on the build plate, and it’s my fault. I was trying to be smart, but I ended up stupid.
At first, I was controlling the printer using Repetier, but Repetier 1.06 is only sort of stable on my old ubuntu box, especially if I get into unplugging and replugging USB connectors attached to a bunch of things that might plausibly be 3D printers. So I tried Cura, which is reputed to be much simpler and even (in the most recent version) has a profile already customized for the Metal Plus.
Either too simple for me, or too complicated, I’m not sure. But the important thing is that Cura does pretty much everything behind the scenes. Every time you move your model, or rotate it or whatever, it reslices, so that all you have to do is push the print button. Which I did, and after the loooong wait for the bed and extruder to come to temperature, the head did a nice little homing dance, moved to the middle of the bed, laid down a couple of perfect perimeters and then started trying to dig the nozzle down through the bottom of the machine.
I was gobsmacked enough (and wondering “maybe it knows what it’s doing” ) that it took me a while to find the “cancel printing” button on on the little print dialog window. And then, because Cura has no manual controls unless you enable a special plugin for them, the nozzle kept trying to dig itself into the bed while I tried all the places I imagined a manual control might be, quit Cura, fired up Repetier, connected to the printer and finally cranked the Z up a few centimeters. It doesn’t look like any major damage to the bed, just to the tape (which I can patch or replace).
Support at Printrbot was quick and friendly, but when the guy at the other end of the email asked if I could send the gcode file I was trying to print, I realized that I have no clue where Cura stores the gcode it prints from, or if it even stores it. It makes new gcode every time you touch the model, so where does that gcode go? I fired up Cura again and explicitly saved a gcode file with the model in (mostly) the same position as before. That file doesn’t have any obvious “mash the nozzle into the bed” Z moves, but I have no idea whether that file is the same as the gcode Cura was trying to print from when things went awry. (Yes, it’s open source. I’m sure I could dig into the python and eventually find out how all the bits fit together. But then I still wouldn’t know for sure where the bug was unless I managed to put my model down on the bed in exactly the same way and then put another set of scrapes into the bed. Which I would prefer not to do.) Sometimes software that does everything for you does just a little too much.
So I’m off to the basement to snip and patch and see whether not-quite-so-smart Repetier will be able to print my file without messing up (in which case the problem is likely software) or I get another set of dings in the bed (in which case the problem is likely firmware or hardware). At least I know where the emergency stop button is.
Update: No, it turns out I’m the dumb one, and should have known better. The fancy software merely made it a little harder to figure out how stupid I was being. In short, when I cleared a filament jam by taking apart the extruder nozzle, I turned the tip 5/8 of a turn too little when reassembling, so that my Z offset was wrong by about seven tenths of a millimeter. Always recalibrate after putting things back together. (Albeit the recommended calibration method still would have led to a divot in the kapton, since it involves starting a print. I think instead you can send gcodes manually to command a safe height and measure it.)