Move print bed to front at the end of a print rather than the back

  • I have a Monoprice Maker Select Plus, currently using Ultimaker Cura 3.6.0 with the default settings for a Wanhao Duplicator i3 Plus. Right now when a print finishes, the bed retreats towards the back of the machine. I'd rather present the bed forward for easier part removal.



    Here is my ending G-Code:



    M104 S0      ;extruder heater off 
    G91 ;relative positioning
    G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure
    G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more
    G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way
    M84 ;steppers off
    G90 ;absolute positioning


    It looks like I need to change that G28 line third from the bottom, but I'm not sure what to change it to. I've not yet done any g-code manipulation of my own. I don't know what units it's using, and it looks like it still has relative positioning, so even then I don't know it's a good idea to just set it for the max size of the bed.



    So how can I change this code to move the bed as I want?


  • 0scar

    0scar Correct answer

    3 years ago

    Note that this reference states that:




    Because the behavior of G28 is unspecified, it is recommended not to automatically include G28 in your ending GCode. On a Cartesian this will result in damaging the printed object. If you need to move the carriage at the completion of a print, use G0 or G1.




    So you need to use a G0 or G1 move.



    When using Ultimaker Cura (like many other slicers), there is built in functionality known as keywords with a complete list found here.



    The keyword machine_depth is the one that is of use to you, embed this in your end G-code in between curly brackets and it will expand to the bed size of your machine (replacing G28 X0 Y0):



    G1 X0 Y{machine_depth}



    For me this compiles to (e.g. for my coreXY printer):



    G1 X0 Y300



    To set the speed, just add the following command prior to the one above:



    G1 F2500



    Adding this line before the actual move ensures that the speed is constant, if F2500 would have been included in the move command (like G1 X0 Y{machine_depth} F2500), this defines the end speed, it would start moving at the last speed value prior to the move.



    This results in adding the following lines in your endscript:



    G1 F2500
    G1 X0 Y{machine_depth}

License under CC-BY-SA with attribution


Content dated before 7/24/2021 11:53 AM