diff --git a/resources/profiles/Elegoo.json b/resources/profiles/Elegoo.json index de8197bbb5..5b556c083f 100644 --- a/resources/profiles/Elegoo.json +++ b/resources/profiles/Elegoo.json @@ -1,9 +1,17 @@ { "name": "Elegoo", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Elegoo configurations", "machine_model_list": [ + { + "name": "Elegoo Centauri Carbon", + "sub_path": "machine/ECC/Elegoo Centauri Carbon.json" + }, + { + "name": "Elegoo Centauri", + "sub_path": "machine/EC/Elegoo Centauri.json" + }, { "name": "Elegoo Neptune", "sub_path": "machine/Elegoo Neptune.json" @@ -62,6 +70,198 @@ } ], "process_list": [ + { + "name": "fdm_process_ecc_common", + "sub_path": "process/ECC/fdm_process_ecc_common.json" + }, + { + "name": "fdm_process_ecc", + "sub_path": "process/ECC/fdm_process_ecc.json" + }, + { + "name": "fdm_process_ecc_02010", + "sub_path": "process/ECC/fdm_process_ecc_02010.json" + }, + { + "name": "fdm_process_ecc_04020", + "sub_path": "process/ECC/fdm_process_ecc_04020.json" + }, + { + "name": "fdm_process_ecc_06030", + "sub_path": "process/ECC/fdm_process_ecc_06030.json" + }, + { + "name": "fdm_process_ecc_08040", + "sub_path": "process/ECC/fdm_process_ecc_08040.json" + }, + { + "name": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.20mm Standard @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.10mm Standard @Elegoo CC 0.2 nozzle", + "sub_path": "process/ECC/0.10mm Standard @Elegoo CC 0.2 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.30mm Standard @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo CC 0.8 nozzle", + "sub_path": "process/ECC/0.40mm Standard @Elegoo CC 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo CC 0.8 nozzle", + "sub_path": "process/ECC/0.48mm Draft @Elegoo CC 0.8 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.42mm Extra Draft @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.36mm Draft @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo CC 0.8 nozzle", + "sub_path": "process/ECC/0.32mm Optimal @Elegoo CC 0.8 nozzle.json" + }, + { + "name": "0.30mm Strength @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.30mm Strength @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.28mm Extra Draft @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.24mm Optimal @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo CC 0.8 nozzle", + "sub_path": "process/ECC/0.24mm Fine @Elegoo CC 0.8 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.24mm Draft @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.20mm Strength @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.18mm Fine @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.18mm Fine @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.16mm Optimal @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.16mm Extra Fine @Elegoo CC 0.8 nozzle", + "sub_path": "process/ECC/0.16mm Extra Fine @Elegoo CC 0.8 nozzle.json" + }, + { + "name": "0.14mm Extra Draft @Elegoo CC 0.2 nozzle", + "sub_path": "process/ECC/0.14mm Extra Draft @Elegoo CC 0.2 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.12mm Fine @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.12mm Draft @Elegoo CC 0.2 nozzle", + "sub_path": "process/ECC/0.12mm Draft @Elegoo CC 0.2 nozzle.json" + }, + { + "name": "0.08mm Optimal @Elegoo CC 0.2 nozzle", + "sub_path": "process/ECC/0.08mm Optimal @Elegoo CC 0.2 nozzle.json" + }, + { + "name": "0.20mm Standard @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.20mm Standard @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.10mm Standard @Elegoo C 0.2 nozzle", + "sub_path": "process/EC/0.10mm Standard @Elegoo C 0.2 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.30mm Standard @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo C 0.8 nozzle", + "sub_path": "process/EC/0.40mm Standard @Elegoo C 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo C 0.8 nozzle", + "sub_path": "process/EC/0.48mm Draft @Elegoo C 0.8 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.42mm Extra Draft @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.36mm Draft @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo C 0.8 nozzle", + "sub_path": "process/EC/0.32mm Optimal @Elegoo C 0.8 nozzle.json" + }, + { + "name": "0.30mm Strength @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.30mm Strength @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.28mm Extra Draft @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.24mm Optimal @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo C 0.8 nozzle", + "sub_path": "process/EC/0.24mm Fine @Elegoo C 0.8 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.24mm Draft @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.20mm Strength @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.18mm Fine @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.18mm Fine @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.16mm Optimal @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.16mm Extra Fine @Elegoo C 0.8 nozzle", + "sub_path": "process/EC/0.16mm Extra Fine @Elegoo C 0.8 nozzle.json" + }, + { + "name": "0.14mm Extra Draft @Elegoo C 0.2 nozzle", + "sub_path": "process/EC/0.14mm Extra Draft @Elegoo C 0.2 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.12mm Fine @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.12mm Draft @Elegoo C 0.2 nozzle", + "sub_path": "process/EC/0.12mm Draft @Elegoo C 0.2 nozzle.json" + }, + { + "name": "0.08mm Optimal @Elegoo C 0.2 nozzle", + "sub_path": "process/EC/0.08mm Optimal @Elegoo C 0.2 nozzle.json" + }, { "name": "fdm_process_common", "sub_path": "process/fdm_process_common.json" @@ -775,7 +975,183 @@ "sub_path": "process/0.16mm Optimal @Elegoo Giga 0.4 nozzle.json" } ], - "filament_list": [ + "filament_list": [ + { + "name": "fdm_elegoo_filament_common", + "sub_path": "filament/ELEGOO/fdm_elegoo_filament_common.json" + }, + { + "name": "fdm_elegoo_filament_pla", + "sub_path": "filament/ELEGOO/fdm_elegoo_filament_pla.json" + }, + { + "name": "fdm_elegoo_filament_tpu", + "sub_path": "filament/ELEGOO/fdm_elegoo_filament_tpu.json" + }, + { + "name": "fdm_elegoo_filament_pet", + "sub_path": "filament/ELEGOO/fdm_elegoo_filament_pet.json" + }, + { + "name": "fdm_elegoo_filament_asa", + "sub_path": "filament/ELEGOO/fdm_elegoo_filament_asa.json" + }, + { + "name": "Elegoo TPU 95A @base", + "sub_path": "filament/ELEGOO/Elegoo TPU 95A @base.json" + }, + { + "name": "Elegoo PETG PRO @base", + "sub_path": "filament/ELEGOO/Elegoo PETG PRO @base.json" + }, + { + "name": "Elegoo RAPID PETG @base", + "sub_path": "filament/ELEGOO/Elegoo RAPID PETG @base.json" + }, + { + "name": "Elegoo PLA @base", + "sub_path": "filament/ELEGOO/Elegoo PLA @base.json" + }, + { + "name": "Elegoo RAPID PLA+ @base", + "sub_path": "filament/ELEGOO/Elegoo RAPID PLA+ @base.json" + }, + { + "name": "Elegoo PLA Silk @base", + "sub_path": "filament/ELEGOO/Elegoo PLA Silk @base.json" + }, + { + "name": "Elegoo PLA Matte @base", + "sub_path": "filament/ELEGOO/Elegoo PLA Matte @base.json" + }, + { + "name": "Elegoo PLA-CF @base", + "sub_path": "filament/ELEGOO/Elegoo PLA-CF @base.json" + }, + { + "name": "Elegoo ASA @base", + "sub_path": "filament/ELEGOO/Elegoo ASA @base.json" + }, + { + "name": "Elegoo ASA @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo ASA @0.2 nozzle.json" + }, + { + "name": "Elegoo PETG PRO @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo PETG PRO @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo PLA @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA Matte @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo PLA Matte @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA PRO @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo PLA PRO @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA Silk @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo PLA Silk @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA+ @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo PLA+ @0.2 nozzle.json" + }, + { + "name": "Elegoo RAPID PLA+ @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo RAPID PLA+ @0.2 nozzle.json" + }, + { + "name": "Elegoo RAPID PETG @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo RAPID PETG @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA @ECC", + "sub_path": "filament/ECC/Elegoo PLA @ECC.json" + }, + { + "name": "Elegoo PLA PRO @ECC", + "sub_path": "filament/ECC/Elegoo PLA PRO @ECC.json" + }, + { + "name": "Elegoo PLA+ @ECC", + "sub_path": "filament/ECC/Elegoo PLA+ @ECC.json" + }, + { + "name": "Elegoo RAPID PLA+ @ECC", + "sub_path": "filament/ECC/Elegoo RAPID PLA+ @ECC.json" + }, + { + "name": "Elegoo PLA Silk @ECC", + "sub_path": "filament/ECC/Elegoo PLA Silk @ECC.json" + }, + { + "name": "Elegoo PLA Matte @ECC", + "sub_path": "filament/ECC/Elegoo PLA Matte @ECC.json" + }, + { + "name": "Elegoo PLA-CF @ECC", + "sub_path": "filament/ECC/Elegoo PLA-CF @ECC.json" + }, + { + "name": "Elegoo PETG PRO @ECC", + "sub_path": "filament/ECC/Elegoo PETG PRO @ECC.json" + }, + { + "name": "Elegoo RAPID PETG @ECC", + "sub_path": "filament/ECC/Elegoo RAPID PETG @ECC.json" + }, + { + "name": "Elegoo TPU 95A @ECC", + "sub_path": "filament/ECC/Elegoo TPU 95A @ECC.json" + }, + { + "name": "Elegoo ASA @ECC", + "sub_path": "filament/ECC/Elegoo ASA @ECC.json" + }, + { + "name": "Elegoo PLA @EC", + "sub_path": "filament/EC/Elegoo PLA @EC.json" + }, + { + "name": "Elegoo PLA PRO @EC", + "sub_path": "filament/EC/Elegoo PLA PRO @EC.json" + }, + { + "name": "Elegoo PLA+ @EC", + "sub_path": "filament/EC/Elegoo PLA+ @EC.json" + }, + { + "name": "Elegoo RAPID PLA+ @EC", + "sub_path": "filament/EC/Elegoo RAPID PLA+ @EC.json" + }, + { + "name": "Elegoo PLA Silk @EC", + "sub_path": "filament/EC/Elegoo PLA Silk @EC.json" + }, + { + "name": "Elegoo PLA Matte @EC", + "sub_path": "filament/EC/Elegoo PLA Matte @EC.json" + }, + { + "name": "Elegoo PETG PRO @EC", + "sub_path": "filament/EC/Elegoo PETG PRO @EC.json" + }, + { + "name": "Elegoo RAPID PETG @EC", + "sub_path": "filament/EC/Elegoo RAPID PETG @EC.json" + }, + { + "name": "Elegoo TPU 95A @EC", + "sub_path": "filament/EC/Elegoo TPU 95A @EC.json" + }, + { + "name": "Elegoo ASA @EC", + "sub_path": "filament/EC/Elegoo ASA @EC.json" + }, { "name": "fdm_filament_common", "sub_path": "filament/fdm_filament_common.json" @@ -838,6 +1214,46 @@ } ], "machine_list": [ + { + "name": "fdm_machine_ecc_common", + "sub_path": "machine/ECC/fdm_machine_ecc_common.json" + }, + { + "name": "fdm_machine_ecc", + "sub_path": "machine/ECC/fdm_machine_ecc.json" + }, + { + "name": "Elegoo Centauri Carbon 0.4 nozzle", + "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json" + }, + { + "name": "Elegoo Centauri Carbon 0.2 nozzle", + "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.2 nozzle.json" + }, + { + "name": "Elegoo Centauri Carbon 0.6 nozzle", + "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.6 nozzle.json" + }, + { + "name": "Elegoo Centauri Carbon 0.8 nozzle", + "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.8 nozzle.json" + }, + { + "name": "Elegoo Centauri 0.4 nozzle", + "sub_path": "machine/EC/Elegoo Centauri 0.4 nozzle.json" + }, + { + "name": "Elegoo Centauri 0.2 nozzle", + "sub_path": "machine/EC/Elegoo Centauri 0.2 nozzle.json" + }, + { + "name": "Elegoo Centauri 0.6 nozzle", + "sub_path": "machine/EC/Elegoo Centauri 0.6 nozzle.json" + }, + { + "name": "Elegoo Centauri 0.8 nozzle", + "sub_path": "machine/EC/Elegoo Centauri 0.8 nozzle.json" + }, { "name": "fdm_machine_common", "sub_path": "machine/fdm_machine_common.json" @@ -971,4 +1387,4 @@ "sub_path": "machine/Elegoo OrangeStorm Giga 0.8 nozzle.json" } ] -} +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/Elegoo Centauri Carbon_cover.png b/resources/profiles/Elegoo/Elegoo Centauri Carbon_cover.png new file mode 100644 index 0000000000..77e395385c Binary files /dev/null and b/resources/profiles/Elegoo/Elegoo Centauri Carbon_cover.png differ diff --git a/resources/profiles/Elegoo/Elegoo Centauri_cover.png b/resources/profiles/Elegoo/Elegoo Centauri_cover.png new file mode 100644 index 0000000000..db621731ba Binary files /dev/null and b/resources/profiles/Elegoo/Elegoo Centauri_cover.png differ diff --git a/resources/profiles/Elegoo/elegoo_CC_buildplate_model.stl b/resources/profiles/Elegoo/elegoo_CC_buildplate_model.stl new file mode 100644 index 0000000000..16710b68b8 Binary files /dev/null and b/resources/profiles/Elegoo/elegoo_CC_buildplate_model.stl differ diff --git a/resources/profiles/Elegoo/elegoo_C_buildplate_model.stl b/resources/profiles/Elegoo/elegoo_C_buildplate_model.stl new file mode 100644 index 0000000000..16710b68b8 Binary files /dev/null and b/resources/profiles/Elegoo/elegoo_C_buildplate_model.stl differ diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo ASA @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo ASA @EC.json new file mode 100644 index 0000000000..b1b917a6db --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo ASA @EC.json @@ -0,0 +1,23 @@ +{ + "type": "filament", + "name": "Elegoo ASA @EC", + "inherits": "Elegoo ASA @base", + "from": "system", + "setting_id": "EASAEC", + "instantiation": "true", + "pressure_advance": [ + "0.024" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} + \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PETG PRO @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PETG PRO @EC.json new file mode 100644 index 0000000000..84ffa4264c --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PETG PRO @EC.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Elegoo PETG PRO @EC", + "inherits": "Elegoo PETG PRO @base", + "from": "system", + "setting_id": "EPETGPROEC", + "instantiation": "true", + "pressure_advance": [ + "0.024" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA @EC.json new file mode 100644 index 0000000000..549dfeda68 --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA @EC.json @@ -0,0 +1,31 @@ +{ + "type": "filament", + "name": "Elegoo PLA @EC", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAEC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "21" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "nozzle_temperature": [ + "210" + ], + "pressure_advance": [ + "0.024" + ], + "slow_down_layer_time": [ + "4" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Matte @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Matte @EC.json new file mode 100644 index 0000000000..fac450b2c9 --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Matte @EC.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "name": "Elegoo PLA Matte @EC", + "inherits": "Elegoo PLA Matte @base", + "from": "system", + "setting_id": "EPLAMEC", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "pressure_advance": [ + "0.024" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA PRO @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA PRO @EC.json new file mode 100644 index 0000000000..78aa71d384 --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA PRO @EC.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "name": "Elegoo PLA PRO @EC", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPROEC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "20" + ], + "pressure_advance": [ + "0.024" + ], + "slow_down_layer_time": [ + "6" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Silk @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Silk @EC.json new file mode 100644 index 0000000000..a8ac184802 --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Silk @EC.json @@ -0,0 +1,43 @@ +{ + "type": "filament", + "name": "Elegoo PLA Silk @EC", + "inherits": "Elegoo PLA Silk @base", + "from": "system", + "setting_id": "EPLASEC", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "pressure_advance": [ + "0.024" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA+ @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA+ @EC.json new file mode 100644 index 0000000000..47299a382c --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA+ @EC.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "name": "Elegoo PLA+ @EC", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPLUSEC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "20" + ], + "pressure_advance": [ + "0.024" + ], + "slow_down_layer_time": [ + "6" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo RAPID PETG @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo RAPID PETG @EC.json new file mode 100644 index 0000000000..62359032c8 --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo RAPID PETG @EC.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PETG @EC", + "inherits": "Elegoo RAPID PETG @base", + "from": "system", + "setting_id": "ERPETGEC", + "instantiation": "true", + "pressure_advance": [ + "0.024" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo RAPID PLA+ @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo RAPID PLA+ @EC.json new file mode 100644 index 0000000000..4ae38a2c68 --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo RAPID PLA+ @EC.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PLA+ @EC", + "inherits": "Elegoo RAPID PLA+ @base", + "from": "system", + "setting_id": "ERPLAPLUSEC", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "4" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "pressure_advance": [ + "0.024" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo TPU 95A @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo TPU 95A @EC.json new file mode 100644 index 0000000000..6d33bab481 --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo TPU 95A @EC.json @@ -0,0 +1,19 @@ +{ + "type": "filament", + "name": "Elegoo TPU 95A @EC", + "inherits": "Elegoo TPU 95A @base", + "from": "system", + "setting_id": "ETPU95AEC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "3.2" + ], + "pressure_advance": [ + "0.024" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo ASA @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo ASA @ECC.json new file mode 100644 index 0000000000..3f8a4d7995 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo ASA @ECC.json @@ -0,0 +1,23 @@ +{ + "type": "filament", + "name": "Elegoo ASA @ECC", + "inherits": "Elegoo ASA @base", + "from": "system", + "setting_id": "EASAECC", + "instantiation": "true", + "pressure_advance": [ + "0.024" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} + \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PETG PRO @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PETG PRO @ECC.json new file mode 100644 index 0000000000..7fbdc24dcc --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PETG PRO @ECC.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Elegoo PETG PRO @ECC", + "inherits": "Elegoo PETG PRO @base", + "from": "system", + "setting_id": "EPETGPROECC", + "instantiation": "true", + "pressure_advance": [ + "0.024" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA @ECC.json new file mode 100644 index 0000000000..64838026a8 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA @ECC.json @@ -0,0 +1,31 @@ +{ + "type": "filament", + "name": "Elegoo PLA @ECC", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAECC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "21" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "nozzle_temperature": [ + "210" + ], + "pressure_advance": [ + "0.024" + ], + "slow_down_layer_time": [ + "4" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Matte @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Matte @ECC.json new file mode 100644 index 0000000000..e4b8d6a8fc --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Matte @ECC.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "name": "Elegoo PLA Matte @ECC", + "inherits": "Elegoo PLA Matte @base", + "from": "system", + "setting_id": "EPLAMECC", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "pressure_advance": [ + "0.024" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA PRO @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA PRO @ECC.json new file mode 100644 index 0000000000..e169374edb --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA PRO @ECC.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "name": "Elegoo PLA PRO @ECC", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPROECC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "20" + ], + "pressure_advance": [ + "0.024" + ], + "slow_down_layer_time": [ + "6" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Silk @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Silk @ECC.json new file mode 100644 index 0000000000..56101b838e --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Silk @ECC.json @@ -0,0 +1,43 @@ +{ + "type": "filament", + "name": "Elegoo PLA Silk @ECC", + "inherits": "Elegoo PLA Silk @base", + "from": "system", + "setting_id": "EPLASECC", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "pressure_advance": [ + "0.024" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA+ @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA+ @ECC.json new file mode 100644 index 0000000000..21e0471e8a --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA+ @ECC.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "name": "Elegoo PLA+ @ECC", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPLUSECC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "20" + ], + "pressure_advance": [ + "0.024" + ], + "slow_down_layer_time": [ + "6" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA-CF @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA-CF @ECC.json new file mode 100644 index 0000000000..a8a887eece --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA-CF @ECC.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "name": "Elegoo PLA-CF @ECC", + "inherits": "Elegoo PLA-CF @base", + "from": "system", + "setting_id": "EPLACFECC", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "pressure_advance": [ + "0.024" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo RAPID PETG @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo RAPID PETG @ECC.json new file mode 100644 index 0000000000..d88ba1ff12 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo RAPID PETG @ECC.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PETG @ECC", + "inherits": "Elegoo RAPID PETG @base", + "from": "system", + "setting_id": "ERPETGECC", + "instantiation": "true", + "pressure_advance": [ + "0.024" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo RAPID PLA+ @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo RAPID PLA+ @ECC.json new file mode 100644 index 0000000000..68312b569d --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo RAPID PLA+ @ECC.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PLA+ @ECC", + "inherits": "Elegoo RAPID PLA+ @base", + "from": "system", + "setting_id": "ERPLAPLUSECC", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "4" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "pressure_advance": [ + "0.024" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo TPU 95A @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo TPU 95A @ECC.json new file mode 100644 index 0000000000..e41926a16c --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo TPU 95A @ECC.json @@ -0,0 +1,19 @@ +{ + "type": "filament", + "name": "Elegoo TPU 95A @ECC", + "inherits": "Elegoo TPU 95A @base", + "from": "system", + "setting_id": "ETPU95AECC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "3.2" + ], + "pressure_advance": [ + "0.024" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA @0.2 nozzle.json new file mode 100644 index 0000000000..945d91ddb6 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA @0.2 nozzle.json @@ -0,0 +1,23 @@ +{ + "type": "filament", + "name": "Elegoo ASA @0.2 nozzle", + "inherits": "Elegoo ASA @base", + "from": "system", + "setting_id": "EASA00020", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "3.2" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} + \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA @base.json new file mode 100644 index 0000000000..78386c7351 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA @base.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Elegoo ASA @base", + "inherits": "fdm_elegoo_filament_asa", + "from": "system", + "filament_id": "EASAB00", + "instantiation": "false", + "filament_vendor": [ + "Elegoo" + ], + "filament_density": [ + "1.1" + ], + "filament_max_volumetric_speed": [ + "12" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA.json new file mode 100644 index 0000000000..8381f0978f --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Elegoo ASA", + "inherits": "Elegoo ASA @base", + "from": "system", + "setting_id": "EASA00", + "instantiation": "true", + "compatible_printers": [ + ] +} + \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO @0.2 nozzle.json new file mode 100644 index 0000000000..cb9c132128 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "name": "Elegoo PETG PRO @0.2 nozzle", + "inherits": "Elegoo PETG PRO @base", + "from": "system", + "setting_id": "EGPETG00020", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO @base.json new file mode 100644 index 0000000000..82edb3f89c --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO @base.json @@ -0,0 +1,83 @@ +{ + "type": "filament", + "name": "Elegoo PETG PRO @base", + "inherits": "fdm_elegoo_filament_pet", + "from": "system", + "filament_id": "EPETGPROB00", + "instantiation": "false", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.25" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_vendor": [ + "Elegoo" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "slow_down_layer_time": [ + "12" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; Filament start gcode\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "filament_type": [ + "PETG" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO.json new file mode 100644 index 0000000000..12c6fd1c33 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO.json @@ -0,0 +1,10 @@ +{ + "type": "filament", + "name": "Elegoo PETG PRO", + "inherits": "Elegoo PETG PRO @base", + "from": "system", + "setting_id": "EPETGPRO00", + "instantiation": "true", + "compatible_printers": [ + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA @0.2 nozzle.json new file mode 100644 index 0000000000..26f3efd91b --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "name": "Elegoo PLA @0.2 nozzle", + "from": "system", + "setting_id": "EPLA00020", + "instantiation": "true", + "inherits": "Elegoo PLA @base", + "filament_max_volumetric_speed": [ + "3.2" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA @base.json new file mode 100644 index 0000000000..5b837fd233 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA @base.json @@ -0,0 +1,23 @@ +{ + "type": "filament", + "name": "Elegoo PLA @base", + "inherits": "fdm_elegoo_filament_pla", + "from": "system", + "filament_id": "EPLAB00", + "instantiation": "false", + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.25" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_vendor": [ + "Elegoo" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte @0.2 nozzle.json new file mode 100644 index 0000000000..0cd3391585 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte @0.2 nozzle.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "name": "Elegoo PLA Matte @0.2 nozzle", + "inherits": "Elegoo PLA Matte @base", + "from": "system", + "setting_id": "EPLAM00020", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte @base.json new file mode 100644 index 0000000000..55c747b373 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte @base.json @@ -0,0 +1,20 @@ +{ + "type": "filament", + "name": "Elegoo PLA Matte @base", + "inherits": "fdm_elegoo_filament_pla", + "from": "system", + "filament_id": "EPLAMB00", + "instantiation": "false", + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.25" + ], + "filament_vendor": [ + "Elegoo" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte.json new file mode 100644 index 0000000000..cc002d1b0d --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "Elegoo PLA Matte", + "inherits": "Elegoo PLA Matte @base", + "from": "system", + "setting_id": "EPLAM00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO @0.2 nozzle.json new file mode 100644 index 0000000000..a46f14d250 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "name": "Elegoo PLA PRO @0.2 nozzle", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPRO00020", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "3.2" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO.json new file mode 100644 index 0000000000..6ddbe449ef --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Elegoo PLA PRO", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPRO00", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "16" + ], + "compatible_printers": [ + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk @0.2 nozzle.json new file mode 100644 index 0000000000..43994c5f57 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk @0.2 nozzle.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "name": "Elegoo PLA Silk @0.2 nozzle", + "inherits": "Elegoo PLA Silk @base", + "from": "system", + "setting_id": "EPLAS00020", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk @base.json new file mode 100644 index 0000000000..ba627e88cb --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk @base.json @@ -0,0 +1,29 @@ +{ + "type": "filament", + "name": "Elegoo PLA Silk @base", + "inherits": "fdm_elegoo_filament_pla", + "from": "system", + "filament_id": "EPLASB00", + "instantiation": "false", + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.32" + ], + "filament_vendor": [ + "Elegoo" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk.json new file mode 100644 index 0000000000..eb576dce2d --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk.json @@ -0,0 +1,34 @@ +{ + "type": "filament", + "name": "Elegoo PLA Silk", + "inherits": "Elegoo PLA Silk @base", + "from": "system", + "setting_id": "EPLAS00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+ @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+ @0.2 nozzle.json new file mode 100644 index 0000000000..6fc3cbf7fc --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+ @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "name": "Elegoo PLA+ @0.2 nozzle", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPLUS00020", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "3.2" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+.json new file mode 100644 index 0000000000..54cfdb3d0a --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Elegoo PLA+", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPLUS00", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "16" + ], + "compatible_printers": [ + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF @base.json new file mode 100644 index 0000000000..3e2fca2bb6 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF @base.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "name": "Elegoo PLA-CF @base", + "inherits": "fdm_elegoo_filament_pla", + "from": "system", + "filament_id": "EPLACFB00", + "instantiation": "false", + "additional_cooling_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Elegoo" + ], + "filament_density": [ + "1.21" + ], + "required_nozzle_HRC": [ + "40" + ], + "slow_down_layer_time": [ + "7" + ], + "filament_start_gcode": [ + "; Filament start gcode\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF.json new file mode 100644 index 0000000000..1111ff70f6 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "Elegoo PLA-CF", + "inherits": "Elegoo PLA-CF @base", + "from": "system", + "setting_id": "EPLACF00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "compatible_printers": [ + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA.json new file mode 100644 index 0000000000..5cbb391d81 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Elegoo PLA", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLA00", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "15" + ], + "compatible_printers": [ + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG @0.2 nozzle.json new file mode 100644 index 0000000000..105690cfeb --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PETG @0.2 nozzle", + "inherits": "Elegoo RAPID PETG @base", + "from": "system", + "setting_id": "ERPETG00020", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG @base.json new file mode 100644 index 0000000000..d0ae01301c --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG @base.json @@ -0,0 +1,83 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PETG @base", + "inherits": "fdm_elegoo_filament_pet", + "from": "system", + "filament_id": "ERPETGB00", + "instantiation": "false", + "cool_plate_temp": [ + "0" + ], + "filament_type": [ + "PETG" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.26" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_vendor": [ + "Elegoo" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "slow_down_layer_time": [ + "12" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; Filament start gcode\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG+.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG+.json new file mode 100644 index 0000000000..67b208178b --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG+.json @@ -0,0 +1,10 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PETG+", + "inherits": "Elegoo RAPID PETG @base", + "from": "system", + "setting_id": "ERPETGPLUS00", + "instantiation": "true", + "compatible_printers": [ + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG.json new file mode 100644 index 0000000000..87f8df6cea --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG.json @@ -0,0 +1,10 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PETG", + "inherits": "Elegoo RAPID PETG @base", + "from": "system", + "setting_id": "ERPETG00", + "instantiation": "true", + "compatible_printers": [ + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+ @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+ @0.2 nozzle.json new file mode 100644 index 0000000000..6dc97327db --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+ @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PLA+ @0.2 nozzle", + "inherits": "Elegoo RAPID PLA+ @base", + "from": "system", + "setting_id": "ERPLAPLUS00020", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "3.2" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+ @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+ @base.json new file mode 100644 index 0000000000..31d06cc809 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+ @base.json @@ -0,0 +1,20 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PLA+ @base", + "inherits": "fdm_elegoo_filament_pla", + "from": "system", + "filament_id": "ERPLAPLUSB00", + "instantiation": "false", + "filament_max_volumetric_speed": [ + "21" + ], + "filament_density": [ + "1.25" + ], + "filament_vendor": [ + "Elegoo" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+.json new file mode 100644 index 0000000000..41aba3dcd6 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PLA+", + "inherits": "Elegoo RAPID PLA+ @base", + "from": "system", + "setting_id": "ERPLAPLUS00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo TPU 95A @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo TPU 95A @base.json new file mode 100644 index 0000000000..022972ac19 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo TPU 95A @base.json @@ -0,0 +1,26 @@ +{ + "type": "filament", + "name": "Elegoo TPU 95A @base", + "inherits": "fdm_elegoo_filament_tpu", + "from": "system", + "filament_id": "ETPU95AB00", + "instantiation": "false", + "filament_max_volumetric_speed": [ + "3.6" + ], + "filament_vendor": [ + "Elegoo" + ], + "filament_density": [ + "1.21" + ], + "nozzle_temperature": [ + "225" + ], + "nozzle_temperature_initial_layer": [ + "225" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_asa.json b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_asa.json new file mode 100644 index 0000000000..cb033e1172 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_asa.json @@ -0,0 +1,82 @@ +{ + "type": "filament", + "name": "fdm_elegoo_filament_asa", + "inherits": "fdm_elegoo_filament_common", + "from": "system", + "instantiation": "false", + "activate_air_filtration": [ + "0" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "90" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "fan_cooling_layer_time": [ + "35" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.04" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_type": [ + "ASA" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_common.json b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_common.json new file mode 100644 index 0000000000..df77feb47a --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_common.json @@ -0,0 +1,160 @@ +{ + "type": "filament", + "name": "fdm_elegoo_filament_common", + "from": "system", + "instantiation": "false", + "activate_air_filtration": [ + "0" + ], + "chamber_temperatures": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "70" + ], + "cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "during_print_exhaust_fan_speed": [ + "70" + ], + "eng_plate_temp": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "fan_cooling_layer_time": [ + "60" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "35" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "0" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "1" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_settings_id": [ + "" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA" + ], + "filament_vendor": [ + "Elegoo" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature": [ + "200" + ], + "nozzle_temperature_initial_layer": [ + "200" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "95%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "3" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "100" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [], + "filament_start_gcode": [ + "; Filament start gcode\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_pet.json b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_pet.json new file mode 100644 index 0000000000..3951115ee3 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_pet.json @@ -0,0 +1,67 @@ +{ + "type": "filament", + "name": "fdm_elegoo_filament_pet", + "inherits": "fdm_elegoo_filament_common", + "from": "system", + "instantiation": "false", + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "20" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.27" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PET" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; Filament start gcode\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_pla.json b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_pla.json new file mode 100644 index 0000000000..2f837599c8 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_pla.json @@ -0,0 +1,88 @@ +{ + "type": "filament", + "name": "fdm_elegoo_filament_pla", + "inherits": "fdm_elegoo_filament_common", + "from": "system", + "instantiation": "false", + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PLA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "0" + ], + "cool_plate_temp": [ + "35" + ], + "eng_plate_temp": [ + "0" + ], + "textured_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "220" + ], + "temperature_vitrification": [ + "45" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "slow_down_min_speed": [ + "20" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_start_gcode": [ + "; Filament start gcode\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_tpu.json b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_tpu.json new file mode 100644 index 0000000000..98e75f6f20 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_tpu.json @@ -0,0 +1,85 @@ +{ + "type": "filament", + "name": "fdm_elegoo_filament_tpu", + "inherits": "fdm_elegoo_filament_common", + "from": "system", + "instantiation": "false", + "filament_flow_ratio": [ + "0.96" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "30" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.24" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_retraction_length": [ + "0.4" + ], + "filament_type": [ + "TPU" + ], + "hot_plate_temp": [ + "35" + ], + "hot_plate_temp_initial_layer": [ + "35" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "temperature_vitrification": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "filament_start_gcode": [ + "; Filament start gcode\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.2 nozzle.json b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.2 nozzle.json new file mode 100644 index 0000000000..771ae88be9 --- /dev/null +++ b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.2 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "name": "Elegoo Centauri 0.2 nozzle", + "inherits": "Elegoo Centauri 0.4 nozzle", + "from": "system", + "setting_id": "EC02", + "instantiation": "true", + "nozzle_diameter": [ + "0.2" + ], + "printer_model": "Elegoo Centauri", + "printer_variant": "0.2", + "default_filament_profile": [ + "Elegoo PLA @0.2 nozzle" + ], + "default_print_profile": "0.10mm Standard @Elegoo C 0.2 nozzle", + "retraction_minimum_travel": [ + "0.4" + ], + "wipe_distance": [ + "0.8" + ], + "retraction_length": [ + "0.5" + ], + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.06" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.4 nozzle.json b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.4 nozzle.json new file mode 100644 index 0000000000..5b196abdd7 --- /dev/null +++ b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.4 nozzle.json @@ -0,0 +1,56 @@ +{ + "type": "machine", + "name": "Elegoo Centauri 0.4 nozzle", + "inherits": "fdm_machine_ecc", + "from": "system", + "setting_id": "EC04", + "instantiation": "true", + "nozzle_diameter": [ + "0.4" + ], + "printer_model": "Elegoo Centauri", + "printer_variant": "0.4", + "auxiliary_fan": "1", + "printable_area": [ + "0x0", + "257x0", + "257x257", + "0x257" + ], + "printable_height": "257", + "retract_lift_below": [ + "255" + ], + "bed_exclude_area": [ + "246x0", + "256x0", + "256x20", + "246x20" + ], + "thumbnails": [ + "144x144" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "default_filament_profile": [ + "Elegoo PLA @EC" + ], + "default_print_profile": "0.20mm Standard @Elegoo C 0.4 nozzle", + "extruder_offset": [ + "0x0" + ], + "fan_speedup_time": "0.5", + "machine_load_filament_time": "29", + "machine_unload_filament_time": "28", + "nozzle_type": "hardened_steel", + "scan_first_layer": "1", + "upward_compatible_machine": [ + ], + "gcode_flavor": "klipper", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M600", + "machine_start_gcode": ";;===== date: 20240520 =====================\n;printer_model:[printer_model]\n;initial_filament:{filament_type[initial_extruder]}\n;curr_bed_type:{curr_bed_type}\nM400 ; wait for buffer to clear\nM220 S100 ;Set the feed speed to 100%\nM221 S100 ;Set the flow rate to 100%\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nG90\nG28 ;home\nM729 ;Clean Nozzle\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {elsif (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\n\n;enable_pressure_advance:{enable_pressure_advance[initial_extruder]}\n;This value is called if pressure advance is enabled\n{if enable_pressure_advance[initial_extruder] == \"true\"}\nSET_PRESSURE_ADVANCE ADVANCE=[pressure_advance] ;\nM400\n{endif}\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\n\n\nG1 X{print_bed_max[0]*0.5} Y-1.2 F20000\nG1 Z0.3 F900\nM109 S[nozzle_temperature_initial_layer]\nM83\nG92 E0 ;Reset Extruder\nG1 F{min(6000, max(900, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X-1.2 E10.156 ;Draw the first line\nG1 Y98.8 E7.934\nG1 X-0.5 Y100 E0.1\nG1 Y-0.3 E7.934\nG1 X{print_bed_max[0]*0.5-50} E6.284\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-10} E2\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+10} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+50} E2\n;End PA test.\n\n\nG3 I-1 J0 Z0.6 F1200.0 ;Move to side a little\nG1 F20000\nG92 E0 ;Reset Extruder\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", + "machine_end_gcode": ";===== date: 20250109 =====================\nM400 ; wait for buffer to clear\nM140 S0 ;Turn-off bed\nM106 S255 ;Cooling nozzle\nM83\nG92 E0 ; zero the extruder\nG2 I1 J0 Z{max_layer_z+0.5} E-1 F3000 ; lower z a little\nG90\n{if max_layer_z > 50}G1 Z{min(max_layer_z+50, printable_height+0.5)} F20000{else}G1 Z100 F20000 {endif}; Move print head up \nM204 S5000\nM400\nM83\nG1 X202 F20000\nM400\nG1 Y250 F20000\nG1 Y264.5 F1200\nM400\nG92 E0\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\nM84 ;Disable all steppers" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.6 nozzle.json b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.6 nozzle.json new file mode 100644 index 0000000000..d9f11b1ad0 --- /dev/null +++ b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.6 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "name": "Elegoo Centauri 0.6 nozzle", + "inherits": "Elegoo Centauri 0.4 nozzle", + "from": "system", + "setting_id": "EC06", + "instantiation": "true", + "nozzle_diameter": [ + "0.6" + ], + "printer_model": "Elegoo Centauri", + "printer_variant": "0.6", + "default_filament_profile": [ + "Elegoo PLA @EC" + ], + "default_print_profile": "0.30mm Standard @Elegoo C 0.6 nozzle", + "retraction_minimum_travel": [ + "1.2" + ], + "wipe_distance": [ + "1.8" + ], + "retraction_length": [ + "0.8" + ], + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.12" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.8 nozzle.json b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.8 nozzle.json new file mode 100644 index 0000000000..5491b94b50 --- /dev/null +++ b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.8 nozzle.json @@ -0,0 +1,35 @@ +{ + "type": "machine", + "name": "Elegoo Centauri 0.8 nozzle", + "inherits": "Elegoo Centauri 0.4 nozzle", + "from": "system", + "setting_id": "EC08", + "instantiation": "true", + "nozzle_diameter": [ + "0.8" + ], + "printer_model": "Elegoo Centauri", + "printer_variant": "0.8", + "default_filament_profile": [ + "Elegoo PLA @EC" + ], + "default_print_profile": "0.40mm Standard @Elegoo C 0.8 nozzle", + "retraction_minimum_travel": [ + "1.6" + ], + "wipe_distance": [ + "2.0" + ], + "retraction_length": [ + "1.2" + ], + "max_layer_height": [ + "0.56" + ], + "min_layer_height": [ + "0.16" + ], + "retract_length_toolchange": [ + "3" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/EC/Elegoo Centauri.json b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri.json new file mode 100644 index 0000000000..d16ef5ea4a --- /dev/null +++ b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Elegoo Centauri", + "model_id": "Elegoo-C", + "nozzle_diameter": "0.4;0.2;0.6;0.8", + "machine_tech": "FFF", + "family": "Elegoo", + "bed_model": "elegoo_C_buildplate_model.stl", + "bed_texture": "", + "hotend_model": "", + "default_materials": "Elegoo ASA @0.2 nozzle;Elegoo ASA @EC;Elegoo PETG PRO @0.2 nozzle;Elegoo PETG PRO @EC;Elegoo PLA @0.2 nozzle;Elegoo PLA Matte @0.2 nozzle;Elegoo PLA Matte @EC;Elegoo PLA PRO @0.2 nozzle;Elegoo PLA PRO @EC;Elegoo PLA Silk @0.2 nozzle;Elegoo PLA Silk @EC;Elegoo PLA @EC;Elegoo PLA+ @0.2 nozzle;Elegoo PLA+ @EC;Elegoo RAPID PETG @0.2 nozzle;Elegoo RAPID PETG @EC;Elegoo RAPID PETG+ @0.2 nozzle;Elegoo RAPID PETG+ @EC;Elegoo RAPID PLA @0.2 nozzle;Elegoo RAPID PLA @EC;Elegoo RAPID PLA+ @0.2 nozzle;Elegoo RAPID PLA+ @EC;Elegoo TPU 95A @EC" +} diff --git a/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.2 nozzle.json b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.2 nozzle.json new file mode 100644 index 0000000000..218ab73e1c --- /dev/null +++ b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.2 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "name": "Elegoo Centauri Carbon 0.2 nozzle", + "inherits": "Elegoo Centauri Carbon 0.4 nozzle", + "from": "system", + "setting_id": "ECC02", + "instantiation": "true", + "nozzle_diameter": [ + "0.2" + ], + "printer_model": "Elegoo Centauri Carbon", + "printer_variant": "0.2", + "default_filament_profile": [ + "Elegoo PLA @0.2 nozzle" + ], + "default_print_profile": "0.10mm Standard @Elegoo CC 0.2 nozzle", + "retraction_minimum_travel": [ + "0.4" + ], + "wipe_distance": [ + "0.8" + ], + "retraction_length": [ + "0.5" + ], + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.06" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json new file mode 100644 index 0000000000..2757442d27 --- /dev/null +++ b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json @@ -0,0 +1,56 @@ +{ + "type": "machine", + "name": "Elegoo Centauri Carbon 0.4 nozzle", + "inherits": "fdm_machine_ecc", + "from": "system", + "setting_id": "ECC04", + "instantiation": "true", + "nozzle_diameter": [ + "0.4" + ], + "printer_model": "Elegoo Centauri Carbon", + "printer_variant": "0.4", + "auxiliary_fan": "1", + "printable_area": [ + "0x0", + "257x0", + "257x257", + "0x257" + ], + "printable_height": "257", + "retract_lift_below": [ + "255" + ], + "bed_exclude_area": [ + "246x0", + "256x0", + "256x20", + "246x20" + ], + "thumbnails": [ + "144x144" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "default_filament_profile": [ + "Elegoo PLA @ECC" + ], + "default_print_profile": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "extruder_offset": [ + "0x0" + ], + "fan_speedup_time": "0.5", + "machine_load_filament_time": "29", + "machine_unload_filament_time": "28", + "nozzle_type": "hardened_steel", + "scan_first_layer": "1", + "upward_compatible_machine": [ + ], + "gcode_flavor": "klipper", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M600", + "machine_start_gcode": ";;===== date: 20240520 =====================\n;printer_model:[printer_model]\n;initial_filament:{filament_type[initial_extruder]}\n;curr_bed_type:{curr_bed_type}\nM400 ; wait for buffer to clear\nM220 S100 ;Set the feed speed to 100%\nM221 S100 ;Set the flow rate to 100%\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nG90\nG28 ;home\nM729 ;Clean Nozzle\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {elsif (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\n\n;enable_pressure_advance:{enable_pressure_advance[initial_extruder]}\n;This value is called if pressure advance is enabled\n{if enable_pressure_advance[initial_extruder] == \"true\"}\nSET_PRESSURE_ADVANCE ADVANCE=[pressure_advance] ;\nM400\n{endif}\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\n\n\nG1 X{print_bed_max[0]*0.5} Y-1.2 F20000\nG1 Z0.3 F900\nM109 S[nozzle_temperature_initial_layer]\nM83\nG92 E0 ;Reset Extruder\nG1 F{min(6000, max(900, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X-1.2 E10.156 ;Draw the first line\nG1 Y98.8 E7.934\nG1 X-0.5 Y100 E0.1\nG1 Y-0.3 E7.934\nG1 X{print_bed_max[0]*0.5-50} E6.284\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-10} E2\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+10} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+50} E2\n;End PA test.\n\n\nG3 I-1 J0 Z0.6 F1200.0 ;Move to side a little\nG1 F20000\nG92 E0 ;Reset Extruder\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", + "machine_end_gcode": ";===== date: 20250109 =====================\nM400 ; wait for buffer to clear\nM140 S0 ;Turn-off bed\nM106 S255 ;Cooling nozzle\nM83\nG92 E0 ; zero the extruder\nG2 I1 J0 Z{max_layer_z+0.5} E-1 F3000 ; lower z a little\nG90\n{if max_layer_z > 50}G1 Z{min(max_layer_z+50, printable_height+0.5)} F20000{else}G1 Z100 F20000 {endif}; Move print head up \nM204 S5000\nM400\nM83\nG1 X202 F20000\nM400\nG1 Y250 F20000\nG1 Y264.5 F1200\nM400\nG92 E0\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\nM84 ;Disable all steppers" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.6 nozzle.json b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.6 nozzle.json new file mode 100644 index 0000000000..92006ad780 --- /dev/null +++ b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.6 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "name": "Elegoo Centauri Carbon 0.6 nozzle", + "inherits": "Elegoo Centauri Carbon 0.4 nozzle", + "from": "system", + "setting_id": "ECC06", + "instantiation": "true", + "nozzle_diameter": [ + "0.6" + ], + "printer_model": "Elegoo Centauri Carbon", + "printer_variant": "0.6", + "default_filament_profile": [ + "Elegoo PLA @ECC" + ], + "default_print_profile": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "retraction_minimum_travel": [ + "1.2" + ], + "wipe_distance": [ + "1.8" + ], + "retraction_length": [ + "0.8" + ], + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.12" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.8 nozzle.json b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.8 nozzle.json new file mode 100644 index 0000000000..3feab339ef --- /dev/null +++ b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.8 nozzle.json @@ -0,0 +1,35 @@ +{ + "type": "machine", + "name": "Elegoo Centauri Carbon 0.8 nozzle", + "inherits": "Elegoo Centauri Carbon 0.4 nozzle", + "from": "system", + "setting_id": "ECC08", + "instantiation": "true", + "nozzle_diameter": [ + "0.8" + ], + "printer_model": "Elegoo Centauri Carbon", + "printer_variant": "0.8", + "default_filament_profile": [ + "Elegoo PLA @ECC" + ], + "default_print_profile": "0.40mm Standard @Elegoo CC 0.8 nozzle", + "retraction_minimum_travel": [ + "1.6" + ], + "wipe_distance": [ + "2.0" + ], + "retraction_length": [ + "1.2" + ], + "max_layer_height": [ + "0.56" + ], + "min_layer_height": [ + "0.16" + ], + "retract_length_toolchange": [ + "3" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon.json b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon.json new file mode 100644 index 0000000000..999b98354e --- /dev/null +++ b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Elegoo Centauri Carbon", + "model_id": "Elegoo-CC", + "nozzle_diameter": "0.4;0.2;0.6;0.8", + "machine_tech": "FFF", + "family": "Elegoo", + "bed_model": "elegoo_CC_buildplate_model.stl", + "bed_texture": "", + "hotend_model": "", + "default_materials": "Elegoo ASA @0.2 nozzle;Elegoo ASA @ECC;Elegoo PETG PRO @0.2 nozzle;Elegoo PETG PRO @ECC;Elegoo PLA @0.2 nozzle;Elegoo PLA Matte @0.2 nozzle;Elegoo PLA Matte @ECC;Elegoo PLA PRO @0.2 nozzle;Elegoo PLA PRO @ECC;Elegoo PLA Silk @0.2 nozzle;Elegoo PLA Silk @ECC;Elegoo PLA-CF @ECC;Elegoo PLA @ECC;Elegoo PLA+ @0.2 nozzle;Elegoo PLA+ @ECC;Elegoo RAPID PETG @0.2 nozzle;Elegoo RAPID PETG @ECC;Elegoo RAPID PETG+ @0.2 nozzle;Elegoo RAPID PETG+ @ECC;Elegoo RAPID PLA @0.2 nozzle;Elegoo RAPID PLA @ECC;Elegoo RAPID PLA+ @0.2 nozzle;Elegoo RAPID PLA+ @ECC;Elegoo TPU 95A @ECC" +} diff --git a/resources/profiles/Elegoo/machine/ECC/fdm_machine_ecc.json b/resources/profiles/Elegoo/machine/ECC/fdm_machine_ecc.json new file mode 100644 index 0000000000..48aeca1553 --- /dev/null +++ b/resources/profiles/Elegoo/machine/ECC/fdm_machine_ecc.json @@ -0,0 +1,143 @@ +{ + "type": "machine", + "name": "fdm_machine_ecc", + "inherits": "fdm_machine_ecc_common", + "from": "system", + "instantiation": "false", + "nozzle_diameter": [ + "0.4" + ], + "printer_variant": "0.4", + "printable_area": [ + "0x0", + "256x0", + "256x256", + "0x256" + ], + "auxiliary_fan": "1", + "bed_exclude_area": [ + "0x0" + ], + "default_filament_profile": [ + "Elegoo PLA" + ], + "default_print_profile": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "extruder_colour": [ + "#018001" + ], + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "9000", + "9000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "200" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "500", + "200" + ], + "machine_max_speed_y": [ + "500", + "200" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "retract_lift_below":[ + "249" + ], + "extruder_clearance_radius": "57", + "extruder_clearance_max_radius": "68", + "extruder_clearance_height_to_lid": "90", + "nozzle_volume": "107", + "printer_structure": "corexy", + "best_object_pos":"0.5x0.5", + "retraction_minimum_travel": [ + "0.8" + ], + "retract_before_wipe": [ + "0%" + ], + "wipe_distance": [ + "1.2" + ], + "retraction_length": [ + "0.8" + ], + "retract_length_toolchange": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "retraction_speed": [ + "30" + ], + "deretraction_speed": [ + "30" + ], + "z_hop_types": [ + "Auto Lift" + ], + "thumbnails": [ + "320x320", + "160x160" + ], + "thumbnails_format": "PNG", + "nozzle_type": "brass", + "single_extruder_multi_material": "1", + "machine_end_gcode": ";===== date: 20240510 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y245 F3000\n\nG1 X65 Y245 F12000\nG1 Y245 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n", + "layer_change_gcode": ";LAYER:{layer_num+1}\n", + "change_filament_gcode": "", + "machine_pause_gcode": "M600" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/ECC/fdm_machine_ecc_common.json b/resources/profiles/Elegoo/machine/ECC/fdm_machine_ecc_common.json new file mode 100644 index 0000000000..129aa8fcef --- /dev/null +++ b/resources/profiles/Elegoo/machine/ECC/fdm_machine_ecc_common.json @@ -0,0 +1,130 @@ +{ + "type": "machine", + "name": "fdm_machine_ecc_common", + "from": "system", + "instantiation": "false", + "nozzle_diameter": [ + "0.4" + ], + "printer_variant": "0.4", + "support_chamber_temp_control": "0", + "printer_technology": "FFF", + "printer_notes": "", + "deretraction_speed": [ + "40" + ], + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "gcode_flavor": "marlin", + "silent_mode": "0", + "machine_max_acceleration_e": [ + "5000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "1000" + ], + "machine_max_acceleration_x": [ + "10000" + ], + "machine_max_acceleration_y": [ + "10000" + ], + "machine_max_acceleration_z": [ + "100" + ], + "machine_max_speed_e": [ + "60" + ], + "machine_max_speed_x": [ + "500" + ], + "machine_max_speed_y": [ + "500" + ], + "machine_max_speed_z": [ + "10" + ], + "machine_max_jerk_e": [ + "5" + ], + "machine_max_jerk_x": [ + "8" + ], + "machine_max_jerk_y": [ + "8" + ], + "machine_max_jerk_z": [ + "3" + ], + "machine_min_extruding_rate": [ + "0" + ], + "machine_min_travel_rate": [ + "0" + ], + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "printable_height": "250", + "extruder_clearance_radius": "65", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_height_to_lid": "140", + "printer_settings_id": "Elegoo", + "disable_m73": "1", + "retraction_minimum_travel": [ + "2" + ], + "retract_before_wipe": [ + "70%" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_length": [ + "5" + ], + "retract_length_toolchange": [ + "1" + ], + "z_hop": [ + "0" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retraction_speed": [ + "60" + ], + "cooling_tube_retraction": "90", + "parking_pos_retraction": "90", + "single_extruder_multi_material": "1", + "support_air_filtration": "0", + "wipe": [ + "1" + ], + "z_hop_types": [ + "Auto Lift" + ], + "default_filament_profile": [], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", + "layer_change_gcode": ";LAYER:{layer_num+1}\n", + "machine_start_gcode": "", + "machine_end_gcode": "", + "change_filament_gcode": "", + "purge_in_prime_tower": "0", + "manual_filament_change": "1", + "enable_filament_ramming": "0" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/0.48mm Draft @Elegoo Giga 0.8 nozzle.json b/resources/profiles/Elegoo/process/0.48mm Draft @Elegoo Giga 0.8 nozzle.json index a74ffca3de..29e330e3e0 100644 --- a/resources/profiles/Elegoo/process/0.48mm Draft @Elegoo Giga 0.8 nozzle.json +++ b/resources/profiles/Elegoo/process/0.48mm Draft @Elegoo Giga 0.8 nozzle.json @@ -2,6 +2,5 @@ "inherits": "0.40mm Standard @Elegoo Giga 0.8 nozzle", "layer_height": "0.48", "name": "0.48mm Draft @Elegoo Giga 0.8 nozzle", - "instantiation": "true", "instantiation": "true" } diff --git a/resources/profiles/Elegoo/process/EC/0.08mm Optimal @Elegoo C 0.2 nozzle.json b/resources/profiles/Elegoo/process/EC/0.08mm Optimal @Elegoo C 0.2 nozzle.json new file mode 100644 index 0000000000..4e3cdbb77a --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.08mm Optimal @Elegoo C 0.2 nozzle.json @@ -0,0 +1,7 @@ +{ + "elefant_foot_compensation": "0.05", + "inherits": "0.10mm Standard @Elegoo C 0.2 nozzle", + "layer_height": "0.08", + "name": "0.08mm Optimal @Elegoo C 0.2 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.10mm Standard @Elegoo C 0.2 nozzle.json b/resources/profiles/Elegoo/process/EC/0.10mm Standard @Elegoo C 0.2 nozzle.json new file mode 100644 index 0000000000..b0b493d5c1 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.10mm Standard @Elegoo C 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "process", + "name": "0.10mm Standard @Elegoo C 0.2 nozzle", + "inherits": "fdm_process_ecc_02010", + "from": "system", + "setting_id": "PEC02010", + "instantiation": "true", + "sparse_infill_pattern": "zig-zag", + "filename_format": "EC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "elefant_foot_compensation": "0.15", + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/EC/0.12mm Draft @Elegoo C 0.2 nozzle.json b/resources/profiles/Elegoo/process/EC/0.12mm Draft @Elegoo C 0.2 nozzle.json new file mode 100644 index 0000000000..d44d74b44f --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.12mm Draft @Elegoo C 0.2 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.10mm Standard @Elegoo C 0.2 nozzle", + "layer_height": "0.12", + "name": "0.12mm Draft @Elegoo C 0.2 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.12mm Fine @Elegoo C 0.4 nozzle.json b/resources/profiles/Elegoo/process/EC/0.12mm Fine @Elegoo C 0.4 nozzle.json new file mode 100644 index 0000000000..6673f84cdc --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.12mm Fine @Elegoo C 0.4 nozzle.json @@ -0,0 +1,7 @@ +{ + "inherits": "0.20mm Standard @Elegoo C 0.4 nozzle", + "layer_height": "0.12", + "name": "0.12mm Fine @Elegoo C 0.4 nozzle", + "wall_loops": "3", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.14mm Extra Draft @Elegoo C 0.2 nozzle.json b/resources/profiles/Elegoo/process/EC/0.14mm Extra Draft @Elegoo C 0.2 nozzle.json new file mode 100644 index 0000000000..b8de607b01 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.14mm Extra Draft @Elegoo C 0.2 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.10mm Standard @Elegoo C 0.2 nozzle", + "layer_height": "0.14", + "name": "0.14mm Extra Draft @Elegoo C 0.2 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.16mm Extra Fine @Elegoo C 0.8 nozzle.json b/resources/profiles/Elegoo/process/EC/0.16mm Extra Fine @Elegoo C 0.8 nozzle.json new file mode 100644 index 0000000000..c2ea2b0c0d --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.16mm Extra Fine @Elegoo C 0.8 nozzle.json @@ -0,0 +1,7 @@ +{ + "inherits": "0.40mm Standard @Elegoo C 0.8 nozzle", + "initial_layer_print_height": "0.3", + "layer_height": "0.16", + "name": "0.16mm Extra Fine @Elegoo C 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.16mm Optimal @Elegoo C 0.4 nozzle.json b/resources/profiles/Elegoo/process/EC/0.16mm Optimal @Elegoo C 0.4 nozzle.json new file mode 100644 index 0000000000..137d7bb435 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.16mm Optimal @Elegoo C 0.4 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.20mm Standard @Elegoo C 0.4 nozzle", + "layer_height": "0.16", + "name": "0.16mm Optimal @Elegoo C 0.4 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.18mm Fine @Elegoo C 0.6 nozzle.json b/resources/profiles/Elegoo/process/EC/0.18mm Fine @Elegoo C 0.6 nozzle.json new file mode 100644 index 0000000000..217e174eb7 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.18mm Fine @Elegoo C 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo C 0.6 nozzle", + "layer_height": "0.18", + "name": "0.18mm Fine @Elegoo C 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.20mm Standard @Elegoo C 0.4 nozzle.json b/resources/profiles/Elegoo/process/EC/0.20mm Standard @Elegoo C 0.4 nozzle.json new file mode 100644 index 0000000000..538c8b3e65 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.20mm Standard @Elegoo C 0.4 nozzle.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.20mm Standard @Elegoo C 0.4 nozzle", + "inherits": "fdm_process_ecc_04020", + "from": "system", + "setting_id": "PEC04020", + "instantiation": "true", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0.6", + "sparse_infill_pattern": "zig-zag", + "filename_format": "EC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/EC/0.20mm Strength @Elegoo C 0.4 nozzle.json b/resources/profiles/Elegoo/process/EC/0.20mm Strength @Elegoo C 0.4 nozzle.json new file mode 100644 index 0000000000..cd35fa1ad7 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.20mm Strength @Elegoo C 0.4 nozzle.json @@ -0,0 +1,13 @@ +{ + "inherits": "0.20mm Standard @Elegoo C 0.4 nozzle", + "name": "0.20mm Strength @Elegoo C 0.4 nozzle", + "wall_sequence": "inner-outer-inner wall", + "reduce_crossing_wall": "1", + "bottom_shell_layers": "5", + "outer_wall_speed": "120", + "print_flow_ratio": "0.95", + "sparse_infill_density": "20%", + "top_shell_layers": "6", + "wall_loops": "6", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.24mm Draft @Elegoo C 0.4 nozzle.json b/resources/profiles/Elegoo/process/EC/0.24mm Draft @Elegoo C 0.4 nozzle.json new file mode 100644 index 0000000000..203b7e4bfd --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.24mm Draft @Elegoo C 0.4 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.20mm Standard @Elegoo C 0.4 nozzle", + "layer_height": "0.24", + "name": "0.24mm Draft @Elegoo C 0.4 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.24mm Fine @Elegoo C 0.8 nozzle.json b/resources/profiles/Elegoo/process/EC/0.24mm Fine @Elegoo C 0.8 nozzle.json new file mode 100644 index 0000000000..e14a75ec1b --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.24mm Fine @Elegoo C 0.8 nozzle.json @@ -0,0 +1,7 @@ +{ + "inherits": "0.40mm Standard @Elegoo C 0.8 nozzle", + "initial_layer_print_height": "0.3", + "layer_height": "0.24", + "name": "0.24mm Fine @Elegoo C 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.24mm Optimal @Elegoo C 0.6 nozzle.json b/resources/profiles/Elegoo/process/EC/0.24mm Optimal @Elegoo C 0.6 nozzle.json new file mode 100644 index 0000000000..e8a6624341 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.24mm Optimal @Elegoo C 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo C 0.6 nozzle", + "layer_height": "0.24", + "name": "0.24mm Optimal @Elegoo C 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.28mm Extra Draft @Elegoo C 0.4 nozzle.json b/resources/profiles/Elegoo/process/EC/0.28mm Extra Draft @Elegoo C 0.4 nozzle.json new file mode 100644 index 0000000000..b6dab7d434 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.28mm Extra Draft @Elegoo C 0.4 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.20mm Standard @Elegoo C 0.4 nozzle", + "layer_height": "0.28", + "name": "0.28mm Extra Draft @Elegoo C 0.4 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.30mm Standard @Elegoo C 0.6 nozzle.json b/resources/profiles/Elegoo/process/EC/0.30mm Standard @Elegoo C 0.6 nozzle.json new file mode 100644 index 0000000000..8421d8e308 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.30mm Standard @Elegoo C 0.6 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.30mm Standard @Elegoo C 0.6 nozzle", + "inherits": "fdm_process_ecc_06030", + "from": "system", + "setting_id": "PEC06030", + "instantiation": "true", + "sparse_infill_pattern": "zig-zag", + "filename_format": "EC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "compatible_printers": [ + "Elegoo Centauri 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/EC/0.30mm Strength @Elegoo C 0.6 nozzle.json b/resources/profiles/Elegoo/process/EC/0.30mm Strength @Elegoo C 0.6 nozzle.json new file mode 100644 index 0000000000..b7829d73a1 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.30mm Strength @Elegoo C 0.6 nozzle.json @@ -0,0 +1,12 @@ +{ + "inherits": "0.30mm Standard @Elegoo C 0.6 nozzle", + "inner_wall_speed": "120", + "name": "0.30mm Strength @Elegoo C 0.6 nozzle", + "wall_sequence": "inner-outer-inner wall", + "reduce_crossing_wall": "1", + "outer_wall_speed": "80", + "sparse_infill_density": "15%", + "top_surface_speed": "120", + "wall_loops": "4", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.32mm Optimal @Elegoo C 0.8 nozzle.json b/resources/profiles/Elegoo/process/EC/0.32mm Optimal @Elegoo C 0.8 nozzle.json new file mode 100644 index 0000000000..ac37109ba6 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.32mm Optimal @Elegoo C 0.8 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.40mm Standard @Elegoo C 0.8 nozzle", + "layer_height": "0.32", + "name": "0.32mm Optimal @Elegoo C 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.36mm Draft @Elegoo C 0.6 nozzle.json b/resources/profiles/Elegoo/process/EC/0.36mm Draft @Elegoo C 0.6 nozzle.json new file mode 100644 index 0000000000..efddf97035 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.36mm Draft @Elegoo C 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo C 0.6 nozzle", + "layer_height": "0.36", + "name": "0.36mm Draft @Elegoo C 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.40mm Standard @Elegoo C 0.8 nozzle.json b/resources/profiles/Elegoo/process/EC/0.40mm Standard @Elegoo C 0.8 nozzle.json new file mode 100644 index 0000000000..b83167b57f --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.40mm Standard @Elegoo C 0.8 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.40mm Standard @Elegoo C 0.8 nozzle", + "inherits": "fdm_process_ecc_08040", + "from": "system", + "setting_id": "PEC08040", + "instantiation": "true", + "sparse_infill_pattern": "zig-zag", + "filename_format": "EC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "compatible_printers": [ + "Elegoo Centauri 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/EC/0.42mm Extra Draft @Elegoo C 0.6 nozzle.json b/resources/profiles/Elegoo/process/EC/0.42mm Extra Draft @Elegoo C 0.6 nozzle.json new file mode 100644 index 0000000000..46fca6e52e --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.42mm Extra Draft @Elegoo C 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo C 0.6 nozzle", + "layer_height": "0.42", + "name": "0.42mm Extra Draft @Elegoo C 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.48mm Draft @Elegoo C 0.8 nozzle.json b/resources/profiles/Elegoo/process/EC/0.48mm Draft @Elegoo C 0.8 nozzle.json new file mode 100644 index 0000000000..337e27e01a --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.48mm Draft @Elegoo C 0.8 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.40mm Standard @Elegoo C 0.8 nozzle", + "layer_height": "0.48", + "name": "0.48mm Draft @Elegoo C 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.08mm Optimal @Elegoo CC 0.2 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.08mm Optimal @Elegoo CC 0.2 nozzle.json new file mode 100644 index 0000000000..603c5b1198 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.08mm Optimal @Elegoo CC 0.2 nozzle.json @@ -0,0 +1,7 @@ +{ + "elefant_foot_compensation": "0.05", + "inherits": "0.10mm Standard @Elegoo CC 0.2 nozzle", + "layer_height": "0.08", + "name": "0.08mm Optimal @Elegoo CC 0.2 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.10mm Standard @Elegoo CC 0.2 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.10mm Standard @Elegoo CC 0.2 nozzle.json new file mode 100644 index 0000000000..751436c461 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.10mm Standard @Elegoo CC 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "process", + "name": "0.10mm Standard @Elegoo CC 0.2 nozzle", + "inherits": "fdm_process_ecc_02010", + "from": "system", + "setting_id": "PECC02010", + "instantiation": "true", + "sparse_infill_pattern": "zig-zag", + "filename_format": "ECC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "elefant_foot_compensation": "0.15", + "compatible_printers": [ + "Elegoo Centauri Carbon 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/ECC/0.12mm Draft @Elegoo CC 0.2 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.12mm Draft @Elegoo CC 0.2 nozzle.json new file mode 100644 index 0000000000..5636327c63 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.12mm Draft @Elegoo CC 0.2 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.10mm Standard @Elegoo CC 0.2 nozzle", + "layer_height": "0.12", + "name": "0.12mm Draft @Elegoo CC 0.2 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.12mm Fine @Elegoo CC 0.4 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.12mm Fine @Elegoo CC 0.4 nozzle.json new file mode 100644 index 0000000000..2823fe4c56 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.12mm Fine @Elegoo CC 0.4 nozzle.json @@ -0,0 +1,7 @@ +{ + "inherits": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "layer_height": "0.12", + "name": "0.12mm Fine @Elegoo CC 0.4 nozzle", + "wall_loops": "3", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.14mm Extra Draft @Elegoo CC 0.2 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.14mm Extra Draft @Elegoo CC 0.2 nozzle.json new file mode 100644 index 0000000000..cf33c7821d --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.14mm Extra Draft @Elegoo CC 0.2 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.10mm Standard @Elegoo CC 0.2 nozzle", + "layer_height": "0.14", + "name": "0.14mm Extra Draft @Elegoo CC 0.2 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.16mm Extra Fine @Elegoo CC 0.8 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.16mm Extra Fine @Elegoo CC 0.8 nozzle.json new file mode 100644 index 0000000000..aece670af5 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.16mm Extra Fine @Elegoo CC 0.8 nozzle.json @@ -0,0 +1,7 @@ +{ + "inherits": "0.40mm Standard @Elegoo CC 0.8 nozzle", + "initial_layer_print_height": "0.3", + "layer_height": "0.16", + "name": "0.16mm Extra Fine @Elegoo CC 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.16mm Optimal @Elegoo CC 0.4 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.16mm Optimal @Elegoo CC 0.4 nozzle.json new file mode 100644 index 0000000000..c4c113a38c --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.16mm Optimal @Elegoo CC 0.4 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "layer_height": "0.16", + "name": "0.16mm Optimal @Elegoo CC 0.4 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.18mm Fine @Elegoo CC 0.6 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.18mm Fine @Elegoo CC 0.6 nozzle.json new file mode 100644 index 0000000000..60a67ebcbc --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.18mm Fine @Elegoo CC 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "layer_height": "0.18", + "name": "0.18mm Fine @Elegoo CC 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.20mm Standard @Elegoo CC 0.4 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.20mm Standard @Elegoo CC 0.4 nozzle.json new file mode 100644 index 0000000000..410b4f9143 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.20mm Standard @Elegoo CC 0.4 nozzle.json @@ -0,0 +1,16 @@ + +{ + "type": "process", + "name": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "inherits": "fdm_process_ecc_04020", + "from": "system", + "setting_id": "PECC04020", + "instantiation": "true", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0.6", + "sparse_infill_pattern": "zig-zag", + "filename_format": "ECC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/process/ECC/0.20mm Strength @Elegoo CC 0.4 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.20mm Strength @Elegoo CC 0.4 nozzle.json new file mode 100644 index 0000000000..7082721b6c --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.20mm Strength @Elegoo CC 0.4 nozzle.json @@ -0,0 +1,13 @@ +{ + "inherits": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "name": "0.20mm Strength @Elegoo CC 0.4 nozzle", + "wall_sequence": "inner-outer-inner wall", + "reduce_crossing_wall": "1", + "bottom_shell_layers": "5", + "outer_wall_speed": "120", + "print_flow_ratio": "0.95", + "sparse_infill_density": "20%", + "top_shell_layers": "6", + "wall_loops": "6", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.24mm Draft @Elegoo CC 0.4 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.24mm Draft @Elegoo CC 0.4 nozzle.json new file mode 100644 index 0000000000..31ff8f882f --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.24mm Draft @Elegoo CC 0.4 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "layer_height": "0.24", + "name": "0.24mm Draft @Elegoo CC 0.4 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.24mm Fine @Elegoo CC 0.8 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.24mm Fine @Elegoo CC 0.8 nozzle.json new file mode 100644 index 0000000000..3280e7baa0 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.24mm Fine @Elegoo CC 0.8 nozzle.json @@ -0,0 +1,7 @@ +{ + "inherits": "0.40mm Standard @Elegoo CC 0.8 nozzle", + "initial_layer_print_height": "0.3", + "layer_height": "0.24", + "name": "0.24mm Fine @Elegoo CC 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.24mm Optimal @Elegoo CC 0.6 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.24mm Optimal @Elegoo CC 0.6 nozzle.json new file mode 100644 index 0000000000..35489b01b3 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.24mm Optimal @Elegoo CC 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "layer_height": "0.24", + "name": "0.24mm Optimal @Elegoo CC 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.28mm Extra Draft @Elegoo CC 0.4 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.28mm Extra Draft @Elegoo CC 0.4 nozzle.json new file mode 100644 index 0000000000..1e5b57eb9d --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.28mm Extra Draft @Elegoo CC 0.4 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "layer_height": "0.28", + "name": "0.28mm Extra Draft @Elegoo CC 0.4 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.30mm Standard @Elegoo CC 0.6 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.30mm Standard @Elegoo CC 0.6 nozzle.json new file mode 100644 index 0000000000..0159917c78 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.30mm Standard @Elegoo CC 0.6 nozzle.json @@ -0,0 +1,14 @@ + +{ + "type": "process", + "name": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "inherits": "fdm_process_ecc_06030", + "from": "system", + "setting_id": "PECC06030", + "instantiation": "true", + "sparse_infill_pattern": "zig-zag", + "filename_format": "ECC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "compatible_printers": [ + "Elegoo Centauri Carbon 0.6 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/process/ECC/0.30mm Strength @Elegoo CC 0.6 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.30mm Strength @Elegoo CC 0.6 nozzle.json new file mode 100644 index 0000000000..025d46e3b0 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.30mm Strength @Elegoo CC 0.6 nozzle.json @@ -0,0 +1,12 @@ +{ + "inherits": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "inner_wall_speed": "120", + "name": "0.30mm Strength @Elegoo CC 0.6 nozzle", + "wall_sequence": "inner-outer-inner wall", + "reduce_crossing_wall": "1", + "outer_wall_speed": "80", + "sparse_infill_density": "15%", + "top_surface_speed": "120", + "wall_loops": "4", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.32mm Optimal @Elegoo CC 0.8 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.32mm Optimal @Elegoo CC 0.8 nozzle.json new file mode 100644 index 0000000000..c8950d4fd0 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.32mm Optimal @Elegoo CC 0.8 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.40mm Standard @Elegoo CC 0.8 nozzle", + "layer_height": "0.32", + "name": "0.32mm Optimal @Elegoo CC 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.36mm Draft @Elegoo CC 0.6 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.36mm Draft @Elegoo CC 0.6 nozzle.json new file mode 100644 index 0000000000..a65e5bdf60 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.36mm Draft @Elegoo CC 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "layer_height": "0.36", + "name": "0.36mm Draft @Elegoo CC 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.40mm Standard @Elegoo CC 0.8 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.40mm Standard @Elegoo CC 0.8 nozzle.json new file mode 100644 index 0000000000..f46bc25763 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.40mm Standard @Elegoo CC 0.8 nozzle.json @@ -0,0 +1,14 @@ + +{ + "type": "process", + "name": "0.40mm Standard @Elegoo CC 0.8 nozzle", + "inherits": "fdm_process_ecc_08040", + "from": "system", + "setting_id": "PECC08040", + "instantiation": "true", + "sparse_infill_pattern": "zig-zag", + "filename_format": "ECC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "compatible_printers": [ + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/process/ECC/0.42mm Extra Draft @Elegoo CC 0.6 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.42mm Extra Draft @Elegoo CC 0.6 nozzle.json new file mode 100644 index 0000000000..8c0270b34a --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.42mm Extra Draft @Elegoo CC 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "layer_height": "0.42", + "name": "0.42mm Extra Draft @Elegoo CC 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.48mm Draft @Elegoo CC 0.8 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.48mm Draft @Elegoo CC 0.8 nozzle.json new file mode 100644 index 0000000000..fb9c99eb5f --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.48mm Draft @Elegoo CC 0.8 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.40mm Standard @Elegoo CC 0.8 nozzle", + "layer_height": "0.48", + "name": "0.48mm Draft @Elegoo CC 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/fdm_process_ecc.json b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc.json new file mode 100644 index 0000000000..9bc0e0f1c5 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc.json @@ -0,0 +1,93 @@ +{ + "type": "process", + "name": "fdm_process_ecc", + "inherits": "fdm_process_ecc_common", + "from": "system", + "instantiation": "false", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "4", + "bridge_speed": "50", + "brim_object_gap": "0.1", + "compatible_printers_condition": "", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.05", + "enable_arc_fitting": "1", + "outer_wall_acceleration": "5000", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.42", + "internal_bridge_support_thickness": "0.8", + "initial_layer_acceleration": "500", + "initial_layer_line_width": "0.5", + "initial_layer_speed": "30", + "gap_infill_speed": "50", + "sparse_infill_speed": "250", + "ironing_flow": "10%", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "layer_height": "0.2", + "filename_format": "{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "10", + "only_one_wall_top": "1", + "inner_wall_speed": "150", + "seam_position": "aligned", + "skirt_height": "1", + "skirt_loops": "0", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "cubic", + "top_bottom_infill_wall_overlap": "5%", + "infill_anchor": "400%", + "infill_anchor_max": "40", + "minimum_sparse_infill_area": "15", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "150", + "initial_layer_infill_speed": "60", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "default", + "support_top_z_distance": "0.2", + "support_bottom_z_distance": "0.2", + "support_interface_bottom_layers": "2", + "support_interface_spacing": "0.5", + "support_expansion": "0", + "support_base_pattern_spacing": "2.5", + "support_speed": "150", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.35", + "tree_support_branch_diameter": "2", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "top_surface_pattern": "monotonicline", + "top_surface_acceleration": "2000", + "top_surface_speed": "200", + "top_shell_layers": "3", + "travel_speed": "500", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "35", + "wall_generator": "classic", + "compatible_printers": [], + "detect_narrow_internal_solid_infill": "1", + "extra_perimeters_on_overhangs": "0", + "seam_slope_conditional": "1", + "seam_slope_inner_walls": "1", + "accel_to_decel_enable": "0", + "precise_outer_wall": "0", + "seam_slope_min_length": "0", + "bridge_flow": "0.95", + "internal_bridge_flow": "0.95", + "role_based_wipe_speed": "0", + "seam_slope_type": "none", + "wipe_on_loops": "0", + "gcode_label_objects": "0", + "staggered_inner_seams": "0", + "wipe_before_external_loop": "0", + "exclude_object": "1", + "wipe_speed": "100%", + "print_flow_ratio": "0.97", + "wall_sequence": "inner wall/outer wall" +} diff --git a/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_02010.json b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_02010.json new file mode 100644 index 0000000000..464c82d5f0 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_02010.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "name": "fdm_process_ecc_02010", + "inherits": "fdm_process_ecc", + "from": "system", + "instantiation": "false", + "layer_height": "0.1", + "initial_layer_print_height": "0.15", + "elefant_foot_compensation": "0.05", + "wall_loops": "4", + "bottom_shell_layers": "5", + "top_shell_layers": "7", + "bridge_flow": "1", + "line_width": "0.22", + "outer_wall_line_width": "0.22", + "initial_layer_line_width": "0.3", + "sparse_infill_line_width": "0.25", + "inner_wall_line_width": "0.22", + "internal_solid_infill_line_width": "0.22", + "support_line_width": "0.22", + "top_surface_line_width": "0.22", + "initial_layer_speed": "35", + "initial_layer_infill_speed": "60", + "sparse_infill_speed": "100", + "inner_wall_speed": "100", + "internal_solid_infill_speed": "100", + "is_custom_defined": "0", + "outer_wall_speed": "60", + "top_surface_speed": "80" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_04020.json b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_04020.json new file mode 100644 index 0000000000..f9fbc12e5f --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_04020.json @@ -0,0 +1,18 @@ +{ + "type": "process", + "name": "fdm_process_ecc_04020", + "inherits": "fdm_process_ecc", + "from": "system", + "instantiation": "false", + "elefant_foot_compensation": "0.1", + "top_shell_thickness": "1.0", + "bridge_flow": "1", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "105", + "outer_wall_speed": "160", + "inner_wall_speed": "200", + "sparse_infill_speed": "200", + "internal_solid_infill_speed": "250", + "gap_infill_speed": "250", + "top_shell_layers": "5" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_06030.json b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_06030.json new file mode 100644 index 0000000000..48892929b6 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_06030.json @@ -0,0 +1,26 @@ +{ + "type": "process", + "name": "fdm_process_ecc_06030", + "inherits": "fdm_process_ecc", + "from": "system", + "instantiation": "false", + "layer_height": "0.3", + "initial_layer_print_height": "0.3", + "elefant_foot_compensation": "0.15", + "bridge_flow": "1", + "line_width": "0.62", + "outer_wall_line_width": "0.62", + "initial_layer_line_width": "0.80", + "sparse_infill_line_width": "0.62", + "inner_wall_line_width": "0.62", + "internal_solid_infill_line_width": "0.62", + "support_line_width": "0.62", + "top_surface_line_width": "0.62", + "initial_layer_speed": "35", + "initial_layer_infill_speed": "55", + "gap_infill_speed": "80", + "sparse_infill_speed": "200", + "top_surface_speed": "150", + "bridge_speed": "30", + "overhang_3_4_speed": "25" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_08040.json b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_08040.json new file mode 100644 index 0000000000..da30cf4017 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_08040.json @@ -0,0 +1,27 @@ +{ + "type": "process", + "name": "fdm_process_ecc_08040", + "inherits": "fdm_process_ecc", + "from": "system", + "instantiation": "false", + "layer_height": "0.4", + "initial_layer_print_height": "0.4", + "elefant_foot_compensation": "0.15", + "bridge_flow": "1", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "initial_layer_line_width": "0.82", + "sparse_infill_line_width": "0.82", + "inner_wall_line_width": "0.82", + "internal_solid_infill_line_width": "0.82", + "support_line_width": "0.82", + "top_surface_line_width": "0.82", + "initial_layer_speed": "35", + "initial_layer_infill_speed": "55", + "sparse_infill_speed": "100", + "top_surface_speed": "150", + "bridge_speed": "30", + "overhang_2_4_speed": "40", + "overhang_3_4_speed": "20", + "overhang_4_4_speed": "10" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_common.json b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_common.json new file mode 100644 index 0000000000..ffbd6580a5 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_common.json @@ -0,0 +1,86 @@ +{ + "type": "process", + "name": "fdm_process_ecc_common", + "from": "system", + "instantiation": "false", + "adaptive_layer_height": "0", + "reduce_crossing_wall": "0", + "bridge_flow": "0.95", + "bridge_speed": "25", + "brim_width": "5", + "print_sequence": "by layer", + "default_acceleration": "10000", + "travel_acceleration": "0", + "inner_wall_acceleration": "0", + "bridge_no_support": "0", + "elefant_foot_compensation": "0.1", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "120", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "grid", + "initial_layer_line_width": "0.42", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "20", + "gap_infill_speed": "30", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "15%", + "sparse_infill_speed": "50", + "overhang_speed_classic": "1", + "interface_shells": "0", + "detect_overhang_wall": "0", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}.gcode", + "wall_loops": "2", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "40", + "raft_layers": "0", + "seam_position": "nearest", + "skirt_distance": "2", + "skirt_height": "2", + "minimum_sparse_infill_area": "0", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "40", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "support_filament": "0", + "support_line_width": "0.42", + "support_interface_filament": "0", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.15", + "support_interface_loop_pattern": "0", + "support_interface_top_layers": "2", + "support_interface_spacing": "0", + "support_interface_speed": "80", + "support_interface_pattern": "auto", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2", + "support_speed": "40", + "support_threshold_angle": "40", + "support_object_xy_distance": "0.5", + "tree_support_angle_slow": "30", + "tree_support_branch_angle_organic": "45", + "tree_support_branch_diameter_double_wall": "10", + "tree_support_branch_distance_organic": "5", + "tree_support_tip_diameter": "2", + "detect_thin_wall": "0", + "top_surface_line_width": "0.42", + "top_surface_speed": "30", + "travel_speed": "400", + "enable_prime_tower": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "role_based_wipe_speed": "1", + "detect_narrow_internal_solid_infill": "1", + "top_shell_thickness": "0.8", + "bottom_shell_thickness":"0.8", + "gap_fill_target": "everywhere", + "filter_out_gap_fill": "1", + "ensure_vertical_shell_thickness": "ensure_all", + "compatible_printers": [], + "slowdown_for_curled_perimeters": "0" +} diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 7d6e76e344..a6d6501226 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -767,6 +767,8 @@ BedType Preset::get_default_bed_type(PresetBundle* preset_bundle) return BedType::btPC; } else if (model_id == "C11") { return BedType::btPEI; + }else if (model_id == "Elegoo-CC" || model_id == "Elegoo-C") {//set default bed type to PTE for Elegoo-CC + return BedType::btPTE; } return BedType::btPEI; } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 2878ca735b..9844bafc14 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -88,6 +88,7 @@ static t_config_enum_values s_keys_map_PrintHostType { { "obico", htObico }, { "flashforge", htFlashforge }, { "simplyprint", htSimplyPrint }, + { "elegoolink", htElegooLink } }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(PrintHostType) @@ -3615,6 +3616,7 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("obico"); def->enum_values.push_back("flashforge"); def->enum_values.push_back("simplyprint"); + def->enum_values.push_back("elegoolink"); def->enum_labels.push_back("PrusaLink"); def->enum_labels.push_back("PrusaConnect"); def->enum_labels.push_back("Octo/Klipper"); @@ -3628,6 +3630,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back("Obico"); def->enum_labels.push_back("Flashforge"); def->enum_labels.push_back("SimplyPrint"); + def->enum_labels.push_back("Elegoo Link"); def->mode = comAdvanced; def->cli = ConfigOptionDef::nocli; def->set_default_value(new ConfigOptionEnum(htOctoPrint)); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 3a8bbd8a4d..326d250708 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -50,7 +50,7 @@ enum class NoiseType { }; enum PrintHostType { - htPrusaLink, htPrusaConnect, htOctoPrint, htDuet, htFlashAir, htAstroBox, htRepetier, htMKS, htESP3D, htCrealityPrint, htObico, htFlashforge, htSimplyPrint + htPrusaLink, htPrusaConnect, htOctoPrint, htDuet, htFlashAir, htAstroBox, htRepetier, htMKS, htESP3D, htCrealityPrint, htObico, htFlashforge, htSimplyPrint, htElegooLink }; enum AuthorizationType { diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 3de396c9d0..7dd5f9f996 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -567,6 +567,9 @@ set(SLIC3R_GUI_SOURCES GUI/Jobs/OAuthJob.hpp Utils/SimplyPrint.cpp Utils/SimplyPrint.hpp + Utils/ElegooLink.hpp + Utils/ElegooLink.cpp + Utils/WebSocketClient.hpp ) if (WIN32) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 4af1c8c5ef..f141755688 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1307,8 +1307,9 @@ void Sidebar::update_all_preset_comboboxes() } } } else { - // Orca: combobox don't have the btDefault option, so we need to -1 - m_bed_type_list->SelectAndNotify(btPEI - 1); + // m_bed_type_list->SelectAndNotify(btPEI - 1); + BedType bed_type = preset_bundle.printers.get_edited_preset().get_default_bed_type(&preset_bundle); + m_bed_type_list->SelectAndNotify((int) bed_type - 1); m_bed_type_list->Disable(); } @@ -12660,38 +12661,58 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn, bool us } } - auto config = get_app_config(); - PrintHostSendDialog dlg(default_output_file, upload_job.printhost->get_post_upload_actions(), groups, storage_paths, storage_names, config->get_bool("open_device_tab_post_upload")); - if (dlg.ShowModal() == wxID_OK) { - config->set_bool("open_device_tab_post_upload", dlg.switch_to_device_tab()); - upload_job.switch_to_device_tab = dlg.switch_to_device_tab(); - upload_job.upload_data.upload_path = dlg.filename(); - upload_job.upload_data.post_action = dlg.post_action(); - upload_job.upload_data.group = dlg.group(); - upload_job.upload_data.storage = dlg.storage(); + { + auto preset_bundle = wxGetApp().preset_bundle; + const auto opt = physical_printer_config->option>("host_type"); + const auto host_type = opt != nullptr ? opt->value : htElegooLink; + auto config = get_app_config(); - // Show "Is printer clean" dialog for PrusaConnect - Upload and print. - if (std::string(upload_job.printhost->get_name()) == "PrusaConnect" && upload_job.upload_data.post_action == PrintHostPostUploadAction::StartPrint) { - GUI::MessageDialog dlg(nullptr, _L("Is the printer ready? Is the print sheet in place, empty and clean?"), _L("Upload and Print"), wxOK | wxCANCEL); - if (dlg.ShowModal() != wxID_OK) - return; + std::unique_ptr pDlg; + if (host_type == htElegooLink) { + pDlg = std::make_unique(default_output_file, upload_job.printhost->get_post_upload_actions(), groups, + storage_paths, storage_names, + config->get_bool("open_device_tab_post_upload")); + } else { + pDlg = std::make_unique(default_output_file, upload_job.printhost->get_post_upload_actions(), groups, + storage_paths, storage_names, config->get_bool("open_device_tab_post_upload")); } - if (use_3mf) { - // Process gcode - const int result = send_gcode(plate_idx, nullptr); - - if (result < 0) { - wxString msg = _L("Abnormal print file data. Please slice again"); - show_error(this, msg, false); - return; - } - - upload_job.upload_data.source_path = p->m_print_job_data._3mf_path; + pDlg->init(); + if (pDlg->ShowModal() != wxID_OK) { + return; } - p->export_gcode(fs::path(), false, std::move(upload_job)); + config->set_bool("open_device_tab_post_upload", pDlg->switch_to_device_tab()); + // PrintHostUpload upload_data; + upload_job.switch_to_device_tab = pDlg->switch_to_device_tab(); + upload_job.upload_data.upload_path = pDlg->filename(); + upload_job.upload_data.post_action = pDlg->post_action(); + upload_job.upload_data.group = pDlg->group(); + upload_job.upload_data.storage = pDlg->storage(); + upload_job.upload_data.extended_info = pDlg->extendedInfo(); } + + // Show "Is printer clean" dialog for PrusaConnect - Upload and print. + if (std::string(upload_job.printhost->get_name()) == "PrusaConnect" && upload_job.upload_data.post_action == PrintHostPostUploadAction::StartPrint) { + GUI::MessageDialog dlg(nullptr, _L("Is the printer ready? Is the print sheet in place, empty and clean?"), _L("Upload and Print"), wxOK | wxCANCEL); + if (dlg.ShowModal() != wxID_OK) + return; + } + + if (use_3mf) { + // Process gcode + const int result = send_gcode(plate_idx, nullptr); + + if (result < 0) { + wxString msg = _L("Abnormal print file data. Please slice again"); + show_error(this, msg, false); + return; + } + + upload_job.upload_data.source_path = p->m_print_job_data._3mf_path; + } + + p->export_gcode(fs::path(), false, std::move(upload_job)); } int Plater::send_gcode(int plate_idx, Export3mfProgressFn proFn) { diff --git a/src/slic3r/GUI/PrintHostDialogs.cpp b/src/slic3r/GUI/PrintHostDialogs.cpp index 14a5866635..86b43f3ee8 100644 --- a/src/slic3r/GUI/PrintHostDialogs.cpp +++ b/src/slic3r/GUI/PrintHostDialogs.cpp @@ -47,11 +47,22 @@ PrintHostSendDialog::PrintHostSendDialog(const fs::path &path, PrintHostPostUplo , post_upload_action(PrintHostPostUploadAction::None) , m_paths(storage_paths) , m_switch_to_device_tab(switch_to_device_tab) + , m_path(path) + , m_post_actions(post_actions) + , m_storage_names(storage_names) { #ifdef __APPLE__ txt_filename->OSXDisableAllSmartSubstitutions(); #endif - const AppConfig *app_config = wxGetApp().app_config; +} +void PrintHostSendDialog::init() +{ + const auto& path = m_path; + const auto& storage_paths = m_paths; + const auto& post_actions = m_post_actions; + const auto& storage_names = m_storage_names; + + const AppConfig* app_config = wxGetApp().app_config; auto *label_dir_hint = new wxStaticText(this, wxID_ANY, _L("Use forward slashes ( / ) as a directory separator if needed.")); label_dir_hint->Wrap(CONTENT_WIDTH * wxGetApp().em_unit()); @@ -614,4 +625,331 @@ bool PrintHostQueueDialog::load_user_data(int udt, std::vector& vector) } return true; } + +ElegooPrintHostSendDialog::ElegooPrintHostSendDialog(const fs::path& path, + PrintHostPostUploadActions post_actions, + const wxArrayString& groups, + const wxArrayString& storage_paths, + const wxArrayString& storage_names, + bool switch_to_device_tab) + : PrintHostSendDialog(path, post_actions, groups, storage_paths, storage_names, switch_to_device_tab) + , m_timeLapse(0) + , m_heatedBedLeveling(0) + , m_BedType(BedType::btPTE) +{} + +void ElegooPrintHostSendDialog::init() { + + auto preset_bundle = wxGetApp().preset_bundle; + auto model_id = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); + + if (!(model_id == "Elegoo-CC" || model_id == "Elegoo-C")) { + PrintHostSendDialog::init(); + return; + } + + const auto& path = m_path; + const auto& storage_paths = m_paths; + const auto& post_actions = m_post_actions; + const auto& storage_names = m_storage_names; + + this->SetMinSize(wxSize(500, 300)); + const AppConfig* app_config = wxGetApp().app_config; + + std::string uploadAndPrint = app_config->get("recent", CONFIG_KEY_UPLOADANDPRINT); + if (!uploadAndPrint.empty()) + post_upload_action = static_cast(std::stoi(uploadAndPrint)); + + std::string timeLapse = app_config->get("recent", CONFIG_KEY_TIMELAPSE); + if (!timeLapse.empty()) + m_timeLapse = std::stoi(timeLapse); + std::string heatedBedLeveling = app_config->get("recent", CONFIG_KEY_HEATEDBEDLEVELING); + if (!heatedBedLeveling.empty()) + m_heatedBedLeveling = std::stoi(heatedBedLeveling); + std::string bedType = app_config->get("recent", CONFIG_KEY_BEDTYPE); + if (!bedType.empty()) + m_BedType = static_cast(std::stoi(bedType)); + + auto* label_dir_hint = new wxStaticText(this, wxID_ANY, _L("Use forward slashes ( / ) as a directory separator if needed.")); + label_dir_hint->Wrap(CONTENT_WIDTH * wxGetApp().em_unit()); + + wxSizerFlags flags = wxSizerFlags().Border(wxRIGHT, 16).Expand(); + + content_sizer->Add(txt_filename, flags); + content_sizer->AddSpacer(4); + content_sizer->Add(label_dir_hint); + content_sizer->AddSpacer(VERT_SPACING); + + if (combo_groups != nullptr) { + // Repetier specific: Show a selection of file groups. + auto* label_group = new wxStaticText(this, wxID_ANY, _L("Group")); + content_sizer->Add(label_group); + content_sizer->Add(combo_groups, 0, wxBOTTOM, 2 * VERT_SPACING); + wxString recent_group = from_u8(app_config->get("recent", CONFIG_KEY_GROUP)); + if (!recent_group.empty()) + combo_groups->SetValue(recent_group); + } + + if (combo_storage != nullptr) { + // PrusaLink specific: User needs to choose a storage + auto* label_group = new wxStaticText(this, wxID_ANY, _L("Upload to storage") + ":"); + content_sizer->Add(label_group); + content_sizer->Add(combo_storage, 0, wxBOTTOM, 2 * VERT_SPACING); + combo_storage->SetValue(storage_names.front()); + wxString recent_storage = from_u8(app_config->get("recent", CONFIG_KEY_STORAGE)); + if (!recent_storage.empty()) + combo_storage->SetValue(recent_storage); + } else if (storage_names.GetCount() == 1) { + // PrusaLink specific: Show which storage has been detected. + auto* label_group = new wxStaticText(this, wxID_ANY, _L("Upload to storage") + ": " + storage_names.front()); + content_sizer->Add(label_group); + m_preselected_storage = m_paths.front(); + } + + wxString recent_path = from_u8(app_config->get("recent", CONFIG_KEY_PATH)); + if (recent_path.Length() > 0 && recent_path[recent_path.Length() - 1] != '/') { + recent_path += '/'; + } + const auto recent_path_len = recent_path.Length(); + recent_path += path.filename().wstring(); + wxString stem(path.stem().wstring()); + const auto stem_len = stem.Length(); + + txt_filename->SetValue(recent_path); + + { + auto checkbox_sizer = new wxBoxSizer(wxHORIZONTAL); + auto checkbox = new ::CheckBox(this, wxID_APPLY); + checkbox->SetValue(m_switch_to_device_tab); + checkbox->Bind(wxEVT_TOGGLEBUTTON, [this](wxCommandEvent& e) { + m_switch_to_device_tab = e.IsChecked(); + e.Skip(); + }); + checkbox_sizer->Add(checkbox, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + + auto checkbox_text = new wxStaticText(this, wxID_ANY, _L("Switch to Device tab after upload."), wxDefaultPosition, wxDefaultSize, 0); + checkbox_sizer->Add(checkbox_text, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + checkbox_text->SetFont(::Label::Body_13); + checkbox_text->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#323A3D"))); + content_sizer->Add(checkbox_sizer); + content_sizer->AddSpacer(VERT_SPACING); + } + warning_text = new wxStaticText(this, wxID_ANY, + _L("The selected bed type does not match the file. Please confirm before starting the print."), + wxDefaultPosition, wxDefaultSize, 0); + uploadandprint_sizer = new wxBoxSizer(wxVERTICAL); + { + auto checkbox_sizer = new wxBoxSizer(wxHORIZONTAL); + auto checkbox = new ::CheckBox(this); + checkbox->SetValue(post_upload_action == PrintHostPostUploadAction::StartPrint); + checkbox->Bind(wxEVT_TOGGLEBUTTON, [this](wxCommandEvent& e) { + if (e.IsChecked()) { + post_upload_action = PrintHostPostUploadAction::StartPrint; + } else { + post_upload_action = PrintHostPostUploadAction::None; + } + refresh(); + e.Skip(); + }); + checkbox_sizer->Add(checkbox, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + + auto checkbox_text = new wxStaticText(this, wxID_ANY, _L("Upload and Print"), wxDefaultPosition, wxDefaultSize, 0); + checkbox_sizer->Add(checkbox_text, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + checkbox_text->SetFont(::Label::Body_13); + checkbox_text->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#323A3D"))); + content_sizer->Add(checkbox_sizer); + content_sizer->AddSpacer(VERT_SPACING); + } + + { + auto checkbox_sizer = new wxBoxSizer(wxHORIZONTAL); + auto checkbox = new ::CheckBox(this); + checkbox->SetValue(m_timeLapse == 1); + checkbox->Bind(wxEVT_TOGGLEBUTTON, [this](wxCommandEvent& e) { + m_timeLapse = e.IsChecked() ? 1 : 0; + e.Skip(); + }); + checkbox_sizer->AddSpacer(16); + checkbox_sizer->Add(checkbox, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + + auto checkbox_text = new wxStaticText(this, wxID_ANY, _L("Time-lapse"), wxDefaultPosition, wxDefaultSize, 0); + checkbox_sizer->Add(checkbox_text, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + checkbox_text->SetFont(::Label::Body_13); + checkbox_text->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#323A3D"))); + uploadandprint_sizer->Add(checkbox_sizer); + uploadandprint_sizer->AddSpacer(VERT_SPACING); + } + + { + auto checkbox_sizer = new wxBoxSizer(wxHORIZONTAL); + auto checkbox = new ::CheckBox(this); + checkbox->SetValue(m_heatedBedLeveling == 1); + checkbox->Bind(wxEVT_TOGGLEBUTTON, [this](wxCommandEvent& e) { + m_heatedBedLeveling = e.IsChecked() ? 1 : 0; + e.Skip(); + }); + checkbox_sizer->AddSpacer(16); + checkbox_sizer->Add(checkbox, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + + auto checkbox_text = new wxStaticText(this, wxID_ANY, _L("Heated Bed Leveling"), wxDefaultPosition, wxDefaultSize, 0); + checkbox_sizer->Add(checkbox_text, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + checkbox_text->SetFont(::Label::Body_13); + checkbox_text->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#323A3D"))); + uploadandprint_sizer->Add(checkbox_sizer); + uploadandprint_sizer->AddSpacer(VERT_SPACING); + } + + { + auto radioBoxA = new ::RadioBox(this); + auto radioBoxB = new ::RadioBox(this); + if (m_BedType == BedType::btPC) + radioBoxB->SetValue(true); + else + radioBoxA->SetValue(true); + + radioBoxA->Bind(wxEVT_LEFT_DOWN, [this, radioBoxA, radioBoxB](wxMouseEvent& e) { + radioBoxA->SetValue(true); + radioBoxB->SetValue(false); + m_BedType = BedType::btPTE; + refresh(); + }); + radioBoxB->Bind(wxEVT_LEFT_DOWN, [this, radioBoxA, radioBoxB](wxMouseEvent& e) { + radioBoxA->SetValue(false); + radioBoxB->SetValue(true); + m_BedType = BedType::btPC; + refresh(); + }); + + { + auto radio_sizer = new wxBoxSizer(wxHORIZONTAL); + radio_sizer->AddSpacer(16); + radio_sizer->Add(radioBoxA, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + + auto checkbox_text = new wxStaticText(this, wxID_ANY, _L("Textured Build Plate (Side A)"), wxDefaultPosition, wxDefaultSize, 0); + radio_sizer->Add(checkbox_text, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + checkbox_text->SetFont(::Label::Body_13); + checkbox_text->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#323A3D"))); + uploadandprint_sizer->Add(radio_sizer); + uploadandprint_sizer->AddSpacer(VERT_SPACING); + } + { + auto radio_sizer = new wxBoxSizer(wxHORIZONTAL); + radio_sizer->AddSpacer(16); + radio_sizer->Add(radioBoxB, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + + auto checkbox_text = new wxStaticText(this, wxID_ANY, _L("Smooth Build Plate (Side B)"), wxDefaultPosition, wxDefaultSize, 0); + radio_sizer->Add(checkbox_text, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + checkbox_text->SetFont(::Label::Body_13); + checkbox_text->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#323A3D"))); + uploadandprint_sizer->Add(radio_sizer); + uploadandprint_sizer->AddSpacer(VERT_SPACING); + } + } + { + auto h_sizer = new wxBoxSizer(wxHORIZONTAL); + warning_text->SetFont(::Label::Body_13); + warning_text->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#FF1001"))); + // wrapping the text + warning_text->Wrap(350); + h_sizer->AddSpacer(16); + h_sizer->Add(warning_text); + + uploadandprint_sizer->Add(h_sizer); + uploadandprint_sizer->AddSpacer(VERT_SPACING); + } + + content_sizer->Add(uploadandprint_sizer); + uploadandprint_sizer->Show(post_upload_action == PrintHostPostUploadAction::StartPrint); + warning_text->Show(post_upload_action == PrintHostPostUploadAction::StartPrint && appBedType() != m_BedType); + + uploadandprint_sizer->Layout(); + + if (size_t extension_start = recent_path.find_last_of('.'); extension_start != std::string::npos) + m_valid_suffix = recent_path.substr(extension_start); + // .gcode suffix control + auto validate_path = [this](const wxString& path) -> bool { + if (!path.Lower().EndsWith(m_valid_suffix.Lower())) { + MessageDialog msg_wingow(this, + wxString::Format(_L("Upload filename doesn't end with \"%s\". Do you wish to continue?"), + m_valid_suffix), + wxString(SLIC3R_APP_NAME), wxYES | wxNO); + if (msg_wingow.ShowModal() == wxID_NO) + return false; + } + return true; + }; + + auto* btn_ok = add_button(wxID_OK, true, _L("Upload")); + btn_ok->Bind(wxEVT_BUTTON, [this, validate_path](wxCommandEvent&) { + if (validate_path(txt_filename->GetValue())) { + // post_upload_action = PrintHostPostUploadAction::None; + EndDialog(wxID_OK); + } + }); + txt_filename->SetFocus(); + + add_button(wxID_CANCEL, false, _L("Cancel")); + finalize(); + +#ifdef __linux__ + // On Linux with GTK2 when text control lose the focus then selection (colored background) disappears but text color stay white + // and as a result the text is invisible with light mode + // see https://github.com/prusa3d/PrusaSlicer/issues/4532 + // Workaround: Unselect text selection explicitly on kill focus + txt_filename->Bind( + wxEVT_KILL_FOCUS, + [this](wxEvent& e) { + e.Skip(); + txt_filename->SetInsertionPoint(txt_filename->GetLastPosition()); + }, + txt_filename->GetId()); +#endif /* __linux__ */ + + Bind(wxEVT_SHOW, [=](const wxShowEvent&) { + // Another similar case where the function only works with EVT_SHOW + CallAfter, + // this time on Mac. + CallAfter([=]() { + txt_filename->SetInsertionPoint(0); + txt_filename->SetSelection(recent_path_len, recent_path_len + stem_len); + }); + }); +} + +void ElegooPrintHostSendDialog::EndModal(int ret) +{ + if (ret == wxID_OK) { + + AppConfig* app_config = wxGetApp().app_config; + app_config->set("recent", CONFIG_KEY_UPLOADANDPRINT, std::to_string(static_cast(post_upload_action))); + app_config->set("recent", CONFIG_KEY_TIMELAPSE, std::to_string(m_timeLapse)); + app_config->set("recent", CONFIG_KEY_HEATEDBEDLEVELING, std::to_string(m_heatedBedLeveling)); + app_config->set("recent", CONFIG_KEY_BEDTYPE, std::to_string(static_cast(m_BedType))); + } + + PrintHostSendDialog::EndModal(ret); +} + +BedType ElegooPrintHostSendDialog::appBedType() const +{ + std::string str_bed_type = wxGetApp().app_config->get("curr_bed_type"); + int bed_type_value = atoi(str_bed_type.c_str()); + return static_cast(bed_type_value); +} + +void ElegooPrintHostSendDialog::refresh() +{ + if (uploadandprint_sizer) { + if (post_upload_action == PrintHostPostUploadAction::StartPrint) { + uploadandprint_sizer->Show(true); + } else { + uploadandprint_sizer->Show(false); + } + } + if (warning_text) { + warning_text->Show(post_upload_action == PrintHostPostUploadAction::StartPrint && appBedType() != m_BedType); + } + this->Layout(); + this->Fit(); +} + }} diff --git a/src/slic3r/GUI/PrintHostDialogs.hpp b/src/slic3r/GUI/PrintHostDialogs.hpp index 8befa21d98..e648537ccb 100644 --- a/src/slic3r/GUI/PrintHostDialogs.hpp +++ b/src/slic3r/GUI/PrintHostDialogs.hpp @@ -12,7 +12,7 @@ #include "GUI_Utils.hpp" #include "MsgDialog.hpp" #include "../Utils/PrintHost.hpp" - +#include "libslic3r/PrintConfig.hpp" class wxButton; class wxTextCtrl; class wxChoice; @@ -27,6 +27,7 @@ class PrintHostSendDialog : public GUI::MsgDialog { public: PrintHostSendDialog(const boost::filesystem::path &path, PrintHostPostUploadActions post_actions, const wxArrayString& groups, const wxArrayString& storage_paths, const wxArrayString& storage_names, bool switch_to_device_tab); + virtual ~PrintHostSendDialog() {} boost::filesystem::path filename() const; PrintHostPostUploadAction post_action() const; std::string group() const; @@ -34,7 +35,10 @@ public: bool switch_to_device_tab() const {return m_switch_to_device_tab;} virtual void EndModal(int ret) override; -private: + virtual void init(); + virtual std::map extendedInfo() const { return {}; } + +protected: wxTextCtrl *txt_filename; wxComboBox *combo_groups; wxComboBox* combo_storage; @@ -43,6 +47,10 @@ private: wxString m_preselected_storage; wxArrayString m_paths; bool m_switch_to_device_tab; + + boost::filesystem::path m_path; + PrintHostPostUploadActions m_post_actions; + wxArrayString m_storage_names; }; @@ -131,6 +139,47 @@ private: bool load_user_data(int, std::vector&); }; +class ElegooPrintHostSendDialog : public PrintHostSendDialog +{ +public: + ElegooPrintHostSendDialog(const boost::filesystem::path& path, + PrintHostPostUploadActions post_actions, + const wxArrayString& groups, + const wxArrayString& storage_paths, + const wxArrayString& storage_names, + bool switch_to_device_tab); + + virtual void EndModal(int ret) override; + int timeLapse() const { return m_timeLapse; } + int heatedBedLeveling() const { return m_heatedBedLeveling; } + BedType bedType() const { return m_BedType; } + + virtual void init() override; + virtual std::map extendedInfo() const + { + return {{"bedType", std::to_string(static_cast(m_BedType))}, + {"timeLapse", std::to_string(m_timeLapse)}, + {"heatedBedLeveling", std::to_string(m_heatedBedLeveling)}}; + } + +private: + BedType appBedType() const; + void refresh(); + + const char* CONFIG_KEY_UPLOADANDPRINT = "elegoolink_upload_and_print"; + const char* CONFIG_KEY_TIMELAPSE = "elegoolink_timelapse"; + const char* CONFIG_KEY_HEATEDBEDLEVELING = "elegoolink_heated_bed_leveling"; + const char* CONFIG_KEY_BEDTYPE = "elegoolink_bed_type"; + +private: + wxStaticText* warning_text{nullptr}; + wxBoxSizer* uploadandprint_sizer{nullptr}; + + int m_timeLapse; + int m_heatedBedLeveling; + BedType m_BedType; +}; + wxDECLARE_EVENT(EVT_PRINTHOST_PROGRESS, PrintHostQueueDialog::Event); wxDECLARE_EVENT(EVT_PRINTHOST_ERROR, PrintHostQueueDialog::Event); wxDECLARE_EVENT(EVT_PRINTHOST_CANCEL, PrintHostQueueDialog::Event); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index a5fdd2b1cc..3e710bed79 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3636,13 +3636,29 @@ void TabFilament::toggle_options() { bool pa = m_config->opt_bool("enable_pressure_advance", 0); toggle_option("pressure_advance", pa); - // Orca: Enable the plates that should be visible when multi bed support is enabled or a BBL printer is selected - auto support_multi_bed_types = is_BBL_printer || cfg.opt_bool("support_multi_bed_types"); - toggle_line("supertack_plate_temp_initial_layer", support_multi_bed_types ); - toggle_line("cool_plate_temp_initial_layer", support_multi_bed_types ); - toggle_line("textured_cool_plate_temp_initial_layer", support_multi_bed_types); - toggle_line("eng_plate_temp_initial_layer", support_multi_bed_types); - toggle_line("textured_plate_temp_initial_layer", support_multi_bed_types); + + //Orca: Enable the plates that should be visible when multi bed support is enabled or a BBL printer is selected; otherwise, enable only the plate visible for the selected bed type. + DynamicConfig& proj_cfg = m_preset_bundle->project_config; + std::string bed_temp_1st_layer_key = ""; + if (proj_cfg.has("curr_bed_type")) + { + bed_temp_1st_layer_key = get_bed_temp_1st_layer_key(proj_cfg.opt_enum("curr_bed_type")); + } + + const std::vector bed_temp_keys = {"supertack_plate_temp_initial_layer", "cool_plate_temp_initial_layer", + "textured_cool_plate_temp_initial_layer", "eng_plate_temp_initial_layer", + "textured_plate_temp_initial_layer", "hot_plate_temp_initial_layer"}; + + bool support_multi_bed_types = std::find(bed_temp_keys.begin(), bed_temp_keys.end(), bed_temp_1st_layer_key) == + bed_temp_keys.end() || + is_BBL_printer || cfg.opt_bool("support_multi_bed_types"); + + for (const auto& key : bed_temp_keys) + { + toggle_line(key, support_multi_bed_types || bed_temp_1st_layer_key == key); + } + + // Orca: adaptive pressure advance and calibration model // If PA is not enabled, disable adaptive pressure advance and hide the model section diff --git a/src/slic3r/Utils/ElegooLink.cpp b/src/slic3r/Utils/ElegooLink.cpp new file mode 100644 index 0000000000..ecc30059bb --- /dev/null +++ b/src/slic3r/Utils/ElegooLink.cpp @@ -0,0 +1,863 @@ +#include "ElegooLink.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include "slic3r/GUI/GUI.hpp" +#include "slic3r/GUI/I18N.hpp" +#include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/format.hpp" +#include "Http.hpp" +#include "libslic3r/AppConfig.hpp" +#include "Bonjour.hpp" +#include "slic3r/GUI/BonjourDialog.hpp" + +namespace fs = boost::filesystem; +namespace pt = boost::property_tree; +#define MAX_UPLOAD_PACKAGE_LENGTH 1048576 //(1024*1024) + +namespace Slic3r { + + enum ElegooLinkCommand { + //get status + ELEGOO_GET_STATUS = 0, + //get properties + ELEGOO_GET_PROPERTIES = 1, + //start print + ELEGOO_START_PRINT = 128, + }; + + typedef enum + { + SDCP_PRINT_CTRL_ACK_OK = 0, // OK + SDCP_PRINT_CTRL_ACK_BUSY = 1 , // 设备忙 device is busy + SDCP_PRINT_CTRL_ACK_NOT_FOUND = 2, // 未找到目标文件 file not found + SDCP_PRINT_CTRL_ACK_MD5_FAILED = 3, // MD5校验失败 MD5 check failed + SDCP_PRINT_CTRL_ACK_FILEIO_FAILED = 4, // 文件读取失败 file I/O error + SDCP_PRINT_CTRL_ACK_INVLAID_RESOLUTION = 5, // 文件分辨率不匹配 file resolution is invalid + SDCP_PRINT_CTRL_ACK_UNKNOW_FORMAT = 6, // 无法识别的文件格式 file format is invalid + SDCP_PRINT_CTRL_ACK_UNKNOW_MODEL = 7, // 文件机型不匹配 file model is invalid + } ElegooLinkStartPrintAck; + + + namespace { + + std::string get_host_from_url(const std::string& url_in) + { + std::string url = url_in; + // add http:// if there is no scheme + size_t double_slash = url.find("//"); + if (double_slash == std::string::npos) + url = "http://" + url; + std::string out = url; + CURLU* hurl = curl_url(); + if (hurl) { + // Parse the input URL. + CURLUcode rc = curl_url_set(hurl, CURLUPART_URL, url.c_str(), 0); + if (rc == CURLUE_OK) { + // Replace the address. + char* host; + rc = curl_url_get(hurl, CURLUPART_HOST, &host, 0); + if (rc == CURLUE_OK) { + char* port; + rc = curl_url_get(hurl, CURLUPART_PORT, &port, 0); + if (rc == CURLUE_OK && port != nullptr) { + out = std::string(host) + ":" + port; + curl_free(port); + } else { + out = host; + curl_free(host); + } + } + else + BOOST_LOG_TRIVIAL(error) << "ElegooLink get_host_from_url: failed to get host form URL " << url; + } + else + BOOST_LOG_TRIVIAL(error) << "ElegooLink get_host_from_url: failed to parse URL " << url; + curl_url_cleanup(hurl); + } + else + BOOST_LOG_TRIVIAL(error) << "ElegooLink get_host_from_url: failed to allocate curl_url"; + return out; + } + + std::string get_host_from_url_no_port(const std::string& url_in) + { + std::string url = url_in; + // add http:// if there is no scheme + size_t double_slash = url.find("//"); + if (double_slash == std::string::npos) + url = "http://" + url; + std::string out = url; + CURLU* hurl = curl_url(); + if (hurl) { + // Parse the input URL. + CURLUcode rc = curl_url_set(hurl, CURLUPART_URL, url.c_str(), 0); + if (rc == CURLUE_OK) { + // Replace the address. + char* host; + rc = curl_url_get(hurl, CURLUPART_HOST, &host, 0); + if (rc == CURLUE_OK) { + out = host; + curl_free(host); + } + else + BOOST_LOG_TRIVIAL(error) << "ElegooLink get_host_from_url: failed to get host form URL " << url; + } + else + BOOST_LOG_TRIVIAL(error) << "ElegooLink get_host_from_url: failed to parse URL " << url; + curl_url_cleanup(hurl); + } + else + BOOST_LOG_TRIVIAL(error) << "ElegooLink get_host_from_url: failed to allocate curl_url"; + return out; + } + + #ifdef WIN32 + // Workaround for Windows 10/11 mDNS resolve issue, where two mDNS resolves in succession fail. + std::string substitute_host(const std::string& orig_addr, std::string sub_addr) + { + // put ipv6 into [] brackets + if (sub_addr.find(':') != std::string::npos && sub_addr.at(0) != '[') + sub_addr = "[" + sub_addr + "]"; + + #if 0 + //URI = scheme ":"["//"[userinfo "@"] host [":" port]] path["?" query]["#" fragment] + std::string final_addr = orig_addr; + // http + size_t double_dash = orig_addr.find("//"); + size_t host_start = (double_dash == std::string::npos ? 0 : double_dash + 2); + // userinfo + size_t at = orig_addr.find("@"); + host_start = (at != std::string::npos && at > host_start ? at + 1 : host_start); + // end of host, could be port(:), subpath(/) (could be query(?) or fragment(#)?) + // or it will be ']' if address is ipv6 ) + size_t potencial_host_end = orig_addr.find_first_of(":/", host_start); + // if there are more ':' it must be ipv6 + if (potencial_host_end != std::string::npos && orig_addr[potencial_host_end] == ':' && orig_addr.rfind(':') != potencial_host_end) { + size_t ipv6_end = orig_addr.find(']', host_start); + // DK: Uncomment and replace orig_addr.length() if we want to allow subpath after ipv6 without [] parentheses. + potencial_host_end = (ipv6_end != std::string::npos ? ipv6_end + 1 : orig_addr.length()); //orig_addr.find('/', host_start)); + } + size_t host_end = (potencial_host_end != std::string::npos ? potencial_host_end : orig_addr.length()); + // now host_start and host_end should mark where to put resolved addr + // check host_start. if its nonsense, lets just use original addr (or resolved addr?) + if (host_start >= orig_addr.length()) { + return final_addr; + } + final_addr.replace(host_start, host_end - host_start, sub_addr); + return final_addr; + #else + // Using the new CURL API for handling URL. https://everything.curl.dev/libcurl/url + // If anything fails, return the input unchanged. + std::string out = orig_addr; + CURLU *hurl = curl_url(); + if (hurl) { + // Parse the input URL. + CURLUcode rc = curl_url_set(hurl, CURLUPART_URL, orig_addr.c_str(), 0); + if (rc == CURLUE_OK) { + // Replace the address. + rc = curl_url_set(hurl, CURLUPART_HOST, sub_addr.c_str(), 0); + if (rc == CURLUE_OK) { + // Extract a string fromt the CURL URL handle. + char *url; + rc = curl_url_get(hurl, CURLUPART_URL, &url, 0); + if (rc == CURLUE_OK) { + out = url; + curl_free(url); + } else + BOOST_LOG_TRIVIAL(error) << "ElegooLink substitute_host: failed to extract the URL after substitution"; + } else + BOOST_LOG_TRIVIAL(error) << "ElegooLink substitute_host: failed to substitute host " << sub_addr << " in URL " << orig_addr; + } else + BOOST_LOG_TRIVIAL(error) << "ElegooLink substitute_host: failed to parse URL " << orig_addr; + curl_url_cleanup(hurl); + } else + BOOST_LOG_TRIVIAL(error) << "ElegooLink substitute_host: failed to allocate curl_url"; + return out; + #endif + } + #endif // WIN32 + std::string escape_string(const std::string& unescaped) + { + std::string ret_val; + CURL* curl = curl_easy_init(); + if (curl) { + char* decoded = curl_easy_escape(curl, unescaped.c_str(), unescaped.size()); + if (decoded) { + ret_val = std::string(decoded); + curl_free(decoded); + } + curl_easy_cleanup(curl); + } + return ret_val; + } + std::string escape_path_by_element(const boost::filesystem::path& path) + { + std::string ret_val = escape_string(path.filename().string()); + boost::filesystem::path parent(path.parent_path()); + while (!parent.empty() && parent.string() != "/") // "/" check is for case "/file.gcode" was inserted. Then boost takes "/" as parent_path. + { + ret_val = escape_string(parent.filename().string()) + "/" + ret_val; + parent = parent.parent_path(); + } + return ret_val; + } + + } //namespace + + + ElegooLink::ElegooLink(DynamicPrintConfig *config): + OctoPrint(config) { + + } + + const char* ElegooLink::get_name() const { return "ElegooLink"; } + + bool ElegooLink::elegoo_test(wxString& msg) const{ + + const char *name = get_name(); + bool res = true; + auto url = make_url(""); + // Here we do not have to add custom "Host" header - the url contains host filled by user and libCurl will set the header by itself. + auto http = Http::get(std::move(url)); + set_auth(http); + http.on_error([&](std::string body, std::string error, unsigned status) { + BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Error getting version: %2%, HTTP %3%, body: `%4%`") % name % error % status % body; + res = false; + msg = format_error(body, error, status); + }) + .on_complete([&, this](std::string body, unsigned) { + BOOST_LOG_TRIVIAL(debug) << boost::format("%1%: Got version: %2%") % name % body; + // Check if the response contains "ELEGOO" in any case. + // This is a simple check to see if the response is from an ElegooLink server. + std::regex re("ELEGOO", std::regex::icase); + std::smatch match; + if (std::regex_search(body, match, re)) { + res = true; + } else { + msg = format_error(body, "ElegooLink not detected", 0); + res = false; + } + }) +#ifdef WIN32 + .ssl_revoke_best_effort(m_ssl_revoke_best_effort) + .on_ip_resolve([&](std::string address) { + // Workaround for Windows 10/11 mDNS resolve issue, where two mDNS resolves in succession fail. + // Remember resolved address to be reused at successive REST API call. + msg = GUI::from_u8(address); + }) +#endif // WIN32 + .perform_sync(); + return res; + } + bool ElegooLink::test(wxString &curl_msg) const{ + if(OctoPrint::test(curl_msg)){ + return true; + } + curl_msg=""; + return elegoo_test(curl_msg); + } + +#ifdef WIN32 + bool ElegooLink::elegoo_test_with_resolved_ip(wxString& msg) const + { + // Since the request is performed synchronously here, + // it is ok to refer to `msg` from within the closure + const char* name = get_name(); + bool res = true; + // Msg contains ip string. + auto url = substitute_host(make_url(""), GUI::into_u8(msg)); + msg.Clear(); + std::string host = get_host_from_url(m_host); + auto http = Http::get(url); // std::move(url)); + // "Host" header is necessary here. We have resolved IP address and subsituted it into "url" variable. + // And when creating Http object above, libcurl automatically includes "Host" header from address it got. + // Thus "Host" is set to the resolved IP instead of host filled by user. We need to change it back. + // Not changing the host would work on the most cases (where there is 1 service on 1 hostname) but would break when f.e. reverse + // proxy is used (issue #9734). Also when allow_ip_resolve = 0, this is not needed, but it should not break anything if it stays. + // https://www.rfc-editor.org/rfc/rfc7230#section-5.4 + http.header("Host", host); + set_auth(http); + http.on_error([&](std::string body, std::string error, unsigned status) { + BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Error getting version at %2% : %3%, HTTP %4%, body: `%5%`") % name % url % + error % status % body; + res = false; + msg = format_error(body, error, status); + }) + .on_complete([&, this](std::string body, unsigned) { + // Check if the response contains "ELEGOO" in any case. + // This is a simple check to see if the response is from an ElegooLink server. + std::regex re("ELEGOO", std::regex::icase); + std::smatch match; + if (std::regex_search(body, match, re)) { + res = true; + } else { + msg = format_error(body, "ElegooLink not detected", 0); + res = false; + } + }) + .ssl_revoke_best_effort(m_ssl_revoke_best_effort) + .perform_sync(); + + return res; + } + bool ElegooLink::test_with_resolved_ip(wxString& msg) const + { + // Elegoo supports both otcoprint and Elegoo link + if (OctoPrint::test_with_resolved_ip(msg)) { + return true; + } + msg = ""; + return elegoo_test_with_resolved_ip(msg); + } +#endif // WIN32 + + + wxString ElegooLink::get_test_ok_msg() const + { + return _L("Connection to ElegooLink works correctly."); + } + + wxString ElegooLink::get_test_failed_msg(wxString& msg) const + { + return GUI::format_wxstr("%s: %s", _L("Could not connect to ElegooLink"), msg); + } + + #ifdef WIN32 + bool ElegooLink::upload_inner_with_resolved_ip(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn, InfoFn info_fn, const boost::asio::ip::address& resolved_addr) const + { + wxString test_msg_or_host_ip = ""; + + info_fn(L"resolve", boost::nowide::widen(resolved_addr.to_string())); + // If test fails, test_msg_or_host_ip contains the error message. + // Otherwise on Windows it contains the resolved IP address of the host. + // Test_msg already contains resolved ip and will be cleared on start of test(). + test_msg_or_host_ip = GUI::from_u8(resolved_addr.to_string()); + //Elegoo supports both otcoprint and Elegoo link + if(OctoPrint::test_with_resolved_ip(test_msg_or_host_ip)){ + return OctoPrint::upload_inner_with_host(upload_data, prorgess_fn, error_fn, info_fn); + } + + test_msg_or_host_ip = GUI::from_u8(resolved_addr.to_string()); + if(!elegoo_test_with_resolved_ip(test_msg_or_host_ip)){ + error_fn(std::move(test_msg_or_host_ip)); + return false; + } + + + std::string url = substitute_host(make_url("uploadFile/upload"), resolved_addr.to_string()); + info_fn(L"resolve", boost::nowide::widen(url)); + + bool res = loopUpload(url, upload_data, prorgess_fn, error_fn, info_fn); + return res; + } + #endif //WIN32 + + bool ElegooLink::upload_inner_with_host(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn, InfoFn info_fn) const + { + // If test fails, test_msg_or_host_ip contains the error message. + // Otherwise on Windows it contains the resolved IP address of the host. + wxString test_msg_or_host_ip; + //Elegoo supports both otcoprint and Elegoo link + if(OctoPrint::test(test_msg_or_host_ip)){ + return OctoPrint::upload_inner_with_host(upload_data, prorgess_fn, error_fn, info_fn); + } + test_msg_or_host_ip=""; + if(!elegoo_test(test_msg_or_host_ip)){ + error_fn(std::move(test_msg_or_host_ip)); + return false; + } + + std::string url; + #ifdef WIN32 + // Workaround for Windows 10/11 mDNS resolve issue, where two mDNS resolves in succession fail. + if (m_host.find("https://") == 0 || test_msg_or_host_ip.empty() || !GUI::get_app_config()->get_bool("allow_ip_resolve")) + #endif // _WIN32 + { + // If https is entered we assume signed ceritificate is being used + // IP resolving will not happen - it could resolve into address not being specified in cert + url = make_url("uploadFile/upload"); + } + #ifdef WIN32 + else { + // Workaround for Windows 10/11 mDNS resolve issue, where two mDNS resolves in succession fail. + // Curl uses easy_getinfo to get ip address of last successful transaction. + // If it got the address use it instead of the stored in "host" variable. + // This new address returns in "test_msg_or_host_ip" variable. + // Solves troubles of uploades failing with name address. + // in original address (m_host) replace host for resolved ip + info_fn(L"resolve", test_msg_or_host_ip); + url = substitute_host(make_url("uploadFile/upload"), GUI::into_u8(test_msg_or_host_ip)); + BOOST_LOG_TRIVIAL(info) << "Upload address after ip resolve: " << url; + } + #endif // _WIN32 + + bool res = loopUpload(url, upload_data, prorgess_fn, error_fn, info_fn); + return res; + } + + bool ElegooLink::validate_version_text(const boost::optional &version_text) const + { + return true; + } + bool ElegooLink::uploadPart(Http &http,std::string md5,std::string uuid,std::string path, + std::string filename,size_t filesize,size_t offset,size_t length, + ProgressFn prorgess_fn,ErrorFn error_fn,InfoFn info_fn)const + { + const char* name = get_name(); + bool result = false; + http.form_clear(); + http.form_add("Check", "1") + .form_add("S-File-MD5", md5) + .form_add("Offset", std::to_string(offset)) + .form_add("Uuid", uuid) + .form_add("TotalSize", std::to_string(filesize)) + .form_add_file("File", path, filename, offset, length) + .on_complete([&](std::string body, unsigned status) { + BOOST_LOG_TRIVIAL(debug) << boost::format("%1%: File uploaded: HTTP %2%: %3%") % name % status % body; + if (status == 200) { + try { + pt::ptree root; + std::istringstream is(body); + pt::read_json(is, root); + std::string code = root.get("code"); + if (code == "000000") { + // info_fn(L"complete", wxString()); + result = true; + } else { + // get error messages + pt::ptree messages = root.get_child("messages"); + std::string error_message = "ErrorCode : " + code + "\n"; + for (pt::ptree::value_type& message : messages) { + std::string field = message.second.get("field"); + std::string msg = message.second.get("message"); + error_message += field + ":" + msg + "\n"; + } + error_fn(wxString::FromUTF8(error_message)); + } + } catch (...) { + BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Error parsing response: %2%") % name % body; + error_fn(wxString::FromUTF8("Error parsing response")); + } + } else { + error_fn(format_error(body, "upload failed", status)); + } + }) + .on_error([&](std::string body, std::string error, unsigned status) { + BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Error uploading file: %2%, HTTP %3%, body: `%4%`") % name % error % status % + body; + error_fn(format_error(body, error, status)); + }) + .on_progress([&](Http::Progress progress, bool& cancel) { + // If upload is finished, do not call progress_fn + // on_complete will be called after some time, so we do not need to call it here + // Because some devices will call on_complete after the upload progress reaches 100%, + // so we need to process it here, based on on_complete + if (progress.ultotal == progress.ulnow) { + // Upload is finished + return; + } + prorgess_fn(std::move(progress), cancel); + if (cancel) { + // Upload was canceled + BOOST_LOG_TRIVIAL(info) << name << ": Upload canceled"; + } + }) +#ifdef WIN32 + .ssl_revoke_best_effort(m_ssl_revoke_best_effort) +#endif + .perform_sync(); + return result; + } + + bool ElegooLink::loopUpload(std::string url, PrintHostUpload upload_data, ProgressFn progress_fn, ErrorFn error_fn, InfoFn info_fn) const + { + const char* name = get_name(); + const auto upload_filename = upload_data.upload_path.filename().string(); + std::string source_path = upload_data.source_path.string(); + + // calc file size + std::ifstream file(source_path, std::ios::binary | std::ios::ate); + std::streamsize size = file.tellg(); + file.close(); + const std::string fileSize = std::to_string(size); + + // generate uuid + boost::uuids::random_generator generator; + boost::uuids::uuid uuid = generator(); + std::string uuid_string = to_string(uuid); + + std::string md5; + bbl_calc_md5(source_path, md5); + + auto http = Http::post(url); +#ifdef WIN32 + // "Host" header is necessary here. In the workaround above (two mDNS..) we have got IP address from test connection and subsituted + // it into "url" variable. And when creating Http object above, libcurl automatically includes "Host" header from address it got. + // Thus "Host" is set to the resolved IP instead of host filled by user. We need to change it back. Not changing the host would work + // on the most cases (where there is 1 service on 1 hostname) but would break when f.e. reverse proxy is used (issue #9734). Also + // when allow_ip_resolve = 0, this is not needed, but it should not break anything if it stays. + // https://www.rfc-editor.org/rfc/rfc7230#section-5.4 + std::string host = get_host_from_url(m_host); + http.header("Host", host); + http.header("Accept", "application/json, text/plain, */*"); +#endif // _WIN32 + set_auth(http); + + bool res = false; + const int packageCount = (size + MAX_UPLOAD_PACKAGE_LENGTH - 1) / MAX_UPLOAD_PACKAGE_LENGTH; + + for (size_t i = 0; i < packageCount; i++) { + BOOST_LOG_TRIVIAL(info) << boost::format("%1%: Uploading file %2%/%3%") % name % (i + 1) % packageCount; + const size_t offset = MAX_UPLOAD_PACKAGE_LENGTH * i; + size_t length = MAX_UPLOAD_PACKAGE_LENGTH; + // if it is the last package, the length is the remainder of the file size divided by MAX_UPLOAD_PACKAGE_LENGTH + if ((i == packageCount - 1) && (size % MAX_UPLOAD_PACKAGE_LENGTH > 0)) { + length = size % MAX_UPLOAD_PACKAGE_LENGTH; + } + res = uploadPart( + http, md5, uuid_string, source_path, upload_filename, size, offset, length, + [size, i, progress_fn](Http::Progress progress, bool& cancel) { + Http::Progress p(0, 0, size, i * MAX_UPLOAD_PACKAGE_LENGTH + progress.ulnow, progress.buffer); + progress_fn(p, cancel); + }, + error_fn, info_fn); + if (!res) { + break; + } + } + + if (res) { + if (upload_data.post_action == PrintHostPostUploadAction::StartPrint) { + // connect to websocket, since the upload is successful, the file will be printed + std::string wsUrl = get_host_from_url_no_port(m_host); + WebSocketClient client; + try { + client.connect(wsUrl, "3030", "/websocket"); + } catch (std::exception& e) { + const auto errorString = std::string(e.what()); + if (errorString.find("The WebSocket handshake was declined by the remote peer") != std::string::npos) { + // error_fn( + // _L("The number of printer connections has exceeded the limit. Please disconnect other connections, restart the " + // "printer and slicer, and then try again.")); + error_fn(_L("The file has been transferred, but some unknown errors occurred. Please check the device page for the file and try to start printing again.")); + } else { + error_fn(std::string("\n") + wxString::FromUTF8(e.what())); + } + return false; + } + std::string timeLapse = "0"; + std::string heatedBedLeveling = "0"; + std::string bedType = "0"; + timeLapse = upload_data.extended_info["timeLapse"]; + heatedBedLeveling = upload_data.extended_info["heatedBedLeveling"]; + bedType = upload_data.extended_info["bedType"]; + + std::this_thread::sleep_for(std::chrono::seconds(1)); + if (checkResult(client, error_fn)) { + // send print command + std::this_thread::sleep_for(std::chrono::seconds(1)); + res = print(client, timeLapse, heatedBedLeveling, bedType, upload_filename, error_fn); + }else{ + res = false; + } + } + } + return res; + } + + bool ElegooLink::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn, InfoFn info_fn) const + { + #ifndef WIN32 + return upload_inner_with_host(std::move(upload_data), prorgess_fn, error_fn, info_fn); + #else + std::string host = get_host_from_url(m_host); + + // decide what to do based on m_host - resolve hostname or upload to ip + std::vector resolved_addr; + boost::system::error_code ec; + boost::asio::ip::address host_ip = boost::asio::ip::make_address(host, ec); + if (!ec) { + resolved_addr.push_back(host_ip); + } else if ( GUI::get_app_config()->get_bool("allow_ip_resolve") && boost::algorithm::ends_with(host, ".local")){ + Bonjour("octoprint") + .set_hostname(host) + .set_retries(5) // number of rounds of queries send + .set_timeout(1) // after each timeout, if there is any answer, the resolving will stop + .on_resolve([&ra = resolved_addr](const std::vector& replies) { + for (const auto & rpl : replies) { + boost::asio::ip::address ip(rpl.ip); + ra.emplace_back(ip); + BOOST_LOG_TRIVIAL(info) << "Resolved IP address: " << rpl.ip; + } + }) + .resolve_sync(); + } + if (resolved_addr.empty()) { + // no resolved addresses - try system resolving + BOOST_LOG_TRIVIAL(error) << "ElegooLink failed to resolve hostname " << m_host << " into the IP address. Starting upload with system resolving."; + return upload_inner_with_host(std::move(upload_data), prorgess_fn, error_fn, info_fn); + } else if (resolved_addr.size() == 1) { + // one address resolved - upload there + return upload_inner_with_resolved_ip(std::move(upload_data), prorgess_fn, error_fn, info_fn, resolved_addr.front()); + } else if (resolved_addr.size() == 2 && resolved_addr[0].is_v4() != resolved_addr[1].is_v4()) { + // there are just 2 addresses and 1 is ip_v4 and other is ip_v6 + // try sending to both. (Then if both fail, show both error msg after second try) + wxString error_message; + if (!upload_inner_with_resolved_ip(std::move(upload_data), prorgess_fn + , [&msg = error_message, resolved_addr](wxString error) { msg = GUI::format_wxstr("%1%: %2%", resolved_addr.front(), error); } + , info_fn, resolved_addr.front()) + && + !upload_inner_with_resolved_ip(std::move(upload_data), prorgess_fn + , [&msg = error_message, resolved_addr](wxString error) { msg += GUI::format_wxstr("\n%1%: %2%", resolved_addr.back(), error); } + , info_fn, resolved_addr.back()) + ) { + + error_fn(error_message); + return false; + } + return true; + } else { + // There are multiple addresses - user needs to choose which to use. + size_t selected_index = resolved_addr.size(); + IPListDialog dialog(nullptr, boost::nowide::widen(m_host), resolved_addr, selected_index); + if (dialog.ShowModal() == wxID_OK && selected_index < resolved_addr.size()) { + return upload_inner_with_resolved_ip(std::move(upload_data), prorgess_fn, error_fn, info_fn, resolved_addr[selected_index]); + } + } + return false; + #endif // WIN32 + } + + bool ElegooLink::print(WebSocketClient& client, + std::string timeLapse, + std::string heatedBedLeveling, + std::string bedType, + const std::string filename, + ErrorFn error_fn) const + { + + // convert bedType to 0 or 1, 0 is PTE, 1 is PC + if (bedType == std::to_string((int)BedType::btPC)){ + bedType = "1"; + }else{ + bedType = "0"; + } + bool res = false; + // create a random UUID generator + boost::uuids::random_generator generator; + // generate a UUID + boost::uuids::uuid uuid = generator(); + std::string uuid_string = to_string(uuid); + try { + std::string requestID = uuid_string; + auto now = std::chrono::system_clock::now(); + auto duration = now.time_since_epoch(); + auto milliseconds = std::chrono::duration_cast(duration).count(); + std::string timestamp = std::to_string(milliseconds); + std::string jsonString = R"({ + "Id":"", + "Data":{ + "Cmd":)"+std::to_string(ElegooLinkCommand::ELEGOO_START_PRINT)+R"(, + "Data":{ + "Filename":"/local/)" + filename + R"(", + "StartLayer":0, + "Calibration_switch":)" + heatedBedLeveling + R"(, + "PrintPlatformType":)" + bedType + R"(, + "Tlp_Switch":)" + timeLapse + R"( + }, + "RequestID":")"+ uuid_string + R"(", + "MainboardID":"", + "TimeStamp":)" + timestamp + R"(, + "From":1 + } + })"; + std::cout << "send: " << jsonString << std::endl; + BOOST_LOG_TRIVIAL(info) << "start print, param: " << jsonString; + client.send(jsonString); + // wait 30s + auto start_time = std::chrono::steady_clock::now(); + do{ + std::string response = client.receive(); + std::cout << "Received: " << response << std::endl; + BOOST_LOG_TRIVIAL(info) << "Received: " << response; + + //sample response + // {"Id":"979d4C788A4a78bC777A870F1A02867A","Data":{"Cmd":128,"Data":{"Ack":1},"RequestID":"5223de52cc7642ae8d7924f9dd46f6ad","MainboardID":"1c7319d30105041800009c0000000000","TimeStamp":1735032553},"Topic":"sdcp/response/1c7319d30105041800009c0000000000"} + pt::ptree root; + std::istringstream is(response); + pt::read_json(is, root); + + auto data = root.get_child_optional("Data"); + if(!data){ + BOOST_LOG_TRIVIAL(info) << "wait for start print response"; + continue; + } + auto cmd = data->get_optional("Cmd"); + if(!cmd){ + BOOST_LOG_TRIVIAL(info) << "wait for start print response"; + continue; + } + if(*cmd == ElegooLinkCommand::ELEGOO_START_PRINT){ + auto _ack = data->get_optional("Data.Ack"); + if(!_ack){ + BOOST_LOG_TRIVIAL(error) << "start print failed, ack not found"; + error_fn(_L("Error code not found")); + break; + } + auto ack = static_cast(*_ack); + if(ack == ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_OK){ + res = true; + }else{ + res = false; + BOOST_LOG_TRIVIAL(error) << "start print failed: ack: " << ack; + wxString error_message = ""; + switch(ack){ + case ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_BUSY: + { + error_message =_L("The printer is busy, Please check the device page for the file and try to start printing again."); + break; + } + case ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_NOT_FOUND: + { + error_message =_(L("The file is lost, please check and try again.")); + break; + } + case ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_MD5_FAILED: + { + error_message =_(L("The file is corrupted, please check and try again.")); + break; + } + case ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_FILEIO_FAILED: + case ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_INVLAID_RESOLUTION: + case ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_UNKNOW_FORMAT: + { + error_message =_(L("Transmission abnormality, please check and try again.")); + break; + } + case ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_UNKNOW_MODEL: + { + error_message =_(L("The file does not match the printer, please check and try again.")); + break; + } + default: + { + error_message =_L("Unknown error"); + break; + } + } + + error_message += " " + wxString::Format(_L("Error code: %d"),ack); + error_fn(error_message); + } + break; + } + } while (std::chrono::steady_clock::now() - start_time < std::chrono::seconds(30)); + if (std::chrono::steady_clock::now() - start_time >= std::chrono::seconds(30)) { + res = false; + error_fn(_L("Start print timeout")); + } + } catch (const std::exception& e) { + std::cerr << "Error: " << e.what() << std::endl; + BOOST_LOG_TRIVIAL(error) << "start print error: " << e.what(); + error_fn(_L("Start print failed") +"\n" +GUI::from_u8(e.what())); + res=false; + } + return res; + } + + bool ElegooLink::checkResult(WebSocketClient& client, ErrorFn error_fn) const + { + bool res = true; + // create a random UUID generator + boost::uuids::random_generator generator; + // generate a UUID + boost::uuids::uuid uuid = generator(); + std::string uuid_string = to_string(uuid); + try { + std::string requestID = uuid_string; + auto now = std::chrono::system_clock::now(); + auto duration = now.time_since_epoch(); + auto milliseconds = std::chrono::duration_cast(duration).count(); + std::string timestamp = std::to_string(milliseconds); + std::string jsonString = R"({ + "Id":"", + "Data":{ + "Cmd":)" + + std::to_string(ElegooLinkCommand::ELEGOO_GET_STATUS) + R"(, + "Data":{}, + "RequestID":")" + + uuid_string + R"(", + "MainboardID":"", + "TimeStamp":)" + + timestamp + R"(, + "From":1 + } + })"; + std::cout << "send: " << jsonString << std::endl; + BOOST_LOG_TRIVIAL(info) << "start print, param: " << jsonString; + bool needWrite = true; + // wait 60s + auto start_time = std::chrono::steady_clock::now(); + do { + if (needWrite) { + client.send(jsonString); + needWrite = false; + } + std::string response = client.receive(); + std::cout << "Received: " << response << std::endl; + BOOST_LOG_TRIVIAL(info) << "Received: " << response; + pt::ptree root; + std::istringstream is(response); + pt::read_json(is, root); + auto status = root.get_child_optional("Status"); + if (status) { + auto currentStatus = status->get_child_optional("CurrentStatus"); + if (currentStatus) { + std::vector status; + for (auto& item : *currentStatus) { + status.push_back(item.second.get_value()); + } + if (std::find(status.begin(), status.end(), 8) != status.end()) { + // 8 is check file status, need to wait + needWrite = true; + // sleep 1s + std::this_thread::sleep_for(std::chrono::seconds(1)); + } else { + break; + } + } else { + break; + } + } + } while (std::chrono::steady_clock::now() - start_time < std::chrono::seconds(60)); + if (std::chrono::steady_clock::now() - start_time >= std::chrono::seconds(60)) { + res = false; + error_fn(_L("Start print timeout")); + } + } catch (const std::exception& e) { + std::cerr << "Error: " << e.what() << std::endl; + BOOST_LOG_TRIVIAL(error) << "start print error: " << e.what(); + error_fn(_L("Start print failed") + "\n" + GUI::from_u8(e.what())); + res = false; + } + return res; + } + } diff --git a/src/slic3r/Utils/ElegooLink.hpp b/src/slic3r/Utils/ElegooLink.hpp new file mode 100644 index 0000000000..b0c379c29f --- /dev/null +++ b/src/slic3r/Utils/ElegooLink.hpp @@ -0,0 +1,72 @@ +#ifndef slic3r_ElegooLink_hpp_ +#define slic3r_ElegooLink_hpp_ + +#include +#include +#include +#include + +#include "PrintHost.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "OctoPrint.hpp" +#include "WebSocketClient.hpp" +namespace Slic3r { + +class DynamicPrintConfig; +class Http; + +class ElegooLink : public OctoPrint +{ +public: + ElegooLink(DynamicPrintConfig *config); + ~ElegooLink() override = default; + const char* get_name() const override; + virtual bool test(wxString &curl_msg) const override; + wxString get_test_ok_msg() const override; + wxString get_test_failed_msg(wxString& msg) const override; + bool upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn, InfoFn info_fn) const override; + bool has_auto_discovery() const override { return false; } + bool can_test() const override { return true; } + PrintHostPostUploadActions get_post_upload_actions() const override { return PrintHostPostUploadAction::StartPrint; } +protected: +#ifdef WIN32 + virtual bool upload_inner_with_resolved_ip(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn, InfoFn info_fn, const boost::asio::ip::address& resolved_addr) const; +#endif + virtual bool validate_version_text(const boost::optional &version_text) const; + virtual bool upload_inner_with_host(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn, InfoFn info_fn) const; + +#ifdef WIN32 + virtual bool test_with_resolved_ip(wxString& curl_msg) const override; + bool elegoo_test_with_resolved_ip(wxString& curl_msg) const; +#endif + +private: + bool elegoo_test(wxString& curl_msg) const; + bool print(WebSocketClient& client, + std::string timeLapse, + std::string heatedBedLeveling, + std::string bedType, + const std::string filename, ErrorFn error_fn) const; + bool checkResult(WebSocketClient& client, + ErrorFn error_fn) const; + + bool loopUpload(std::string url, PrintHostUpload upload_data, + ProgressFn prorgess_fn, + ErrorFn error_fn, + InfoFn info_fn) const; + + bool uploadPart(Http &http, + std::string md5, + std::string uuid, + std::string path, + std::string filename, + size_t filesize, + size_t offset, + size_t length, + ProgressFn prorgess_fn, + ErrorFn error_fn, + InfoFn info_fn) const; +}; +} + +#endif diff --git a/src/slic3r/Utils/Http.cpp b/src/slic3r/Utils/Http.cpp index bfd9eab2f0..4127d3fd29 100644 --- a/src/slic3r/Utils/Http.cpp +++ b/src/slic3r/Utils/Http.cpp @@ -192,6 +192,11 @@ Http::priv::priv(const std::string &url) ::curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); ::curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); ::curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + + // https://everything.curl.dev/http/post/expect100.html + // remove the Expect: header, it will add a second delay to each request, + // if the file is uploaded in packets, it will cause the upload time to be longer + headerlist = curl_slist_append(headerlist, "Expect:"); } Http::priv::~priv() @@ -599,6 +604,21 @@ Http& Http::ca_file(const std::string &name) return *this; } +Http& Http::form_clear() { + if (p) { + if (p->form) { + ::curl_formfree(p->form); + p->form = nullptr; + p->form_end = nullptr; + } + for (auto &f : p->form_files) { + f.ifs.close(); + } + p->form_files.clear(); + + } + return *this; +} Http& Http::form_add(const std::string &name, const std::string &contents) { diff --git a/src/slic3r/Utils/Http.hpp b/src/slic3r/Utils/Http.hpp index 872ec6cbdf..fbded8eab2 100644 --- a/src/slic3r/Utils/Http.hpp +++ b/src/slic3r/Utils/Http.hpp @@ -119,6 +119,7 @@ public: // See also ca_file_supported(). Http& ca_file(const std::string &filename); + Http& form_clear(); // Add a HTTP multipart form field Http& form_add(const std::string &name, const std::string &contents); // Add a HTTP multipart form file data contents, `name` is the name of the part diff --git a/src/slic3r/Utils/OctoPrint.hpp b/src/slic3r/Utils/OctoPrint.hpp index d9172f3225..ad7e8c411e 100644 --- a/src/slic3r/Utils/OctoPrint.hpp +++ b/src/slic3r/Utils/OctoPrint.hpp @@ -49,9 +49,8 @@ protected: virtual void set_auth(Http &http) const; std::string make_url(const std::string &path) const; -private: #ifdef WIN32 - bool test_with_resolved_ip(wxString& curl_msg) const; + virtual bool test_with_resolved_ip(wxString& curl_msg) const; #endif }; diff --git a/src/slic3r/Utils/PrintHost.cpp b/src/slic3r/Utils/PrintHost.cpp index 256b764133..097d26d4c0 100644 --- a/src/slic3r/Utils/PrintHost.cpp +++ b/src/slic3r/Utils/PrintHost.cpp @@ -26,6 +26,7 @@ #include "Obico.hpp" #include "Flashforge.hpp" #include "SimplyPrint.hpp" +#include "ElegooLink.hpp" namespace fs = boost::filesystem; using boost::optional; @@ -65,6 +66,7 @@ PrintHost* PrintHost::get_print_host(DynamicPrintConfig *config) case htObico: return new Obico(config); case htFlashforge: return new Flashforge(config); case htSimplyPrint: return new SimplyPrint(config); + case htElegooLink: return new ElegooLink(config); default: return nullptr; } } else { @@ -78,7 +80,16 @@ wxString PrintHost::format_error(const std::string &body, const std::string &err auto wxbody = wxString::FromUTF8(body.data()); return wxString::Format("HTTP %u: %s", status, wxbody); } else { - return wxString::FromUTF8(error.data()); + if (error.find("curl:Timeout was reached") != std::string::npos) { + return _L("Connection timed out. Please check if the printer and computer network are functioning properly, and confirm that they are on the same network."); + }else if(error.find("curl:Couldn't resolve host name")!= std::string::npos){ + return _L("The Hostname/IP/URL could not be parsed, please check it and try again."); + } else if (error.find("Connection was reset") != std::string::npos){ + return _L("File/data transfer interrupted. Please check the printer and network, then try it again."); + } + else { + return wxString::FromUTF8(error.data()); + } } } diff --git a/src/slic3r/Utils/PrintHost.hpp b/src/slic3r/Utils/PrintHost.hpp index 83bd730e42..2b5e300008 100644 --- a/src/slic3r/Utils/PrintHost.hpp +++ b/src/slic3r/Utils/PrintHost.hpp @@ -11,7 +11,7 @@ #include #include "Http.hpp" - +#include class wxArrayString; namespace Slic3r { @@ -37,6 +37,9 @@ struct PrintHostUpload std::string storage; PrintHostPostUploadAction post_action { PrintHostPostUploadAction::None }; + + // Some extended parameters for different upload methods. + std::map extended_info; }; class PrintHost diff --git a/src/slic3r/Utils/WebSocketClient.hpp b/src/slic3r/Utils/WebSocketClient.hpp new file mode 100644 index 0000000000..2660231794 --- /dev/null +++ b/src/slic3r/Utils/WebSocketClient.hpp @@ -0,0 +1,101 @@ +#ifndef _WEB_SOCKET_CLIENT_HPP_ +#define _WEB_SOCKET_CLIENT_HPP_ +#include +#include +#include +#include +#include +#include +#include +namespace beast = boost::beast; // from +namespace http = beast::http; // from +namespace websocket = beast::websocket; // from +namespace net = boost::asio; // from +using tcp = net::ip::tcp; // from + +class WebSocketClient { +public: +//服务器是ws://echo.websocket.org:80/websocket + WebSocketClient(): + resolver_(ioc_), ws_(ioc_),is_connect(false) { + + } + + ~WebSocketClient() { + if(!is_connect){ + return; + } + try { + // Close the WebSocket connection + ws_.close(websocket::close_code::normal); + } catch (const std::exception& e) { + std::cerr << "Error: " << e.what() << std::endl; + } + } + void connect(const std::string& host, const std::string& port, const std::string& path="/"){ + if(is_connect){ + return; + } + // Look up the domain name + auto const results = resolver_.resolve(host, port); + + // Make the connection on the IP address we get from a lookup + auto ep = net::connect(ws_.next_layer(), results); + std::string _host = host; + //if _host last char is '/', remove it + if(_host.size()>0&&_host[host.size()-1] == '/'){ + _host[host.size()-1] = '\0'; + } + + // _host += ':' + std::to_string(ep.port()); + // Set a decorator to change the User-Agent of the handshake + ws_.set_option(websocket::stream_base::decorator( + [](websocket::request_type& req) + { + req.set(http::field::user_agent,"ElegooSlicer"); + })); + // Perform the WebSocket handshake + ws_.handshake(_host, path); + is_connect = true; + } + + void send(const std::string& message){ + // Send a message + ws_.write(net::buffer(message)); + } + + std::string receive(int timeout = 0){ + // This buffer will hold the incoming message + beast::flat_buffer buffer; + + // Read a message into our buffer + ws_.read(buffer); + + // Return the message as a string + return beast::buffers_to_string(buffer.data()); + } + + +private: + net::io_context ioc_; + tcp::resolver resolver_; + websocket::stream ws_; + bool is_connect; +}; + +// int main() { +// try { +// WebSocketClient client("echo.websocket.org", "80"); + +// client.send("Hello, world!"); +// std::string response = client.receive(); + +// std::cout << "Received: " << response << std::endl; +// } catch (const std::exception& e) { +// std::cerr << "Error: " << e.what() << std::endl; +// return EXIT_FAILURE; +// } + +// return EXIT_SUCCESS; +// } +#endif // _WEB_SOCKET_CLIENT_HPP \ No newline at end of file