diff --git a/resources/icons/dowel.svg b/resources/icons/dowel.svg
new file mode 100644
index 0000000000..4e2fcfb589
--- /dev/null
+++ b/resources/icons/dowel.svg
@@ -0,0 +1,15 @@
+
+
+
diff --git a/resources/icons/plug.svg b/resources/icons/plug.svg
new file mode 100644
index 0000000000..561095207c
--- /dev/null
+++ b/resources/icons/plug.svg
@@ -0,0 +1,13 @@
+
+
+
diff --git a/resources/profiles/MakerGear.idx b/resources/profiles/MakerGear.idx
new file mode 100644
index 0000000000..6fc08a3902
--- /dev/null
+++ b/resources/profiles/MakerGear.idx
@@ -0,0 +1,2 @@
+min_slic3r_version = 2.6.0-alpha1
+0.1.0 Initial version
diff --git a/resources/profiles/MakerGear.ini b/resources/profiles/MakerGear.ini
new file mode 100644
index 0000000000..961e505c95
--- /dev/null
+++ b/resources/profiles/MakerGear.ini
@@ -0,0 +1,1754 @@
+# Print profiles for the MakerGear printers.
+
+[vendor]
+name = MakerGear
+config_version = 0.1.0
+config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/MakerGear/
+
+[printer_model:MAKERGEAR_MICRO]
+# bed_model = waiting on this one
+default_materials = MakerGear PLA @MakerGear_MICRO
+family = MakerGear Micro
+name = Micro
+technology = FFF
+variants = 0.40
+
+[printer_model:MAKERGEAR_M2]
+bed_model = M2_M3.stl
+bed_texture = M2_M3.svg
+default_materials = MakerGear PLA @MakerGear
+family = MakerGear M2
+name = MakerGear M2(V4 Hotend)
+technology = FFF
+variants = 0.35; 0.50; 0.25; 0.75
+
+[printer_model:MAKERGEAR_M2_DUAL]
+bed_model = M2_M3.stl
+bed_texture = M2_M3.svg
+default_materials = MakerGear PLA @MakerGear; Empty @MakerGear
+family = MakerGear M2
+name = MakerGear M2 Dual
+technology = FFF
+variants = 0.35; 0.50; 0.25; 0.75
+
+[printer_model:MAKERGEAR_M3_SE]
+bed_model = M2_M3.stl
+bed_texture = M2_M3.svg
+default_materials = MakerGear PLA @MakerGear
+family = MakerGear M3-SE
+name = M3 - Single Extruder
+technology = FFF
+variants = 0.35; 0.50; 0.25; 0.75
+
+[printer_model:MAKERGEAR_M3_ID_0]
+bed_model = M2_M3.stl
+bed_texture = M2_M3.svg
+thumbnail = MAKERGEAR_M3_thumbnail.png
+default_materials = MakerGear PLA @MakerGear; Empty @MakerGear
+family = MakerGear M3-ID Rev.0
+name = M3 - Independent Dual Rev.0
+technology = FFF
+variants = 0.35; 0.50; 0.25; 0.75
+
+[printer_model:MAKERGEAR_M3_ID_0_DUPLICATION]
+thumbnail = MAKERGEAR_M3_DUPLICATION_thumbnail.png
+default_materials = MakerGear PLA @MakerGear
+family = MakerGear M3-ID Rev.0
+name = M3 - Independent Dual Rev.0 (Duplication Mode)
+technology = FFF
+variants = 0.35; 0.50; 0.25; 0.75
+
+[printer_model:MAKERGEAR_M3_ID_1]
+bed_model = M2_M3.stl
+bed_texture = M2_M3.svg
+thumbnail = MAKERGEAR_M3_thumbnail.png
+default_materials = MakerGear PLA @MakerGear; Empty @MakerGear
+family = MakerGear M3-ID Rev.1
+name = M3 - Independent Dual Rev.1
+technology = FFF
+variants = 0.35; 0.50; 0.25; 0.75
+
+[printer_model:MAKERGEAR_M3_ID_1_DUPLICATION]
+thumbnail = MAKERGEAR_M3_DUPLICATION_thumbnail.png
+default_materials = MakerGear PLA @MakerGear
+family = MakerGear M3-ID Rev.1
+name = M3 - Independent Dual Rev.1 (Duplication Mode)
+technology = FFF
+variants = 0.35; 0.50; 0.25; 0.75
+
+[printer_model:MAKERGEAR_U1]
+# bed_model =
+# bed_texture =
+default_materials = MakerGear PLA @MakerGear
+family = MakerGear Ultra One
+name = Ultra One
+technology = FFF
+variants = 0.50; 0.25; 0.35; 0.75
+
+[printer_model:MAKERGEAR_U1_DUPLICATION]
+# bed_model =
+# bed_texture =
+thumbnail = MAKERGEAR_U1_thumbnail.png
+default_materials = MakerGear PLA @MakerGear
+family = MakerGear Ultra One
+name = Ultra One (Duplication Mode)
+technology = FFF
+variants = 0.50; 0.25; 0.35; 0.75
+
+# ---------------------------
+# All presets starting with asterisk, for example *common*, are intermediate and they will
+# not make it into the user interface.
+
+# /~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\
+# |~~~ Common Print Settings ~~~|
+# \~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/
+
+#0.35mm Nozzle
+[print:*common*]
+avoid_crossing_perimeters = 0
+bottom_fill_pattern = rectilinear
+bridge_angle = 0
+bridge_flow_ratio = 0.95
+bridge_speed = 65
+brim_width = 0
+brim_type = outer_only
+clip_multipart_objects = 1
+complete_objects = 0
+dont_support_bridges = 0
+elefant_foot_compensation = 0.1
+ensure_vertical_shell_thickness = 1
+external_fill_pattern = rectilinear
+external_perimeter_extrusion_width = 0.42
+external_perimeter_speed = 80
+external_perimeters_first = 1
+extra_perimeters = 1
+extruder_clearance_height = 25
+extruder_clearance_radius = 45
+extrusion_width = 0.42
+fill_angle = 45
+fill_density = 15%
+fill_pattern = gyroid
+first_layer_extrusion_width = 0.42
+first_layer_height = 0.16
+first_layer_speed = 35
+gap_fill_speed = 30
+gcode_comments = 0
+infill_every_layers = 1
+infill_extruder = 1
+infill_extrusion_width = 0.42
+infill_first = 0
+infill_only_where_needed = 0
+infill_overlap = 20%
+infill_speed = 90
+interface_shells = 0
+max_print_speed = 100
+max_volumetric_extrusion_rate_slope_negative = 0
+max_volumetric_extrusion_rate_slope_positive = 0
+max_volumetric_speed = 0
+min_skirt_length = 4
+notes =
+only_retract_when_crossing_perimeters = 1
+ooze_prevention = 0
+output_filename_format = {input_filename_base}_{layer_height}mm_{filament_type[0]}_{printer_model}_{print_time}.gcode
+overhangs = 1
+perimeter_extruder = 1
+perimeter_extrusion_width = 0.42
+perimeter_generator = arachne
+perimeter_speed = 65
+perimeters = 2
+raft_first_layer_density = 60
+raft_layers = 0
+resolution = 0
+seam_position = aligned
+single_extruder_multi_material_priming = 0
+skirt_distance = 2
+skirt_height = 1
+skirts = 3
+small_perimeter_speed = 25
+solid_infill_below_area = 0
+solid_infill_every_layers = 0
+solid_infill_extruder = 1
+solid_infill_extrusion_width = 0.42
+solid_infill_speed = 30
+spiral_vase = 0
+standby_temperature_delta = -5
+support_material = 1
+support_material_angle = 50
+support_material_buildplate_only = 0
+support_material_contact_distance = 0.25
+support_material_enforce_layers = 0
+support_material_extruder = 0
+support_material_extrusion_width = 0.42
+support_material_interface_contact_loops = 0
+support_material_interface_extruder = 0
+support_material_interface_layers = 2
+support_material_interface_spacing = 0.3
+support_material_interface_speed = 100%
+support_material_pattern = honeycomb
+support_material_spacing = 2
+support_material_speed = 60
+support_material_style = snug
+support_material_synchronize_layers = 0
+support_material_threshold = 65
+support_material_with_sheath = 0
+support_material_xy_spacing = 200%
+thin_walls = 1
+top_fill_pattern = rectilinear
+top_infill_extrusion_width = 0.42
+top_solid_infill_speed = 35
+travel_speed = 150
+wipe_tower = 0
+wipe_tower_bridging = 10
+wipe_tower_rotation_angle = 0
+wipe_tower_width = 60
+wipe_tower_x = 170
+wipe_tower_y = 40
+xy_size_compensation = 0
+
+# /~~~~~~~~~~~~~~~~~~~~~~~\
+# |~~~ Nozzle Variants ~~~|
+# \~~~~~~~~~~~~~~~~~~~~~~~/
+[print:*0.25nozzle*]
+elefant_foot_compensation = 0
+external_perimeter_extrusion_width = 0.30
+extrusion_width = 0.30
+first_layer_extrusion_width = 0.3
+infill_extrusion_width = 0.30
+output_filename_format = {input_filename_base}_{nozzle_diameter[0]}n_{layer_height}mm_{filament_type[0]}_{printer_model}_{print_time}.gcode
+perimeter_extrusion_width = 0.30
+solid_infill_extrusion_width = 0.30
+support_material_extrusion_width = 0.30
+support_material_interface_layers = 0
+support_material_interface_spacing = 0.15
+support_material_spacing = 1
+support_material_xy_spacing = 150%
+top_infill_extrusion_width = 0.30
+
+ ; Only for the MakerGear Micro
+[print:*0.40nozzle*]
+bottom_solid_min_thickness = 0.5
+bridge_speed = 55
+external_perimeter_extrusion_width = 0.45
+external_perimeter_speed = 35
+extrusion_width = 0.45
+first_layer_extrusion_width = 0.42
+infill_anchor_max = 15
+infill_extrusion_width = 0.45
+infill_speed = 40
+output_filename_format = {input_filename_base}_{nozzle_diameter[0]}n_{layer_height}mm_{filament_type[0]}_{printer_model}_{print_time}.gcode
+overhangs = 1
+perimeter_extrusion_width = 0.45
+perimeter_speed = 35
+small_perimeter_speed = 35
+solid_infill_extrusion_width = 0.45
+solid_infill_speed = 45
+support_material = 1
+support_material_auto = 1
+support_material_contact_distance = 0.3
+support_material_extrusion_width = 0.45
+support_material_interface_layers = 1
+support_material_interface_spacing = 0.3
+support_material_spacing = 2.5
+support_material_speed = 35
+support_material_threshold = 60
+support_material_with_sheath = 1
+support_material_xy_spacing = 80%
+top_infill_extrusion_width = 0.45
+top_solid_infill_speed = 25
+top_solid_min_thickness = 0.7
+
+[print:*0.50nozzle*]
+bottom_solid_min_thickness = 0.5
+external_perimeter_extrusion_width = 0.60
+extrusion_width = 0.60
+first_layer_extrusion_width = 0.60
+infill_anchor_max = 15
+infill_extrusion_width = 0.60
+output_filename_format = {input_filename_base}_{nozzle_diameter[0]}n_{layer_height}mm_{filament_type[0]}_{printer_model}_{print_time}.gcode
+perimeter_extrusion_width = 0.60
+solid_infill_extrusion_width = 0.60
+support_material_contact_distance = 0.25
+support_material_extrusion_width = 0.60
+support_material_interface_spacing = 0.3
+support_material_xy_spacing = 180%
+top_infill_extrusion_width = 0.60
+top_solid_min_thickness = 0.8
+
+[print:*0.75nozzle*]
+bottom_solid_layers = 2
+bottom_solid_min_thickness = 0.6
+bridge_acceleration = 1000
+bridge_flow_ratio = 0.9
+bridge_speed = 22
+default_acceleration = 1000
+external_perimeter_extrusion_width = 0.84
+extrusion_width = 0.84
+fill_density = 10%
+fill_pattern = gyroid
+first_layer_acceleration = 1000
+first_layer_extrusion_width = 0.94
+first_layer_height = 0.3
+first_layer_speed = 20
+gap_fill_speed = 20
+infill_acceleration = 1000
+infill_anchor_max = 20
+infill_extrusion_width = 0.84
+infill_speed = 85
+infill_overlap = 25%
+output_filename_format = {input_filename_base}_{nozzle_diameter[0]}n_{layer_height}mm_{filament_type[0]}_{printer_model}_{print_time}.gcode
+perimeter_acceleration = 800
+perimeter_extrusion_width = 0.84
+single_extruder_multi_material_priming = 0
+skirt_distance = 3
+skirt_height = 2
+solid_infill_speed = 55
+solid_infill_extrusion_width = 0.84
+support_material_contact_distance = 0.3
+support_material_extrusion_width = 0.7
+support_material_interface_spacing = 0.4
+support_material_interface_speed = 175%
+support_material_spacing = 2
+support_material_threshold = 50
+support_material_xy_spacing = 200%
+top_infill_extrusion_width = 0.8
+top_solid_layers = 4
+top_solid_min_thickness = 1.2
+
+# /~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\
+# |~~~ Layer Height Settings ~~~|
+# \~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/
+# ---------------------------
+# (not used) 0.05mm
+# ---------------------------
+[print:*0.05mm*]
+inherits = *common*
+bottom_solid_layers = 10
+bridge_acceleration = 300
+bridge_flow_ratio = 0.7
+default_acceleration = 1000
+external_perimeter_speed = 20
+fill_density = 15%
+first_layer_acceleration = 500
+gap_fill_speed = 20
+infill_acceleration = 800
+infill_speed = 30
+layer_height = 0.05
+max_print_speed = 80
+perimeter_acceleration = 300
+perimeter_speed = 30
+perimeters = 3
+small_perimeter_speed = 20
+solid_infill_speed = 30
+support_material_extrusion_width = 0.3
+support_material_spacing = 1.5
+support_material_speed = 30
+top_solid_infill_speed = 20
+top_solid_layers = 15
+
+# [print:NOT READY 0.05mm ULTRAFINE @0.25 nozzle] # M2, M3, U1
+# inherits = *0.05mm*; *0.25nozzle*
+# compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/ and nozzle_diameter[0]==0.25
+
+# ---------------------------
+# 0.07mm (Testing)
+# ---------------------------
+[print:*0.07mm*]
+inherits = *common*
+bottom_solid_layers = 8
+bridge_acceleration = 300
+bridge_flow_ratio = 0.7
+bridge_speed = 20
+default_acceleration = 1000
+external_perimeter_speed = 20
+fill_density = 15%
+first_layer_acceleration = 500
+gap_fill_speed = 20
+infill_acceleration = 800
+infill_speed = 40
+layer_height = 0.07
+max_print_speed = 80
+perimeter_acceleration = 300
+perimeter_speed = 30
+perimeters = 3
+small_perimeter_speed = 20
+solid_infill_speed = 40
+support_material_extrusion_width = 0.3
+support_material_spacing = 1.5
+support_material_speed = 40
+top_solid_infill_speed = 30
+top_solid_layers = 11
+
+# [print:NOT READY 0.07mm Quality @0.25 nozzle] # M2, M3, U1
+# inherits = *0.07mm*; *0.25nozzle*
+# compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/ and nozzle_diameter[0]==0.25
+
+# ---------------------------
+# 0.10mm (Testing)
+# ---------------------------
+[print:*0.10mm*]
+inherits = *common*
+bottom_solid_layers = 7
+bridge_flow_ratio = 0.7
+bridge_speed = 20
+fill_density = 15%
+first_layer_speed = 25
+gap_fill_speed = 20
+infill_speed = 40
+layer_height = 0.1
+max_print_speed = 80
+perimeter_acceleration = 800
+perimeter_speed = 30
+perimeters = 3
+small_perimeter_speed = 20
+solid_infill_speed = 40
+support_material_extrusion_width = 0.3
+support_material_spacing = 1.5
+support_material_speed = 40
+top_solid_infill_speed = 30
+top_solid_layers = 9
+
+ # M2, M3, U1
+[print:0.10mm Fine @0.35 nozzle MakerGear]
+inherits = *0.10mm*
+bridge_speed = 40
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/ and nozzle_diameter[0]==0.35
+external_perimeter_speed = 45
+fill_density = 15%
+fill_pattern = 3dhoneycomb
+infill_acceleration = 1000
+infill_speed = 55
+max_print_speed = 200
+perimeter_speed = 45
+solid_infill_speed = 80
+top_solid_infill_speed = 40
+
+# ---------------------------
+# 0.15mm
+# ---------------------------
+[print:*0.15mm*]
+inherits = *common*
+bottom_solid_layers = 5
+external_perimeter_speed = 40
+infill_acceleration = 2000
+infill_speed = 60
+layer_height = 0.15
+perimeter_acceleration = 800
+perimeter_speed = 50
+solid_infill_speed = 50
+top_infill_extrusion_width = 0.4
+top_solid_layers = 7
+
+ # M2, M3, U1
+[print:0.15mm Normal @0.25 nozzle MakerGear]
+inherits = *0.15mm*; *0.25nozzle*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/ and nozzle_diameter[0]==0.25
+
+# M2, M3, U1
+[print:0.15mm Quality @0.35 nozzle MakerGear]
+inherits = *0.15mm*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/ and nozzle_diameter[0]==0.35
+bridge_flow_ratio = 0.95
+
+# Micro
+[print:0.15mm Quality @0.40 nozzle MakerGear]
+inherits = *0.15mm*; *0.40nozzle*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_MICRO.*/ and nozzle_diameter[0]==0.40
+first_layer_height = 0.2
+
+# ---------------------------
+# 0.20mm
+# ---------------------------
+[print:*0.20mm*]
+inherits = *common*
+bottom_solid_layers = 2
+bridge_flow_ratio = 0.9
+external_perimeter_speed = 60
+infill_speed = 65
+layer_height = 0.2
+perimeter_speed = 50
+solid_infill_speed = 50
+top_solid_layers = 3
+
+# M2, M3, U1
+[print:0.20mm Quality @0.50 nozzle MakerGear]
+inherits = *0.20mm*; *0.50nozzle*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/ and nozzle_diameter[0]==0.50
+
+# M2, M3, U1
+[print:0.20mm Normal @0.35 nozzle MakerGear]
+inherits = *0.20mm*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/ and nozzle_diameter[0]==0.35
+bridge_flow_ratio = 0.95
+
+# Micro
+[print:0.20mm Normal @0.40 Nozzle MakerGear]
+inherits = *0.20mm*; *0.40nozzle*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_MICRO.*/ and nozzle_diameter[0]==0.40
+perimeters = 3
+
+# ---------------------------
+# 0.25mm (Testing)
+# ---------------------------
+[print:*0.25mm*]
+inherits = *common*
+bottom_solid_layers = 4
+bridge_flow_ratio = 0.95
+external_perimeter_speed = 40
+layer_height = 0.25
+perimeter_acceleration = 800
+perimeter_speed = 50
+top_solid_layers = 4
+
+# M2, M3, U1
+[print:0.25mm Speed @0.35 nozzle MakerGear]
+inherits = *0.25mm*
+bridge_speed = 60
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/ and nozzle_diameter[0]==0.35
+external_perimeter_speed = 70
+infill_acceleration = 2000
+infill_speed = 200
+max_print_speed = 200
+perimeter_speed = 75
+solid_infill_speed = 200
+top_solid_infill_speed = 70
+
+# Micro
+[print:0.25mm Fast @0.40 nozzle MakerGear]
+inherits = *0.25mm*; *0.40nozzle*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_MICRO.*/ and nozzle_diameter[0]==0.40
+perimeters = 3
+
+# M2, M3, U1
+[print:0.25mm Normal @0.50 nozzle MakerGear]
+inherits = *0.25mm*; *0.50nozzle*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/ and nozzle_diameter[0]==0.50
+first_layer_height = 0.26
+
+# M2, M3, U1
+[print:0.25mm Quality @0.75 nozzle MakerGear]
+inherits = *0.25mm*; *0.75nozzle*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/ and nozzle_diameter[0]==0.75
+
+# ---------------------------
+# 0.30mm
+# ---------------------------
+[print:*0.30mm*]
+inherits = *common*
+bottom_solid_layers = 3
+bridge_flow_ratio = 0.95
+external_perimeter_speed = 75
+first_layer_height = 0.24
+gap_fill_speed = 40
+infill_speed = 80
+layer_height = 0.3
+perimeter_speed = 65
+small_perimeter_speed = 35
+solid_infill_speed = 50
+support_material_contact_distance = 0.3
+top_infill_extrusion_width = 0.4
+top_solid_layers = 4
+
+ # M2, M3, U1
+[print:0.30mm Speed @0.50 nozzle MakerGear]
+inherits = *0.30mm*; *0.50nozzle*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/ and nozzle_diameter[0]==0.50
+first_layer_height = 0.22
+
+# M2, M3, U1
+[print:0.30mm Normal @0.75 nozzle MakerGear]
+inherits = *0.30mm*; *0.75nozzle*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/ and nozzle_diameter[0]==0.75
+
+# ---------------------------
+# 0.35mm (Testing)
+# ---------------------------
+[print:*0.35mm*]
+inherits = *common*
+bottom_solid_layers = 3
+external_perimeter_extrusion_width = 0.6
+external_perimeter_speed = 40
+first_layer_extrusion_width = 0.75
+infill_acceleration = 2000
+infill_speed = 60
+layer_height = 0.35
+perimeter_acceleration = 800
+perimeter_extrusion_width = 0.65
+perimeter_speed = 50
+solid_infill_extrusion_width = 0.65
+solid_infill_speed = 60
+top_solid_infill_speed = 50
+top_solid_layers = 4
+
+# [print:NOT READY 0.35mm Speed @0.50 nozzle MakerGear]
+#inherits = *0.35*; *0.50nozzle*
+# compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/ and nozzle_diameter[0]==0.50
+
+# M2, M3, U1
+[print:0.35mm Speed @0.75 nozzle MakerGear]
+inherits = *0.35mm*; *0.75nozzle*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/ and nozzle_diameter[0]==0.75
+
+# ---------------------------
+# 0.40mm (NOT READY)
+# ---------------------------
+[print:*0.40mm*]
+inherits = *common*
+bottom_solid_layers = 3
+external_perimeter_extrusion_width = 0.6
+external_perimeter_speed = 40
+first_layer_extrusion_width = 0.75
+infill_acceleration = 2000
+infill_speed = 60
+layer_height = 0.40
+perimeter_acceleration = 800
+perimeter_extrusion_width = 0.65
+perimeter_speed = 50
+solid_infill_extrusion_width = 0.65
+solid_infill_speed = 60
+top_solid_infill_speed = 50
+top_solid_layers = 4
+
+# [print:NOT READY 0.40mm Do_I_Want_To_Support_This @0.75 nozzle] # M2, M3, U1
+# inherits = *0.40mm*; *0.75nozzle*
+# compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/ and nozzle_diameter[0]==0.75
+
+
+# /~~~~~~~~~~~~~~~~~~~~~~~~~\
+# |~~~ Filament Settings ~~~|
+# \~~~~~~~~~~~~~~~~~~~~~~~~~/
+# When submitting new filaments please print the following temperature tower at 0.1mm layer height:
+# https://www.thingiverse.com/thing:2615842
+# Pay particular attention to bridging, overhangs and retractions.
+# Also print the following bed adhesion test at 0.1 layer height as well:
+# https://www.prusaprinters.org/prints/4634-bed-adhesion-warp-test
+
+[filament:*common*]
+compatible_printers =
+cooling = 0
+extrusion_multiplier = 0.9
+filament_cost = 0
+filament_density = 0
+filament_diameter = 1.75
+filament_notes = ""
+filament_settings_id = ""
+filament_soluble = 0
+min_print_speed = 15
+slowdown_below_layer_time = 20
+
+[filament:*PLA*]
+inherits = *common*
+bed_temperature = 60
+bridge_fan_speed = 100
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(ICRO|2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+cooling = 1
+disable_fan_first_layers = 1
+fan_always_on = 1
+fan_below_layer_time = 100
+filament_colour = #DDDDDD
+filament_cost = 20
+filament_density = 1.24
+filament_max_volumetric_speed = 15
+filament_type = PLA
+first_layer_bed_temperature = 60
+first_layer_temperature = 215
+max_fan_speed = 100
+min_fan_speed = 100
+temperature = 210
+
+[filament:*PET*]
+inherits = *common*
+bed_temperature = 70
+bridge_fan_speed = 100
+cooling = 1
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+disable_fan_first_layers = 2
+extrusion_multiplier = 0.98
+fan_always_on = 1
+fan_below_layer_time = 20
+filament_colour = #DDDDDD
+filament_cost = 30
+filament_density = 1.27
+filament_max_volumetric_speed = 8
+filament_type = PETG
+first_layer_bed_temperature = 70
+first_layer_temperature = 250
+max_fan_speed = 80
+min_fan_speed = 40
+temperature = 245
+
+[filament:*ABS*]
+inherits = *common*
+bed_temperature = 100
+bridge_fan_speed = 30
+cooling = 0
+disable_fan_first_layers = 0
+extrusion_multiplier = 1
+fan_always_on = 0
+fan_below_layer_time = 20
+filament_colour = #DDDDDD
+filament_cost = 20
+filament_density = 1.04
+filament_max_volumetric_speed = 11
+filament_type = ABS
+first_layer_bed_temperature = 110
+first_layer_temperature = 250
+max_fan_speed = 0
+min_fan_speed = 0
+temperature = 245
+top_fan_speed = 0
+
+[filament:*FLEX*]
+inherits = *common*
+bed_temperature = 50
+bridge_fan_speed = 80
+cooling = 0
+disable_fan_first_layers = 3
+extrusion_multiplier = 1.15
+fan_always_on = 0
+fan_below_layer_time = 100
+filament_colour = #008000
+filament_deretract_speed = 25
+filament_max_volumetric_speed = 2
+filament_retract_length = 0.8
+filament_retract_lift = 0
+filament_type = FLEX
+filament_wipe = 0
+first_layer_bed_temperature = 55
+first_layer_temperature = 245
+max_fan_speed = 90
+min_fan_speed = 70
+slowdown_below_layer_time = 10
+temperature = 240
+
+[filament:*EMPTY*]
+inherits = *common*
+bed_temperature =
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2_DUAL|3_ID)).*/
+filament_colour = #DDDDDD
+filament_cost = 0
+filament_density = 0
+filament_type = EMPTY
+first_layer_bed_temperature =
+first_layer_temperature = 0
+temperature = 0
+
+# ---------------------------
+# PLA Filament
+# ---------------------------
+[filament:MakerGear PLA @MakerGear]
+inherits = *PLA*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes!~/.*PRINTER_MODEL_MAKERGEAR_MICRO.*/
+filament_cost = 25.4
+filament_density = 1.24
+filament_vendor = MakerGear
+
+
+[filament:MakerGear Translucent PLA @MakerGear]
+inherits = MakerGear PLA @MakerGear
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/
+filament_cost = 25.4
+filament_density = 1.24
+filament_vendor = MakerGear
+
+[filament:MakerGear PLA @MakerGear_Micro]
+inherits = *PLA*
+bed_temperature =
+bridge_fan_speed = 0
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_MICRO.*/
+cooling = 0
+disable_fan_first_layers =
+fan_always_on = 0
+fan_below_layer_time =
+filament_colour = #DDDDDD
+filament_cost = 20
+filament_density = 1.24
+filament_max_volumetric_speed = 10
+filament_type = PLA
+filament_vendor = MakerGear
+first_layer_bed_temperature = 0
+first_layer_temperature = 210
+max_fan_speed =
+min_fan_speed =
+temperature = 205
+
+[filament:Fiberlogy PLA @MakerGear]
+inherits = *PLA*
+filament_cost = 25.4
+filament_density = 1.24
+filament_vendor = Fiberlogy
+
+[filament:AmazonBasics PLA @MakerGear]
+inherits = *PLA*
+filament_cost = 25.4
+filament_density = 1.24
+filament_vendor = AmazonBasics
+
+[filament:Overture PLA @MakerGear]
+inherits = *PLA*
+filament_cost = 22
+filament_density = 1.24
+filament_spool_weight = 235
+filament_vendor = Overture
+
+[filament:Hatchbox PLA @MakerGear]
+inherits = *PLA*
+filament_cost = 25.4
+filament_density = 1.27
+filament_spool_weight = 245
+filament_vendor = Hatchbox
+
+[filament:Fillamentum PLA @MakerGear]
+inherits = *PLA*
+filament_cost = 35.48
+filament_density = 1.24
+filament_spool_weight = 230
+filament_vendor = Fillamentum
+
+[filament:Esun PLA @MakerGear]
+inherits = *PLA*
+filament_cost = 25.4
+filament_density = 1.24
+filament_spool_weight = 265
+filament_vendor = Esun
+
+[filament:Inland PLA @MakerGear]
+inherits = *PLA*
+filament_cost = 25.4
+filament_density = 1.24
+filament_spool_weight = 265
+filament_vendor = Inland
+
+[filament:MatterHackers PLA @MakerGear]
+inherits = *PLA*
+filament_cost = 25.4
+filament_density = 1.24
+filament_spool_weight = 265
+filament_vendor = MatterHackers
+
+# ---------------------------
+# ABS Filament
+# ---------------------------
+[filament:MakerGear ABS @MakerGear]
+inherits = *ABS*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+cooling = 0
+filament_colour = #DDDDDD
+filament_density = 1.04
+filament_type = ABS
+filament_vendor = MakerGear
+
+[filament:Esun ABS @MakerGear]
+inherits = *ABS*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 27.82
+filament_density = 1.01
+filament_spool_weight = 265
+filament_vendor = Esun
+
+[filament:Hatchbox ABS @MakerGear]
+inherits = *ABS*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 27.82
+filament_density = 1.04
+filament_spool_weight = 245
+filament_vendor = Hatchbox
+
+[filament:Verbatim ABS @MakerGear]
+inherits = *ABS*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 25.87
+filament_density = 1.05
+filament_vendor = Verbatim
+
+[filament:Fillamentum ABS @MakerGear]
+inherits = *ABS*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 32.4
+filament_density = 1.04
+filament_spool_weight = 230
+filament_vendor = Fillamentum
+first_layer_temperature = 240
+temperature = 240
+
+[filament:E3D PC-ABS @MakerGear]
+inherits = *ABS*
+filament_vendor = E3D
+filament_cost = 0
+filament_type = PC
+filament_density = 1.05
+first_layer_temperature = 275
+temperature = 270
+
+# ---------------------------
+# ASA Filament
+# ---------------------------
+[filament:Fillamentum ASA @MakerGear]
+inherits = *ABS*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+cooling = 1
+fan_always_on = 1
+filament_cost = 38.7
+filament_density = 1.07
+filament_spool_weight = 230
+filament_type = ASA
+filament_vendor = Fillamentum
+first_layer_temperature = 265
+max_fan_speed = 20
+min_fan_speed = 20
+min_print_speed = 15
+slowdown_below_layer_time = 15
+temperature = 265
+
+[filament:Fiberlogy ASA @MakerGear]
+inherits = *ABS*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_vendor = Fiberlogy
+filament_cost = 33
+filament_density = 1.07
+filament_spool_weight = 330
+fan_always_on = 0
+cooling = 1
+min_fan_speed = 10
+max_fan_speed = 15
+bridge_fan_speed = 30
+min_print_speed = 15
+slowdown_below_layer_time = 15
+first_layer_temperature = 260
+temperature = 260
+first_layer_bed_temperature = 105
+bed_temperature = 110
+filament_type = ASA
+fan_below_layer_time = 30
+disable_fan_first_layers = 5
+
+# ---------------------------
+# PETG Filament
+# ---------------------------
+[filament:Verbatim PETG @MakerGear]
+inherits = *PET*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 27.90
+filament_density = 1.27
+filament_spool_weight = 235
+filament_vendor = Verbatim
+
+[filament:Fiberlogy PETG @MakerGear]
+inherits = *PET*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 21.50
+filament_density = 1.27
+filament_vendor = Fiberlogy
+
+[filament:Esun PETG @MakerGear]
+inherits = *PET*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 21.50
+filament_density = 1.27
+filament_vendor = Esun
+
+[filament:Overture PETG @MakerGear]
+inherits = *PET*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 27.90
+filament_density = 1.27
+filament_spool_weight = 235
+filament_vendor = Overture
+
+[filament:3DxTech PETG @MakerGear]
+inherits = *PET*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 27.90
+filament_density = 1.27
+filament_spool_weight = 235
+filament_vendor = 3DxTech
+
+[filament:Hatchbox PETG @MakerGear]
+inherits = *PET*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 27.90
+filament_density = 1.27
+filament_spool_weight = 235
+filament_vendor = Hatchbox
+
+[filament:Inland PETG @MakerGear]
+inherits = *PET*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 27.90
+filament_density = 1.27
+filament_spool_weight = 235
+filament_vendor = Inland
+
+[filament:MatterHackers PETG @MakerGear]
+inherits = *PET*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 27.90
+filament_density = 1.27
+filament_spool_weight = 235
+filament_vendor = MatterHackers
+
+# ---------------------------
+# Nylon Filament
+# ---------------------------
+[filament:Fiberlogy Nylon PA12 @MakerGear]
+inherits = Fiberlogy ASA @MakerGear
+bed_temperature = 105
+bridge_fan_speed = 30
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+fan_always_on = 0
+fan_below_layer_time = 20
+filament_cost = 48
+filament_density = 1.01
+filament_max_volumetric_speed = 6
+filament_retract_lift = 0.2
+filament_type = NYLON
+first_layer_bed_temperature = 110
+first_layer_temperature = 265
+max_fan_speed = 15
+min_fan_speed = 10
+temperature = 265
+
+[filament:Fiberlogy Nylon PA12+CF15 @MakerGear]
+inherits = Fiberlogy Nylon PA12 @MakerGear
+bed_temperature = 110
+bridge_fan_speed = 30
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+extrusion_multiplier = 0.97
+fan_always_on = 0
+fan_below_layer_time = 20
+filament_cost = 87.5
+filament_density = 1.07
+filament_max_volumetric_speed = 6
+first_layer_bed_temperature = 105
+first_layer_temperature = 265
+max_fan_speed = 15
+min_fan_speed = 10
+temperature = 265
+# ---------------------------
+# Flex Filament
+# ---------------------------
+[filament:AmazonBasics TPU @MakerGear]
+inherits = *FLEX*
+bed_temperature = 50
+bridge_fan_speed = 100
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+cooling = 1
+disable_fan_first_layers = 4
+extrusion_multiplier = 1.14
+fan_always_on = 1
+filament_cost = 19.99
+filament_density = 1.21
+filament_deretract_speed = 20
+filament_max_volumetric_speed = 1.8
+filament_retract_before_travel = 3
+filament_retract_length = 2
+filament_retract_lift = 0
+filament_retract_speed = 45
+filament_vendor = AmazonBasics
+filament_wipe = 0
+first_layer_bed_temperature = 50
+first_layer_temperature = 235
+full_fan_speed_layer = 6
+max_fan_speed = 80
+min_fan_speed = 80
+min_print_speed = 15
+temperature = 235
+
+[filament:SainSmart TPU @MakerGear]
+inherits = *FLEX*
+bed_temperature = 50
+bridge_fan_speed = 100
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+cooling = 1
+disable_fan_first_layers = 4
+extrusion_multiplier = 1.1
+fan_always_on = 1
+filament_cost = 32.99
+filament_density = 1.21
+filament_deretract_speed = 25
+filament_max_volumetric_speed = 2.5
+filament_retract_before_travel = 3
+filament_retract_length = 1
+filament_retract_lift = 0
+filament_retract_speed = nil
+filament_vendor = SainSmart
+filament_wipe = 0
+first_layer_bed_temperature = 50
+first_layer_temperature = 230
+full_fan_speed_layer = 6
+max_fan_speed = 80
+min_fan_speed = 80
+min_print_speed = 15
+temperature = 230
+
+# ---------------------------
+# Misc Filament
+# ---------------------------
+[filament:PolyMaker PolySmooth @MakerGear]
+inherits = *PLA*
+bed_temperature = 60
+bridge_fan_speed = 100
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+cooling = 1
+disable_fan_first_layers = 1
+fan_always_on = 1
+fan_below_layer_time = 100
+filament_colour = #666666
+filament_cost = 20
+filament_density = 1.24
+filament_max_volumetric_speed = 10
+filament_retract_length = 1
+filament_retract_speed = 25
+filament_type = Misc
+filament_vendor = PolyMaker
+first_layer_bed_temperature = 55
+first_layer_temperature = 215
+max_fan_speed = 100
+min_fan_speed = 100
+temperature = 210
+
+[filament:Empty @MakerGear]
+inherits = *EMPTY*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2_DUAL|3_ID)).*/
+filament_cost = 0
+filament_density = 0
+filament_spool_weight = 0
+filament_vendor = MakerGear
+filament_type = Misc
+
+# ---------------------------
+# Generic Filament
+# ---------------------------
+[filament:Generic ABS @MakerGear]
+inherits = *ABS*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 27.82
+filament_density = 1.04
+filament_vendor = Generic
+
+[filament:Generic PETG @MakerGear]
+inherits = *PET*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 27.82
+filament_density = 1.27
+filament_vendor = Generic
+
+
+[filament:Generic ASA @MakerGear]
+inherits = *ABS*
+bed_temperature = 90
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 27.82
+filament_density = 1.04
+filament_type = ASA
+filament_vendor = Generic
+first_layer_bed_temperature = 95
+first_layer_temperature = 250
+temperature = 245
+
+[filament:Generic FLEX @MakerGear]
+inherits = *FLEX*
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+filament_cost = 82
+filament_density = 1.22
+filament_max_volumetric_speed = 1.2
+filament_retract_length = 0
+filament_retract_lift = nil
+filament_retract_speed = nil
+filament_vendor = Generic
+
+[filament:Generic HIPS @MakerGear]
+inherits = *ABS*
+bridge_fan_speed = 50
+compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_MAKERGEAR.*/ and printer_notes=~/.*PRINTER_MODEL_MAKERGEAR_(U1|M(2|2_DUAL|3_SE|3_ID|3_ID_DUPLICATION)).*/
+cooling = 1
+extrusion_multiplier = 1
+fan_always_on = 1
+fan_below_layer_time = 10
+filament_colour = #FFFFD7
+filament_cost = 27.3
+filament_density = 1.04
+filament_soluble = 1
+filament_type = HIPS
+filament_vendor = Generic
+first_layer_temperature = 230
+max_fan_speed = 20
+min_fan_speed = 20
+temperature = 230
+
+# /~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\
+# |~~~ Common printer presets ~~~|
+# \~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/
+[printer:*default*]
+before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
+between_objects_gcode =
+color_change_gcode =
+extruder_colour = #FD8309;#E1E1E1
+extruder_offset = 0x0
+gcode_flavor = marlin
+layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
+machine_limits_usage = time_estimate_only
+nozzle_diameter = 0.35
+octoprint_apikey =
+octoprint_host =
+pause_print_gcode = M601
+printer_notes = Dont 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_VENDOR_MAKERGEAR\n
+printer_settings_id =
+printer_technology = FFF
+remaining_times = 0
+retract_length = 2
+serial_port =
+serial_speed = 115200
+silent_mode = 0
+use_firmware_retraction = 0
+use_relative_e_distances = 0
+use_volumetric_e = 0
+variable_layer_height = 0
+
+# ---------------------------
+# MakerGear Micro
+# ---------------------------
+[printer:MakerGear Micro]
+inherits = *default*
+bed_shape = 0x0, 81x0, 81x81, 0x81
+default_filament_profile = "MakerGear PLA @MakerGear_Micro"
+default_print_profile = 0.20mm Normal @0.40 Nozzle MakerGear
+end_gcode = M104 S0 ; Turn off hotend temperature \nG1 X0 Y81 Z95
+gcode_flavor = marlin
+machine_max_acceleration_e = 2000, 2000
+machine_max_acceleration_extruding = 2000, 2000
+machine_max_acceleration_retracting = 2000, 2000
+machine_max_acceleration_x = 450, 450
+machine_max_acceleration_y = 450, 450
+machine_max_acceleration_z = 10, 10
+machine_max_feedrate_e = 30, 30
+machine_max_feedrate_x = 300, 300
+machine_max_feedrate_y = 300, 300
+machine_max_feedrate_z = 20, 20
+machine_max_jerk_e = 10, 10
+# machine_max_jerk_x = Using Junction Deviation Factor
+# machine_max_jerk_y = Using Junction Deviation Factor
+# machine_max_jerk_z = Using Junction Deviation Factor
+max_layer_height = 0.3
+max_print_height = 100
+nozzle_diameter = 0.40
+printer_model = MAKERGEAR_MICRO
+printer_notes = Dont 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_VENDOR_MAKERGEAR\nPRINTER_MODEL_MAKERGEAR_MICRO\n
+printer_variant = 0.40
+retract_length = 6
+retract_speed = 60
+start_gcode = G90 ; blank \nM82 ; blank \nG28 ; home all axes \nG29 ; Mesh testing \nG1 X0 Y0 ; moves axes \nM109 S[first_layer_temperature_[current_extruder]] ; wait for hotend to reach first layer temperature
+# thumbnails = 16x16, 261x256
+
+# ---------------------------
+# MakerGear M2
+# ---------------------------
+[printer:MakerGear M2 (V4 Hotend)]
+inherits = *default*
+bed_shape = 0x0,200x0,200x251,0x251
+default_filament_profile = "MakerGear PLA @MakerGear"
+default_print_profile = 0.20mm Normal @0.35 nozzle MakerGear
+end_gcode = M104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nG91 ; relative mode\nG1 Z10 ; lift 10mm\nG90 ; absolute mode\nG28 X0 ; home X axis\nM84 ; disable motors
+machine_max_acceleration_e = 2000, 2000
+machine_max_acceleration_extruding = 2000, 2000
+machine_max_acceleration_retracting = 3000, 3000
+machine_max_acceleration_x = 2000, 2000
+machine_max_acceleration_y = 2000, 2000
+machine_max_acceleration_z = 2000, 2000
+machine_max_feedrate_e = 25, 25
+machine_max_feedrate_x = 200, 200
+machine_max_feedrate_y = 200, 200
+machine_max_feedrate_z = 25, 25
+machine_max_jerk_e = 1, 1
+machine_max_jerk_x = 4, 4
+machine_max_jerk_y = 4, 4
+machine_max_jerk_z = 0.4, 0.4
+max_print_height = 200
+nozzle_diameter = 0.35
+printer_model = MAKERGEAR_M2
+printer_notes = Dont 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_VENDOR_MAKERGEAR\nPRINTER_MODEL_MAKERGEAR_M2\n
+printer_variant = 0.35
+start_gcode = M108 S255 ; turn on M2 fans\nG28 ; home all axes\nG1 Y50 Z0.3 F9600 ; move forward to avoid binder clips\nG1 X205 Z10 ; move off platform\nG1 Z0.4 ; position nozzle\nG92 E0 ; zero extruder\nM109 S[first_layer_temperature_[current_extruder]]\nG1 E25 F225 ; purge nozzle\nG92 E0 ; zero extruder\nG1 X190 Z0.1 E1.0 F1200 ; slow wipe\nG1 X180 Z0.25 ; lift\n
+# thumbnails = 16x16,220x124
+
+[printer:MakerGear M2 0.25 Nozzle]
+inherits = MakerGear M2 (V4 Hotend)
+default_print_profile = 0.15mm Normal @0.25 nozzle MakerGear
+max_layer_height = 0.15
+min_layer_height = 0.05
+nozzle_diameter = 0.25
+printer_variant = 0.25
+retract_length = 1
+retract_lift = 0.15
+retract_speed = 50
+
+[printer:MakerGear M2 0.50 Nozzle]
+inherits = MakerGear M2 (V4 Hotend)
+default_print_profile = 0.20mm Quality @0.50 nozzle MakerGear
+max_layer_height = 0.35
+min_layer_height = 0.1
+nozzle_diameter = 0.50
+printer_variant = 0.50
+
+[printer:MakerGear M2 0.75 Nozzle]
+inherits = MakerGear M2 (V4 Hotend)
+default_print_profile = 0.25mm Quality @0.75 nozzle MakerGear
+max_layer_height = 0.5
+min_layer_height = 0.15
+nozzle_diameter = 0.75
+printer_variant = 0.75
+retract_length = 1
+retract_speed = 35
+
+# -------------------------------
+# MakerGear M2 Dual
+# -------------------------------
+[printer:MakerGear M2 Dual]
+inherits = *default*
+bed_shape = 0x0,200x0,200x251,0x251
+default_filament_profile = "MakerGear PLA @MakerGear"
+default_print_profile = 0.20mm Normal @0.35 nozzle MakerGear
+end_gcode = M104 S0 T1 ; turn off right extruder\nM104 S0 T0 ; turn off left extruder\nM140 S0 ; turn off bed\nG91 ; relative mode\nG1 Z10 ; lift 10mm\nG90 ; absolute mode\nG28 X0 ; home X axis\nM84 ; disable motors
+extruders_count = 2
+machine_max_acceleration_e = 2000, 2000
+machine_max_acceleration_extruding = 1000, 1000
+machine_max_acceleration_retracting = 2000, 2000
+machine_max_acceleration_x = 1200, 1200
+machine_max_acceleration_y = 1200, 1200
+machine_max_acceleration_z = 10, 10
+machine_max_feedrate_e = 30, 30
+machine_max_feedrate_x = 300, 300
+machine_max_feedrate_y = 300, 300
+machine_max_feedrate_z = 10, 10
+machine_max_jerk_e = 10, 10
+machine_max_jerk_x = 5, 5
+machine_max_jerk_y = 5, 5
+machine_max_jerk_z = 1, 1
+max_print_height = 200
+nozzle_diameter = 0.35,0.35
+printer_model = MAKERGEAR_M2_DUAL
+printer_notes = Dont 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_VENDOR_MAKERGEAR\nPRINTER_MODEL_MAKERGEAR_M2_DUAL\n
+printer_variant = 0.35
+start_gcode = \nM108 S0 ; Turn on M2 fans\n; Turn off hotends to reduce ooze on the bed during startup\n; NOTE: this does not explicitly wait for the hotends to completely cool down\nM104 T0 S0\nM104 T1 S0\n\n{if first_layer_bed_temperature[1] < first_layer_bed_temperature[0]}\nM140 S{first_layer_bed_temperature[0]} ; Set bed temperature\nM190 S{first_layer_bed_temperature[0]} ; Wait for bed to reach temperature\n{endif}\n\n{if first_layer_bed_temperature[0] < first_layer_bed_temperature[1]}\nM140 S{first_layer_bed_temperature[1]} ; Set bed temperature\nM190 S{first_layer_bed_temperature[1]} ; Wait for bed to reach temperature\n{endif}\n\nT1 ; Switch to right extruder offsets for homing\nG28 ; Home all axes\nT0 ; Switch to left extruder\nG1 X0 Y50 Z0.3 F9600 ; Move forward to avoid binder clips\nG1 X200 Z10 F3600 ; Move off platform\n\n; Set hotend temperature\nM104 T0 S{first_layer_temperature[0]}\nM104 T1 S{first_layer_temperature[1]}\n\n; Wait for hotends to reach temperature\nM109 T0 S{first_layer_temperature[0]}\nM109 T1 S{first_layer_temperature[1]}\n\n\n{if temperature[1] == 0}\n; Single Mode - Left Purge script\n\nG1 Z0.4 ; Position nozzle above buildplate\nG92 E0 ; Zero extruder\nG1 E25 F225 ; Purge left extruder\nG92 E0 ; Zero extruder\nG1 X160 Z0.1 E1.0 F1200 ; Slow wipe\nG1 X140 Z0.25 ; Lift\n{endif}\n\n{if temperature[0] == 0}\n; Single Mode - Right Purge Script\n\nG1 Z0.4 ; Position nozzle above buildplate\nT1 ; Switch to right extruder\nG92 E0 ; Zero extruder\nG1 E25 F225 ; Purge right extruder\nG92 E0 ; Zero extruder\nG1 X160 Z0.1 E1.0 F1200 ; Slow wipe\nG1 X140 Z0.25 ; Lift\n{endif}\n\n{if temperature[0] > 0 and temperature[1] > 0}\n; Dual Mode - Purge Script\nG1 Z0.4 ; Position nozzle above buildplate\nG92 E0 ; Zero extruder\nG1 E25 F225 ; Purge left extruder\nG92 E0 ; Zero extruder\nT1 ; Set right extruder\nG1 E25 F225 ; Purge right extruder\nG92 E0 ; Zero extruder\nG1 X160 Z0.1 E1.0 F1200 ; Slow wipe\nG1 X140 Z0.25 ; Lift\nT0\nG92 E0 ; Zero extruder\n{endif}
+# thumbnails = 16x16,220x124
+
+[printer:MakerGear M2 Dual 0.25 Nozzle]
+inherits = MakerGear M2 Dual
+default_print_profile = 0.15mm Normal @0.25 nozzle MakerGear
+max_layer_height = 0.15
+min_layer_height = 0.05
+nozzle_diameter = 0.25
+printer_variant = 0.25
+retract_length = 1
+retract_lift = 0.15
+retract_speed = 50
+
+[printer:MakerGear M2 Dual 0.50 Nozzle]
+inherits = MakerGear M2 Dual
+default_print_profile = 0.20mm Quality @0.50 nozzle MakerGear
+max_layer_height = 0.35
+min_layer_height = 0.1
+nozzle_diameter = 0.50
+printer_variant = 0.50
+
+[printer:MakerGear M2 Dual 0.75 Nozzle]
+inherits = MakerGear M2 Dual
+default_print_profile = 0.25mm Quality @0.75 nozzle MakerGear
+max_layer_height = 0.5
+min_layer_height = 0.15,0.15
+nozzle_diameter = 0.75,0.75
+printer_variant = 0.75
+retract_length = 1, 1
+retract_speed = 35, 35
+
+# ---------------------------
+# MakerGear M3-S3
+# ---------------------------
+[printer:MakerGear M3 Single Extruder]
+inherits = *default*
+bed_shape = 0x0,200x0,200x251,0x251
+default_filament_profile = "MakerGear PLA @MakerGear"
+default_print_profile = 0.20mm Normal @0.35 nozzle MakerGear
+end_gcode = M104 S0 ; turn off extruder\nM104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nG1 Z200 Y0 X215 F10000\nM106 S0\nM84 ; disable motors
+host_type = octoprint
+machine_max_acceleration_e = 2000, 2000
+machine_max_acceleration_extruding = 1000, 1000
+machine_max_acceleration_retracting = 2000, 2000
+machine_max_acceleration_x = 1200, 1200
+machine_max_acceleration_y = 1200, 1200
+machine_max_acceleration_z = 10, 10
+machine_max_feedrate_e = 30, 30
+machine_max_feedrate_x = 300, 300
+machine_max_feedrate_y = 300, 300
+machine_max_feedrate_z = 10, 10
+machine_max_jerk_e = 10, 10
+machine_max_jerk_x = 5, 5
+machine_max_jerk_y = 5, 5
+machine_max_jerk_z = 1, 1
+max_print_height = 200
+nozzle_diameter = 0.35
+printer_model = MAKERGEAR_M3_SE
+printer_notes = Dont 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_VENDOR_MAKERGEAR\nPRINTER_MODEL_MAKERGEAR_M3_SE\n
+printer_variant = 0.35
+start_gcode = G28 ; home all axes\nG1 X215 Y40 Z0.1 F10000 ; move off the bed and bring the bed up\nM109 S[first_layer_temperature_[current_extruder]]\nG92 E0 ; zero extruder\nG1 X195 Z0.1 F1000; scrape off any ooze\nG1 Z5 ; lift\nG1 X170 Y3 F10000; move to unused front edge\nG1 Z0.30 F1000\n\nG1 X40 E20 F1000\nG1 X30 Z0.05 F1000 ; wipe off tail\nG1 Z1\nG92 E0\nM211 S0 ;disable software endstops\n; ok now you can start
+# thumbnails = 16x16,220x124
+
+[printer:MakerGear M3 Single Extruder 0.25 Nozzle]
+inherits = MakerGear M3 Single Extruder
+default_print_profile = 0.15mm Normal @0.25 nozzle MakerGear
+max_layer_height = 0.15
+min_layer_height = 0.05
+nozzle_diameter = 0.25
+printer_variant = 0.25
+retract_length = 1
+retract_lift = 0.15
+retract_speed = 50
+
+[printer:MakerGear M3 Single Extruder 0.50 Nozzle]
+inherits = MakerGear M3 Single Extruder
+default_print_profile = 0.20mm Quality @0.50 nozzle MakerGear
+max_layer_height = 0.35
+min_layer_height = 0.1
+nozzle_diameter = 0.50
+printer_variant = 0.50
+
+[printer:MakerGear M3 Single Extruder 0.75 Nozzle]
+inherits = MakerGear M3 Single Extruder
+default_print_profile = 0.25mm Quality @0.75 nozzle MakerGear
+max_layer_height = 0.5
+min_layer_height = 0.25
+nozzle_diameter = 0.75
+printer_variant = 0.75
+retract_length = 1
+retract_speed = 35
+
+# ------------------------------
+# MakerGear M3 Independent Dual Rev.0
+# ------------------------------
+[printer:MakerGear M3 Independent Dual Rev.0]
+inherits = *default*
+bed_shape = 0x0,200x0,200x255,0x251
+default_filament_profile = "MakerGear PLA @MakerGear"
+default_print_profile = 0.20mm Normal @0.35 nozzle MakerGear
+end_gcode = M104 S0 ; turn off extruder\nM104 S0 T0 ; turn off extruder\nM104 S0 T1; turn off extruder\nM140 S0 ; turn off bed\nM106 S0 ; turn off cooling fan\nG91 ; relative mode\nG1 Z20 ; move Z down 20mm if possible Max endstop will catch it if it is to far\nG90; absolute mode\nG28 X ; home tool/s\nT0 ; defualt tool should always be T0\nG1 Y230 F10000 ; move build plate out\nM84 ; disable motors
+extruders_count = 2
+extruder_offset = 0x0,0x0
+host_type = octoprint
+machine_max_acceleration_e = 2000, 2000
+machine_max_acceleration_extruding = 1000, 1000
+machine_max_acceleration_retracting = 2000, 2000
+machine_max_acceleration_x = 1200, 1200
+machine_max_acceleration_y = 1200, 1200
+machine_max_acceleration_z = 10, 10
+machine_max_feedrate_e = 30, 30
+machine_max_feedrate_x = 300, 300
+machine_max_feedrate_y = 300, 300
+machine_max_feedrate_z = 10, 10
+machine_max_jerk_e = 10, 10
+machine_max_jerk_x = 5, 5
+machine_max_jerk_y = 5, 5
+machine_max_jerk_z = 1, 1
+max_layer_height = 0.28,0.28
+max_print_height = 200
+nozzle_diameter = 0.35,0.35
+printer_model = MAKERGEAR_M3_ID_0_DUPLICATION
+printer_notes = Dont 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_VENDOR_MAKERGEAR\nPRINTER_MODEL_MAKERGEAR_M3_ID_0\n
+printer_variant = 0.35
+retract_length_toolchange = 4,4
+start_gcode = ;M3 Independent Dual Startup Script\n\n; Turn off hotends to reduce ooze on the bed during startup\n; NOTE: this does not explicitly wait for the hotends to completely cool down\nM104 T0 S0\nM104 T1 S0\n\n{if first_layer_bed_temperature[1] < first_layer_bed_temperature[0]}\nM140 S{first_layer_bed_temperature[0]} ; Set bed temperature\nM190 S{first_layer_bed_temperature[0]} ; Wait for bed to reach temperature\n{endif}\n\n{if first_layer_bed_temperature[0] < first_layer_bed_temperature[1]}\nM140 S{first_layer_bed_temperature[1]} ; Set bed temperature\nM190 S{first_layer_bed_temperature[1]} ; Wait for bed to reach temperature\n{endif}\n\nM605 S0 ; Set to full independent control on x axes\nT0 ; Switch to left hotend\nG28 ; Home all axes probe/mesh if available\n\n; Set hotend temperature\nM104 T0 S{first_layer_temperature[0]}\nM104 T1 S{first_layer_temperature[1]}\n\n; Wait for hotends to reach temperature\nM109 T0 S{first_layer_temperature[0]}\nM109 T1 S{first_layer_temperature[1]}\n\n; Purge Scripts\n{if temperature[1] == 0}\n\n; Single Mode - Left Purge\nM211 S0 ; Turn off software endstops\nG1 X205 Y210 Z0.1 F10000 ; Move off the bed and bring the bed up\nG92 E0 ; Zero extruder\nG1 X195 Z0.1 F1000 ; Scrape off any ooze\nG1 Z10 ; Lift bed\nG1 X160 Y240 F10000 ; move to unused front edge\nG1 Z0.30 F1000\nG1 X40 E20 F1000\nG1 X30 Z0.05 F1000 ; wipe off tail\nG1 Z10\nG92 E0{endif}\n\n{if temperature[0] == 0}\n; Single Mode - Right Purge\nM211 S0 ; Turn off software endstops for purge moves\nG1 X25 F9000 ; Move T0 past bedclips as to not damage probe\nT1 ; Switch to right hotend\nG1 X205 Y210 Z0.1 F10000 ; Move off the bed and bring the bed up\nG92 E0 ; Zero extruder\nG1 X195 Z0.1 F1000 ; Scrape off any ooze\nG1 Z10 ; Lift\nG1 X100 Y240 F10000 ; Move to unused front edge\nG1 Z0.30 F1000\nG1 X180 E9.25 F1000 ; Deposit extrusion line\nG1 Y239 E9.45 F1000 ; Move Y-axis and extrude\nG1 X130 E17.05; lift \nF1000 ; deposit extrusion line\nG1 X120 Z0.05 F1000 ; wipe off tail\nG92 E0; zero extruder\nG1 Z10 Y230 ; move back to safe bounds\nT0\nG1 X-20.77 ; move T0 back home\nT1{endif}\n\n{if temperature[0] > 0 and temperature[1] > 0}\n; M3-ID T0/T1 Starting Script\nG1 X25 F9000; move T0 past bedclips as to not damage probe\n\nT1 ; Switch to right extruder\nG1 X215 Y210 Z0.1 F10000 ; move off the bed and bring the bed up\nG92 E0 ; zero extruder\nG1 X195 Z0.1 F1000; scrape off any ooze\nG1 Z10 ; lift\nM211 S0 ; turn off soft endstops for purge moves\nG1 X100 Y240 F10000; move to unused back edge\nG1 Z0.30 F1000\nG1 X180 E9.25 F1000; deposit extrusion line\nG1 Y239 E9.45 F1000 ; move and extrude y\nG1 X130 E17.05; lift F1000; deposit extrusion line\nG1 X100 Z0.05 F1000 ; wipe off tail\nG92 E0; zero extruder\nG1 Z10 Y225 ; move back to safe bounds\nG1 X252 F4800; move T1 home\n\nT0;\nG1 X205 Y210 Z0.1 F10000 ; move off the bed and bring the bed up\nG92 E0 ; zero extruder\nG1 X195 Z0.1 F1000; scrape off any ooze\nG1 Z10 ; lift\nG1 X100 Y240 F10000; move to unused back edge\nG1 Z0.30 F1000\nG1 X20 E9.25 F1000; deposit extrusion line\nG1 Y239 E9.45 F1000 ; move and extrude y\nG1 X70 E17.05; lift F1000; deposit extrusion line\nG1 X100 Z0.05 F1000 ; wipe off tail\nG92 E0; zero extruder\nG1 Z10 Y225 ; move back to safe bounds\nG1 X-20.77 F4800 ; move T0 home\nG92 E0{endif}\n; ok now you can start
+toolchange_gcode = {if next_extruder == 0}\nT1 ; makes sure T1 is active\nG90 ; switch into absolute mode\nG1 X252\nT0\n{endif}\n\n{if next_extruder == 1}\nT0 ; makes sure T0 is active\nG90 ; switch into absolute mode\nG1 X-4\nT1\n{endif}\n
+# thumbnails = 16x16,220x124
+
+[printer:MakerGear M3 Independent Dual Rev.0 0.25 Nozzle]
+inherits = MakerGear M3 Independent Dual Rev.0
+default_print_profile = 0.15mm Normal @0.25 nozzle MakerGear
+max_layer_height = 0.15,0.15
+min_layer_height = 0.05,0.05
+nozzle_diameter = 0.25,0.25
+printer_variant = 0.25
+retract_length = 1
+retract_lift = 0.15
+retract_speed = 50
+
+[printer:MakerGear M3 Independent Dual Rev.0 0.50 Nozzle]
+inherits = MakerGear M3 Independent Dual Rev.0
+default_print_profile = 0.20mm Quality @0.50 nozzle MakerGear
+max_layer_height = 0.35,0.35
+min_layer_height = 0.1,0.1
+nozzle_diameter = 0.50,0.50
+printer_variant = 0.50
+
+[printer:MakerGear M3 Independent Dual Rev.0 0.75 Nozzle]
+inherits = MakerGear M3 Independent Dual Rev.0
+default_print_profile = 0.25mm Quality @0.75 nozzle MakerGear
+max_layer_height = 0.5,0.5
+min_layer_height = 0.15,0.15
+nozzle_diameter = 0.75,0.75
+printer_variant = 0.75
+retract_length = 1, 1
+retract_speed = 35, 35
+
+# -----------------------------------
+# MakerGear M3-ID (Duplication Mode)
+# -----------------------------------
+[printer:MakerGear M3 Independent Dual Rev.0 (Duplication Mode)]
+inherits = MakerGear M3 Independent Dual Rev.0
+bed_shape = 0x0,100x0,100x251,0x251
+end_gcode = M605 S0 ; set to full independent control\nM104 S0 ; turn off extruder\nM104 S0 T0 ; turn off extruder\nM104 S0 T1 ; turn off extruder\nM140 S0 ; turn off bed\nM106 S0 ; turn off cooling fan\nG91 ; relative mode\nG1 Z20 ; move Z down 20mm if possible Max endstop will catch it if it is to far\nG90 ; absolute mode\nG28 X ; home tools\nT0 ; default tool should always be T0\nG1 Y230 F10000 ; move build plate out\nM84 ; disable motors
+extruders_count = 1
+nozzle_diameter = 0.35
+printer_model = MAKERGEAR_M3_ID_0_DUPLICATION
+printer_notes = Dont 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_VENDOR_MAKERGEAR\nPRINTER_MODEL_MAKERGEAR_M3_ID_0_DUPLICATION\n
+printer_variant = 0.35
+start_gcode = ;M3 ID Duplication Mode startup script\nM211 S1 ; turn on soft endstops to protect the machine\nM605 S0 ; set to full independent control on x axes\nG28 XYZ ; home without mesh level compensation\n\n; Set hotend temperature\nM104 T0 S{first_layer_temperature[0]}\nM104 T1 S{first_layer_temperature[0]}\n\n; Wait for hotend's to reach temperature\nM109 T0 S{first_layer_temperature[0]}\nM109 T1 S{first_layer_temperature[0]}\n\nT0 ; Make sure we're on T0\nM605 S2 R0 X100 ; set X to duplication mode 0 temperature difference 100 X difference\nG28 X ; home x axes to engange mode\nM211 S0 ; turn off soft endstops to let us move to back of the bed\nG1 X20 F1000 ; move to start x position\nG1 Y243 Z0.1 F10000 ; move off the bed and bring the bed up\nG92 E0 ; zero extruder\nG1 Y240 Z0.1 F1000 ; scrape off any ooze\nG1 Z0.30 F1000 ; lift\nG1 X80 E9.25 ; lift F1000 ; deposit extrusion line\nG1 Y239 E9.45 F1000 ; move and extrude y\nG1 X30 E17.05 ; lift F1000 ; deposit extrusion line\nG1 X20 Z0.05 F1000 ; wipe off tail\nG1 Z10 Y223 ; lift to avoid clips and move back to safe bounds\nM400 ; wait for moves to finish before proceeding so that T1 doesn't get caught in a deadzone when switching back to Soft endstops on \n;\n;\nM211 S0 ; turn off soft endstops \nG92 E0; zero extruder
+# thumbnails = 16x16,300x350
+
+[printer:MakerGear M3 Independent Dual Rev.0 0.25 Nozzle (Duplication Mode)]
+inherits = MakerGear M3 Independent Dual Rev.0 (Duplication Mode)
+default_print_profile = 0.15mm Normal @0.25 nozzle MakerGear
+max_layer_height = 0.15
+min_layer_height = 0.05
+nozzle_diameter = 0.25
+printer_variant = 0.25
+retract_length = 1
+retract_lift = 0.15
+retract_speed = 50
+
+[printer:MakerGear M3 Independent Dual Rev.0 0.50 Nozzle (Duplication Mode)]
+inherits = MakerGear M3 Independent Dual Rev.0 (Duplication Mode)
+default_print_profile = 0.20mm Quality @0.50 nozzle MakerGear
+max_layer_height = 0.35
+min_layer_height = 0.1
+nozzle_diameter = 0.50
+printer_variant = 0.50
+
+[printer:MakerGear M3 Independent Dual Rev.0 0.75 Nozzle (Duplication Mode)]
+inherits = MakerGear M3 Independent Dual Rev.0 (Duplication Mode)
+default_print_profile = 0.25mm Quality @0.75 nozzle MakerGear
+max_layer_height = 0.5
+min_layer_height = 0.15
+nozzle_diameter = 0.75
+printer_variant = 0.75
+retract_length = 1
+retract_speed = 35
+
+# ------------------------------
+# MakerGear M3 Independent Dual Rev.1
+# ------------------------------
+[printer:MakerGear M3 Independent Dual Rev.1]
+inherits = *default*
+bed_shape = 0x0,200x0,200x251,0x251
+default_filament_profile = "MakerGear PLA @MakerGear"
+default_print_profile = 0.20mm Normal @0.35 nozzle MakerGear
+end_gcode = M104 S0 ; turn off extruder\nM104 S0 T0 ; turn off extruder\nM104 S0 T1; turn off extruder\nM140 S0 ; turn off bed\nM106 S0 ; turn off cooling fan\nG91 ; relative mode\nG1 Z20 ; move Z down 20mm if possible Max endstop will catch it if it is to far\nG90; absolute mode\nG28 X ; home tool/s\nT0 ; defualt tool should always be T0\nG1 Y230 F10000 ; move build plate out\nM84 ; disable motors
+extruders_count = 2
+extruder_offset = 0x0,0x0
+host_type = octoprint
+machine_max_acceleration_e = 2000, 2000
+machine_max_acceleration_extruding = 1000, 1000
+machine_max_acceleration_retracting = 2000, 2000
+machine_max_acceleration_x = 1200, 1200
+machine_max_acceleration_y = 1200, 1200
+machine_max_acceleration_z = 10, 10
+machine_max_feedrate_e = 30, 30
+machine_max_feedrate_x = 300, 300
+machine_max_feedrate_y = 300, 300
+machine_max_feedrate_z = 10, 10
+machine_max_jerk_e = 10, 10
+machine_max_jerk_x = 5, 5
+machine_max_jerk_y = 5, 5
+machine_max_jerk_z = 1, 1
+max_layer_height = 0.28,0.28
+max_print_height = 200
+nozzle_diameter = 0.35,0.35
+printer_model = MAKERGEAR_M3_ID_1
+printer_notes = Dont 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_VENDOR_MAKERGEAR\nPRINTER_MODEL_MAKERGEAR_M3_ID_1\n
+printer_variant = 0.35
+retract_length_toolchange = 4,4
+start_gcode = ;M3 Independent Dual Startup Script\n\n; Turn off hotends to reduce ooze on the bed during startup\n; NOTE: this does not explicitly wait for the hotends to completely cool down\nM104 T0 S0\nM104 T1 S0\n\n{if first_layer_bed_temperature[1] < first_layer_bed_temperature[0]}\nM140 S{first_layer_bed_temperature[0]} ; Set bed temperature\nM190 S{first_layer_bed_temperature[0]} ; Wait for bed to reach temperature\n{endif}\n\n{if first_layer_bed_temperature[0] < first_layer_bed_temperature[1]}\nM140 S{first_layer_bed_temperature[1]} ; Set bed temperature\nM190 S{first_layer_bed_temperature[1]} ; Wait for bed to reach temperature\n{endif}\n\nM605 S0 ; Set to full independent control on x axes\nT0 ; Switch to left hotend\nG28 ; Home all axes probe/mesh if available\n\n; Set hotend temperature\nM104 T0 S{first_layer_temperature[0]}\nM104 T1 S{first_layer_temperature[1]}\n\n; Wait for hotends to reach temperature\nM109 T0 S{first_layer_temperature[0]}\nM109 T1 S{first_layer_temperature[1]}\n\n; Purge Scripts\n{if temperature[1] == 0}\n\n; Single Mode - Left Purge\nM211 S0 ; Turn off software endstops\nG1 X205 Y210 Z0.1 F10000 ; Move off the bed and bring the bed up\nG92 E0 ; Zero extruder\nG1 X195 Z0.1 F1000 ; Scrape off any ooze\nG1 Z10 ; Lift bed\nG1 X160 Y240 F10000 ; move to unused front edge\nG1 Z0.30 F1000\nG1 X40 E20 F1000\nG1 X30 Z0.05 F1000 ; wipe off tail\nG1 Z10\nG92 E0{endif}\n\n{if temperature[0] == 0}\n; Single Mode - Right Purge\nM211 S0 ; Turn off software endstops for purge moves\nG1 X25 F9000 ; Move T0 past bedclips as to not damage probe\nT1 ; Switch to right hotend\nG1 X205 Y210 Z0.1 F10000 ; Move off the bed and bring the bed up\nG92 E0 ; Zero extruder\nG1 X195 Z0.1 F1000 ; Scrape off any ooze\nG1 Z10 ; Lift\nG1 X100 Y240 F10000 ; Move to unused front edge\nG1 Z0.30 F1000\nG1 X180 E9.25 F1000 ; Deposit extrusion line\nG1 Y239 E9.45 F1000 ; Move Y-axis and extrude\nG1 X130 E17.05; lift \nF1000 ; deposit extrusion line\nG1 X120 Z0.05 F1000 ; wipe off tail\nG92 E0; zero extruder\nG1 Z10 Y230 ; move back to safe bounds\nT0\nG1 X-20.77 ; move T0 back home\nT1{endif}\n\n{if temperature[0] > 0 and temperature[1] > 0}\n; M3-ID T0/T1 Starting Script\nG1 X25 F9000; move T0 past bedclips as to not damage probe\n\nT1 ; Switch to right extruder\nG1 X215 Y210 Z0.1 F10000 ; move off the bed and bring the bed up\nG92 E0 ; zero extruder\nG1 X195 Z0.1 F1000; scrape off any ooze\nG1 Z10 ; lift\nM211 S0 ; turn off soft endstops for purge moves\nG1 X100 Y240 F10000; move to unused back edge\nG1 Z0.30 F1000\nG1 X180 E9.25 F1000; deposit extrusion line\nG1 Y239 E9.45 F1000 ; move and extrude y\nG1 X130 E17.05; lift F1000; deposit extrusion line\nG1 X100 Z0.05 F1000 ; wipe off tail\nG92 E0; zero extruder\nG1 Z10 Y225 ; move back to safe bounds\nG1 X252 F4800; move T1 home\n\nT0;\nG1 X205 Y210 Z0.1 F10000 ; move off the bed and bring the bed up\nG92 E0 ; zero extruder\nG1 X195 Z0.1 F1000; scrape off any ooze\nG1 Z10 ; lift\nG1 X100 Y240 F10000; move to unused back edge\nG1 Z0.30 F1000\nG1 X20 E9.25 F1000; deposit extrusion line\nG1 Y239 E9.45 F1000 ; move and extrude y\nG1 X70 E17.05; lift F1000; deposit extrusion line\nG1 X100 Z0.05 F1000 ; wipe off tail\nG92 E0; zero extruder\nG1 Z10 Y225 ; move back to safe bounds\nG1 X-20.77 F4800 ; move T0 home\nG92 E0{endif}\n; ok now you can start
+toolchange_gcode = {if next_extruder == 0}\nT1 ; makes sure T1 is active\nG90 ; switch into absolute mode\nG1 X252\nT0\n{endif}\n\n{if next_extruder == 1}\nT0 ; makes sure T0 is active\nG90 ; switch into absolute mode\nG1 X-20.77\nT1\n{endif}\n
+# thumbnails = 16x16,220x124
+
+[printer:MakerGear M3 Independent Dual Rev.1 0.25 Nozzle]
+inherits = MakerGear M3 Independent Dual Rev.1
+default_print_profile = 0.15mm Normal @0.25 nozzle MakerGear
+max_layer_height = 0.15,0.15
+min_layer_height = 0.05,0.05
+nozzle_diameter = 0.25,0.25
+printer_variant = 0.25
+retract_length = 1
+retract_lift = 0.15
+retract_speed = 50
+
+[printer:MakerGear M3 Independent Dual Rev.1 0.50 Nozzle]
+inherits = MakerGear M3 Independent Dual Rev.1
+default_print_profile = 0.20mm Quality @0.50 nozzle MakerGear
+max_layer_height = 0.35,0.35
+min_layer_height = 0.1,0.1
+nozzle_diameter = 0.50,0.50
+printer_variant = 0.50
+
+[printer:MakerGear M3 Independent Dual Rev.1 0.75 Nozzle]
+inherits = MakerGear M3 Independent Dual Rev.1
+default_print_profile = 0.25mm Quality @0.75 nozzle MakerGear
+max_layer_height = 0.5,0.5
+min_layer_height = 0.15,0.15
+nozzle_diameter = 0.75,0.75
+printer_variant = 0.75
+retract_length = 1, 1
+retract_speed = 35, 35
+
+# -----------------------------------
+# MakerGear M3-ID (Duplication Mode)
+# -----------------------------------
+[printer:MakerGear M3 Independent Dual Rev.1 (Duplication Mode)]
+inherits = MakerGear M3 Independent Dual Rev.1
+bed_shape = 0x0,100x0,100x251,0x251
+end_gcode = M605 S0 ; set to full independent control\nM104 S0 ; turn off extruder\nM104 S0 T0 ; turn off extruder\nM104 S0 T1 ; turn off extruder\nM140 S0 ; turn off bed\nM106 S0 ; turn off cooling fan\nG91 ; relative mode\nG1 Z20 ; move Z down 20mm if possible Max endstop will catch it if it is to far\nG90 ; absolute mode\nG28 X ; home tools\nT0 ; default tool should always be T0\nG1 Y230 F10000 ; move build plate out\nM84 ; disable motors
+extruders_count = 1
+nozzle_diameter = 0.35
+printer_model = MAKERGEAR_M3_ID_1_DUPLICATION
+printer_notes = Dont 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_VENDOR_MAKERGEAR\nPRINTER_MODEL_MAKERGEAR_M3_ID_1_DUPLICATION\n
+printer_variant = 0.35
+start_gcode = ;M3 ID Duplication Mode startup script\nM211 S1 ; turn on soft endstops to protect the machine\nM605 S0 ; set to full independent control on x axes\nG28 XYZ ; home without mesh level compensation\n\n; Set hotend temperature\nM104 T0 S{first_layer_temperature[0]}\nM104 T1 S{first_layer_temperature[0]}\n\n; Wait for hotend's to reach temperature\nM109 T0 S{first_layer_temperature[0]}\nM109 T1 S{first_layer_temperature[0]}\n\nT0 ; Make sure we're on T0\nM605 S2 R0 X100 ; set X to duplication mode 0 temperature difference 100 X difference\nG28 X ; home x axes to engange mode\nM211 S0 ; turn off soft endstops to let us move to back of the bed\nG1 X20 F1000 ; move to start x position\nG1 Y243 Z0.1 F10000 ; move off the bed and bring the bed up\nG92 E0 ; zero extruder\nG1 Y240 Z0.1 F1000 ; scrape off any ooze\nG1 Z0.30 F1000 ; lift\nG1 X80 E9.25 ; lift F1000 ; deposit extrusion line\nG1 Y239 E9.45 F1000 ; move and extrude y\nG1 X30 E17.05 ; lift F1000 ; deposit extrusion line\nG1 X20 Z0.05 F1000 ; wipe off tail\nG1 Z10 Y223 ; lift to avoid clips and move back to safe bounds\nM400 ; wait for moves to finish before proceeding so that T1 doesn't get caught in a deadzone when switching back to Soft endstops on \n;\n;\nM211 S0 ; turn off soft endstops \nG92 E0; zero extruder
+# thumbnails = 16x16,300x350
+
+[printer:MakerGear M3 Independent Dual Rev.1 0.25 Nozzle (Duplication Mode)]
+inherits = MakerGear M3 Independent Dual Rev.1 (Duplication Mode)
+default_print_profile = 0.15mm Normal @0.25 nozzle MakerGear
+max_layer_height = 0.15
+min_layer_height = 0.05
+nozzle_diameter = 0.25
+printer_variant = 0.25
+retract_length = 1
+retract_lift = 0.15
+retract_speed = 50
+
+[printer:MakerGear M3 Independent Dual Rev.1 0.50 Nozzle (Duplication Mode)]
+inherits = MakerGear M3 Independent Dual Rev.1 (Duplication Mode)
+default_print_profile = 0.20mm Quality @0.50 nozzle MakerGear
+max_layer_height = 0.35
+min_layer_height = 0.1
+nozzle_diameter = 0.50
+printer_variant = 0.50
+
+[printer:MakerGear M3 Independent Dual Rev.1 0.75 Nozzle (Duplication Mode)]
+inherits = MakerGear M3 Independent Dual Rev.1 (Duplication Mode)
+default_print_profile = 0.25mm Quality @0.75 nozzle MakerGear
+max_layer_height = 0.5
+min_layer_height = 0.15
+nozzle_diameter = 0.75
+printer_variant = 0.75
+retract_length = 1
+retract_speed = 35
+
+# -----------------------------------
+# MakerGear Ultra One
+# -----------------------------------
+[printer:MakerGear Ultra One]
+inherits = *default*
+bed_shape = 0x0,406x0,406x355,0x355
+default_filament_profile = "MakerGear PLA @MakerGear"
+default_print_profile = 0.20mm Quality @0.50 nozzle MakerGear
+end_gcode = M106 P2 S0 ; turn off exhaust fan\n \nM104 S0 ; turn off extruder\nM104 S0 T0 ; turn off extruder\nM104 S0 T1; turn off extruder\nM140 P0 S0 ; turn off bed\nM140 P1 S0 ; turn off bed\nM140 P2 S0 ; turn off bed\nM140 P3 S0 ; turn off bed\nM106 S0 ; turn off cooling fan\nG91 ; relative mode\nG1 Z20 ; move Z down 20mm\nG90; absolute mode\n\nG28 XY ; home tool/s\nM502 ; set to firmware default values\nT0 ; defualt tool should always be T0
+extruders_count = 2
+extruder_offset = 0x0,0x0
+gcode_flavor = reprapfirmware
+host_type = octoprint
+machine_max_acceleration_e = 2000, 2000
+machine_max_acceleration_extruding = 1000, 1000
+machine_max_acceleration_retracting = 1500, 1500
+machine_max_acceleration_x = 1000, 1000
+machine_max_acceleration_y = 1000, 1000
+machine_max_acceleration_z = 10, 10
+machine_max_feedrate_e = 30, 30
+machine_max_feedrate_x = 300, 300
+machine_max_feedrate_y = 300, 300
+machine_max_feedrate_z = 20, 20
+machine_max_jerk_e = 10, 10
+machine_max_jerk_x = 5, 5
+machine_max_jerk_y = 5, 5
+machine_max_jerk_z = 1, 1
+max_layer_height = 0.35,0.35
+max_print_height = 350
+nozzle_diameter = 0.50,0.50
+printer_model = MAKERGEAR_U1
+printer_notes = Dont 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_VENDOR_MAKERGEAR\nPRINTER_MODEL_MAKERGEAR_U1\n
+printer_variant = 0.50
+retract_length_toolchange = 4,4
+start_gcode = ;U1 Startup Script\n\nM203 X18000.00 Y18000.00 Z1200.00 U18000.00 E1800.00 ; U1 max feedrate mm/minute\n M201 X1200 Y1200 Z10 U1200 E2000 ; U1 Maximum Acceleration axes mm/s^2\n M204 P2000 T2000 ; U1 Maximum Acceleration printing / travel mm/s^2\n M566 X300 Y300 Z60 U300 E600 ; U1 instantenous speed change 'jerk' in mm/minute\n M593 F0 ; make sure dynamix acceleration is off \n\n; Turn off hotends to reduce ooze on the bed during startup\nM104 T0 S0\nM104 T1 S0\n; Note: this will not explicitly wait for the hotends to cool down\n\nM221 D0 S100 ; Extruder rate for T0 is set in the profile so set to 100%\nM221 D1 S100 ; Extruder rate for T1 is set in the profile so set to 100%\n\n{if first_layer_bed_temperature[1] < first_layer_bed_temperature[0]}\nM140 P0 S{first_layer_bed_temperature[0]} ; Middle bed heater strip\nM140 P1 S{first_layer_bed_temperature[0]} ; 2nd from left and second from right bed heater\nM140 P2 S{first_layer_bed_temperature[0]} ; Left bed heater strip\nM140 P3 S{first_layer_bed_temperature[0]} ; Right bed heater strip\n{endif}\n\n{if first_layer_bed_temperature[0] < first_layer_bed_temperature[1]}\nM140 P0 S{first_layer_bed_temperature[1]} ; Middle bed heater strip\nM140 P1 S{first_layer_bed_temperature[1]} ; 2nd from left and second from right bed heater\nM140 P2 S{first_layer_bed_temperature[1]} ; Left bed heater strip\nM140 P3 S{first_layer_bed_temperature[1]} ; Right bed heater strip\n{endif}\n\nM116 ; Wait for all bed heating pads to reach operation temperature before homing (this will wait for cooldown if there is overshoot)\nG28 ; 1)Home XY, 2)Home Z, 3)Auto Level, 4)Home Z, 5) Mesh Level\n\n; Set hotend temperature\nM104 T0 S{first_layer_temperature[0]}\nM104 T1 S{first_layer_temperature[1]}\n\n; Wait for hotends to reach temperature\nM109 T0 S{first_layer_temperature[0]}\nM109 T1 S{first_layer_temperature[1]}\n\nM116 ; Wait for all hotends to reach operation temperature (this will wait for cooldown if there is overshoot)\n\n; Purge Scripts\n{if temperature[1] == 0}\n; U1 Single Mode - Left Purge\nT0 ; implied by G28 but explicilty called here\nG1 Z20.0 F6000 ; Move Z to 20\nG92 E0 ; Zero Extruder\nM564 S0 ; Safteys off\nG1 X160 Y5 F1000 ; Move to unused front edge\nG1 Z0.30 F1000 ; Move closer to the bed\nG1 X40 E20 F1000 ; Deposit purge line\nG1 X30 Z0.05 F1000 ; Wipe off tail\nG1 Z10 ; Move away from bed\nG1 Y11 ; Move to Y-axis safe zone\nG92 E0 ; Zero extruder\nM564 S0 ; Safteys off\nM106 P2 S50 ; Enable exhaust fan\n{endif}\n\n{if temperature[0] == 0}\n; U1 Single Mode - Right Purge\nT1 ; Switch to T1\nG1 Z20.0 F6000 ; Move Z to 20\nG92 E0 ; Zero Extruder\nM564 S0 ; Safteys off\nG1 X160 Y5 F1000 ; Move to unused front edge\nG1 Z0.30 F1000 ; Move closer to the bed\nG1 X40 E20 F1000 ; Deposit purge line\nG1 X30 Z0.05 F1000 ; Wipe off tail\nG1 Z10 ; Move away from bed\nG1 Y11 ; Move to y safe zone\nG92 E0 ; Zero extruder\nM564 S0 ; Safteys off\nM106 P2 S50 ; Enable exhaust fan\n{endif}\n\n{if temperature[0] > 0 && temperature[1] > 0}\n; U1 T0/T1 Startup Script\nT1 ; Switch to T1\nG1 Z20.0 F6000 ; Move Z to 20\nG92 E0 ; Zero Extruder\nM564 S0 ; Safteys off\nG1 X160 Y5 F1000 ; Move to unused front edge\nG1 Z0.30 F1000 ; Move closer to the bed\nG1 X40 E20 F1000 ; Deposit purge line\nG1 X30 Z0.05 F1000 ; Wipe off tail\nG1 Z10 ; Move away from bed\nG1 Y11 ; Move to y safe zone\nG92 E0 ; Zero extruder\n\nT0 ; Switch to T0\nG1 X360 Y5 F1000 ; Move to unused front edge\nG1 Z0.30 F1000 ; Move closer to the bed\nG1 X240 E20 F1000 ; Deposit purge line\nG1 X230 Z0.05 F1000 ; Wipe off tail\nG1 Z10 ; Move away from bed\nG1 Y11 ; Move to y safe zone\nG92 E0 ; Zero extruder\nM564 S1 ; Safteys on\nM106 P2 S50 ; Enable exhaust fan\n{endif}
+toolchange_gcode =
+# thumbnails = 16x16,220x124
+
+[printer:MakerGear Ultra One 0.25 Nozzle]
+inherits = MakerGear Ultra One
+default_print_profile = 0.15mm Normal @0.25 nozzle MakerGear
+max_layer_height = 0.15,0.15
+min_layer_height = 0.05,0.05
+nozzle_diameter = 0.25,0.25
+printer_variant = 0.25
+retract_length = 1
+retract_lift = 0.15
+retract_speed = 50
+
+[printer:MakerGear Ultra One 0.35 Nozzle]
+inherits = MakerGear Ultra One
+default_print_profile = 0.20mm Normal @0.35 nozzle MakerGear
+max_layer_height = 0.30,0.30
+min_layer_height = 0.1,0.1
+nozzle_diameter = 0.35,0.35
+printer_variant = 0.35
+
+[printer:MakerGear Ultra One 0.75 Nozzle]
+inherits = MakerGear Ultra One
+default_print_profile = 0.25mm Quality @0.75 nozzle MakerGear
+max_layer_height = 0.5,0.5
+min_layer_height = 0.15,0.15
+nozzle_diameter = 0.75,0.75
+printer_variant = 0.75
+retract_length = 1, 1
+retract_speed = 35, 35
+
+# -----------------------------------
+# MakerGear Ultra One (Duplication Mode)
+# -----------------------------------
+
+[printer:MakerGear Ultra One (Duplication Mode)]
+inherits = MakerGear Ultra One
+bed_shape = 0x0,203x0,203x355,0x355
+end_gcode = M106 P2 S0 ; turn off exhaust fan\n\nM104 S0 ; turn off extruder\nM104 S0 T0 ; turn off extruder\nM104 S0 T1; turn off extruder\nM104 S0 T2; turn off extruder\nM140 P0 S0 ; turn off bed\nM140 P1 S0 ; turn off bed\nM140 P2 S0 ; turn off bed\nM140 P3 S0 ; turn off bed\nM106 S0 ; turn off cooling fan\nG91 ; relative mode\nG1 Z20 ; move Z down 20mm\nG90; absolute mode\n\nG28 XY ; home tool/s\nM502 ; set to firmware default values\nT0 ; defualt tool should always be T0
+extruders_count = 1
+nozzle_diameter = 0.50
+printer_model = MAKERGEAR_U1_DUPLICATION
+printer_notes = Dont 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_VENDOR_MAKERGEAR\nPRINTER_MODEL_MAKERGEAR_U1_DUPLICATION\n
+printer_variant = 0.50
+start_gcode = ;U1 Rev0 Duplication Script - T0 and T1\n\nM203 X18000.00 Y18000.00 Z1200.00 U18000.00 E1800.00 ; U1 max feedrate mm/minute\n M201 X1000 Y1000 Z10 U1000 E2000 ; U1 Maximum Acceleration axes mm/s^2\n M204 P2000 T2000 ; U1 Maximum Acceleration printing / travel mm/s^2\n M566 X300 Y300 Z60 U300 E600 ; U1 instantenous speed change 'jerk' in mm/minute\n M593 F0 ;make sure dynamix acceleration is off \n\n\n; turn off T0 hot end to reduce ooze on the bed during startup. NOTE: this does not explicitly wait for the hotends to totally cool down\nM104 T0 S0\nM104 T1 S0\nM104 T2 S0\n\n\nM221 D0 S100 ;extruder rate for T0 is set in S3D so set to 100% here\nM221 D1 S100 ;extruder rate for T1 is set in S3D so set to 100% here\n\n\nM140 P0 S[first_layer_bed_temperature] ;Middle bed heater strip\nM140 P1 S[first_layer_bed_temperature] ;2nd from left and second from right bed heater\nM140 P2 S[first_layer_bed_temperature] ;Left bed heater strip\nM140 P3 S[first_layer_bed_temperature] ;Right bed heater strip\n\nM116 ; wait for all bed heaters to get to temp before probing. This will wait for cooldown if there is overshoot. \n\nG29 S2 ; Clear any meshes \nG28 XY; home XY\nG28 Z ;Home Z\nG32 ;Auto Level \nG28 Z ; rehome Z\n\n;Get hot ends up to temp\nM104 T0 S{first_layer_temperature[0]}\nM104 T1 S{first_layer_temperature[0]}\nM104 T2 S{first_layer_temperature[0]}\nM116 ; wait for all bed heaters to get to temp before probing. This will wait for cooldown if there is overshoot. \n\n\n;***Initial Purge***\nT2\nG1 Z20.0 F6000 ; Move Z to 20\n\nG92 E0 ; Zero Extruder\n\nM564 S0 ; safteys off\nG1 X160 Y5F10000; move to unused front edge\nG1 Z0.30 F1000\nG1 X40 E20 F1000\nG1 X30 Z0.05 F1000 ; wipe off tail\nG1 Z10\nG1 Y11 ;safe zone\nG92 E0\n\nM564 S0 ; safteys off\n\n\nM106 P2 S100; exhaust fan change S value to enable (50 is a good starting value)\n\n; end startup script
+# thumbnails = 16x16,300x350
+
+[printer:MakerGear Ultra One 0.25 Nozzle (Duplication Mode)]
+inherits = MakerGear Ultra One (Duplication Mode)
+default_print_profile = 0.15mm Normal @0.25 nozzle MakerGear
+max_layer_height = 0.15
+min_layer_height = 0.05
+nozzle_diameter = 0.25
+printer_variant = 0.25
+retract_length = 1
+retract_lift = 0.15
+retract_speed = 50
+
+[printer:MakerGear Ultra One 0.35 Nozzle (Duplication Mode)]
+inherits = MakerGear Ultra One (Duplication Mode)
+default_print_profile = 0.20mm Normal @0.35 nozzle MakerGear
+max_layer_height = 0.35
+min_layer_height = 0.1
+nozzle_diameter = 0.35
+printer_variant = 0.35
+
+[printer:MakerGear Ultra One 0.75 Nozzle (Duplication Mode)]
+inherits = MakerGear Ultra One (Duplication Mode)
+default_print_profile = 0.25mm Quality @0.75 nozzle MakerGear
+max_layer_height = 0.5
+min_layer_height = 0.15
+nozzle_diameter = 0.75
+printer_variant = 0.75
+retract_length = 1
+retract_speed = 35
\ No newline at end of file
diff --git a/resources/profiles/MakerGear/M2_M3.stl b/resources/profiles/MakerGear/M2_M3.stl
new file mode 100644
index 0000000000..77f2f3197f
Binary files /dev/null and b/resources/profiles/MakerGear/M2_M3.stl differ
diff --git a/resources/profiles/MakerGear/M2_M3.svg b/resources/profiles/MakerGear/M2_M3.svg
new file mode 100644
index 0000000000..0fd213f8b4
--- /dev/null
+++ b/resources/profiles/MakerGear/M2_M3.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/resources/profiles/MakerGear/MAKERGEAR_M2_DUAL_thumbnail.png b/resources/profiles/MakerGear/MAKERGEAR_M2_DUAL_thumbnail.png
new file mode 100644
index 0000000000..3cf2e6d362
Binary files /dev/null and b/resources/profiles/MakerGear/MAKERGEAR_M2_DUAL_thumbnail.png differ
diff --git a/resources/profiles/MakerGear/MAKERGEAR_M2_thumbnail.png b/resources/profiles/MakerGear/MAKERGEAR_M2_thumbnail.png
new file mode 100644
index 0000000000..8f437a77b2
Binary files /dev/null and b/resources/profiles/MakerGear/MAKERGEAR_M2_thumbnail.png differ
diff --git a/resources/profiles/MakerGear/MAKERGEAR_M3_DUPLICATION_thumbnail.png b/resources/profiles/MakerGear/MAKERGEAR_M3_DUPLICATION_thumbnail.png
new file mode 100644
index 0000000000..879a1b0678
Binary files /dev/null and b/resources/profiles/MakerGear/MAKERGEAR_M3_DUPLICATION_thumbnail.png differ
diff --git a/resources/profiles/MakerGear/MAKERGEAR_M3_SE_thumbnail.png b/resources/profiles/MakerGear/MAKERGEAR_M3_SE_thumbnail.png
new file mode 100644
index 0000000000..b8791bec05
Binary files /dev/null and b/resources/profiles/MakerGear/MAKERGEAR_M3_SE_thumbnail.png differ
diff --git a/resources/profiles/MakerGear/MAKERGEAR_M3_thumbnail.png b/resources/profiles/MakerGear/MAKERGEAR_M3_thumbnail.png
new file mode 100644
index 0000000000..c3dc4e756f
Binary files /dev/null and b/resources/profiles/MakerGear/MAKERGEAR_M3_thumbnail.png differ
diff --git a/resources/profiles/MakerGear/MAKERGEAR_MICRO_thumbnail.png b/resources/profiles/MakerGear/MAKERGEAR_MICRO_thumbnail.png
new file mode 100644
index 0000000000..cfcd8a8e85
Binary files /dev/null and b/resources/profiles/MakerGear/MAKERGEAR_MICRO_thumbnail.png differ
diff --git a/resources/profiles/MakerGear/MAKERGEAR_U1_thumbnail.png b/resources/profiles/MakerGear/MAKERGEAR_U1_thumbnail.png
new file mode 100644
index 0000000000..7052ac44bf
Binary files /dev/null and b/resources/profiles/MakerGear/MAKERGEAR_U1_thumbnail.png differ
diff --git a/resources/profiles/PrusaResearch.idx b/resources/profiles/PrusaResearch.idx
index f584d10fa7..6a1792bcff 100644
--- a/resources/profiles/PrusaResearch.idx
+++ b/resources/profiles/PrusaResearch.idx
@@ -1,6 +1,8 @@
min_slic3r_version = 2.6.0-alpha1
+1.6.0-alpha1 Updated FW version notification. Decreased min layer time for PLA.
1.6.0-alpha0 Default top fill set to monotonic lines. Updated infill/perimeter overlap values. Updated output filename format. Enabled dynamic overhang speeds.
min_slic3r_version = 2.5.0-alpha0
+1.5.6 Updated FW version notification (MK2.5/MK3 family). Added filament profile for Kimya PEBA-S.
1.5.5 Added new Prusament Resin material profiles. Enabled g-code thumbnails for MK2.5 family printers.
1.5.4 Added material profiles for Prusament Resin BioBased60.
1.5.3 Added filament profiles for ColorFabb VarioShore TPU, FormFutura PP, NinjaTek NinjaFlex/Cheetah TPU and for multiple Eolas Prints filaments. Updated bridging settings in 50um and 70um profiles.
@@ -10,6 +12,7 @@ min_slic3r_version = 2.5.0-alpha0
1.5.0-alpha1 Added filament profile for Prusament PA11 Carbon Fiber. Added profiles for multiple 3D-Fuel filaments.
1.5.0-alpha0 Added parameters for Arachne perimeter generator. Changed default seam position. Updated output filename format.
min_slic3r_version = 2.4.0-rc
+1.4.9 Updated FW version notification.
1.4.8 Added filament and SLA material profiles. Updated settings.
1.4.7 Added filament profile for Prusament PA11 Carbon Fiber. Added profiles for multiple 3D-Fuel filaments.
1.4.6 Added SLA materials. Updated filament profiles.
@@ -39,6 +42,7 @@ min_slic3r_version = 2.4.0-alpha0
1.3.0-alpha1 Added Prusament PCCF. Increased travel acceleration for Prusa MINI. Updated start g-code for Prusa MINI. Added multiple add:north and Extrudr filament profiles. Updated Z travel speed values.
1.3.0-alpha0 Disabled thick bridges, updated support settings.
min_slic3r_version = 2.3.2-alpha0
+1.3.8 Updated FW version notification.
1.3.7 Updated firmware version.
1.3.6 Updated firmware version.
1.3.5 Added material profiles for Prusament Resins.
@@ -48,6 +52,7 @@ min_slic3r_version = 2.3.2-alpha0
1.3.1 Added multiple add:north and Extrudr filament profiles. Updated support head settings (SL1S).
1.3.0 Added SL1S SPEED profiles.
min_slic3r_version = 2.3.0-rc1
+1.2.13 Updated FW version notification.
1.2.12 Updated firmware version.
1.2.11 Updated firmware version.
1.2.10 Added multiple profiles for Filatech filaments. Updated SLA print settings (pad wall slope angle).
@@ -69,6 +74,7 @@ min_slic3r_version = 2.3.0-alpha4
1.2.0-alpha1 Renamed MK3S and MINI printer profiles. Updated end g-code (MINI). Added new SLA materials and filament profiles.
1.2.0-alpha0 Added filament spool weights
min_slic3r_version = 2.2.0-alpha3
+1.1.17 Updated FW version notification.
1.1.16 Updated firmware version.
1.1.15 Updated firmware version.
1.1.14 Updated firmware version.
@@ -95,6 +101,7 @@ min_slic3r_version = 2.2.0-alpha0
1.1.1-alpha2 Bumped up config version, so our in house customer will get updated profiles.
1.1.0 Filament aliases, Creality profiles and other goodies for PrusaSlicer 2.2.0-alpha0
min_slic3r_version = 2.1.1-beta0
+1.0.13 Updated FW version notification.
1.0.12 Updated firmware version.
1.0.11 Updated firmware version.
1.0.10 Updated firmware version for MK2.5/S and MK3/S.
diff --git a/resources/profiles/PrusaResearch.ini b/resources/profiles/PrusaResearch.ini
index 90486e438a..5928e7a736 100644
--- a/resources/profiles/PrusaResearch.ini
+++ b/resources/profiles/PrusaResearch.ini
@@ -5,7 +5,7 @@
name = Prusa Research
# Configuration version of this file. Config file will only be installed, if the config_version differs.
# This means, the server may force the PrusaSlicer configuration to be downgraded.
-config_version = 1.6.0-alpha0
+config_version = 1.6.0-alpha1
# Where to get the updates from?
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/PrusaResearch/
changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1%
@@ -1589,6 +1589,7 @@ first_layer_temperature = 215
max_fan_speed = 100
min_fan_speed = 100
temperature = 210
+slowdown_below_layer_time = 10
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.8}0.06{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.6}0.04{else}0.05{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K18{elsif nozzle_diameter[0]==0.8};{else}M900 K30{endif} ; Filament gcode LA 1.0"
[filament:*PET*]
@@ -9491,7 +9492,7 @@ inherits = Original Prusa i3 MK2S
printer_model = MK2.5
remaining_times = 1
machine_max_jerk_e = 4.5
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y200 F3600 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM900 K0 ; reset LA\nM84 ; disable motors\n; max_layer_z = [max_layer_z]
thumbnails = 160x120
@@ -9500,7 +9501,7 @@ inherits = Original Prusa i3 MK2S 0.25 nozzle
printer_model = MK2.5
remaining_times = 1
machine_max_jerk_e = 4.5
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y200 F3600 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM900 K0 ; reset LA\nM84 ; disable motors\n; max_layer_z = [max_layer_z]
thumbnails = 160x120
@@ -9510,7 +9511,7 @@ printer_model = MK2.5
remaining_times = 1
machine_max_jerk_e = 4.5
deretract_speed = 25
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y200 F3600 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM900 K0 ; reset LA\nM84 ; disable motors\n; max_layer_z = [max_layer_z]
thumbnails = 160x120
@@ -9527,7 +9528,7 @@ deretract_speed = 20
retract_lift = 0.25
remaining_times = 1
machine_max_jerk_e = 4.5
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y200 F3600 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM900 K0 ; reset LA\nM84 ; disable motors\n; max_layer_z = [max_layer_z]
default_print_profile = 0.40mm QUALITY @0.8 nozzle
default_filament_profile = Prusament PLA @0.8 nozzle
@@ -9542,7 +9543,7 @@ max_print_height = 200
default_print_profile = 0.15mm OPTIMAL @MK2.5
default_filament_profile = Prusament PLA
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_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2.5\n
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\n; select extruder\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; load to nozzle\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.20 F1000\nG1 X5 E4 F1000\nG92 E0\n
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\n; select extruder\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; load to nozzle\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.20 F1000\nG1 X5 E4 F1000\nG92 E0\n
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y210 F7200 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM104 S0 ; turn off temperature\nM900 K0 ; reset LA\nM84 ; disable motors
[printer:Original Prusa i3 MK2.5 MMU2 Single 0.8 nozzle]
@@ -9566,7 +9567,7 @@ printer_notes = Don't remove the following keywords! These keywords are used in
single_extruder_multi_material = 1
nozzle_diameter = 0.4,0.4,0.4,0.4,0.4
extruder_colour = #FF8000;#DB5182;#3EC0FF;#FF4F4F;#FBEB7D
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E32 F1073\nG1 X5 E32 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\nG92 E0\n
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E32 F1073\nG1 X5 E32 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\nG92 E0\n
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y210 F7200 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\n{if has_wipe_tower}\nG1 E-15 F3000\n{else}\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n{endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM900 K0 ; reset LA\nM84 ; disable motors\n; max_layer_z = [max_layer_z]
[printer:Original Prusa i3 MK2.5S]
@@ -9593,7 +9594,7 @@ max_print_height = 200
default_print_profile = 0.15mm OPTIMAL @MK2.5
default_filament_profile = Prusament PLA
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_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2.5\n
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y210 F7200 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM104 S0 ; turn off temperature\nM900 K0 ; reset LA\nM84 ; disable motors\n; max_layer_z = [max_layer_z]
[printer:Original Prusa i3 MK2.5S MMU2S Single 0.8 nozzle]
@@ -9607,7 +9608,7 @@ retract_length = 0.7
retract_speed = 35
deretract_speed = 20
retract_lift = 0.25
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n
default_print_profile = 0.40mm QUALITY @0.8 nozzle
default_filament_profile = Prusament PLA @0.8 nozzle
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
@@ -9632,7 +9633,7 @@ nozzle_diameter = 0.25
printer_variant = 0.25
retract_lift = 0.15
default_print_profile = 0.10mm DETAIL 0.25 nozzle
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F1400\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F1400\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n
color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
[printer:Original Prusa i3 MK2.5S MMU2S]
@@ -9644,7 +9645,7 @@ printer_notes = Don't remove the following keywords! These keywords are used in
single_extruder_multi_material = 1
nozzle_diameter = 0.4,0.4,0.4,0.4,0.4
extruder_colour = #FF8000;#DB5182;#3EC0FF;#FF4F4F;#FBEB7D
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E29 F1073\nG1 X5 E29 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\nG92 E0\n
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E29 F1073\nG1 X5 E29 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\nG92 E0\n
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y210 F7200 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\n{if has_wipe_tower}\nG1 E-15 F3000\n{else}\nG1 X0 Y210 F7200\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n{endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM104 S0 ; turn off temperature\nM900 K0 ; reset LA\nM84 ; disable motors\n; max_layer_z = [max_layer_z]
[printer:Original Prusa i3 MK2.5S MMU2S 0.6 nozzle]
@@ -9697,7 +9698,7 @@ color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
## printer_variant = 0.8
## retract_length = 1
## default_print_profile = 0.40mm QUALITY @0.8 nozzle
-## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG92 E0.0\n
+## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG92 E0.0\n
## [printer:Original Prusa i3 MK2.5 MMU2 0.8 nozzle]
## inherits = Original Prusa i3 MK2.5 MMU2
@@ -9707,7 +9708,7 @@ color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
## printer_variant = 0.8
## retract_length = 1
## default_print_profile = 0.40mm QUALITY @0.8 nozzle
-## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG92 E0.0\n
+## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\nG92 E0.0\n
# XXXXXXXXXXXXXXXXX
# XXX--- MK3 ---XXX
@@ -9737,7 +9738,7 @@ remaining_times = 1
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_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n
retract_lift_below = 209
max_print_height = 210
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
printer_model = MK3
default_print_profile = 0.15mm QUALITY @MK3
thumbnails = 160x120
@@ -9749,7 +9750,7 @@ max_layer_height = 0.15
min_layer_height = 0.05
printer_variant = 0.25
retract_lift = 0.15
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E8 F700 ; intro line\nG1 X100 E12.5 F700 ; intro line\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif}
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E8 F700 ; intro line\nG1 X100 E12.5 F700 ; intro line\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif}
default_print_profile = 0.10mm DETAIL @0.25 nozzle MK3
color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
@@ -9760,7 +9761,7 @@ max_layer_height = 0.40
min_layer_height = 0.15
printer_variant = 0.6
deretract_speed = 25
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
@@ -9774,7 +9775,7 @@ retract_length = 0.7
retract_speed = 35
deretract_speed = 20
retract_lift = 0.25
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0\nM221 S95
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0\nM221 S95
default_print_profile = 0.40mm QUALITY @0.8 nozzle
default_filament_profile = Prusament PLA @0.8 nozzle
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
@@ -9846,7 +9847,7 @@ default_filament_profile = Prusament PLA @MMU2
inherits = *mm2*
single_extruder_multi_material = 0
default_filament_profile = Prusament PLA
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y210 F7200 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nM84 ; disable motors\n; max_layer_z = [max_layer_z]
[printer:Original Prusa i3 MK3 MMU2 Single 0.6 nozzle]
@@ -9857,7 +9858,7 @@ max_layer_height = 0.40
min_layer_height = 0.15
printer_variant = 0.6
deretract_speed = 25
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
@@ -9872,7 +9873,7 @@ retract_length = 0.7
retract_speed = 35
deretract_speed = 20
retract_lift = 0.25
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
default_print_profile = 0.40mm QUALITY @0.8 nozzle
default_filament_profile = Prusament PLA @0.8 nozzle
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
@@ -9885,7 +9886,7 @@ max_layer_height = 0.15
min_layer_height = 0.05
printer_variant = 0.25
retract_lift = 0.15
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F1000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F1400\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif}
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F1000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F1400\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif}
default_print_profile = 0.10mm DETAIL @0.25 nozzle MK3
color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
@@ -9894,7 +9895,7 @@ inherits = *mm2*
machine_max_acceleration_e = 8000,8000
nozzle_diameter = 0.4,0.4,0.4,0.4,0.4
extruder_colour = #FF8000;#DB5182;#3EC0FF;#FF4F4F;#FBEB7D
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E32 F1073\nG1 X5 E32 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E32 F1073\nG1 X5 E32 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y210 F7200 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\n{if has_wipe_tower}\nG1 E-15 F3000\n{else}\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n{endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nM84 ; disable motors\n; max_layer_z = [max_layer_z]
[printer:Original Prusa i3 MK3S & MK3S+ MMU2S Single]
@@ -9902,7 +9903,7 @@ inherits = *mm2s*
renamed_from = "Original Prusa i3 MK3S MMU2S Single"
single_extruder_multi_material = 0
default_filament_profile = Prusament PLA
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y210 F7200 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM702 C\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nM84 ; disable motors\n; max_layer_z = [max_layer_z]
[printer:Original Prusa i3 MK3S & MK3S+ MMU2S Single 0.6 nozzle]
@@ -9914,7 +9915,7 @@ max_layer_height = 0.40
min_layer_height = 0.15
printer_variant = 0.6
deretract_speed = 25
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
@@ -9929,7 +9930,7 @@ retract_length = 0.7
retract_speed = 35
deretract_speed = 20
retract_lift = 0.25
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
default_print_profile = 0.40mm QUALITY @0.8 nozzle
default_filament_profile = Prusament PLA @0.8 nozzle
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
@@ -9943,7 +9944,7 @@ max_layer_height = 0.15
min_layer_height = 0.05
printer_variant = 0.25
retract_lift = 0.15
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F1400\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif}
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F1400\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E value below. Excessive value can damage the printer.\n{if print_settings_id=~/.*@0.25 nozzle MK3.*/}M907 E430 ; set extruder motor current{endif}
default_print_profile = 0.10mm DETAIL @0.25 nozzle MK3
color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
@@ -9953,7 +9954,7 @@ renamed_from = "Original Prusa i3 MK3S MMU2S"
machine_max_acceleration_e = 8000,8000
nozzle_diameter = 0.4,0.4,0.4,0.4,0.4
extruder_colour = #FF8000;#DB5182;#3EC0FF;#FF4F4F;#FBEB7D
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E29 F1073\nG1 X5 E29 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E29 F1073\nG1 X5 E29 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y210 F7200 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\n{if has_wipe_tower}\nG1 E-15 F3000\n{else}\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n{endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n\n; Unload filament\nM702 C\n\nG4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|SOLUBLE|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nM84 ; disable motors\n; max_layer_z = [max_layer_z]
## 0.6mm nozzle MMU2/S printer profiles
@@ -9966,7 +9967,7 @@ max_layer_height = 0.40
min_layer_height = 0.15
printer_variant = 0.6
deretract_speed = 25
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E29 F1073\nG1 X5 E29 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E29 F1073\nG1 X5 E29 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
@@ -9977,7 +9978,7 @@ max_layer_height = 0.40
min_layer_height = 0.15
printer_variant = 0.6
deretract_speed = 25
-start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E32 F1073\nG1 X5 E32 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
+start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E32 F1073\nG1 X5 E32 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
@@ -10011,7 +10012,7 @@ color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
## max_layer_height = 0.6
## min_layer_height = 0.2
## printer_variant = 0.8
-## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E32.0 F1073.0\nG1 X5.0 E32.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0
+## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E32.0 F1073.0\nG1 X5.0 E32.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0
## default_print_profile = 0.40mm QUALITY @0.8 nozzle
## [printer:Original Prusa i3 MK3S & MK3S+ MMU2S 0.8 nozzle]
@@ -10020,7 +10021,7 @@ color_change_gcode = M600\nG1 E0.3 F1500 ; prime after color change
## max_layer_height = 0.6
## min_layer_height = 0.2
## printer_variant = 0.8
-## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0
+## start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.12.1 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3.0 F1000.0\nG1 Z0.4 F1000.0\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55.0 E29.0 F1073.0\nG1 X5.0 E29.0 F1800.0\nG1 X55.0 E8.0 F2000.0\nG1 Z0.3 F1000.0\nG92 E0.0\nG1 X240.0 E25.0 F2200.0\nG1 Y-2.0 F1000.0\nG1 X55.0 E25 F1400.0\nG1 Z0.20 F1000.0\nG1 X5.0 E4.0 F1000.0\nG92 E0.0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0.0
## default_print_profile = 0.40mm QUALITY @0.8 nozzle
## MINI
diff --git a/src/imgui/imconfig.h b/src/imgui/imconfig.h
index 651df6183c..dff8aea9f7 100644
--- a/src/imgui/imconfig.h
+++ b/src/imgui/imconfig.h
@@ -150,6 +150,8 @@ namespace ImGui
// const wchar_t CustomSupportsMarker = 0x1D;
// const wchar_t CustomSeamMarker = 0x1E;
// const wchar_t MmuSegmentationMarker = 0x1F;
+ const wchar_t PlugMarker = 0x1C;
+ const wchar_t DowelMarker = 0x1D;
// Do not forget use following letters only in wstring
const wchar_t DocumentationButton = 0x2600;
const wchar_t DocumentationHoverButton = 0x2601;
diff --git a/src/libslic3r/ExtrusionEntity.hpp b/src/libslic3r/ExtrusionEntity.hpp
index 35c7151911..da584fe622 100644
--- a/src/libslic3r/ExtrusionEntity.hpp
+++ b/src/libslic3r/ExtrusionEntity.hpp
@@ -288,12 +288,12 @@ inline void extrusion_entities_append_paths(ExtrusionEntitiesPtr &dst, const Pol
}
}
-inline void extrusion_entities_append_paths(ExtrusionEntitiesPtr &dst, Polylines &&polylines, ExtrusionRole role, double mm3_per_mm, float width, float height)
+inline void extrusion_entities_append_paths(ExtrusionEntitiesPtr &dst, Polylines &&polylines, ExtrusionRole role, double mm3_per_mm, float width, float height, bool can_reverse = true)
{
dst.reserve(dst.size() + polylines.size());
for (Polyline &polyline : polylines)
if (polyline.is_valid()) {
- ExtrusionPath *extrusion_path = new ExtrusionPath(role, mm3_per_mm, width, height);
+ ExtrusionPath *extrusion_path = can_reverse ? new ExtrusionPath(role, mm3_per_mm, width, height) : new ExtrusionPathOriented(role, mm3_per_mm, width, height);
dst.push_back(extrusion_path);
extrusion_path->polyline = std::move(polyline);
}
diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp
index e3eafaafd0..3f865601a9 100644
--- a/src/libslic3r/GCode.cpp
+++ b/src/libslic3r/GCode.cpp
@@ -1784,9 +1784,7 @@ std::vector GCode::sort_print_object_instances(
if (ordering == nullptr) {
// Sequential print, single object is being printed.
assert(object_layers.size() == 1);
- const Layer *layer = object_layers.front().object_layer;
- assert(layer != nullptr);
- out.emplace_back(0, *layer->object(), single_object_instance_idx);
+ out.emplace_back(0, *object_layers.front().object(), single_object_instance_idx);
} else {
// Create mapping from PrintObject* to ObjectLayerToPrint ID.
std::vector> sorted;
diff --git a/src/libslic3r/GCode/CoolingBuffer.cpp b/src/libslic3r/GCode/CoolingBuffer.cpp
index f8e1dc6d75..fb2d12a680 100644
--- a/src/libslic3r/GCode/CoolingBuffer.cpp
+++ b/src/libslic3r/GCode/CoolingBuffer.cpp
@@ -461,23 +461,24 @@ std::vector CoolingBuffer::parse_layer_gcode(const std::
}
active_speed_modifier = size_t(-1);
} else if (boost::starts_with(sline, m_toolchange_prefix)) {
- unsigned int new_extruder;
+ unsigned int new_extruder = 0;
auto res = std::from_chars(sline.data() + m_toolchange_prefix.size(), sline.data() + sline.size(), new_extruder);
- // Only change extruder in case the number is meaningful. User could provide an out-of-range index through custom gcodes - those shall be ignored.
- if (new_extruder < map_extruder_to_per_extruder_adjustment.size()) {
- if (new_extruder != current_extruder) {
- // Switch the tool.
- line.type = CoolingLine::TYPE_SET_TOOL;
- current_extruder = new_extruder;
- adjustment = &per_extruder_adjustments[map_extruder_to_per_extruder_adjustment[current_extruder]];
+ if (res.ec != std::errc::invalid_argument) {
+ // Only change extruder in case the number is meaningful. User could provide an out-of-range index through custom gcodes - those shall be ignored.
+ if (new_extruder < map_extruder_to_per_extruder_adjustment.size()) {
+ if (new_extruder != current_extruder) {
+ // Switch the tool.
+ line.type = CoolingLine::TYPE_SET_TOOL;
+ current_extruder = new_extruder;
+ adjustment = &per_extruder_adjustments[map_extruder_to_per_extruder_adjustment[current_extruder]];
+ }
+ }
+ else {
+ // Only log the error in case of MM printer. Single extruder printers likely ignore any T anyway.
+ if (map_extruder_to_per_extruder_adjustment.size() > 1)
+ BOOST_LOG_TRIVIAL(error) << "CoolingBuffer encountered an invalid toolchange, maybe from a custom gcode: " << sline;
}
}
- else {
- // Only log the error in case of MM printer. Single extruder printers likely ignore any T anyway.
- if (map_extruder_to_per_extruder_adjustment.size() > 1)
- BOOST_LOG_TRIVIAL(error) << "CoolingBuffer encountered an invalid toolchange, maybe from a custom gcode: " << sline;
- }
-
} else if (boost::starts_with(sline, ";_BRIDGE_FAN_START")) {
line.type = CoolingLine::TYPE_BRIDGE_FAN_START;
} else if (boost::starts_with(sline, ";_BRIDGE_FAN_END")) {
@@ -785,9 +786,9 @@ std::string CoolingBuffer::apply_layer_cooldown(
if (line_start > pos)
new_gcode.append(pos, line_start - pos);
if (line->type & CoolingLine::TYPE_SET_TOOL) {
- unsigned int new_extruder;
+ unsigned int new_extruder = 0;
auto res = std::from_chars(line_start + m_toolchange_prefix.size(), line_end, new_extruder);
- if (new_extruder != m_current_extruder) {
+ if (res.ec != std::errc::invalid_argument && new_extruder != m_current_extruder) {
m_current_extruder = new_extruder;
change_extruder_set_fan();
}
diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp
index 7af46d5c08..eb7c46861f 100644
--- a/src/libslic3r/GCode/GCodeProcessor.cpp
+++ b/src/libslic3r/GCode/GCodeProcessor.cpp
@@ -593,9 +593,11 @@ void GCodeProcessor::apply_config(const PrintConfig& config)
m_time_processor.filament_unload_times[i] = static_cast(config.filament_unload_time.values[i]);
}
+ m_single_extruder_multi_material = config.single_extruder_multi_material;
+
// With MM setups like Prusa MMU2, the filaments may be expected to be parked at the beginning.
// Remember the parking position so the initial load is not included in filament estimate.
- if (config.single_extruder_multi_material && extruders_count > 1 && config.wipe_tower) {
+ if (m_single_extruder_multi_material && extruders_count > 1 && config.wipe_tower) {
m_parking_position = float(config.parking_pos_retraction.value);
m_extra_loading_move = float(config.extra_loading_move);
}
@@ -772,8 +774,10 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config)
const ConfigOptionFloat* parking_pos_retraction = config.option("parking_pos_retraction");
const ConfigOptionFloat* extra_loading_move = config.option("extra_loading_move");
- if (single_extruder_multi_material != nullptr && wipe_tower != nullptr && parking_pos_retraction != nullptr && extra_loading_move != nullptr) {
- if (single_extruder_multi_material->value && m_result.extruders_count > 1 && wipe_tower->value) {
+ m_single_extruder_multi_material = single_extruder_multi_material != nullptr && single_extruder_multi_material->value;
+
+ if (m_single_extruder_multi_material && wipe_tower != nullptr && parking_pos_retraction != nullptr && extra_loading_move != nullptr) {
+ if (m_single_extruder_multi_material && m_result.extruders_count > 1 && wipe_tower->value) {
m_parking_position = float(parking_pos_retraction->value);
m_extra_loading_move = float(extra_loading_move->value);
}
@@ -977,6 +981,8 @@ void GCodeProcessor::reset()
m_spiral_vase_active = false;
m_kissslicer_toolchange_time_correction = 0.0f;
+ m_single_extruder_multi_material = false;
+
#if ENABLE_GCODE_VIEWER_DATA_CHECKING
m_mm3_per_mm_compare.reset();
m_height_compare.reset();
@@ -3372,6 +3378,11 @@ void GCodeProcessor::process_T(const std::string_view command)
extra_time += m_kissslicer_toolchange_time_correction;
simulate_st_synchronize(extra_time);
+ // specific to single extruder multi material, set the extruder temperature
+ // if not done yet
+ if (m_single_extruder_multi_material && m_extruder_temps[m_extruder_id] == 0.0f)
+ m_extruder_temps[m_extruder_id] = m_extruder_temps[old_extruder_id];
+
m_result.extruders_count = std::max(m_result.extruders_count, m_extruder_id + 1);
}
diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp
index 59159ee0a0..05656c7fd2 100644
--- a/src/libslic3r/GCode/GCodeProcessor.hpp
+++ b/src/libslic3r/GCode/GCodeProcessor.hpp
@@ -559,6 +559,7 @@ namespace Slic3r {
#if ENABLE_GCODE_VIEWER_STATISTICS
std::chrono::time_point m_start_time;
#endif // ENABLE_GCODE_VIEWER_STATISTICS
+ bool m_single_extruder_multi_material;
enum class EProducer
{
diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp
index abbd835fe8..6e444fe491 100644
--- a/src/libslic3r/Model.hpp
+++ b/src/libslic3r/Model.hpp
@@ -385,7 +385,11 @@ public:
bool is_mm_painted() const;
// Checks if object contains just one volume and it's a text
bool is_text() const;
-
+ // This object may have a varying layer height by painting or by a table.
+ // Even if true is returned, the layer height profile may be "flat" with no difference to default layering.
+ bool has_custom_layering() const
+ { return ! this->layer_config_ranges.empty() || ! this->layer_height_profile.empty(); }
+
ModelInstance* add_instance();
ModelInstance* add_instance(const ModelInstance &instance);
ModelInstance* add_instance(const Vec3d &offset, const Vec3d &scaling_factor, const Vec3d &rotation, const Vec3d &mirror);
diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp
index bdc51dea60..c71d950590 100644
--- a/src/libslic3r/PerimeterGenerator.cpp
+++ b/src/libslic3r/PerimeterGenerator.cpp
@@ -728,6 +728,7 @@ ExtrusionPaths sort_and_connect_extra_perimeters(const std::vector connected_shells;
connected_shells.reserve(extra_perims.size());
for (const ExtrusionPaths &ps : extra_perims) {
+ // this will also filter away empty paths
connected_shells.push_back(reconnect_extrusion_paths(ps, 1.0 * extrusion_spacing));
}
@@ -753,7 +754,7 @@ ExtrusionPaths sort_and_connect_extra_perimeters(const std::vector current_dependencies{};
if (shell > 0) {
for (const auto &prev_path : dependencies[shell - 1]) {
- if (paths_touch(get_path(current_path), get_path(prev_path.first), extrusion_spacing * 2.0)) {
+ if (paths_touch(get_path(current_path), get_path(prev_path.first), extrusion_spacing * 1.5f)) {
current_dependencies.insert(prev_path.first);
};
}
@@ -845,7 +846,18 @@ first_point_found:
}
}
- ExtrusionPaths reconnected = reconnect_extrusion_paths(sorted_paths, extrusion_spacing * 2.0);
+ ExtrusionPaths reconnected;
+ reconnected.reserve(sorted_paths.size());
+ for (const ExtrusionPath &path : sorted_paths) {
+ if (!reconnected.empty() && (reconnected.back().last_point() - path.first_point()).cast().squaredNorm() <
+ extrusion_spacing * extrusion_spacing * 4.0) {
+ reconnected.back().polyline.points.insert(reconnected.back().polyline.points.end(), path.polyline.points.begin(),
+ path.polyline.points.end());
+ } else {
+ reconnected.push_back(path);
+ }
+ }
+
ExtrusionPaths filtered;
filtered.reserve(reconnected.size());
for (ExtrusionPath &p : reconnected) {
@@ -1030,12 +1042,6 @@ std::tuple, Polygons> generate_extra_perimeters_over
break;
}
}
- Polylines perimeter = intersection_pl(to_polylines(perimeter_polygon), shrinked_overhang_to_cover);
- if (!perimeter.empty()) {
- overhang_region.emplace_back();
- extrusion_paths_append(overhang_region.back(), perimeter, ExtrusionRole::OverhangPerimeter, overhang_flow.mm3_per_mm(),
- overhang_flow.width(), overhang_flow.height());
- }
perimeter_polygon = expand(perimeter_polygon, 0.5 * overhang_flow.scaled_spacing());
perimeter_polygon = union_(perimeter_polygon, anchoring);
diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp
index ced6cd2a3a..e4cc8497f9 100644
--- a/src/libslic3r/Print.cpp
+++ b/src/libslic3r/Print.cpp
@@ -474,6 +474,10 @@ std::string Print::validate(std::string* warning) const
return L("Some objects are too tall and cannot be printed without extruder collisions.");
}
+ if (m_config.avoid_crossing_perimeters && m_config.avoid_crossing_curled_overhangs) {
+ return L("Avoid crossing perimeters option and avoid crossing curled overhangs option cannot be both enabled together.");
+ }
+
if (m_config.spiral_vase) {
size_t total_copies_count = 0;
for (const PrintObject *object : m_objects)
@@ -487,6 +491,47 @@ std::string Print::validate(std::string* warning) const
return L("The Spiral Vase option can only be used when printing single material objects.");
}
+ // Cache of layer height profiles for checking:
+ // 1) Whether all layers are synchronized if printing with wipe tower and / or unsynchronized supports.
+ // 2) Whether layer height is constant for Organic supports.
+ // 3) Whether build volume Z is not violated.
+ std::vector> layer_height_profiles;
+ auto layer_height_profile = [this, &layer_height_profiles](const size_t print_object_idx) -> const std::vector& {
+ const PrintObject &print_object = *m_objects[print_object_idx];
+ if (layer_height_profiles.empty())
+ layer_height_profiles.assign(m_objects.size(), std::vector());
+ std::vector &profile = layer_height_profiles[print_object_idx];
+ if (profile.empty())
+ PrintObject::update_layer_height_profile(*print_object.model_object(), print_object.slicing_parameters(), profile);
+ return profile;
+ };
+
+ // Checks that the print does not exceed the max print height
+ for (size_t print_object_idx = 0; print_object_idx < m_objects.size(); ++ print_object_idx) {
+ const PrintObject &print_object = *m_objects[print_object_idx];
+ //FIXME It is quite expensive to generate object layers just to get the print height!
+ if (auto layers = generate_object_layers(print_object.slicing_parameters(), layer_height_profile(print_object_idx));
+ ! layers.empty() && layers.back() > this->config().max_print_height) {
+ return L("The print is taller than the maximum allowed height. You might want to reduce the size of your model"
+ " or change current print settings and retry.");
+ }
+ }
+
+ // Some of the objects has variable layer height applied by painting or by a table.
+ bool has_custom_layering = std::find_if(m_objects.begin(), m_objects.end(),
+ [](const PrintObject *object) { return object->model_object()->has_custom_layering(); })
+ != m_objects.end();
+
+ // Custom layering is not allowed for tree supports as of now.
+ for (size_t print_object_idx = 0; print_object_idx < m_objects.size(); ++ print_object_idx)
+ if (const PrintObject &print_object = *m_objects[print_object_idx];
+ print_object.has_support_material() && print_object.config().support_material_style.value == smsOrganic &&
+ print_object.model_object()->has_custom_layering()) {
+ if (const std::vector &layers = layer_height_profile(print_object_idx); ! layers.empty())
+ if (! check_object_layers_fixed(print_object.slicing_parameters(), layers))
+ return L("Variable layer height is not supported with Organic supports.");
+ }
+
if (this->has_wipe_tower() && ! m_objects.empty()) {
// Make sure all extruders use same diameter filament and have the same nozzle diameter
// EPSILON comparison is used for nozzles and 10 % tolerance is used for filaments
@@ -514,19 +559,8 @@ std::string Print::validate(std::string* warning) const
return L("The Wipe Tower is currently not supported for multimaterial sequential prints.");
if (m_objects.size() > 1) {
- bool has_custom_layering = false;
- std::vector> layer_height_profiles;
- for (const PrintObject *object : m_objects) {
- has_custom_layering = ! object->model_object()->layer_config_ranges.empty() || ! object->model_object()->layer_height_profile.empty();
- if (has_custom_layering) {
- layer_height_profiles.assign(m_objects.size(), std::vector());
- break;
- }
- }
- const SlicingParameters &slicing_params0 = m_objects.front()->slicing_parameters();
- size_t tallest_object_idx = 0;
- if (has_custom_layering)
- PrintObject::update_layer_height_profile(*m_objects.front()->model_object(), slicing_params0, layer_height_profiles.front());
+ const SlicingParameters &slicing_params0 = m_objects.front()->slicing_parameters();
+ size_t tallest_object_idx = 0;
for (size_t i = 1; i < m_objects.size(); ++ i) {
const PrintObject *object = m_objects[i];
const SlicingParameters &slicing_params = object->slicing_parameters();
@@ -541,8 +575,9 @@ std::string Print::validate(std::string* warning) const
if (! equal_layering(slicing_params, slicing_params0))
return L("The Wipe Tower is only supported for multiple objects if they are sliced equally.");
if (has_custom_layering) {
- PrintObject::update_layer_height_profile(*object->model_object(), slicing_params, layer_height_profiles[i]);
- if (*(layer_height_profiles[i].end()-2) > *(layer_height_profiles[tallest_object_idx].end()-2))
+ auto &lh = layer_height_profile(i);
+ auto &lh_tallest = layer_height_profile(tallest_object_idx);
+ if (*(lh.end()-2) > *(lh_tallest.end()-2))
tallest_object_idx = i;
}
}
@@ -1169,7 +1204,7 @@ void Print::alert_when_supports_needed()
for (const auto &obj : objects_isssues) {
for (const auto &issue : obj.second) {
po_by_support_issues[issue].push_back(obj.first);
- if (issue.first == SupportSpotsGenerator::SupportPointCause::SeparationFromBed){
+ if (issue.first == SupportSpotsGenerator::SupportPointCause::SeparationFromBed && !obj.first->has_brim()){
recommend_brim = true;
}
}
@@ -1200,7 +1235,9 @@ void Print::alert_when_supports_needed()
}
}
- message += "\n" + L("Consider enabling supports") + (recommend_brim ? (" " + L("and/or brim")) : "") + ".";
+ bool brim_or_supp = recommend_brim && po_by_support_issues.size() < 2;
+ auto brim_part = " " + (brim_or_supp ? L("or") : L("and")) + " " + L("brim");
+ message += "\n" + L("Consider enabling supports") + (recommend_brim ? brim_part : "") + ".";
if (objects_isssues.size() > 0) {
this->active_step_add_warning(PrintStateBase::WarningLevel::NON_CRITICAL, message);
diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp
index da330603fa..1e45fb5740 100644
--- a/src/libslic3r/PrintObject.cpp
+++ b/src/libslic3r/PrintObject.cpp
@@ -1792,6 +1792,8 @@ bool PrintObject::update_layer_height_profile(const ModelObject &model_object, c
// use the constructor because the assignement is crashing on ASAN OsX
layer_height_profile = std::vector(model_object.layer_height_profile.get());
// layer_height_profile = model_object.layer_height_profile;
+ // The layer height returned is sampled with high density for the UI layer height painting
+ // and smoothing tool to work.
updated = true;
}
@@ -1806,6 +1808,7 @@ bool PrintObject::update_layer_height_profile(const ModelObject &model_object, c
if (layer_height_profile.empty()) {
//layer_height_profile = layer_height_profile_adaptive(slicing_parameters, model_object.layer_config_ranges, model_object.volumes);
layer_height_profile = layer_height_profile_from_ranges(slicing_parameters, model_object.layer_config_ranges);
+ // The layer height profile is already compressed.
updated = true;
}
return updated;
diff --git a/src/libslic3r/Slicing.cpp b/src/libslic3r/Slicing.cpp
index 7d4fac7a29..27c6b8ec3c 100644
--- a/src/libslic3r/Slicing.cpp
+++ b/src/libslic3r/Slicing.cpp
@@ -183,32 +183,47 @@ std::vector layer_height_profile_from_ranges(
// 2) Convert the trimmed ranges to a height profile, fill in the undefined intervals between z=0 and z=slicing_params.object_print_z_max()
// with slicing_params.layer_height
std::vector layer_height_profile;
- for (std::vector>::const_iterator it_range = ranges_non_overlapping.begin(); it_range != ranges_non_overlapping.end(); ++ it_range) {
- coordf_t lo = it_range->first.first;
- coordf_t hi = it_range->first.second;
- coordf_t height = it_range->second;
- coordf_t last_z = layer_height_profile.empty() ? 0. : layer_height_profile[layer_height_profile.size() - 2];
- if (lo > last_z + EPSILON) {
+ auto last_z = [&layer_height_profile]() {
+ return layer_height_profile.empty() ? 0. : *(layer_height_profile.end() - 2);
+ };
+ auto lh_append = [&layer_height_profile, last_z](coordf_t z, coordf_t layer_height) {
+ if (! layer_height_profile.empty()) {
+ bool last_z_matches = is_approx(*(layer_height_profile.end() - 2), z);
+ bool last_h_matches = is_approx(layer_height_profile.back(), layer_height);
+ if (last_h_matches) {
+ if (last_z_matches) {
+ // Drop a duplicate.
+ return;
+ }
+ if (layer_height_profile.size() >= 4 && is_approx(*(layer_height_profile.end() - 3), layer_height)) {
+ // Third repetition of the same layer_height. Update z of the last entry.
+ *(layer_height_profile.end() - 2) = z;
+ return;
+ }
+ }
+ }
+ layer_height_profile.push_back(z);
+ layer_height_profile.push_back(layer_height);
+ };
+
+ for (const std::pair &non_overlapping_range : ranges_non_overlapping) {
+ coordf_t lo = non_overlapping_range.first.first;
+ coordf_t hi = non_overlapping_range.first.second;
+ coordf_t height = non_overlapping_range.second;
+ if (coordf_t z = last_z(); lo > z + EPSILON) {
// Insert a step of normal layer height.
- layer_height_profile.push_back(last_z);
- layer_height_profile.push_back(slicing_params.layer_height);
- layer_height_profile.push_back(lo);
- layer_height_profile.push_back(slicing_params.layer_height);
+ lh_append(z, slicing_params.layer_height);
+ lh_append(lo, slicing_params.layer_height);
}
// Insert a step of the overriden layer height.
- layer_height_profile.push_back(lo);
- layer_height_profile.push_back(height);
- layer_height_profile.push_back(hi);
- layer_height_profile.push_back(height);
+ lh_append(lo, height);
+ lh_append(hi, height);
}
- coordf_t last_z = layer_height_profile.empty() ? 0. : layer_height_profile[layer_height_profile.size() - 2];
- if (last_z < slicing_params.object_print_z_height()) {
+ if (coordf_t z = last_z(); z < slicing_params.object_print_z_height()) {
// Insert a step of normal layer height up to the object top.
- layer_height_profile.push_back(last_z);
- layer_height_profile.push_back(slicing_params.layer_height);
- layer_height_profile.push_back(slicing_params.object_print_z_height());
- layer_height_profile.push_back(slicing_params.layer_height);
+ lh_append(z, slicing_params.layer_height);
+ lh_append(slicing_params.object_print_z_height(), slicing_params.layer_height);
}
return layer_height_profile;
@@ -294,7 +309,7 @@ std::vector layer_height_profile_adaptive(const SlicingParameters& slici
print_z += height;
}
- double z_gap = slicing_params.object_print_z_height() - layer_height_profile[layer_height_profile.size() - 2];
+ double z_gap = slicing_params.object_print_z_height() - *(layer_height_profile.end() - 2);
if (z_gap > 0.0)
{
layer_height_profile.push_back(slicing_params.object_print_z_height());
@@ -632,6 +647,40 @@ std::vector generate_object_layers(
return out;
}
+// Check whether the layer height profile describes a fixed layer height profile.
+bool check_object_layers_fixed(
+ const SlicingParameters &slicing_params,
+ const std::vector &layer_height_profile)
+{
+ assert(layer_height_profile.size() >= 4);
+ assert(layer_height_profile.size() % 2 == 0);
+ assert(layer_height_profile[0] == 0);
+
+ if (layer_height_profile.size() != 4 && layer_height_profile.size() != 8)
+ return false;
+
+ bool fixed_step1 = is_approx(layer_height_profile[1], layer_height_profile[3]);
+ bool fixed_step2 = layer_height_profile.size() == 4 ||
+ (layer_height_profile[2] == layer_height_profile[4] && is_approx(layer_height_profile[5], layer_height_profile[7]));
+
+ if (! fixed_step1 || ! fixed_step2)
+ return false;
+
+ if (layer_height_profile[2] < 0.5 * slicing_params.first_object_layer_height + EPSILON ||
+ ! is_approx(layer_height_profile[3], slicing_params.first_object_layer_height))
+ return false;
+
+ double z_max = layer_height_profile[layer_height_profile.size() - 2];
+ double z_2nd = slicing_params.first_object_layer_height + 0.5 * slicing_params.layer_height;
+ if (z_2nd > z_max)
+ return true;
+ if (z_2nd < *(layer_height_profile.end() - 4) + EPSILON ||
+ ! is_approx(layer_height_profile.back(), slicing_params.layer_height))
+ return false;
+
+ return true;
+}
+
int generate_layer_height_texture(
const SlicingParameters &slicing_params,
const std::vector &layers,
diff --git a/src/libslic3r/Slicing.hpp b/src/libslic3r/Slicing.hpp
index 489b2768fb..101976f2b7 100644
--- a/src/libslic3r/Slicing.hpp
+++ b/src/libslic3r/Slicing.hpp
@@ -129,11 +129,11 @@ inline bool equal_layering(const SlicingParameters &sp1, const SlicingParameters
typedef std::pair t_layer_height_range;
typedef std::map t_layer_config_ranges;
-extern std::vector layer_height_profile_from_ranges(
+std::vector layer_height_profile_from_ranges(
const SlicingParameters &slicing_params,
const t_layer_config_ranges &layer_config_ranges);
-extern std::vector layer_height_profile_adaptive(
+std::vector layer_height_profile_adaptive(
const SlicingParameters& slicing_params,
const ModelObject& object, float quality_factor);
@@ -146,7 +146,7 @@ struct HeightProfileSmoothingParams
HeightProfileSmoothingParams(unsigned int radius, bool keep_min) : radius(radius), keep_min(keep_min) {}
};
-extern std::vector smooth_height_profile(
+std::vector smooth_height_profile(
const std::vector& profile, const SlicingParameters& slicing_params,
const HeightProfileSmoothingParams& smoothing_params);
@@ -157,7 +157,7 @@ enum LayerHeightEditActionType : unsigned int {
LAYER_HEIGHT_EDIT_ACTION_SMOOTH = 3
};
-extern void adjust_layer_height_profile(
+void adjust_layer_height_profile(
const SlicingParameters &slicing_params,
std::vector &layer_height_profile,
coordf_t z,
@@ -167,14 +167,19 @@ extern void adjust_layer_height_profile(
// Produce object layers as pairs of low / high layer boundaries, stored into a linear vector.
// The object layers are based at z=0, ignoring the raft layers.
-extern std::vector generate_object_layers(
+std::vector generate_object_layers(
+ const SlicingParameters &slicing_params,
+ const std::vector &layer_height_profile);
+
+// Check whether the layer height profile describes a fixed layer height profile.
+bool check_object_layers_fixed(
const SlicingParameters &slicing_params,
const std::vector &layer_height_profile);
// Produce a 1D texture packed into a 2D texture describing in the RGBA format
// the planned object layers.
// Returns number of cells used by the texture of the 0th LOD level.
-extern int generate_layer_height_texture(
+int generate_layer_height_texture(
const SlicingParameters &slicing_params,
const std::vector &layers,
void *data, int rows, int cols, bool level_of_detail_2nd_level);
diff --git a/src/libslic3r/SupportMaterial.cpp b/src/libslic3r/SupportMaterial.cpp
index 08ae899f60..11d34cafdc 100644
--- a/src/libslic3r/SupportMaterial.cpp
+++ b/src/libslic3r/SupportMaterial.cpp
@@ -3246,6 +3246,10 @@ static Polylines draw_perimeters(const ExPolygon &expoly, double clip_length)
for (size_t i = 0; i <= expoly.holes.size(); ++ i) {
Polyline pl(i == 0 ? expoly.contour.points : expoly.holes[i - 1].points);
pl.points.emplace_back(pl.points.front());
+ if (i > 0)
+ // It is a hole, reverse it.
+ pl.reverse();
+ // so that all contours are CCW oriented.
pl.clip_end(clip_length);
polylines.emplace_back(std::move(pl));
}
@@ -3351,13 +3355,17 @@ static inline void tree_supports_generate_paths(
const double anchor_length = spacing * 6.;
ClipperLib_Z::Paths anchor_candidates;
for (ExPolygon& expoly : closing_ex(polygons, float(SCALED_EPSILON), float(SCALED_EPSILON + 0.5 * flow.scaled_width()))) {
+ std::unique_ptr eec;
double area = expoly.area();
if (area > sqr(scaled(5.))) {
+ eec = std::make_unique();
+ // Don't reoder internal / external loops of the same island, always start with the internal loop.
+ eec->no_sort = true;
// Make the tree branch stable by adding another perimeter.
ExPolygons level2 = offset2_ex({ expoly }, -1.5 * flow.scaled_width(), 0.5 * flow.scaled_width());
if (level2.size() == 1) {
Polylines polylines;
- extrusion_entities_append_paths(dst, draw_perimeters(expoly, clip_length), ExtrusionRole::SupportMaterial, flow.mm3_per_mm(), flow.width(), flow.height(),
+ extrusion_entities_append_paths(eec->entities, draw_perimeters(expoly, clip_length), ExtrusionRole::SupportMaterial, flow.mm3_per_mm(), flow.width(), flow.height(),
// Disable reversal of the path, always start with the anchor, always print CCW.
false);
expoly = level2.front();
@@ -3369,20 +3377,21 @@ static inline void tree_supports_generate_paths(
// The anchor candidate points are annotated with an index of the source contour or with -1 if on intersection.
anchor_candidates.clear();
shrink_expolygon_with_contour_idx(expoly, flow.scaled_width(), DefaultJoinType, 1.2, anchor_candidates);
- // Orient all contours CCW.
+ // Orient all contours CW.
for (auto &path : anchor_candidates)
- if (ClipperLib_Z::Area(path) < 0)
+ if (ClipperLib_Z::Area(path) > 0)
std::reverse(path.begin(), path.end());
// Draw the perimeters.
Polylines polylines;
polylines.reserve(expoly.holes.size() + 1);
- for (size_t idx_loop = 0; idx_loop <= expoly.holes.size(); ++ idx_loop) {
+ for (size_t idx_loop = 0; idx_loop < expoly.num_contours(); ++ idx_loop) {
// Open the loop with a seam.
- const Polygon &loop = idx_loop == 0 ? expoly.contour : expoly.holes[idx_loop - 1];
+ const Polygon &loop = expoly.contour_or_hole(idx_loop);
Polyline pl(loop.points);
- // Orient all contours CCW.
- if (loop.area() < 0)
+ // Orient all contours CW, because the anchor will be added to the end of polyline while we want to start a loop with the anchor.
+ if (idx_loop == 0)
+ // It is an outer contour.
pl.reverse();
pl.points.emplace_back(pl.points.front());
pl.clip_end(clip_length);
@@ -3421,7 +3430,7 @@ static inline void tree_supports_generate_paths(
}
if (d2min < sqr(flow.scaled_width() * 3.)) {
// Try to cut an anchor from the closest_contour.
- // Both closest_contour and pl are CCW oriented.
+ // Both closest_contour and pl are CW oriented.
pl.points.emplace_back(closest_point.cast());
const ClipperLib_Z::Path &path = *closest_contour;
double remaining_length = anchor_length - (seam_pt - closest_point).norm();
@@ -3460,9 +3469,15 @@ static inline void tree_supports_generate_paths(
pl.reverse();
polylines.emplace_back(std::move(pl));
}
- extrusion_entities_append_paths(dst, polylines, ExtrusionRole::SupportMaterial, flow.mm3_per_mm(), flow.width(), flow.height(),
+
+ ExtrusionEntitiesPtr &out = eec ? eec->entities : dst;
+ extrusion_entities_append_paths(out, std::move(polylines), ExtrusionRole::SupportMaterial, flow.mm3_per_mm(), flow.width(), flow.height(),
// Disable reversal of the path, always start with the anchor, always print CCW.
false);
+ if (eec) {
+ std::reverse(eec->entities.begin(), eec->entities.end());
+ dst.emplace_back(eec.release());
+ }
}
}
diff --git a/src/libslic3r/TreeSupport.cpp b/src/libslic3r/TreeSupport.cpp
index b0faa19dd3..713a0c1c4d 100644
--- a/src/libslic3r/TreeSupport.cpp
+++ b/src/libslic3r/TreeSupport.cpp
@@ -923,7 +923,9 @@ static void generate_initial_areas(
// does not turn valid in double the amount of layers a slope of support angle would take to travel xy_distance, nothing reasonable will come from it.
// The 2*z_distance_delta is only a catch for when the support angle is very high.
// Used only if not min_xy_dist.
- const coord_t max_overhang_insert_lag = std::max(round_up_divide(mesh_config.xy_distance, max_overhang_speed / 2), 2 * mesh_config.z_distance_top_layers);
+ const coord_t max_overhang_insert_lag = mesh_config.z_distance_top_layers > 0 ?
+ std::max(round_up_divide(mesh_config.xy_distance, max_overhang_speed / 2), 2 * mesh_config.z_distance_top_layers) :
+ 0;
//FIXME
size_t num_support_layers = print_object.layer_count();
@@ -2498,8 +2500,10 @@ static void create_nodes_from_area(
// Point is chosen based on an inaccurate estimate where the branches will split into two, but every point inside the influence area would produce a valid result.
{
SupportElements *layer_above = move_bounds.size() > 1 ? &move_bounds[1] : nullptr;
- for (SupportElement &elem : *layer_above)
- elem.state.marked = false;
+ if (layer_above) {
+ for (SupportElement &elem : *layer_above)
+ elem.state.marked = false;
+ }
for (SupportElement &init : move_bounds.front()) {
init.state.result_on_layer = move_inside_if_outside(init.influence_area, init.state.next_position);
// Also set the parent nodes, as these will be required for the first iteration of the loop below and mark the parent nodes.
diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp
index 678761924c..2348255081 100644
--- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp
+++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp
@@ -23,7 +23,6 @@
#include "libslic3r/Format/SL1.hpp"
#include "libslic3r/Thread.hpp"
#include "libslic3r/libslic3r.h"
-#include "libslic3r/BuildVolume.hpp"
#include
#include
@@ -145,20 +144,6 @@ std::string BackgroundSlicingProcess::output_filepath_for_project(const boost::f
void BackgroundSlicingProcess::process_fff()
{
assert(m_print == m_fff_print);
-
- // Checks that the print does not exceed the max print height
- const BuildVolume& build_volume = GUI::wxGetApp().mainframe->m_plater->build_volume();
- auto objects = m_fff_print->objects();
- for (auto obj : objects) {
- std::vector layer_height_profile;
- PrintObject::update_layer_height_profile(*obj->model_object(), obj->slicing_parameters(), layer_height_profile);
- auto layers = generate_object_layers(obj->slicing_parameters(), layer_height_profile);
- if (!layers.empty() && layers.back() > build_volume.max_print_height()) {
- throw Slic3r::SlicingError("The print is taller than the maximum allowed height. You might want to reduce the size of your model"
- " or change current print settings and retry.");
- }
- }
-
m_print->process();
wxCommandEvent evt(m_event_slicing_completed_id);
// Post the Slicing Finished message for the G-code viewer to update.
diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp
index 2d2fbd8d72..0296fb1548 100644
--- a/src/slic3r/GUI/ConfigWizard.cpp
+++ b/src/slic3r/GUI/ConfigWizard.cpp
@@ -1445,9 +1445,11 @@ bool PageDownloader::on_finish_downloader() const
return downloader->on_finish();
}
-bool DownloaderUtils::Worker::perform_register()
+bool DownloaderUtils::Worker::perform_register(const std::string& path_override/* = {}*/)
{
boost::filesystem::path aux_dest (GUI::into_u8(path_name()));
+ if (!path_override.empty())
+ aux_dest = boost::filesystem::path(path_override);
boost::system::error_code ec;
boost::filesystem::path chosen_dest = boost::filesystem::absolute(aux_dest, ec);
if(ec)
diff --git a/src/slic3r/GUI/ConfigWizard_private.hpp b/src/slic3r/GUI/ConfigWizard_private.hpp
index 17c9fb25fb..c7c6e5152b 100644
--- a/src/slic3r/GUI/ConfigWizard_private.hpp
+++ b/src/slic3r/GUI/ConfigWizard_private.hpp
@@ -430,7 +430,6 @@ class Worker : public wxBoxSizer
bool perform_registration_linux { false };
#endif // __linux__
- bool perform_register();
void deregister();
public:
@@ -445,7 +444,7 @@ public:
void set_path_name(const std::string& name);
bool on_finish();
-
+ bool perform_register(const std::string& path_override = {});
#ifdef __linux__
bool get_perform_registration_linux() { return perform_registration_linux; }
#endif // __linux__
diff --git a/src/slic3r/GUI/DesktopIntegrationDialog.cpp b/src/slic3r/GUI/DesktopIntegrationDialog.cpp
index 26a8f60e5c..a37b76459a 100644
--- a/src/slic3r/GUI/DesktopIntegrationDialog.cpp
+++ b/src/slic3r/GUI/DesktopIntegrationDialog.cpp
@@ -338,42 +338,47 @@ void DesktopIntegrationDialog::perform_desktop_integration(bool perform_download
"StartupNotify=false\n"
"StartupWMClass=prusa-slicer\n", name_suffix, version_suffix, excutable_path);
+ bool candidate_found = false;
for (size_t i = 0; i < target_candidates.size(); ++i) {
if (contains_path_dir(target_candidates[i], "applications")) {
target_dir_desktop = target_candidates[i];
// Write slicer desktop file
std::string path = GUI::format("%1%/applications/PrusaSlicer%2%.desktop", target_dir_desktop, version_suffix);
- if (create_desktop_file(path, desktop_file)){
+ if (create_desktop_file(path, desktop_file)) {
+ candidate_found = true;
BOOST_LOG_TRIVIAL(debug) << "PrusaSlicer.desktop file installation success.";
break;
- } else {
- // write failed - try another path
- BOOST_LOG_TRIVIAL(debug) << "Attempt to PrusaSlicer.desktop file installation failed. failed path: " << target_candidates[i];
- target_dir_desktop.clear();
}
- }
- // if all failed - try creating default home folder
- if (i == target_candidates.size() - 1) {
- // create $HOME/.local/share
- create_path(boost::nowide::narrow(wxFileName::GetHomeDir()), ".local/share/applications");
- // create desktop file
- target_dir_desktop = GUI::format("%1%/.local/share",wxFileName::GetHomeDir());
- std::string path = GUI::format("%1%/applications/PrusaSlicer%2%.desktop", target_dir_desktop, version_suffix);
- if (contains_path_dir(target_dir_desktop, "applications")) {
- if (!create_desktop_file(path, desktop_file)) {
- // Desktop file not written - end desktop integration
- BOOST_LOG_TRIVIAL(error) << "Performing desktop integration failed - could not create desktop file";
- return;
- }
- } else {
- // Desktop file not written - end desktop integration
- BOOST_LOG_TRIVIAL(error) << "Performing desktop integration failed because the application directory was not found.";
- return;
+ else {
+ // write failed - try another path
+ BOOST_LOG_TRIVIAL(debug) << "Attempt to PrusaSlicer.desktop file installation failed. failed path: " << target_candidates[i];
+ target_dir_desktop.clear();
}
}
}
- if(target_dir_desktop.empty()) {
- // Desktop file not written - end desktop integration
+ // if all failed - try creating default home folder
+ if (!candidate_found) {
+ // create $HOME/.local/share
+ create_path(boost::nowide::narrow(wxFileName::GetHomeDir()), ".local/share/applications");
+ // create desktop file
+ target_dir_desktop = GUI::format("%1%/.local/share", wxFileName::GetHomeDir());
+ std::string path = GUI::format("%1%/applications/PrusaSlicer%2%.desktop", target_dir_desktop, version_suffix);
+ if (contains_path_dir(target_dir_desktop, "applications")) {
+ if (!create_desktop_file(path, desktop_file)) {
+ // Desktop file not written - end desktop integration
+ BOOST_LOG_TRIVIAL(error) << "Performing desktop integration failed - could not create desktop file";
+ return;
+ }
+ }
+ else {
+ // Desktop file not written - end desktop integration
+ BOOST_LOG_TRIVIAL(error) << "Performing desktop integration failed because the application directory was not found.";
+ return;
+ }
+ }
+ assert(!target_dir_desktop.empty());
+ if (target_dir_desktop.empty()) {
+ // Desktop file not written - end desktop integration
BOOST_LOG_TRIVIAL(error) << "Performing desktop integration failed because the application directory was not found.";
show_error(nullptr, _L("Performing desktop integration failed because the application directory was not found."));
return;
diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp
index de61488ef6..ca718e5e71 100644
--- a/src/slic3r/GUI/Field.cpp
+++ b/src/slic3r/GUI/Field.cpp
@@ -201,7 +201,14 @@ bool Field::is_matched(const std::string& string, const std::string& pattern)
return std::regex_match(string, regex_pattern);
}
-static wxString na_value() { return _(L("N/A")); }
+static wxString na_value(bool for_spin_ctrl = false)
+{
+#ifdef __linux__
+ if (for_spin_ctrl)
+ return "";
+#endif
+ return _(L("N/A"));
+}
void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true*/)
{
@@ -888,7 +895,7 @@ void SpinCtrl::set_value(const boost::any& value, bool change_event/* = false*/)
if (m_opt.nullable) {
const bool m_is_na_val = tmp_value == ConfigOptionIntsNullable::nil_value();
if (m_is_na_val)
- dynamic_cast(window)->SetValue(na_value());
+ dynamic_cast(window)->SetValue(na_value(true));
else {
m_last_meaningful_value = value;
dynamic_cast(window)->SetValue(tmp_value);
@@ -909,7 +916,7 @@ void SpinCtrl::set_last_meaningful_value()
void SpinCtrl::set_na_value()
{
- dynamic_cast(window)->SetValue(na_value());
+ dynamic_cast(window)->SetValue(na_value(true));
m_value = ConfigOptionIntsNullable::nil_value();
propagate_value();
}
@@ -917,7 +924,7 @@ void SpinCtrl::set_na_value()
boost::any& SpinCtrl::get_value()
{
wxSpinCtrl* spin = static_cast(window);
- if (spin->GetTextValue() == na_value())
+ if (spin->GetTextValue() == na_value(true))
return m_value;
int value = spin->GetValue();
diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp
index b006880591..69167c9fda 100644
--- a/src/slic3r/GUI/GUI_App.cpp
+++ b/src/slic3r/GUI/GUI_App.cpp
@@ -79,6 +79,7 @@
#include "DesktopIntegrationDialog.hpp"
#include "SendSystemInfoDialog.hpp"
#include "Downloader.hpp"
+#include "ConfigWizard_private.hpp"
#include "BitmapCache.hpp"
#include "Notebook.hpp"
@@ -1010,7 +1011,6 @@ std::string GUI_App::check_older_app_config(Semver current_version, bool backup)
return {};
BOOST_LOG_TRIVIAL(info) << "last app config file used: " << older_data_dir_path;
// ask about using older data folder
-
InfoDialog msg(nullptr
, format_wxstr(_L("You are opening %1% version %2%."), SLIC3R_APP_NAME, SLIC3R_VERSION)
, backup ?
@@ -1155,12 +1155,16 @@ bool GUI_App::on_init_inner()
std::string older_data_dir_path;
if (m_app_conf_exists) {
- if (app_config->orig_version().valid() && app_config->orig_version() < *Semver::parse(SLIC3R_VERSION))
+ if (app_config->orig_version().valid() && app_config->orig_version() < *Semver::parse(SLIC3R_VERSION)) {
// Only copying configuration if it was saved with a newer slicer than the one currently running.
older_data_dir_path = check_older_app_config(app_config->orig_version(), true);
+ m_last_app_conf_lower_version = true;
+ }
} else {
// No AppConfig exists, fresh install. Always try to copy from an alternate location, don't make backup of the current configuration.
older_data_dir_path = check_older_app_config(Semver(), false);
+ if (!older_data_dir_path.empty())
+ m_last_app_conf_lower_version = true;
}
#ifdef _MSW_DARK_MODE
@@ -3078,6 +3082,29 @@ void GUI_App::show_desktop_integration_dialog()
#endif //__linux__
}
+void GUI_App::show_downloader_registration_dialog()
+{
+ InfoDialog msg(nullptr
+ , format_wxstr(_L("Welcome to %1% version %2%."), SLIC3R_APP_NAME, SLIC3R_VERSION)
+ , format_wxstr(_L(
+ "Do you wish to register downloads from Printables.com"
+ "\nfor this %1% %2% executable?"
+ "\n\nDownloads can be registered for only 1 executable at time."
+ ), SLIC3R_APP_NAME, SLIC3R_VERSION)
+ , true, wxYES_NO);
+ if (msg.ShowModal() == wxID_YES) {
+ auto downloader = new DownloaderUtils::Worker(nullptr);
+ downloader->perform_register(app_config->get("url_downloader_dest"));
+#ifdef __linux__
+ if (downloader->get_perform_registration_linux())
+ DesktopIntegrationDialog::perform_desktop_integration(true);
+#endif // __linux__
+ } else {
+ app_config->set("downloader_url_registered", "0");
+ }
+}
+
+
#if ENABLE_THUMBNAIL_GENERATOR_DEBUG
void GUI_App::gcode_thumbnails_debug()
{
@@ -3225,7 +3252,13 @@ bool GUI_App::config_wizard_startup()
run_wizard(ConfigWizard::RR_DATA_LEGACY);
return true;
+ }
+#ifndef __APPLE__
+ else if (is_editor() && m_last_app_conf_lower_version && app_config->get("downloader_url_registered") == "1") {
+ show_downloader_registration_dialog();
+ return true;
}
+#endif
return false;
}
diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp
index 70d72d5e32..1a58bd8094 100644
--- a/src/slic3r/GUI/GUI_App.hpp
+++ b/src/slic3r/GUI/GUI_App.hpp
@@ -122,6 +122,7 @@ private:
bool m_initialized { false };
bool m_post_initialized { false };
bool m_app_conf_exists{ false };
+ bool m_last_app_conf_lower_version{ false };
EAppMode m_app_mode{ EAppMode::Editor };
bool m_is_recreating_gui{ false };
#ifdef __linux__
@@ -343,6 +344,7 @@ public:
bool may_switch_to_SLA_preset(const wxString& caption);
bool run_wizard(ConfigWizard::RunReason reason, ConfigWizard::StartPage start_page = ConfigWizard::SP_WELCOME);
void show_desktop_integration_dialog();
+ void show_downloader_registration_dialog();
#if ENABLE_THUMBNAIL_GENERATOR_DEBUG
// temporary and debug only -> extract thumbnails from selected gcode and save them as png files
diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp
index 056ec9d140..9ef8728873 100644
--- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp
+++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp
@@ -206,7 +206,16 @@ GLGizmoCut3D::GLGizmoCut3D(GLCanvas3D& parent, const std::string& icon_filename,
};
m_connector_modes = { _u8L("Auto"), _u8L("Manual") };
- m_connector_types = { _u8L("Plug"), _u8L("Dowel") };
+
+ std::map connetor_types = {
+ {ImGui::PlugMarker , _u8L("Plug") },
+ {ImGui::DowelMarker, _u8L("Dowel") },
+ };
+ for (auto connector : connetor_types) {
+ std::string type_label = " " + connector.second + " ";
+ type_label += connector.first;
+ m_connector_types.push_back(type_label);
+ }
m_connector_styles = { _u8L("Prizm"), _u8L("Frustum")
// , _u8L("Claw")
@@ -506,7 +515,7 @@ bool GLGizmoCut3D::render_slider_double_input(const std::string& label, float& v
const BoundingBoxf3 bbox = bounding_box();
float mean_size = float((bbox.size().x() + bbox.size().y() + bbox.size().z()) / 9.0);
- float min_size = value_in < 0.f ? UndefMinVal : 2.f;
+ float min_size = value_in < 0.f ? UndefMinVal : 1.f;
if (m_imperial_units) {
mean_size *= float(ObjectManipulation::mm_to_in);
min_size *= float(ObjectManipulation::mm_to_in);
diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp
index 8bdecc5ef3..8d2935556d 100644
--- a/src/slic3r/GUI/ImGuiWrapper.cpp
+++ b/src/slic3r/GUI/ImGuiWrapper.cpp
@@ -65,6 +65,8 @@ static const std::map font_icons = {
{ImGui::RevertButton , "undo" },
{ImGui::WarningMarkerSmall , "notification_warning" },
{ImGui::InfoMarkerSmall , "notification_info" },
+ {ImGui::PlugMarker , "plug" },
+ {ImGui::DowelMarker , "dowel" },
};
static const std::map font_icons_large = {
diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp
index 8a4bee03ed..69c566819e 100644
--- a/src/slic3r/GUI/MainFrame.cpp
+++ b/src/slic3r/GUI/MainFrame.cpp
@@ -943,7 +943,7 @@ bool MainFrame::can_export_supports() const
const PrintObjects& objects = m_plater->sla_print().objects();
for (const SLAPrintObject* object : objects)
{
- if (!object->support_mesh().empty())
+ if (!object->support_mesh().empty() || !object->pad_mesh().empty())
{
can_export = true;
break;
diff --git a/src/slic3r/GUI/MeshUtils.cpp b/src/slic3r/GUI/MeshUtils.cpp
index bb93afc8d5..1765789b91 100644
--- a/src/slic3r/GUI/MeshUtils.cpp
+++ b/src/slic3r/GUI/MeshUtils.cpp
@@ -315,12 +315,12 @@ void MeshClipper::recalculate_triangles()
// To prevent overflow after scaling, downscale the input if needed:
double extra_scale = 1.;
- int32_t limit = int32_t(std::min(std::numeric_limits::max() / (2. * scale_x), std::numeric_limits::max() / (2. * scale_y)));
+ int32_t limit = int32_t(std::min(std::numeric_limits::max() / (2. * std::max(1., scale_x)), std::numeric_limits::max() / (2. * std::max(1., scale_y))));
int32_t max_coord = 0;
for (const Point& pt : exp.contour)
max_coord = std::max(max_coord, std::max(std::abs(pt.x()), std::abs(pt.y())));
if (max_coord + m_contour_width >= limit)
- extra_scale = 0.9 * double(limit) / max_coord;
+ extra_scale = 0.9 * double(limit) / max_coord;
ExPolygon exp_copy = exp;
if (extra_scale != 1.)
diff --git a/src/slic3r/GUI/PhysicalPrinterDialog.cpp b/src/slic3r/GUI/PhysicalPrinterDialog.cpp
index b6cd819974..e3aff63caf 100644
--- a/src/slic3r/GUI/PhysicalPrinterDialog.cpp
+++ b/src/slic3r/GUI/PhysicalPrinterDialog.cpp
@@ -241,9 +241,7 @@ PhysicalPrinterDialog::PhysicalPrinterDialog(wxWindow* parent, wxString printer_
m_printer_name->SelectAll();
}
- const wxSize& bestsize = this->GetBestSize();
- const wxSize& size = wxSize(bestsize.x, 1.1f * bestsize.y);
- this->SetSize(size);
+ this->Fit();
this->Layout();
this->CenterOnScreen();
@@ -532,10 +530,11 @@ void PhysicalPrinterDialog::update(bool printer_change)
update_printhost_buttons();
- const wxSize& bestsize= this->GetBestSize();
- const wxSize& size = wxSize( bestsize.x, 1.1f * bestsize.y);
- this->SetSize(size);
+ this->Fit();
this->Layout();
+#ifdef __WXMSW__
+ this->Refresh();
+#endif
}
void PhysicalPrinterDialog::update_host_type(bool printer_change)
diff --git a/version.inc b/version.inc
index 7b1a13f642..1891f98197 100644
--- a/version.inc
+++ b/version.inc
@@ -3,7 +3,7 @@
set(SLIC3R_APP_NAME "PrusaSlicer")
set(SLIC3R_APP_KEY "PrusaSlicer")
-set(SLIC3R_VERSION "2.6.0-alpha1")
+set(SLIC3R_VERSION "2.6.0-alpha3")
set(SLIC3R_BUILD_ID "PrusaSlicer-${SLIC3R_VERSION}+UNKNOWN")
set(SLIC3R_RC_VERSION "2,6,0,0")
set(SLIC3R_RC_VERSION_DOTS "2.6.0.0")