##################################################################### # Customized standard macros ##################################################################### # # !!! Caution !!! # # PROBE_CALIBRATE can not dock the Magprobe automatically, as it # start's a scripting process we need to stop at the execution # of the base macro. Use # - PROBE_ABORT # - PROBE_ACCEPT # instead of the original ABORT and ACCEPT to also dock the probe # # - BED_MESH_CALIBRATE # - G0 # - G1 # - QUAD_GANTRY_LEVEL ##################################################################### ## BED_MESH_CALIBRATE [gcode_macro BED_MESH_CALIBRATE] description: Perform QGL and bed mesh leveling rename_existing: _BED_MESH_CALIBRATE_BASE gcode: ##### get params and prepare to send them to the base macro ##### {% set get_params = [] %} {% for key in params %} {% set get_params = get_params.append(key + "=" + params[key]) %} {% endfor %} ##### end of definitions ##### _CG28 BED_MESH_CLEAR ## check if QGL was already executed {% if printer.quad_gantry_level.applied|lower == 'false' %} QUAD_GANTRY_LEVEL PARK=false {% endif %} ATTACH_PROBE _BED_MESH_CALIBRATE_BASE {get_params|join(" ")} DETACH_PROBE ## GO # If your probe needs a Z move for attach/detach use either # G0 .... FORCE [gcode_macro G0] description: Move gcode that prevents moves lower than the limit when probe attached rename_existing: G0.1 gcode: ##### set manual override ##### {% if 'FORCE' in params|upper %} {% set force = 1 %} {% else %} {% set force = 0 %} {% endif %} ##### get params ##### {% set get_params = [] %} {% for key in params %} {% if key is not in ['G', 'FORCE'] %} ;G1/G0 is also seen as parameter {% set get_params = get_params.append(key + "=" + params[key]) %} {% endif %} {% endfor %} ##### add caller ##### {% set tmp = get_params.append("CALLER=G0") %} ;hack to append list objects outside of a loop ##### add force ##### {% set tmp = get_params.append("FORCE=" + force|string) %} ;hack to append list objects outside of a loop ##### end of definition ##### {% if printer['gcode_macro _MAG_PROBE'].state|lower == 'unknown' and force == 0 %} _MAG_PROBE ACTION=GET_STATUS RESPOND=0 {% endif %} _Z_MOVE_CHECK {get_params|join(" ")} ## TODO ## G1 # If your probe needs a Z move for attach/detach use either # G1 .... FORCE # [gcode_macro G1] # description: Move gcode that prevents moves lower than the limit when probe attached # rename_existing: G1.1 # gcode: # ##### set manual override ##### # {% if 'FORCE' in params|upper %} # {% set force = 1 %} # {% else %} # {% set force = 0 %} # {% endif %} # ##### get params ##### # {% set get_params = [] %} # {% for key in params %} # {% if key is not in ['G', 'FORCE'] %} ;G1/G0 is also seen as parameter # {% set get_params = get_params.append(key + "=" + params[key]) %} # {% endif %} # {% endfor %} # ##### add caller ##### # {% set tmp = get_params.append("CALLER=G1") %} ;hack to append list objects outside of a loop # ##### add force ##### # {% set tmp = get_params.append("FORCE=" + force|string) %} ;hack to append list objects outside of a loop # ##### end of definition ##### # {% if printer['gcode_macro _MAG_PROBE'].state|lower == 'unknown' and force == 0 %} # _MAG_PROBE ACTION=GET_STATUS RESPOND=0 # {% endif %} # _Z_MOVE_CHECK {get_params|join(" ")} ## QUAD_GANTRY_LEVEL [gcode_macro QUAD_GANTRY_LEVEL] description: Level a flying gantry to a stationary bed rename_existing: _QUAD_GANTRY_LEVEL gcode: ##### get user defines ##### {% set park_pos = printer['gcode_macro _USER_VARIABLE'].park_bed %} {% set z_hop = printer['gcode_macro _USER_VARIABLE'].z_hop|float %} ##### get toolhead position ##### {% set act_z = printer.toolhead.position.z|float %} ##### set default ##### {% set park = params.PARK|default('true') %} ##### end of definitions ##### # home all axes if not already {% if "xyz" not in printer.toolhead.homed_axes %} _CG28 {% endif %} SAVE_GCODE_STATE NAME=STATE_QUAD_GANTRY_LEVEL _SET_ACC VAL=HOME _SET_CURRENT VAL=HOME _CG28 RESET_SETTINGS=false {% if act_z < z_hop %} G1 Z{z_hop} F900 ; move head up to insure Probe is not triggered in error case {% endif %} ATTACH_PROBE _QUAD_GANTRY_LEVEL {% if params.CALIBRATE|default('false') == 'true' %} CALIBRATE_Z RESET_SETTINGS=false {% else %} DETACH_PROBE {% endif %} #G28 Z {% if params.RESET_SETTINGS|default('true') == 'true' %} _SET_CURRENT _SET_ACC {% endif %} {% if park|lower == 'true' %} G90 G0 Z{park_pos[2]} F1800 ; move nozzle to z high first G0 X{park_pos[0]} Y{park_pos[1]} F18000 ; home to get toolhead in the middle {% endif %} RESTORE_GCODE_STATE NAME=STATE_QUAD_GANTRY_LEVEL