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/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/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/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..6e71c782e3 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)); } @@ -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..b6d8eb2c15 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; } } 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/TreeSupport.cpp b/src/libslic3r/TreeSupport.cpp index b0faa19dd3..cbb779be07 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(); 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/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 20913f66db..c92f65f6b9 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/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/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")