Automatically remove prints with the toolhead

Has anyone here experimented on removing the print remotely by moving the toolhead via the app? I have been considering it, because it would be very nice to just get it off the heatbed when it is done and cooled down. As long as the print is not using the last 2 cm in the back, or in the corners or sides, I think it shall be possible. However, it is quite cumbersome, because you cannot home it (the home movement is just straight down), and for every cm you move, you have to close a warning that you should home before moving, to avoid moving beyond the printable boundary and causing equipment wear. That also makes it hard to know how far you can move to the sides, if you have a large print.

I am not very comfortable changing the gcode, but would it be possible to make it so that it waits for 15 minutes (or better: to a set bed temperature) to cool down, and then goes all the way to the back right corner (because that is most off of the heatbed), before lowering to the very lowest, and then slowly moving diagonally to the front left corner? I think this would move the print off of the bed in most cases, and a new print can be started remotely (or even better, automatically, but that would of course be even more risky). The only problem is that we must remember to not use the back right corner for printing, and if we print small models, they have to be along the diagonal line to be removed by the toolhead.

I have the A1 mini, but I suspect this could work just as well for the A1 and probably all of the printers.

1 Like

You probably could go into the g-code and have it wait for the PEI to cool then hit it off. As long as you wait for it to cool fully I see no issue with it.

If you do end up trying let me know how it goes!

I found an issue, after trying to do it manually via the app: My printer is on the very side of the table, and the print will likely fall off and hit the floor. It made me wonder if it is possible to make a gcode file that can be “printed” just like any other file, but without homing and doing all other pre-work before starting. Then I could just start that file as the next print when I need a clean bed and know that it is safe. I don’t know if that is possible to make, but I think it would be the best solution. However, it would require the toolhead to know where it is, and that might be impossible without homing? Maybe it is possible to make an alternativ g-code for homing, but this looks harder and harder to do in a safe and practical way for a guy that has little experience with gcode

1 Like

I have just tried this remotely from my desk at work.

my print finished hours ago, so is well cooled now, but for some reason when i move the bed to knock off the print it wont move once it tocuhes the toolhead

1 Like

Did you see this? There are a few versions for the A1 Mini only out there.

And this one is ready to purchase I believe:

Hi, you can go multiple approaches. For instance add it to engcode directly and it will be executed by default after print ends. Just make sure to add a gcode wait-command before starting clearing-code. Unfortunately you can’t controll it by temperature on BambuLab printers (at list I failed trying it).
Other approach is simply open some 3mf file with a zip app, navigate to Metadata, plate_01.gcode or something, remove printing data and homing commands and replace it with your clearing gcode. Then pack it back to 3mf and now you have some file which you can open with you slicer and send to printer in order to execute the code inside. This will also give the advantage that this clearing 3mf file still remain in your HandyApp print history and you can restart it anytime also from your smartphone.
Since you will execute it after a successful print the homing is not necessary, because printer still know last coordinates.
In case when you need to being able execute this clearing code even when printer don’t know it’s position (eg. after power outage or something) you can use a hack by driving z to its positive maximum (eg. Z186) and home only XY. This will cause some noise but not dramatic and you have a homed Z without touching the plate.

…and yes, swapmod is finally available for preorder at swap-systems.com :grin::shopping_cart:

1 Like

Do you have the gcode for this for the a1 mini?

no, have not tried it on A1 mini.

1 Like

Just make sure to not end up like me and force any of the hot end against the print or boundary or you’ll end up with a broken axis motor.

I’ve just started experimenting in this field with incremental success. There exist some paid services out there that provide all the GCODE modification you need, but I’m cheap so I asked AI. There’s also some files that you can print which tilt the printer so that the print rolls in a semi-controlled fashion, and help with scraping it off the bed. Below is the GCODE I’ve been using:

; ========== COOL DOWN AND EJECT ==========

M104 S0 ; Set hotend temperature to 0°C
M140 S0 ; Set bed temperature to 0°C
G4 P1200000 ; Pause for 20 min (1,200,000 ms)

; Vibrate bed to loosen parts
M970.3 Q1 A7 K0 O2
M970 Q0 A10 B50 C90 H15 K0 M20 O3

; Scrape parts off the bed
G1 X25 Y185 F18000 ; Move to back-left
G1 Z0.2 F900 ; Lower nozzle near bed
G1 X25 Y-1 F500 ; Push parts forward
G1 X25 Y185 F18000 ; Return
G1 X75 Y185 F18000 ; Start next column
G1 X75 Y-1 F500 ; Push next column
G1 X75 Y185 F18000
G1 X125 Y185 F18000
G1 X125 Y-1 F500
G1 X125 Y185 F18000
G1 X175 Y185 F18000
G1 X175 Y-1 F500 ; Final push

;========== REPRINT GCODE HERE ==========

In order to use this, you tell Bambu Studio to export the .3mf to a folder you specify, then use your favorite un-zipper app to extract the contents. In the “Metadata” folder you’ll see a file of the type GCODE that’s named something like plate_1 (I haven’t tried this with multi-plate prints yet…). Open that GCODE file with a text editor, I use Notepad++ because of its handy features for searching and selecting.

I’ve been selecting the whole block of code from initialization (right after the little song it plays, thankfully the code is well-notated) all the way down to a line that reads “G1 X0 Y90 F18000 ; move to safe pos.” You’ll want to put that code snippet right after this line. Then I copy the GCODE I’ve selected into a new file named plate_1_justGCODE and paste that reprint code from above onto the end also. Basically, when it finishes printing you tell the printer to shut down the heaters and wait twenty minutes. Then it starts a push routine which “gently” slides the extruder into your prints and off the front of the machine. Put a spool box there and you’ve got a print farm!

Copy and paste this modified GCODE back into your original file at the appropriate spot as many times as you would like to reprint things, then importantly save the file in its original format. If you save it as a text file, the printer won’t be able to read it (ask me how I know lol). I also went and located the line that contains “; draw short stabilization pattern” and edited the Y coordinate in that block of code for each successive print, this moves the small purge line the printer makes before printing the file. Now you’ve got to go back to your un-zipper app (I’ve been using 7zip), open the archive and drop your new GCODE file in, replacing the original one.

Now you can either drag the .3mf file onto your SD card from within file explorer, or open the 3mf in Bambu Studio and upload it (I haven’t tried this second option yet, but I have opened the modified file and checked the print sequence bar on the side. The time estimates seem to be correct, and theoretically it should just upload like any other project file…)

Play around with how long it waits, I’ve only been using this on small parts so they tend to come off ok. As the build plate cools, you might hear a slight clicking or popping of the part starting to break free from the texture of the build plate. I suggest being present for your first go-around, just to make sure you’ve got the appropriate wait time set and that you’ve moved the purge line far enough away to not get stuck on the extruder nozzle. Have fun!