# generated by PrusaSlicer 2.9.4 on 2026-05-03 at 15:39:47 UTC [printer:MK4S 0.4 nozzle] autoemit_temperature_commands = 1 bed_custom_model = bed_custom_texture = bed_shape = 0x0,250x0,250x210,0x210 before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\nM201 X{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (20000,2500))} Y{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (20000,2500))}\n between_objects_gcode = binary_gcode = 1 color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change cooling_tube_length = 5 cooling_tube_retraction = 91.5 custom_parameters_printer = default_filament_profile = "Prusament PLA @MK4S" default_print_profile = 0.20mm SPEED @MK4S 0.4 deretract_speed = 25 end_gcode = {if layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X241 Y170 F3600 ; park\n{if layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+23, max_print_height)} F300 ; Move print head up{endif}\nG4 ; wait\nM572 S0 ; reset PA\nM593 X T2 F0 ; disable IS\nM593 Y T2 F0 ; disable IS\nM84 X Y E ; disable motors\n; max_layer_z = [max_layer_z]\n\nM405 ; filament sensor on\n extra_loading_move = -2 extruder_clearance_height = 13 extruder_clearance_radius = 45 extruder_colour = "" extruder_offset = 0x0 gcode_flavor = marlin2 high_current_on_filament_swap = 0 host_type = prusalink inherits = Original Prusa MK4S 0.4 nozzle layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]\n{if ! spiral_vase}M74 W[extruded_weight_total]{endif}\n machine_limits_usage = emit_to_gcode machine_max_acceleration_e = 2500,2500 machine_max_acceleration_extruding = 4000,2500 machine_max_acceleration_retracting = 2500,2500 machine_max_acceleration_travel = 4000,2500 machine_max_acceleration_x = 4000,2500 machine_max_acceleration_y = 4000,2500 machine_max_acceleration_z = 200,200 machine_max_feedrate_e = 100,100 machine_max_feedrate_x = 300,160 machine_max_feedrate_y = 300,160 machine_max_feedrate_z = 40,40 machine_max_jerk_e = 10,10 machine_max_jerk_x = 8,8 machine_max_jerk_y = 8,8 machine_max_jerk_z = 2,2 machine_max_junction_deviation = 0,0 machine_min_extruding_rate = 0,0 machine_min_travel_rate = 0,0 max_layer_height = 0.3 max_print_height = 220 min_layer_height = 0.07 multimaterial_purging = 140 nozzle_diameter = 0.4 nozzle_high_flow = 0 parking_pos_retraction = 92 pause_print_gcode = M601 prefer_clockwise_movements = 0 print_host = printer_model = MK4S printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_MODEL_MK4S\nPG\nNO_TEMPLATES printer_settings_id = printer_technology = FFF printer_variant = 0.4 printer_vendor = printhost_apikey = printhost_cafile = remaining_times = 1 retract_before_travel = 1.5 retract_before_wipe = 80% retract_layer_change = 1 retract_length = 0.7 retract_length_toolchange = 0 retract_lift = 0.2 retract_lift_above = 0 retract_lift_below = 219 retract_restart_extra = 0 retract_restart_extra_toolchange = 0 retract_speed = 35 silent_mode = 1 single_extruder_multi_material = 0 start_gcode = M405 ; filament sensor on\n\nM17 ; enable steppers\nM862.1 P[nozzle_diameter] A{(filament_abrasive[0] ? 1 : 0)} F{(nozzle_high_flow[0] ? 1 : 0)} ; nozzle check\nM862.3 P "[printer_model]" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM115 U6.5.3+12780\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*MBL160.*/) ? 160 : (filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*MBL160.*/) ? 160 : (filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X42 Y-4 Z5 F4800\n\nM302 S155 ; lower cold extrusion limit to 155C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[0]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[0]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X25 E4 F500 ; purge\nG0 X35 E4 F650 ; purge\nG0 X45 E4 F800 ; purge\nG0 X48 Z0.05 F8000 ; wipe, move close to the bed\nG0 X51 Z0.2 F8000 ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100%\n template_custom_gcode = thumbnails = 16x16/QOI, 313x173/QOI, 480x240/QOI, 380x285/PNG thumbnails_format = PNG toolchange_gcode = travel_lift_before_obstacle = 0 travel_max_lift = 1.5 travel_ramping_lift = 1 travel_slope = 1 use_firmware_retraction = 0 use_relative_e_distances = 1 use_volumetric_e = 0 variable_layer_height = 1 wipe = 0 z_offset = 0 [printer:MK4S HF0.4 nozzle] autoemit_temperature_commands = 1 bed_custom_model = bed_custom_texture = bed_shape = 0x0,250x0,250x210,0x210 before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\nM201 X{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (20000,2500))} Y{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (20000,2500))}\n between_objects_gcode = binary_gcode = 1 color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change cooling_tube_length = 5 cooling_tube_retraction = 91.5 custom_parameters_printer = default_filament_profile = "Prusament PLA @HF0.4" default_print_profile = 0.20mm SPEED @MK4S HF0.4 deretract_speed = 25 end_gcode = {if layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X241 Y170 F3600 ; park\n{if layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+23, max_print_height)} F300 ; Move print head up{endif}\nG4 ; wait\nM572 S0 ; reset PA\nM593 X T2 F0 ; disable IS\nM593 Y T2 F0 ; disable IS\nM84 X Y E ; disable motors\n; max_layer_z = [max_layer_z]\n\nM405 ; filament sensor on\n extra_loading_move = -2 extruder_clearance_height = 13 extruder_clearance_radius = 45 extruder_colour = "" extruder_offset = 0x0 gcode_flavor = marlin2 high_current_on_filament_swap = 0 host_type = prusalink inherits = Original Prusa MK4S HF0.4 nozzle layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]\n{if ! spiral_vase}M74 W[extruded_weight_total]{endif}\n machine_limits_usage = emit_to_gcode machine_max_acceleration_e = 2500,2500 machine_max_acceleration_extruding = 4000,2500 machine_max_acceleration_retracting = 2500,2500 machine_max_acceleration_travel = 4000,2500 machine_max_acceleration_x = 4000,2500 machine_max_acceleration_y = 4000,2500 machine_max_acceleration_z = 200,200 machine_max_feedrate_e = 100,100 machine_max_feedrate_x = 300,160 machine_max_feedrate_y = 300,160 machine_max_feedrate_z = 40,40 machine_max_jerk_e = 10,10 machine_max_jerk_x = 8,8 machine_max_jerk_y = 8,8 machine_max_jerk_z = 2,2 machine_max_junction_deviation = 0,0 machine_min_extruding_rate = 0,0 machine_min_travel_rate = 0,0 max_layer_height = 0.3 max_print_height = 220 min_layer_height = 0.07 multimaterial_purging = 140 nozzle_diameter = 0.4 nozzle_high_flow = 1 parking_pos_retraction = 92 pause_print_gcode = M601 prefer_clockwise_movements = 0 print_host = printer_model = MK4S printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_MODEL_MK4S\nPG\nHF_NOZZLE\nNO_TEMPLATES printer_settings_id = printer_technology = FFF printer_variant = HF0.4 printer_vendor = printhost_apikey = printhost_cafile = remaining_times = 1 retract_before_travel = 1.5 retract_before_wipe = 80% retract_layer_change = 1 retract_length = 0.7 retract_length_toolchange = 0 retract_lift = 0.2 retract_lift_above = 0 retract_lift_below = 219 retract_restart_extra = 0 retract_restart_extra_toolchange = 0 retract_speed = 35 silent_mode = 1 single_extruder_multi_material = 0 start_gcode = M405 ; filament sensor on\n\nM17 ; enable steppers\nM862.1 P[nozzle_diameter] A{(filament_abrasive[0] ? 1 : 0)} F{(nozzle_high_flow[0] ? 1 : 0)} ; nozzle check\nM862.3 P "[printer_model]" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM115 U6.5.3+12780\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*MBL160.*/) ? 160 : (filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*MBL160.*/) ? 160 : (filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X42 Y-4 Z5 F4800\n\nM302 S155 ; lower cold extrusion limit to 155C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[0]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[0]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X25 E4 F500 ; purge\nG0 X35 E4 F650 ; purge\nG0 X45 E4 F800 ; purge\nG0 X48 Z0.05 F8000 ; wipe, move close to the bed\nG0 X51 Z0.2 F8000 ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100%\n template_custom_gcode = thumbnails = 16x16/QOI, 313x173/QOI, 480x240/QOI, 380x285/PNG thumbnails_format = PNG toolchange_gcode = travel_lift_before_obstacle = 0 travel_max_lift = 1.5 travel_ramping_lift = 1 travel_slope = 1 use_firmware_retraction = 0 use_relative_e_distances = 1 use_volumetric_e = 0 variable_layer_height = 1 wipe = 0 z_offset = 0 [printer:XL - 5T Input Shaper 0.4 nozzle] autoemit_temperature_commands = 1 bed_custom_model = bed_custom_texture = bed_shape = 0x0,360x0,360x360,0x360 before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\n\n between_objects_gcode = binary_gcode = 1 color_change_gcode = M600 cooling_tube_length = 5 cooling_tube_retraction = 91.5 custom_parameters_printer = default_filament_profile = "Prusament PLA @XLIS" default_print_profile = 0.20mm SPEED @XLIS 0.4 deretract_speed = 25,25,25,25,25 end_gcode = G4 ; wait\n\n{if layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+5, max_print_height)}{endif} ; Move bed down\n\nP0 S1 ; park tool\n\n{if layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+97, max_print_height)} F300{endif} ; Move bed further down\n\n; turn off extruder heaters\n{if is_extruder_used[0]}M104 T0 S0{endif}\n{if is_extruder_used[1]}M104 T1 S0{endif}\n{if is_extruder_used[2]}M104 T2 S0{endif}\n{if is_extruder_used[3]}M104 T3 S0{endif}\n{if is_extruder_used[4]}M104 T4 S0{endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM221 S100 ; reset flow percentage\nM84 ; disable motors\nM77 ; stop print timer\n; max_layer_z = [max_layer_z]\n\nM405 ; filament sensor on\n extra_loading_move = -2 extruder_clearance_height = 21 extruder_clearance_radius = 67 extruder_colour = #FF8000;#DB5182;#3EC0FF;#FF4F4F;#FBEB7D extruder_offset = 0x0,0x0,0x0,0x0,0x0 gcode_flavor = marlin2 high_current_on_filament_swap = 0 host_type = prusalink inherits = Original Prusa XL - 5T Input Shaper 0.4 nozzle layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z] machine_limits_usage = emit_to_gcode machine_max_acceleration_e = 2500,2500 machine_max_acceleration_extruding = 4000,2500 machine_max_acceleration_retracting = 1200,1200 machine_max_acceleration_travel = 5000,2500 machine_max_acceleration_x = 7000,2500 machine_max_acceleration_y = 7000,2500 machine_max_acceleration_z = 200,200 machine_max_feedrate_e = 100,100 machine_max_feedrate_x = 400,140 machine_max_feedrate_y = 400,140 machine_max_feedrate_z = 12,12 machine_max_jerk_e = 10,10 machine_max_jerk_x = 8,8 machine_max_jerk_y = 8,8 machine_max_jerk_z = 2,2 machine_max_junction_deviation = 0,0 machine_min_extruding_rate = 0,0 machine_min_travel_rate = 0,0 max_layer_height = 0.3,0.3,0.3,0.3,0.3 max_print_height = 360 min_layer_height = 0.07,0.07,0.07,0.07,0.07 multimaterial_purging = 140 nozzle_diameter = 0.4,0.4,0.4,0.4,0.4 nozzle_high_flow = 0,0,0,0,0 parking_pos_retraction = 92 pause_print_gcode = M601 prefer_clockwise_movements = 0 print_host = printer_model = XL5IS printer_notes = Do not remove the keywords below.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_XLIS\nPG\nINPUT_SHAPER printer_settings_id = printer_technology = FFF printer_variant = 0.4 printer_vendor = printhost_apikey = printhost_cafile = remaining_times = 1 retract_before_travel = 1.5,1.5,1.5,1.5,1.5 retract_before_wipe = 80%,80%,80%,80%,80% retract_layer_change = 1,1,1,1,1 retract_length = 0.8,0.8,0.8,0.8,0.8 retract_length_toolchange = 1.2,1.2,1.2,1.2,1.2 retract_lift = 0.3,0.3,0.3,0.3,0.3 retract_lift_above = 0,0,0,0,0 retract_lift_below = 359,359,359,359,359 retract_restart_extra = 0,0,0,0,0 retract_restart_extra_toolchange = 0,0,0,0,0 retract_speed = 35,35,35,35,35 silent_mode = 1 single_extruder_multi_material = 0 start_gcode = M405 ; filament sensor on\n\nM17 ; enable steppers\nM862.3 P "XL" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM115 U6.2.6+8948\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\n{if (is_extruder_used[0])}M862.1 T0 P{nozzle_diameter[0]} A{(filament_abrasive[0] ? 1 : 0)} F{(nozzle_high_flow[0] ? 1 : 0)}{endif}\n{if (is_extruder_used[1])}M862.1 T1 P{nozzle_diameter[1]} A{(filament_abrasive[1] ? 1 : 0)} F{(nozzle_high_flow[1] ? 1 : 0)}{endif}\n{if (is_extruder_used[2])}M862.1 T2 P{nozzle_diameter[2]} A{(filament_abrasive[2] ? 1 : 0)} F{(nozzle_high_flow[2] ? 1 : 0)}{endif}\n{if (is_extruder_used[3])}M862.1 T3 P{nozzle_diameter[3]} A{(filament_abrasive[3] ? 1 : 0)} F{(nozzle_high_flow[3] ? 1 : 0)}{endif}\n{if (is_extruder_used[4])}M862.1 T4 P{nozzle_diameter[4]} A{(filament_abrasive[4] ? 1 : 0)} F{(nozzle_high_flow[4] ? 1 : 0)}{endif}\n\n; turn off unused heaters\n{if ! is_extruder_used[0]}M104 T0 S0{endif}\n{if ! is_extruder_used[1]}M104 T1 S0{endif}\n{if num_extruders > 2 and ! is_extruder_used[2]}M104 T2 S0{endif}\n{if num_extruders > 3 and ! is_extruder_used[3]}M104 T3 S0{endif}\n{if num_extruders > 4 and ! is_extruder_used[4]}M104 T4 S0{endif}\n\nM217 Z{max(zhop, 2.0)} ; set toolchange z hop to 2mm, or zhop variable from slicer if higher\n; set bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T{initial_tool} S{((filament_notes[initial_tool]=~/.*MBL160.*/) ? 160 : (filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; set temp\n\n; Home XY\nG28 XY\n\n; try picking tools used in print\nG1 F{travel_speed * 60}\n{if (is_extruder_used[0]) and (initial_tool != 0)}T0 S1 L0 D0{endif}\n{if (is_extruder_used[1]) and (initial_tool != 1)}T1 S1 L0 D0{endif}\n{if (is_extruder_used[2]) and (initial_tool != 2)}T2 S1 L0 D0{endif}\n{if (is_extruder_used[3]) and (initial_tool != 3)}T3 S1 L0 D0{endif}\n{if (is_extruder_used[4]) and (initial_tool != 4)}T4 S1 L0 D0{endif}\n; select tool that will be used to home & MBL\nT{initial_tool} S1 L0 D0\n\nM109 T{initial_tool} S{((filament_notes[initial_tool]=~/.*MBL160.*/) ? 160 : (filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\n; home Z with MBL tool\nM84 E ; turn off E motor\nG28 Z\nG0 Z5 ; add Z clearance\n\nM104 T{initial_tool} S{if is_nil(idle_temperature[initial_tool])}70{else}{idle_temperature[initial_tool]}{endif} ; set idle temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nG29 G ; absorb heat\n\nM109 T{initial_tool} S{((filament_notes[initial_tool]=~/.*MBL160.*/) ? 160 : (filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F{(travel_speed * 60)}\nM302 S155 ; lower cold extrusion limit to 155C\nG1 E{-(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z5 F480 ; move away in Z\nM107 ; turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W{(((is_extruder_used[4]) or ((is_extruder_used[3]) or (is_extruder_used[2]))) ? "300" : ((is_extruder_used[1]) ? "130" : "50"))} H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nG1 Z10 F720 ; move away in Z\nG1 F{travel_speed * 60}\nP0 S1 L1 D0; park the tool\n; set extruder temp\n{if first_layer_temperature[0] > 0 and (is_extruder_used[0])}M104 T0 S{first_layer_temperature[0]}{endif}\n{if first_layer_temperature[1] > 0 and (is_extruder_used[1])}M104 T1 S{first_layer_temperature[1]}{endif}\n{if first_layer_temperature[2] > 0 and (is_extruder_used[2])}M104 T2 S{first_layer_temperature[2]}{endif}\n{if first_layer_temperature[3] > 0 and (is_extruder_used[3])}M104 T3 S{first_layer_temperature[3]}{endif}\n{if first_layer_temperature[4] > 0 and (is_extruder_used[4])}M104 T4 S{first_layer_temperature[4]}{endif}\n{if (is_extruder_used[0]) and initial_tool != 0}\n\nM591 S0 ; disable stuck detection\n\n;\n; purge first tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T0 S{first_layer_temperature[0]}\nT0 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X30 Y-7 Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[0])}10{else}30{endif} X40 Z0.2 F{if is_nil(filament_multitool_ramming[0])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X70 E9 F800 ; continue purging and wipe the nozzle\nG0 X73 Z0.05 F8000 ; wipe, move close to the bed\nG0 X76 Z0.2 F8000 ; wipe, move quickly away from the bed\nG1 E{-retract_length_toolchange[0]} F2400 ; retract\n{e_retracted[0] = retract_length_toolchange[0]}\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[0]) ? (first_layer_temperature[0] + standby_temperature_delta) : (idle_temperature[0]))} T0\n{endif}\n{if (is_extruder_used[1]) and initial_tool != 1}\n;\n; purge second tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T1 S{first_layer_temperature[1]}\nT1 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X150 Y-7 Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[1])}10{else}30{endif} X140 Z0.2 F{if is_nil(filament_multitool_ramming[1])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X110 E9 F800 ; continue purging and wipe the nozzle\nG0 X107 Z0.05 F8000 ; wipe, move close to the bed\nG0 X104 Z0.2 F8000 ; wipe, move quickly away from the bed\nG1 E{-retract_length_toolchange[1]} F2400 ; retract\n{e_retracted[1] = retract_length_toolchange[1]}\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[1]) ? (first_layer_temperature[1] + standby_temperature_delta) : (idle_temperature[1]))} T1\n{endif}\n{if (is_extruder_used[2]) and initial_tool != 2}\n;\n; purge third tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T2 S{first_layer_temperature[2]}\nT2 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X210 Y-7 Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[2])}10{else}30{endif} X220 Z0.2 F{if is_nil(filament_multitool_ramming[2])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X250 E9 F800 ; continue purging and wipe the nozzle\nG0 X253 Z0.05 F8000 ; wipe, move close to the bed\nG0 X256 Z0.2 F8000 ; wipe, move quickly away from the bed\nG1 E{-retract_length_toolchange[2]} F2400 ; retract\n{e_retracted[2] = retract_length_toolchange[2]}\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[2]) ? (first_layer_temperature[2] + standby_temperature_delta) : (idle_temperature[2]))} T2\n{endif}\n{if (is_extruder_used[3]) and initial_tool != 3}\n;\n; purge fourth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T3 S{first_layer_temperature[3]}\nT3 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X330 Y-7 Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[3])}10{else}30{endif} X320 Z0.2 F{if is_nil(filament_multitool_ramming[3])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X287 Z0.05 F8000 ; wipe, move close to the bed\nG0 X284 Z0.2 F8000 ; wipe, move quickly away from the bed\nG1 E{-retract_length_toolchange[3]} F2400 ; retract\n{e_retracted[3] = retract_length_toolchange[3]}\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[3]) ? (first_layer_temperature[3] + standby_temperature_delta) : (idle_temperature[3]))} T3\n{endif}\n{if (is_extruder_used[4]) and initial_tool != 4}\n;\n; purge fifth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T4 S{first_layer_temperature[4]}\nT4 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X330 Y-4.5 Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[4])}10{else}30{endif} X320 Z0.2 F{if is_nil(filament_multitool_ramming[4])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X287 Z0.05 F8000 ; wipe, move close to the bed\nG0 X284 Z0.2 F8000 ; wipe, move quickly away from the bed\nG1 E{-retract_length_toolchange[4]} F2400 ; retract\n{e_retracted[4] = retract_length_toolchange[4]}\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[4]) ? (first_layer_temperature[4] + standby_temperature_delta) : (idle_temperature[4]))} T4\n{endif}\n;\n; purge initial tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T{initial_tool} S{first_layer_temperature[initial_tool]}\nT{initial_tool} S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330)))} Y{(initial_tool < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[initial_tool])}10{else}30{endif} X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 10)} Z0.2 F{if is_nil(filament_multitool_ramming[initial_tool])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40)} E9 F800 ; continue purging and wipe the nozzle\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3)} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3 * 2)} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E-{retract_length[initial_tool]} F2400 ; retract\n{e_retracted[initial_tool] = retract_length[initial_tool]}\n\nM591 R ; restore stuck detection\nG92 E0 ; reset extruder position\n template_custom_gcode = thumbnails = 16x16/QOI, 313x173/QOI, 480x240/QOI, 380x285/PNG thumbnails_format = PNG toolchange_gcode = ; Change Tool[previous_extruder] -> Tool[next_extruder] (layer [layer_num])\n{\nlocal max_speed_toolchange = 350.0;\nlocal wait_for_extruder_temp = true;\nposition[2] = position[2] + 2.0;\n\nlocal speed_toolchange = max_speed_toolchange;\nif travel_speed < max_speed_toolchange then\n speed_toolchange = travel_speed;\nendif\n"G1 F" + (speed_toolchange * 60) + "\n";\nif wait_for_extruder_temp and not((layer_num < 0) and (next_extruder == initial_tool)) then\n "P0 S1 L2 D0\n";\n "; " + layer_num + "\n";\n if layer_num == 0 then\n "M109 S" + first_layer_temperature[next_extruder] + " T" + next_extruder + "\n";\n else\n "M109 S" + temperature[next_extruder] + " T" + next_extruder + "\n";\n endif\nendif\n"T" + next_extruder + " S1 L0 D0\n";\n} travel_lift_before_obstacle = 0,0,0,0,0 travel_max_lift = 1.5,1.5,1.5,1.5,1.5 travel_ramping_lift = 1,1,1,1,1 travel_slope = 1,1,1,1,1 use_firmware_retraction = 0 use_relative_e_distances = 1 use_volumetric_e = 0 variable_layer_height = 1 wipe = 1,1,1,1,1 z_offset = 0 [physical_printer:2 Ondřej] host_type = prusalink preset_name = XL - 5T Input Shaper 0.4 nozzle preset_names = "XL - 5T Input Shaper 0.4 nozzle" print_host = 172.25.1.7 printer_technology = FFF printhost_apikey = DZme84ievvZL4SU printhost_authorization_type = key printhost_cafile = printhost_password = printhost_port = printhost_ssl_ignore_revoke = 0 printhost_user = [physical_printer:3 Jiří] host_type = prusalink preset_name = MK4S HF0.4 nozzle preset_names = "MK4S HF0.4 nozzle" print_host = 172.25.1.4 printer_technology = FFF printhost_apikey = dnDnqsCGSBYvbV3 printhost_authorization_type = key printhost_cafile = printhost_password = printhost_port = printhost_ssl_ignore_revoke = 0 printhost_user = [physical_printer:4 Tereza] host_type = prusalink preset_name = MK4S 0.4 nozzle preset_names = "MK4S 0.4 nozzle" print_host = 172.25.1.6 printer_technology = FFF printhost_apikey = printhost_authorization_type = user printhost_cafile = printhost_password = LdCGNPxu2VjS3Am printhost_port = printhost_ssl_ignore_revoke = 0 printhost_user = maker [physical_printer:5 Karel] host_type = prusalink preset_name = MK4S HF0.4 nozzle preset_names = "MK4S HF0.4 nozzle" print_host = 172.25.1.2 printer_technology = FFF printhost_apikey = printhost_authorization_type = user printhost_cafile = printhost_password = zoS834Q3BFGKexk printhost_port = printhost_ssl_ignore_revoke = 0 printhost_user = maker [presets] print = 0.20mm STRUCTURAL @MK4S 0.4 sla_print = sla_material = printer = MK4S HF0.4 nozzle filament = Generic PETG @MK4S HF0.4 physical_printer = 5 Karel