From eeb49e587c63aafc2e42f53c7706724b99b4d1a6 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Sat, 11 Jun 2022 17:20:55 +0200 Subject: [PATCH 001/203] Added parameters for optimized prime tower --- resources/definitions/fdmprinter.def.json | 52 ++++++++++++++++------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 9e12d7f7e1..ebbf9faac8 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -983,7 +983,7 @@ "description": "Width of a single prime tower line.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_enable')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", "default_value": 0.4, "value": "line_width", "minimum_value": "0.001", @@ -3188,7 +3188,7 @@ "description": "The speed at which the prime tower is printed. Printing the prime tower slower can make it more stable when the adhesion between the different filaments is suboptimal.", "type": "float", "unit": "mm/s", - "enabled": "resolveOrValue('prime_tower_enable')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", "default_value": 60, "value": "speed_print", "minimum_value": "0.1", @@ -3525,7 +3525,7 @@ "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_print", - "enabled": "resolveOrValue('prime_tower_enable') and resolveOrValue('acceleration_enabled')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none' and resolveOrValue('acceleration_enabled')", "settable_per_mesh": false } } @@ -3805,7 +3805,7 @@ "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", - "enabled": "resolveOrValue('prime_tower_enable') and resolveOrValue('jerk_enabled')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none' and resolveOrValue('jerk_enabled')", "settable_per_mesh": false } } @@ -6112,14 +6112,21 @@ "description": "Settings used for printing with multiple extruders.", "children": { - "prime_tower_enable": + "prime_tower_mode": { - "label": "Enable Prime Tower", + "label": "Prime Tower Mode", "description": "Print a tower next to the print which serves to prime the material after each nozzle switch.", - "type": "bool", + "type": "enum", + "options": + { + "none": "None", + "default": "Default", + "optimized": "Optimized", + "optimized_consistent": "Optimized consistent" + }, + "default_value": "default", "enabled": "extruders_enabled_count > 1", - "default_value": false, - "resolve": "(extruders_enabled_count > 1) and any(extruderValues('prime_tower_enable'))", + "resolve": "(extruders_enabled_count > 1) and any(extruderValues('prime_tower_mode'))", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -6129,7 +6136,7 @@ "description": "The width of the prime tower.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_enable')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", "default_value": 20, "resolve": "max(extruderValues('prime_tower_size'))", "minimum_value": "0", @@ -6148,7 +6155,20 @@ "default_value": 6, "minimum_value": "0", "maximum_value_warning": "(resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height') - sum(extruderValues('prime_tower_min_volume')) + prime_tower_min_volume", - "enabled": "resolveOrValue('prime_tower_enable')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "prime_tower_max_bridging_distance": + { + "label": "Prime Tower Maximum Bridging Distance", + "description": "The maximum length of the branches which may be printed over the air.", + "unit": "mm", + "type": "float", + "default_value": 5, + "minimum_value": "line_width", + "maximum_value_warning": "10.0", + "enabled": "resolveOrValue('prime_tower_mode') == 'optimized' or resolveOrValue('prime_tower_mode') == 'optimized_consistent'", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -6158,7 +6178,7 @@ "description": "The x coordinate of the position of the prime tower.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_enable')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", "default_value": 200, "value": "machine_width - max(extruderValue(skirt_brim_extruder_nr, 'brim_width') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' or (prime_tower_brim_enable and adhesion_type != 'raft') else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - max(map(abs, extruderValues('machine_nozzle_offset_x'))) - 1", "maximum_value": "machine_width / 2 if machine_center_is_zero else machine_width", @@ -6172,7 +6192,7 @@ "description": "The y coordinate of the position of the prime tower.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_enable')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", "default_value": 200, "value": "machine_depth - prime_tower_size - max(extruderValue(skirt_brim_extruder_nr, 'brim_width') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' or (prime_tower_brim_enable and adhesion_type != 'raft') else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - max(map(abs, extruderValues('machine_nozzle_offset_y'))) - 3", "maximum_value": "machine_depth / 2 - resolveOrValue('prime_tower_size') if machine_center_is_zero else machine_depth - resolveOrValue('prime_tower_size')", @@ -6185,7 +6205,7 @@ "label": "Wipe Inactive Nozzle on Prime Tower", "description": "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower.", "type": "bool", - "enabled": "resolveOrValue('prime_tower_enable')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", "default_value": true, "settable_per_mesh": false, "settable_per_extruder": true @@ -6195,8 +6215,8 @@ "label": "Prime Tower Brim", "description": "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type.", "type": "bool", - "enabled": "resolveOrValue('prime_tower_enable') and (resolveOrValue('adhesion_type') != 'raft')", - "resolve": "resolveOrValue('prime_tower_enable') and (resolveOrValue('adhesion_type') in ('none', 'skirt'))", + "enabled": "resolveOrValue('prime_tower_mode') != 'none' and (resolveOrValue('adhesion_type') != 'raft')", + "resolve": "resolveOrValue('prime_tower_mode') != 'none' and (resolveOrValue('adhesion_type') in ('none', 'skirt'))", "default_value": false, "settable_per_mesh": false, "settable_per_extruder": false From 6d7d1b838a48ee006c3b0ff34637837551435e18 Mon Sep 17 00:00:00 2001 From: wawanbreton Date: Sun, 26 Mar 2023 13:20:52 +0000 Subject: [PATCH 002/203] Applied printer-linter format --- resources/definitions/lnl3d_base.def.json | 28 +++++++++---------- resources/definitions/lnl3d_d3.def.json | 8 ++++-- .../definitions/lnl3d_d3_vulcan.def.json | 8 ++++-- .../extruders/lnl3d_extruder_left.def.json | 2 +- .../extruders/lnl3d_extruder_right.def.json | 2 +- ...lnl3d_base_0.2_generic_PETG_super.inst.cfg | 1 + ...lnl3d_base_0.2_generic_PETG_ultra.inst.cfg | 1 + .../lnl3d_base_0.2_generic_PLA_super.inst.cfg | 1 + .../lnl3d_base_0.2_generic_PLA_ultra.inst.cfg | 1 + ...3d_base_0.4_generic_PETG_adaptive.inst.cfg | 1 + .../lnl3d_base_0.4_generic_PETG_low.inst.cfg | 1 + ...3d_base_0.4_generic_PETG_standard.inst.cfg | 1 + ...lnl3d_base_0.4_generic_PETG_super.inst.cfg | 1 + ...l3d_base_0.4_generic_PLA_adaptive.inst.cfg | 1 + .../lnl3d_base_0.4_generic_PLA_low.inst.cfg | 1 + ...l3d_base_0.4_generic_PLA_standard.inst.cfg | 1 + .../lnl3d_base_0.4_generic_PLA_super.inst.cfg | 1 + ...l3d_base_0.4_generic_TPU_adaptive.inst.cfg | 1 + ...l3d_base_0.4_generic_TPU_standard.inst.cfg | 1 + .../lnl3d_base_0.4_generic_TPU_super.inst.cfg | 1 + ...3d_base_0.6_generic_PETG_standard.inst.cfg | 1 + .../lnl3d_base_0.6_generic_PLA_draft.inst.cfg | 1 + .../lnl3d_base_0.6_generic_PLA_low.inst.cfg | 1 + ...l3d_base_0.6_generic_PLA_standard.inst.cfg | 1 + ...l3d_base_0.6_generic_TPU_standard.inst.cfg | 1 + ...lnl3d_base_0.8_generic_PETG_draft.inst.cfg | 1 + .../lnl3d_base_0.8_generic_PLA_draft.inst.cfg | 1 + .../lnl3d_base_0.8_generic_TPU_draft.inst.cfg | 1 + .../lnl3d/lnl3d_base_global_adaptive.inst.cfg | 1 + .../lnl3d/lnl3d_base_global_draft.inst.cfg | 1 + .../lnl3d/lnl3d_base_global_low.inst.cfg | 1 + .../lnl3d/lnl3d_base_global_standard.inst.cfg | 1 + .../lnl3d/lnl3d_base_global_super.inst.cfg | 1 + .../lnl3d/lnl3d_base_global_ultra.inst.cfg | 1 + .../variants/lnl3d/lnl3d_d3_0.2.inst.cfg | 1 + .../variants/lnl3d/lnl3d_d3_0.4.inst.cfg | 1 + .../variants/lnl3d/lnl3d_d3_0.6.inst.cfg | 1 + .../variants/lnl3d/lnl3d_d3_0.8.inst.cfg | 1 + .../lnl3d/lnl3d_d3_vulcan_0.2.inst.cfg | 1 + .../lnl3d/lnl3d_d3_vulcan_0.4.inst.cfg | 1 + .../lnl3d/lnl3d_d3_vulcan_0.6.inst.cfg | 1 + .../lnl3d/lnl3d_d3_vulcan_0.8.inst.cfg | 1 + .../variants/lnl3d/lnl3d_d5_0.2.inst.cfg | 1 + .../variants/lnl3d/lnl3d_d5_0.4.inst.cfg | 1 + .../variants/lnl3d/lnl3d_d5_0.6.inst.cfg | 1 + .../variants/lnl3d/lnl3d_d5_0.8.inst.cfg | 1 + .../variants/lnl3d/lnl3d_d6_0.2.inst.cfg | 1 + .../variants/lnl3d/lnl3d_d6_0.4.inst.cfg | 1 + .../variants/lnl3d/lnl3d_d6_0.6.inst.cfg | 1 + .../variants/lnl3d/lnl3d_d6_0.8.inst.cfg | 1 + 50 files changed, 73 insertions(+), 20 deletions(-) diff --git a/resources/definitions/lnl3d_base.def.json b/resources/definitions/lnl3d_base.def.json index c181e80a8e..5ee0638002 100644 --- a/resources/definitions/lnl3d_base.def.json +++ b/resources/definitions/lnl3d_base.def.json @@ -7,7 +7,7 @@ "author": "LNL3D", "manufacturer": "LNL3D", "file_formats": "text/x-gcode", - "first_start_actions": ["MachineSettingsAction"], + "first_start_actions": [ "MachineSettingsAction" ], "has_machine_quality": true, "has_materials": true, "has_variants": true, @@ -51,13 +51,13 @@ "machine_max_acceleration_x": { "value": 500 }, "machine_max_acceleration_y": { "value": 500 }, "machine_max_acceleration_z": { "value": 100 }, - "machine_max_jerk_e": { "value": 5 }, - "machine_max_jerk_xy": { "value": 10 }, - "machine_max_jerk_z": { "value": 0.4 }, "machine_max_feedrate_e": { "value": 80 }, "machine_max_feedrate_x": { "value": 500 }, "machine_max_feedrate_y": { "value": 500 }, "machine_max_feedrate_z": { "value": 10 }, + "machine_max_jerk_e": { "value": 5 }, + "machine_max_jerk_xy": { "value": 10 }, + "machine_max_jerk_z": { "value": 0.4 }, "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;move to min endstops\nG92 E0 ;reset extruder\nG1 E15 F1500 ;move extruder 15mm\nG1 Z15.0 F3000 ;move the header up 15mm\nM117 printing... ;LCD message" }, "material_diameter": { "default_value": 1.75 }, "material_final_print_temperature": { "value": "material_print_temperature" }, @@ -70,7 +70,7 @@ "prime_tower_brim_enable": { "default_value": true }, "prime_tower_wipe_enabled": { "default_value": false }, "raft_airgap": { "default_value": 0.2 }, - "raft_margin": {"default_value": 2 }, + "raft_margin": { "default_value": 2 }, "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'noskin'" }, "retraction_count_max": { "value": 100 }, "retraction_extrusion_window": { "value": 4 }, @@ -79,18 +79,18 @@ "retraction_hop_enabled": { "value": "False" }, "retraction_prime_speed": { - "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", - "maximum_value": 200 + "maximum_value": 200, + "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')" }, "retraction_retract_speed": { - "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", - "maximum_value": 200 + "maximum_value": 200, + "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')" }, "retraction_speed": { - "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", - "maximum_value": 200 + "maximum_value": 200, + "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')" }, "skin_overlap": { "value": 25 }, "skirt_line_count": { "value": 2 }, @@ -117,14 +117,14 @@ "support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height*2" }, "switch_extruder_retraction_amount": { "value": 8.0 }, "switch_extruder_retraction_speeds": { "default_value": 60.0 }, - "top_bottom_thickness": { "value": "layer_height_0 + layer_height * 4" }, + "top_bottom_thickness": { "value": "layer_height_0 + layer_height * 4" }, "travel_avoid_other_parts": { "value": false }, "travel_avoid_supports": { "value": true }, "travel_retract_before_outer_wall": { "value": true }, "wall_0_wipe_dist": { "value": 0.0 }, "wall_thickness": { "value": "line_width * 2" }, - "z_seam_type": { "value": "'back'" }, "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, + "z_seam_type": { "value": "'back'" }, "zig_zaggify_infill": { "value": true } } -} +} \ No newline at end of file diff --git a/resources/definitions/lnl3d_d3.def.json b/resources/definitions/lnl3d_d3.def.json index b12e13884b..52e8042306 100755 --- a/resources/definitions/lnl3d_d3.def.json +++ b/resources/definitions/lnl3d_d3.def.json @@ -6,7 +6,11 @@ { "visible": true, "platform": "lnl3d_d3.stl", - "platform_offset": [ 0, 0, 0 ] + "platform_offset": [ + 0, + 0, + 0 + ] }, "overrides": { @@ -17,4 +21,4 @@ "prime_tower_position_x": { "value": "155" }, "prime_tower_position_y": { "value": "155" } } -} +} \ No newline at end of file diff --git a/resources/definitions/lnl3d_d3_vulcan.def.json b/resources/definitions/lnl3d_d3_vulcan.def.json index 4b18ef4fc0..f81cae81c5 100755 --- a/resources/definitions/lnl3d_d3_vulcan.def.json +++ b/resources/definitions/lnl3d_d3_vulcan.def.json @@ -6,7 +6,11 @@ { "visible": true, "platform": "lnl3d_d3.stl", - "platform_offset": [ 0, 0, 0 ] + "platform_offset": [ + 0, + 0, + 0 + ] }, "overrides": { @@ -17,4 +21,4 @@ "prime_tower_position_x": { "value": "155" }, "prime_tower_position_y": { "value": "155" } } -} +} \ No newline at end of file diff --git a/resources/extruders/lnl3d_extruder_left.def.json b/resources/extruders/lnl3d_extruder_left.def.json index 03ed857f0e..7e5d2dfe98 100755 --- a/resources/extruders/lnl3d_extruder_left.def.json +++ b/resources/extruders/lnl3d_extruder_left.def.json @@ -26,4 +26,4 @@ "machine_nozzle_size": { "default_value": 0.4 }, "material_diameter": { "default_value": 1.75 } } -} +} \ No newline at end of file diff --git a/resources/extruders/lnl3d_extruder_right.def.json b/resources/extruders/lnl3d_extruder_right.def.json index 62e9cd230c..6b5e0993de 100755 --- a/resources/extruders/lnl3d_extruder_right.def.json +++ b/resources/extruders/lnl3d_extruder_right.def.json @@ -26,4 +26,4 @@ "machine_nozzle_size": { "default_value": 0.4 }, "material_diameter": { "default_value": 1.75 } } -} +} \ No newline at end of file diff --git a/resources/quality/lnl3d/lnl3d_base_0.2_generic_PETG_super.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.2_generic_PETG_super.inst.cfg index ca7c0e514a..9e1ed6b824 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.2_generic_PETG_super.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.2_generic_PETG_super.inst.cfg @@ -13,3 +13,4 @@ variant = 0.2mm Nozzle [values] speed_layer_0 = 15 wall_thickness = =line_width*8 + diff --git a/resources/quality/lnl3d/lnl3d_base_0.2_generic_PETG_ultra.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.2_generic_PETG_ultra.inst.cfg index 4d8f10a604..f2d08c5351 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.2_generic_PETG_ultra.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.2_generic_PETG_ultra.inst.cfg @@ -13,3 +13,4 @@ variant = 0.2mm Nozzle [values] speed_layer_0 = 15 wall_thickness = =line_width*8 + diff --git a/resources/quality/lnl3d/lnl3d_base_0.2_generic_PLA_super.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.2_generic_PLA_super.inst.cfg index ae4d279e17..a26d3eeb2e 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.2_generic_PLA_super.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.2_generic_PLA_super.inst.cfg @@ -11,3 +11,4 @@ type = quality variant = 0.2mm Nozzle [values] + diff --git a/resources/quality/lnl3d/lnl3d_base_0.2_generic_PLA_ultra.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.2_generic_PLA_ultra.inst.cfg index 74616e862e..2086268efe 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.2_generic_PLA_ultra.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.2_generic_PLA_ultra.inst.cfg @@ -11,3 +11,4 @@ type = quality variant = 0.2mm Nozzle [values] + diff --git a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_adaptive.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_adaptive.inst.cfg index 4acfd83171..ea0e83055c 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_adaptive.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_adaptive.inst.cfg @@ -13,3 +13,4 @@ variant = 0.4mm Nozzle [values] speed_layer_0 = 15 wall_thickness = =line_width*4 + diff --git a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_low.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_low.inst.cfg index bd30b8ed51..20575a94de 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_low.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_low.inst.cfg @@ -13,3 +13,4 @@ variant = 0.4mm Nozzle [values] speed_layer_0 = 15 wall_thickness = =line_width*4 + diff --git a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_standard.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_standard.inst.cfg index 669ef07d98..f8af1bef08 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_standard.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_standard.inst.cfg @@ -13,3 +13,4 @@ variant = 0.4mm Nozzle [values] speed_layer_0 = 15 wall_thickness = =line_width*4 + diff --git a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_super.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_super.inst.cfg index c70979a5cb..52dfb21b4c 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_super.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PETG_super.inst.cfg @@ -13,3 +13,4 @@ variant = 0.4mm Nozzle [values] speed_layer_0 = 15 wall_thickness = =line_width*4 + diff --git a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_adaptive.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_adaptive.inst.cfg index 4712e4c3ff..cf38d49ca7 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_adaptive.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_adaptive.inst.cfg @@ -11,3 +11,4 @@ type = quality variant = 0.4mm Nozzle [values] + diff --git a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_low.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_low.inst.cfg index 0dd25c760d..91318eb388 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_low.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_low.inst.cfg @@ -11,3 +11,4 @@ type = quality variant = 0.4mm Nozzle [values] + diff --git a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_standard.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_standard.inst.cfg index 4a537571d1..6566822054 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_standard.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_standard.inst.cfg @@ -11,3 +11,4 @@ type = quality variant = 0.4mm Nozzle [values] + diff --git a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_super.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_super.inst.cfg index f786275820..52448a3e17 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_super.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.4_generic_PLA_super.inst.cfg @@ -11,3 +11,4 @@ type = quality variant = 0.4mm Nozzle [values] + diff --git a/resources/quality/lnl3d/lnl3d_base_0.4_generic_TPU_adaptive.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.4_generic_TPU_adaptive.inst.cfg index 83603cffdf..ab1fb391e8 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.4_generic_TPU_adaptive.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.4_generic_TPU_adaptive.inst.cfg @@ -11,3 +11,4 @@ type = quality variant = 0.4mm Nozzle [values] + diff --git a/resources/quality/lnl3d/lnl3d_base_0.4_generic_TPU_standard.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.4_generic_TPU_standard.inst.cfg index ab68f0dd73..b1212b7fb7 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.4_generic_TPU_standard.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.4_generic_TPU_standard.inst.cfg @@ -11,3 +11,4 @@ type = quality variant = 0.4mm Nozzle [values] + diff --git a/resources/quality/lnl3d/lnl3d_base_0.4_generic_TPU_super.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.4_generic_TPU_super.inst.cfg index cac46549c1..5e0dd99521 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.4_generic_TPU_super.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.4_generic_TPU_super.inst.cfg @@ -11,3 +11,4 @@ type = quality variant = 0.4mm Nozzle [values] + diff --git a/resources/quality/lnl3d/lnl3d_base_0.6_generic_PETG_standard.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.6_generic_PETG_standard.inst.cfg index f686201f7e..26ca469bf6 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.6_generic_PETG_standard.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.6_generic_PETG_standard.inst.cfg @@ -13,3 +13,4 @@ variant = 0.6mm Nozzle [values] speed_layer_0 = 15 wall_thickness = =line_width*3 + diff --git a/resources/quality/lnl3d/lnl3d_base_0.6_generic_PLA_draft.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.6_generic_PLA_draft.inst.cfg index fd1b439885..3ca8badcf8 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.6_generic_PLA_draft.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.6_generic_PLA_draft.inst.cfg @@ -11,3 +11,4 @@ type = quality variant = 0.6mm Nozzle [values] + diff --git a/resources/quality/lnl3d/lnl3d_base_0.6_generic_PLA_low.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.6_generic_PLA_low.inst.cfg index eb5732b8dc..8cd2acf117 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.6_generic_PLA_low.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.6_generic_PLA_low.inst.cfg @@ -11,3 +11,4 @@ type = quality variant = 0.6mm Nozzle [values] + diff --git a/resources/quality/lnl3d/lnl3d_base_0.6_generic_PLA_standard.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.6_generic_PLA_standard.inst.cfg index 63a740e8ec..7297384566 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.6_generic_PLA_standard.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.6_generic_PLA_standard.inst.cfg @@ -11,3 +11,4 @@ type = quality variant = 0.6mm Nozzle [values] + diff --git a/resources/quality/lnl3d/lnl3d_base_0.6_generic_TPU_standard.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.6_generic_TPU_standard.inst.cfg index 92f0fdfee0..9e59bbd349 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.6_generic_TPU_standard.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.6_generic_TPU_standard.inst.cfg @@ -11,3 +11,4 @@ type = quality variant = 0.6mm Nozzle [values] + diff --git a/resources/quality/lnl3d/lnl3d_base_0.8_generic_PETG_draft.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.8_generic_PETG_draft.inst.cfg index 25dce4e37f..d645385468 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.8_generic_PETG_draft.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.8_generic_PETG_draft.inst.cfg @@ -13,3 +13,4 @@ variant = 0.8mm Nozzle [values] speed_layer_0 = 15 wall_thickness = =line_width*3 + diff --git a/resources/quality/lnl3d/lnl3d_base_0.8_generic_PLA_draft.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.8_generic_PLA_draft.inst.cfg index 6668b1a129..1620bd79a8 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.8_generic_PLA_draft.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.8_generic_PLA_draft.inst.cfg @@ -11,3 +11,4 @@ type = quality variant = 0.8mm Nozzle [values] + diff --git a/resources/quality/lnl3d/lnl3d_base_0.8_generic_TPU_draft.inst.cfg b/resources/quality/lnl3d/lnl3d_base_0.8_generic_TPU_draft.inst.cfg index 8a6512c09b..d466d9bd94 100644 --- a/resources/quality/lnl3d/lnl3d_base_0.8_generic_TPU_draft.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_0.8_generic_TPU_draft.inst.cfg @@ -11,3 +11,4 @@ type = quality variant = 0.8mm Nozzle [values] + diff --git a/resources/quality/lnl3d/lnl3d_base_global_adaptive.inst.cfg b/resources/quality/lnl3d/lnl3d_base_global_adaptive.inst.cfg index 6e566239bf..569e8c5264 100644 --- a/resources/quality/lnl3d/lnl3d_base_global_adaptive.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_global_adaptive.inst.cfg @@ -17,3 +17,4 @@ layer_height_0 = 0.20 support_interface_height = =layer_height*6 top_bottom_thickness = =layer_height_0+layer_height*4 wall_thickness = =line_width*3 + diff --git a/resources/quality/lnl3d/lnl3d_base_global_draft.inst.cfg b/resources/quality/lnl3d/lnl3d_base_global_draft.inst.cfg index 34356067f2..b0d87d19bb 100644 --- a/resources/quality/lnl3d/lnl3d_base_global_draft.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_global_draft.inst.cfg @@ -16,3 +16,4 @@ layer_height_0 = 0.32 support_interface_height = =layer_height*4 top_bottom_thickness = =layer_height_0+layer_height*3 wall_thickness = =line_width*2 + diff --git a/resources/quality/lnl3d/lnl3d_base_global_low.inst.cfg b/resources/quality/lnl3d/lnl3d_base_global_low.inst.cfg index 000d7729d3..93d2f918ae 100644 --- a/resources/quality/lnl3d/lnl3d_base_global_low.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_global_low.inst.cfg @@ -16,3 +16,4 @@ layer_height_0 = 0.28 support_interface_height = =layer_height*4 top_bottom_thickness = =layer_height_0+layer_height*3 wall_thickness = =line_width*2 + diff --git a/resources/quality/lnl3d/lnl3d_base_global_standard.inst.cfg b/resources/quality/lnl3d/lnl3d_base_global_standard.inst.cfg index f96004b8d1..796a7ce1d0 100644 --- a/resources/quality/lnl3d/lnl3d_base_global_standard.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_global_standard.inst.cfg @@ -16,3 +16,4 @@ layer_height_0 = 0.2 support_interface_height = =layer_height*4 top_bottom_thickness = =layer_height_0+layer_height*3 wall_thickness = =line_width*2 + diff --git a/resources/quality/lnl3d/lnl3d_base_global_super.inst.cfg b/resources/quality/lnl3d/lnl3d_base_global_super.inst.cfg index f42fb2c6ac..f9cdb2dbf9 100644 --- a/resources/quality/lnl3d/lnl3d_base_global_super.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_global_super.inst.cfg @@ -16,3 +16,4 @@ layer_height_0 = 0.12 support_interface_height = =layer_height*8 top_bottom_thickness = =layer_height_0+layer_height*6 wall_thickness = =line_width*3 + diff --git a/resources/quality/lnl3d/lnl3d_base_global_ultra.inst.cfg b/resources/quality/lnl3d/lnl3d_base_global_ultra.inst.cfg index 2e97b1b620..a4dd6be3da 100644 --- a/resources/quality/lnl3d/lnl3d_base_global_ultra.inst.cfg +++ b/resources/quality/lnl3d/lnl3d_base_global_ultra.inst.cfg @@ -16,3 +16,4 @@ layer_height_0 = 0.12 support_interface_height = =layer_height*12 top_bottom_thickness = =layer_height_0+layer_height*10 wall_thickness = =line_width*3 + diff --git a/resources/variants/lnl3d/lnl3d_d3_0.2.inst.cfg b/resources/variants/lnl3d/lnl3d_d3_0.2.inst.cfg index 63a61e894f..7ae77ff476 100644 --- a/resources/variants/lnl3d/lnl3d_d3_0.2.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d3_0.2.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.2 + diff --git a/resources/variants/lnl3d/lnl3d_d3_0.4.inst.cfg b/resources/variants/lnl3d/lnl3d_d3_0.4.inst.cfg index 678e48f3b3..e8e0d15f7e 100644 --- a/resources/variants/lnl3d/lnl3d_d3_0.4.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d3_0.4.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.4 + diff --git a/resources/variants/lnl3d/lnl3d_d3_0.6.inst.cfg b/resources/variants/lnl3d/lnl3d_d3_0.6.inst.cfg index 7aeb9ef765..fa978ca8c8 100644 --- a/resources/variants/lnl3d/lnl3d_d3_0.6.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d3_0.6.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.6 + diff --git a/resources/variants/lnl3d/lnl3d_d3_0.8.inst.cfg b/resources/variants/lnl3d/lnl3d_d3_0.8.inst.cfg index 5052e08c25..05e72fe6a3 100644 --- a/resources/variants/lnl3d/lnl3d_d3_0.8.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d3_0.8.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.8 + diff --git a/resources/variants/lnl3d/lnl3d_d3_vulcan_0.2.inst.cfg b/resources/variants/lnl3d/lnl3d_d3_vulcan_0.2.inst.cfg index ac652dbedd..fee93aaef2 100644 --- a/resources/variants/lnl3d/lnl3d_d3_vulcan_0.2.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d3_vulcan_0.2.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.2 + diff --git a/resources/variants/lnl3d/lnl3d_d3_vulcan_0.4.inst.cfg b/resources/variants/lnl3d/lnl3d_d3_vulcan_0.4.inst.cfg index 3a7c5d26eb..a76a5aeb76 100644 --- a/resources/variants/lnl3d/lnl3d_d3_vulcan_0.4.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d3_vulcan_0.4.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.4 + diff --git a/resources/variants/lnl3d/lnl3d_d3_vulcan_0.6.inst.cfg b/resources/variants/lnl3d/lnl3d_d3_vulcan_0.6.inst.cfg index ab0e6a9e4d..71884bf1c9 100644 --- a/resources/variants/lnl3d/lnl3d_d3_vulcan_0.6.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d3_vulcan_0.6.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.6 + diff --git a/resources/variants/lnl3d/lnl3d_d3_vulcan_0.8.inst.cfg b/resources/variants/lnl3d/lnl3d_d3_vulcan_0.8.inst.cfg index 5a7e625a5e..0a1269d21e 100644 --- a/resources/variants/lnl3d/lnl3d_d3_vulcan_0.8.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d3_vulcan_0.8.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.8 + diff --git a/resources/variants/lnl3d/lnl3d_d5_0.2.inst.cfg b/resources/variants/lnl3d/lnl3d_d5_0.2.inst.cfg index b5410bc804..62dfd0b0d9 100644 --- a/resources/variants/lnl3d/lnl3d_d5_0.2.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d5_0.2.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.2 + diff --git a/resources/variants/lnl3d/lnl3d_d5_0.4.inst.cfg b/resources/variants/lnl3d/lnl3d_d5_0.4.inst.cfg index 4bbdd3af0f..088b18ed45 100644 --- a/resources/variants/lnl3d/lnl3d_d5_0.4.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d5_0.4.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.4 + diff --git a/resources/variants/lnl3d/lnl3d_d5_0.6.inst.cfg b/resources/variants/lnl3d/lnl3d_d5_0.6.inst.cfg index 985b141ee5..f4ecae1dad 100644 --- a/resources/variants/lnl3d/lnl3d_d5_0.6.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d5_0.6.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.6 + diff --git a/resources/variants/lnl3d/lnl3d_d5_0.8.inst.cfg b/resources/variants/lnl3d/lnl3d_d5_0.8.inst.cfg index 3951b27e5b..da10b5fa7e 100644 --- a/resources/variants/lnl3d/lnl3d_d5_0.8.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d5_0.8.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.8 + diff --git a/resources/variants/lnl3d/lnl3d_d6_0.2.inst.cfg b/resources/variants/lnl3d/lnl3d_d6_0.2.inst.cfg index 522868ce90..886a6bba65 100644 --- a/resources/variants/lnl3d/lnl3d_d6_0.2.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d6_0.2.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.2 + diff --git a/resources/variants/lnl3d/lnl3d_d6_0.4.inst.cfg b/resources/variants/lnl3d/lnl3d_d6_0.4.inst.cfg index 9414cd20be..f7a984cb72 100644 --- a/resources/variants/lnl3d/lnl3d_d6_0.4.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d6_0.4.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.4 + diff --git a/resources/variants/lnl3d/lnl3d_d6_0.6.inst.cfg b/resources/variants/lnl3d/lnl3d_d6_0.6.inst.cfg index 204bf57c3d..5c77bc2d3c 100644 --- a/resources/variants/lnl3d/lnl3d_d6_0.6.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d6_0.6.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.6 + diff --git a/resources/variants/lnl3d/lnl3d_d6_0.8.inst.cfg b/resources/variants/lnl3d/lnl3d_d6_0.8.inst.cfg index 0fcca7db18..f42592214e 100644 --- a/resources/variants/lnl3d/lnl3d_d6_0.8.inst.cfg +++ b/resources/variants/lnl3d/lnl3d_d6_0.8.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.8 + From 1bdd4a67bdad5d54ff5d260b8c16a6ab149ecd39 Mon Sep 17 00:00:00 2001 From: wawanbreton Date: Tue, 5 Sep 2023 11:20:34 +0000 Subject: [PATCH 003/203] Applied printer-linter format --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index ba47c4977d..67e203abcf 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -8198,4 +8198,4 @@ } } } -} +} \ No newline at end of file From e0b4a436c1d4775743d75d51177710625188e7b3 Mon Sep 17 00:00:00 2001 From: 0r31 Date: Mon, 28 Aug 2023 16:45:49 +0200 Subject: [PATCH 004/203] Introduces Sigma Pro profiles --- .../definitions/dagoma_sigma_pro.def.json | 29 + .../dagoma_sigma_pro_dual.def.json | 33 + ...goma_sigma_pro_dual_extruder_left.def.json | 18 + ...oma_sigma_pro_dual_extruder_right.def.json | 18 + .../dagoma_sigma_pro_extruder.def.json | 16 + resources/images/dagoma_sigma_pro.png | Bin 0 -> 112233 bytes resources/meshes/dagoma_sigma_pro.obj | 8456 +++++++++++++++++ ...goma_sigma_pro_brass_0.4_pla_h0.2.inst.cfg | 75 + ...goma_sigma_pro_brass_0.4_pla_h0.4.inst.cfg | 14 + ...goma_sigma_pro_brass_0.4_pla_h0.6.inst.cfg | 14 + ...goma_sigma_pro_brass_0.8_pla_h0.8.inst.cfg | 14 + ...goma_sigma_pro_brass_0.8_pla_h1.0.inst.cfg | 14 + ...goma_sigma_pro_brass_0.8_pla_h1.2.inst.cfg | 14 + ...sigma_pro_dual_brass_0.4_pla_h0.2.inst.cfg | 76 + ...sigma_pro_dual_brass_0.4_pla_h0.4.inst.cfg | 14 + ...sigma_pro_dual_brass_0.4_pla_h0.6.inst.cfg | 14 + ...sigma_pro_dual_brass_0.8_pla_h0.8.inst.cfg | 14 + ...sigma_pro_dual_brass_0.8_pla_h1.0.inst.cfg | 14 + ...sigma_pro_dual_brass_0.8_pla_h1.2.inst.cfg | 14 + ...dagoma_sigma_pro_dual_global_h0.2.inst.cfg | 16 + ...dagoma_sigma_pro_dual_global_h0.4.inst.cfg | 16 + ...dagoma_sigma_pro_dual_global_h0.6.inst.cfg | 16 + ...dagoma_sigma_pro_dual_global_h0.8.inst.cfg | 16 + ...dagoma_sigma_pro_dual_global_h1.0.inst.cfg | 16 + ...dagoma_sigma_pro_dual_global_h1.2.inst.cfg | 16 + ...sigma_pro_dual_steel_0.4_pla_h0.2.inst.cfg | 14 + ...sigma_pro_dual_steel_0.4_pla_h0.4.inst.cfg | 14 + ...sigma_pro_dual_steel_0.4_pla_h0.6.inst.cfg | 14 + ...sigma_pro_dual_steel_0.8_pla_h0.8.inst.cfg | 14 + ...sigma_pro_dual_steel_0.8_pla_h1.0.inst.cfg | 14 + ...sigma_pro_dual_steel_0.8_pla_h1.2.inst.cfg | 14 + .../dagoma_sigma_pro_global_h0.2.inst.cfg | 16 + .../dagoma_sigma_pro_global_h0.4.inst.cfg | 16 + .../dagoma_sigma_pro_global_h0.6.inst.cfg | 16 + .../dagoma_sigma_pro_global_h0.8.inst.cfg | 16 + .../dagoma_sigma_pro_global_h1.0.inst.cfg | 16 + .../dagoma_sigma_pro_global_h1.2.inst.cfg | 16 + ...goma_sigma_pro_steel_0.4_pla_h0.2.inst.cfg | 14 + ...goma_sigma_pro_steel_0.4_pla_h0.4.inst.cfg | 14 + ...goma_sigma_pro_steel_0.4_pla_h0.6.inst.cfg | 14 + ...goma_sigma_pro_steel_0.8_pla_h0.8.inst.cfg | 14 + ...goma_sigma_pro_steel_0.8_pla_h1.0.inst.cfg | 14 + ...goma_sigma_pro_steel_0.8_pla_h1.2.inst.cfg | 14 + .../dagoma_sigma_pro_brass_0.4.inst.cfg | 14 + .../dagoma_sigma_pro_brass_0.8.inst.cfg | 13 + .../dagoma_sigma_pro_dual_brass_0.4.inst.cfg | 14 + .../dagoma_sigma_pro_dual_brass_0.8.inst.cfg | 13 + .../dagoma_sigma_pro_dual_steel_0.4.inst.cfg | 14 + .../dagoma_sigma_pro_dual_steel_0.8.inst.cfg | 13 + .../dagoma_sigma_pro_steel_0.4.inst.cfg | 14 + .../dagoma_sigma_pro_steel_0.8.inst.cfg | 13 + 51 files changed, 9329 insertions(+) create mode 100644 resources/definitions/dagoma_sigma_pro.def.json create mode 100644 resources/definitions/dagoma_sigma_pro_dual.def.json create mode 100644 resources/extruders/dagoma_sigma_pro_dual_extruder_left.def.json create mode 100644 resources/extruders/dagoma_sigma_pro_dual_extruder_right.def.json create mode 100644 resources/extruders/dagoma_sigma_pro_extruder.def.json create mode 100644 resources/images/dagoma_sigma_pro.png create mode 100644 resources/meshes/dagoma_sigma_pro.obj create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.2.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.4.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.6.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.8.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h1.0.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h1.2.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.2.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.4.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.6.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.8.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h1.0.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h1.2.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.2.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.4.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.6.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.8.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_global_h1.0.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_global_h1.2.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.2.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.4.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.6.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.8.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h1.0.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h1.2.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_global_h0.2.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_global_h0.4.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_global_h0.6.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_global_h0.8.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_global_h1.0.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_global_h1.2.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.2.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.4.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.6.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.8.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h1.0.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h1.2.inst.cfg create mode 100644 resources/variants/dagoma/dagoma_sigma_pro_brass_0.4.inst.cfg create mode 100644 resources/variants/dagoma/dagoma_sigma_pro_brass_0.8.inst.cfg create mode 100644 resources/variants/dagoma/dagoma_sigma_pro_dual_brass_0.4.inst.cfg create mode 100644 resources/variants/dagoma/dagoma_sigma_pro_dual_brass_0.8.inst.cfg create mode 100644 resources/variants/dagoma/dagoma_sigma_pro_dual_steel_0.4.inst.cfg create mode 100644 resources/variants/dagoma/dagoma_sigma_pro_dual_steel_0.8.inst.cfg create mode 100644 resources/variants/dagoma/dagoma_sigma_pro_steel_0.4.inst.cfg create mode 100644 resources/variants/dagoma/dagoma_sigma_pro_steel_0.8.inst.cfg diff --git a/resources/definitions/dagoma_sigma_pro.def.json b/resources/definitions/dagoma_sigma_pro.def.json new file mode 100644 index 0000000000..7369a06564 --- /dev/null +++ b/resources/definitions/dagoma_sigma_pro.def.json @@ -0,0 +1,29 @@ +{ + "version": 2, + "name": "Dagoma Sigma Pro 500Z", + "inherits": "dagoma_delta", + "metadata": + { + "visible": true, + "author": "Dagoma", + "manufacturer": "Dagoma", + "file_formats": "text/x-gcode", + "platform": "dagoma_sigma_pro.obj", + "platform_texture": "dagoma_sigma_pro.png", + "first_start_actions": [ "MachineSettingsAction" ], + "has_machine_quality": true, + "has_variants": true, + "variants_name": "Nozzle", + "machine_extruder_trains": { "0": "dagoma_sigma_pro_extruder" } + }, + "overrides": + { + "machine_heated_bed": { "default_value": true }, + "machine_name": { "default_value": "Dagoma Sigma Pro 500Z" }, + "machine_width": { "default_value": 200 }, + "machine_depth": { "default_value": 200 }, + "machine_height": { "default_value": 501 }, + "machine_start_gcode": { "default_value": ";Start Gcode for {machine_name}\n;Author: Dagoma\n;Sliced: {date} {time}\n;Estimated print time: {print_time}\n;Print speed: {speed_print}mm/s\n;Layer height: {layer_height}mm\n;Wall thickness: {wall_thickness}mm\n;Infill density: {infill_sparse_density}%\n;Infill pattern: {infill_pattern}\n;Support: {support_enable}\n;Print temperature: {material_print_temperature}°C\n;Flow: {material_flow}%\n;Retraction amount: {retraction_amount}mm\n;Retraction speed: {retraction_retract_speed}mm/s\nG28 ;\nG90 ;absolute positioning\n;M190 S{material_bed_temperature_layer_0};\nM109 S140;\nG1 F200 E-1.0\nM106 S255 ;Activating layers fans\nG28 ;Homing\nG29 ;Calibration\nM107 ;Off Ventilateur\nM109 S{material_print_temperature_layer_0} ;Temperature for the first layer only\nG4 S30;\nG92 E0 ;Zero the extruded length again\nG1 E98 F3000\nG92 E0 ;Zero the extruded length again\nG1 F200 E-0.5\nG1 F{speed_travel}\nM117 Printing...\n" }, + "machine_end_gcode": { "default_value": ";End Gcode for {machine_name}\n;Author: Dagoma\nM104 S0\nM107 ;stop fan\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG91 ;Relative positioning\nG1 E-100 F6000;\nG1 E2 F500\nG0 Z15 ;Withdraw\nG90 ; Absolute positioning\nM0 Confirm Bed Free ;Wait user confirm to avoid hit\nG0 F2000 Z529\nM0 Click For Homing ;Wait user confirm to avoid hit\nG28" } + } +} diff --git a/resources/definitions/dagoma_sigma_pro_dual.def.json b/resources/definitions/dagoma_sigma_pro_dual.def.json new file mode 100644 index 0000000000..fc9197c264 --- /dev/null +++ b/resources/definitions/dagoma_sigma_pro_dual.def.json @@ -0,0 +1,33 @@ +{ + "version": 2, + "name": "Dagoma Sigma Pro 500Z", + "inherits": "dagoma_delta", + "metadata": + { + "visible": true, + "author": "Dagoma", + "manufacturer": "Dagoma", + "file_formats": "text/x-gcode", + "platform": "dagoma_sigma_pro.obj", + "platform_texture": "dagoma_sigma_pro.png", + "first_start_actions": [ "MachineSettingsAction" ], + "has_machine_quality": true, + "has_variants": true, + "variants_name": "Nozzle", + "machine_extruder_trains": { + "0": "dagoma_sigma_pro_dual_extruder_right", + "1": "dagoma_sigma_pro_dual_extruder_left" + } + }, + "overrides": + { + "machine_heated_bed": { "default_value": true }, + "machine_extruder_count": { "default_value": 2 }, + "machine_name": { "default_value": "Dagoma Sigma Pro 500Z Dual" }, + "machine_width": { "default_value": 200 }, + "machine_depth": { "default_value": 200 }, + "machine_height": { "default_value": 501 }, + "machine_start_gcode": { "default_value": ";Start Gcode for {machine_name}\n;Author: Dagoma\n;Sliced: {date} {time}\n;Estimated print time: {print_time}\n;Print speed: {speed_print}mm/s\n;Layer height: {layer_height}mm\n;Wall thickness: {wall_thickness}mm\n;Infill density: {infill_sparse_density}%\n;Infill pattern: {infill_pattern}\n;Support: {support_enable}\n;Print temperature: {material_print_temperature}°C\n;Flow: {material_flow}%\n;Retraction amount: {retraction_amount}mm\n;Retraction speed: {retraction_retract_speed}mm/s\nG28 ;\nG90 ;absolute positioning\n;M190 S{material_bed_temperature_layer_0};\nM109 S140;\nG1 F200 E-1.0\nM106 S255 ;Activating layers fans\nG28 ;Homing\nG29 ;Calibration\nM107 ;Off Ventilateur\nM109 S{material_print_temperature_layer_0} ;Temperature for the first layer only\nG4 S30;\nG92 E0 ;Zero the extruded length again\nG1 E98 F3000\nG92 E0 ;Zero the extruded length again\nG1 F200 E-0.5\nG1 F{speed_travel}\nM117 Printing...\n" }, + "machine_end_gcode": { "default_value": ";End Gcode for {machine_name}\n;Author: Dagoma\nM104 S0\nM107 ;stop fan\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG91 ;Relative positioning\nG1 E-100 F6000;\nG1 E2 F500\nG0 Z15 ;Withdraw\nG90 ; Absolute positioning\nM0 Confirm Bed Free ;Wait user confirm to avoid hit\nG0 F2000 Z529\nM0 Click For Homing ;Wait user confirm to avoid hit\nG28" } + } +} diff --git a/resources/extruders/dagoma_sigma_pro_dual_extruder_left.def.json b/resources/extruders/dagoma_sigma_pro_dual_extruder_left.def.json new file mode 100644 index 0000000000..1a4d557227 --- /dev/null +++ b/resources/extruders/dagoma_sigma_pro_dual_extruder_left.def.json @@ -0,0 +1,18 @@ +{ + "version": 2, + "name": "Left Extruder", + "inherits": "fdmextruder", + "metadata": + { + "machine": "dagoma_sigma_pro_dual", + "position": "1" + }, + "overrides": + { + "extruder_nr": { "default_value": 1 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 }, + "machine_extruder_start_code": { "default_value": ";START T1\n;No temperature change\nG1 X0 Y77.5 F8000\nG92 E0\nM83\nG1 E100 F1200\nM82\nG92 E0\n" }, + "machine_extruder_end_code": { "default_value": ";END T1\nG92 E0\nM83\nG1 E-100 F4800\nM82\nG92 E0\n" } + } +} diff --git a/resources/extruders/dagoma_sigma_pro_dual_extruder_right.def.json b/resources/extruders/dagoma_sigma_pro_dual_extruder_right.def.json new file mode 100644 index 0000000000..fe6221ae5f --- /dev/null +++ b/resources/extruders/dagoma_sigma_pro_dual_extruder_right.def.json @@ -0,0 +1,18 @@ +{ + "version": 2, + "name": "Right Extruder", + "inherits": "fdmextruder", + "metadata": + { + "machine": "dagoma_sigma_pro_dual", + "position": "0" + }, + "overrides": + { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 }, + "machine_extruder_start_code": { "default_value": ";START T0\n;No temperature change\nG1 X0 Y77.5 F8000\nG92 E0\nM83\nG1 E100 F1200\nM82\nG92 E0\n" }, + "machine_extruder_end_code": { "default_value": ";END T0\nG92 E0\nM83\nG1 E-100 F4800\nM82\nG92 E0\n" } + } +} diff --git a/resources/extruders/dagoma_sigma_pro_extruder.def.json b/resources/extruders/dagoma_sigma_pro_extruder.def.json new file mode 100644 index 0000000000..3c2c2b69da --- /dev/null +++ b/resources/extruders/dagoma_sigma_pro_extruder.def.json @@ -0,0 +1,16 @@ +{ + "version": 2, + "name": "Extruder", + "inherits": "fdmextruder", + "metadata": + { + "machine": "dagoma_sigma_pro", + "position": "0" + }, + "overrides": + { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/images/dagoma_sigma_pro.png b/resources/images/dagoma_sigma_pro.png new file mode 100644 index 0000000000000000000000000000000000000000..b46c0cfb4b80a8aca556122a11ed4b34f9dbd875 GIT binary patch literal 112233 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 Date: Mon, 28 Aug 2023 16:48:48 +0200 Subject: [PATCH 005/203] Fix typo --- resources/definitions/dagoma_sigma_pro_dual.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/dagoma_sigma_pro_dual.def.json b/resources/definitions/dagoma_sigma_pro_dual.def.json index fc9197c264..d3cf350265 100644 --- a/resources/definitions/dagoma_sigma_pro_dual.def.json +++ b/resources/definitions/dagoma_sigma_pro_dual.def.json @@ -1,6 +1,6 @@ { "version": 2, - "name": "Dagoma Sigma Pro 500Z", + "name": "Dagoma Sigma Pro 500Z Dual", "inherits": "dagoma_delta", "metadata": { From 481ebf748e9e78a207f418061b9cf821930c32dd Mon Sep 17 00:00:00 2001 From: 0r31 Date: Mon, 28 Aug 2023 19:02:19 +0200 Subject: [PATCH 006/203] Review qualities as it was nonsense (Layer height <= 80% of nozzle size) --- .../dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg | 14 ++++++++++++++ ...dagoma_sigma_pro_brass_0.4_pla_h0.3.inst.cfg} | 2 +- ...dagoma_sigma_pro_brass_0.8_pla_h0.2.inst.cfg} | 4 ++-- ...dagoma_sigma_pro_brass_0.8_pla_h0.4.inst.cfg} | 2 +- ...dagoma_sigma_pro_brass_0.8_pla_h0.6.inst.cfg} | 2 +- .../dagoma_sigma_pro_brass_0.8_pla_h1.2.inst.cfg | 14 -------------- ...ma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg | 14 ++++++++++++++ ...a_sigma_pro_dual_brass_0.4_pla_h0.3.inst.cfg} | 2 +- ...a_sigma_pro_dual_brass_0.8_pla_h0.2.inst.cfg} | 4 ++-- ...a_sigma_pro_dual_brass_0.8_pla_h0.4.inst.cfg} | 2 +- ...a_sigma_pro_dual_brass_0.8_pla_h0.6.inst.cfg} | 2 +- ...ma_sigma_pro_dual_brass_0.8_pla_h1.2.inst.cfg | 14 -------------- ...> dagoma_sigma_pro_dual_global_h0.1.inst.cfg} | 6 +++--- ...> dagoma_sigma_pro_dual_global_h0.3.inst.cfg} | 6 +++--- .../dagoma_sigma_pro_dual_global_h0.6.inst.cfg | 2 +- .../dagoma_sigma_pro_dual_global_h1.2.inst.cfg | 16 ---------------- ...ma_sigma_pro_dual_steel_0.4_pla_h0.1.inst.cfg | 14 ++++++++++++++ ...a_sigma_pro_dual_steel_0.4_pla_h0.3.inst.cfg} | 2 +- ...a_sigma_pro_dual_steel_0.8_pla_h0.2.inst.cfg} | 4 ++-- ...a_sigma_pro_dual_steel_0.8_pla_h0.4.inst.cfg} | 2 +- ...a_sigma_pro_dual_steel_0.8_pla_h0.6.inst.cfg} | 2 +- ...ma_sigma_pro_dual_steel_0.8_pla_h1.2.inst.cfg | 14 -------------- ...cfg => dagoma_sigma_pro_global_h0.1.inst.cfg} | 6 +++--- ...cfg => dagoma_sigma_pro_global_h0.3.inst.cfg} | 6 +++--- .../dagoma/dagoma_sigma_pro_global_h0.6.inst.cfg | 2 +- .../dagoma/dagoma_sigma_pro_global_h1.2.inst.cfg | 16 ---------------- .../dagoma_sigma_pro_steel_0.4_pla_h0.1.inst.cfg | 14 ++++++++++++++ ...dagoma_sigma_pro_steel_0.4_pla_h0.3.inst.cfg} | 2 +- ...dagoma_sigma_pro_steel_0.8_pla_h0.2.inst.cfg} | 4 ++-- ...dagoma_sigma_pro_steel_0.8_pla_h0.4.inst.cfg} | 2 +- ...dagoma_sigma_pro_steel_0.8_pla_h0.6.inst.cfg} | 2 +- .../dagoma_sigma_pro_steel_0.8_pla_h1.2.inst.cfg | 14 -------------- 32 files changed, 90 insertions(+), 122 deletions(-) create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg rename resources/quality/dagoma/{dagoma_sigma_pro_brass_0.4_pla_h0.6.inst.cfg => dagoma_sigma_pro_brass_0.4_pla_h0.3.inst.cfg} (89%) rename resources/quality/dagoma/{dagoma_sigma_pro_brass_0.8_pla_h1.0.inst.cfg => dagoma_sigma_pro_brass_0.8_pla_h0.2.inst.cfg} (83%) rename resources/quality/dagoma/{dagoma_sigma_pro_brass_0.4_pla_h0.4.inst.cfg => dagoma_sigma_pro_brass_0.8_pla_h0.4.inst.cfg} (88%) rename resources/quality/dagoma/{dagoma_sigma_pro_brass_0.8_pla_h0.8.inst.cfg => dagoma_sigma_pro_brass_0.8_pla_h0.6.inst.cfg} (90%) delete mode 100644 resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h1.2.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg rename resources/quality/dagoma/{dagoma_sigma_pro_dual_brass_0.4_pla_h0.6.inst.cfg => dagoma_sigma_pro_dual_brass_0.4_pla_h0.3.inst.cfg} (90%) rename resources/quality/dagoma/{dagoma_sigma_pro_dual_brass_0.8_pla_h1.0.inst.cfg => dagoma_sigma_pro_dual_brass_0.8_pla_h0.2.inst.cfg} (83%) rename resources/quality/dagoma/{dagoma_sigma_pro_dual_brass_0.4_pla_h0.4.inst.cfg => dagoma_sigma_pro_dual_brass_0.8_pla_h0.4.inst.cfg} (89%) rename resources/quality/dagoma/{dagoma_sigma_pro_dual_brass_0.8_pla_h0.8.inst.cfg => dagoma_sigma_pro_dual_brass_0.8_pla_h0.6.inst.cfg} (90%) delete mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h1.2.inst.cfg rename resources/quality/dagoma/{dagoma_sigma_pro_dual_global_h1.0.inst.cfg => dagoma_sigma_pro_dual_global_h0.1.inst.cfg} (76%) rename resources/quality/dagoma/{dagoma_sigma_pro_dual_global_h0.8.inst.cfg => dagoma_sigma_pro_dual_global_h0.3.inst.cfg} (75%) delete mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_global_h1.2.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.1.inst.cfg rename resources/quality/dagoma/{dagoma_sigma_pro_dual_steel_0.4_pla_h0.6.inst.cfg => dagoma_sigma_pro_dual_steel_0.4_pla_h0.3.inst.cfg} (90%) rename resources/quality/dagoma/{dagoma_sigma_pro_dual_steel_0.8_pla_h1.0.inst.cfg => dagoma_sigma_pro_dual_steel_0.8_pla_h0.2.inst.cfg} (83%) rename resources/quality/dagoma/{dagoma_sigma_pro_dual_steel_0.4_pla_h0.4.inst.cfg => dagoma_sigma_pro_dual_steel_0.8_pla_h0.4.inst.cfg} (89%) rename resources/quality/dagoma/{dagoma_sigma_pro_dual_steel_0.8_pla_h0.8.inst.cfg => dagoma_sigma_pro_dual_steel_0.8_pla_h0.6.inst.cfg} (90%) delete mode 100644 resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h1.2.inst.cfg rename resources/quality/dagoma/{dagoma_sigma_pro_global_h1.0.inst.cfg => dagoma_sigma_pro_global_h0.1.inst.cfg} (75%) rename resources/quality/dagoma/{dagoma_sigma_pro_global_h0.8.inst.cfg => dagoma_sigma_pro_global_h0.3.inst.cfg} (74%) delete mode 100644 resources/quality/dagoma/dagoma_sigma_pro_global_h1.2.inst.cfg create mode 100644 resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.1.inst.cfg rename resources/quality/dagoma/{dagoma_sigma_pro_steel_0.4_pla_h0.6.inst.cfg => dagoma_sigma_pro_steel_0.4_pla_h0.3.inst.cfg} (89%) rename resources/quality/dagoma/{dagoma_sigma_pro_steel_0.8_pla_h1.0.inst.cfg => dagoma_sigma_pro_steel_0.8_pla_h0.2.inst.cfg} (83%) rename resources/quality/dagoma/{dagoma_sigma_pro_steel_0.4_pla_h0.4.inst.cfg => dagoma_sigma_pro_steel_0.8_pla_h0.4.inst.cfg} (88%) rename resources/quality/dagoma/{dagoma_sigma_pro_steel_0.8_pla_h0.8.inst.cfg => dagoma_sigma_pro_steel_0.8_pla_h0.6.inst.cfg} (90%) delete mode 100644 resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h1.2.inst.cfg diff --git a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg new file mode 100644 index 0000000000..dc662ba1a2 --- /dev/null +++ b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg @@ -0,0 +1,14 @@ +[general] +definition = dagoma_sigma_pro +name = Fine +version = 4 + +[metadata] +material = generic_pla +quality_type = h0.1 +setting_version = 22 +type = quality +variant = Brass 0.4mm +weight = 1 + +[values] diff --git a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.6.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.3.inst.cfg similarity index 89% rename from resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.6.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.3.inst.cfg index b1671b0c9a..7b4eb8d5a1 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.6.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.3.inst.cfg @@ -5,7 +5,7 @@ version = 4 [metadata] material = generic_pla -quality_type = h0.6 +quality_type = h0.3 setting_version = 22 type = quality variant = Brass 0.4mm diff --git a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h1.0.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.2.inst.cfg similarity index 83% rename from resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h1.0.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.2.inst.cfg index 6822dc3e3e..0a75550fae 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h1.0.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.2.inst.cfg @@ -1,11 +1,11 @@ [general] definition = dagoma_sigma_pro -name = Coarse +name = Normal version = 4 [metadata] material = generic_pla -quality_type = h1.0 +quality_type = h0.2 setting_version = 22 type = quality variant = Brass 0.8mm diff --git a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.4.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.4.inst.cfg similarity index 88% rename from resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.4.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.4.inst.cfg index 638725db0a..6abc8f22f0 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.4.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.4.inst.cfg @@ -8,7 +8,7 @@ material = generic_pla quality_type = h0.4 setting_version = 22 type = quality -variant = Brass 0.4mm +variant = Brass 0.8mm weight = 1 [values] diff --git a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.8.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.6.inst.cfg similarity index 90% rename from resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.8.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.6.inst.cfg index 80754210f4..e178cf7c3b 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.8.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.6.inst.cfg @@ -5,7 +5,7 @@ version = 4 [metadata] material = generic_pla -quality_type = h0.8 +quality_type = h0.6 setting_version = 22 type = quality variant = Brass 0.8mm diff --git a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h1.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h1.2.inst.cfg deleted file mode 100644 index 3b5099b26d..0000000000 --- a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h1.2.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -definition = dagoma_sigma_pro -name = Extra Coarse -version = 4 - -[metadata] -material = generic_pla -quality_type = h1.2 -setting_version = 22 -type = quality -variant = Brass 0.8mm -weight = 1 - -[values] diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg new file mode 100644 index 0000000000..f9e20a0011 --- /dev/null +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg @@ -0,0 +1,14 @@ +[general] +definition = dagoma_sigma_pro_dual +name = Fine +version = 4 + +[metadata] +material = generic_pla +quality_type = h0.1 +setting_version = 22 +type = quality +variant = Brass 0.4mm +weight = 1 + +[values] diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.6.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.3.inst.cfg similarity index 90% rename from resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.6.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.3.inst.cfg index c7c6ea1f26..13205d114a 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.6.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.3.inst.cfg @@ -5,7 +5,7 @@ version = 4 [metadata] material = generic_pla -quality_type = h0.6 +quality_type = h0.3 setting_version = 22 type = quality variant = Brass 0.4mm diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h1.0.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.2.inst.cfg similarity index 83% rename from resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h1.0.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.2.inst.cfg index b59995955c..36d96fb985 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h1.0.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.2.inst.cfg @@ -1,11 +1,11 @@ [general] definition = dagoma_sigma_pro_dual -name = Coarse +name = Normal version = 4 [metadata] material = generic_pla -quality_type = h1.0 +quality_type = h0.2 setting_version = 22 type = quality variant = Brass 0.8mm diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.4.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.4.inst.cfg similarity index 89% rename from resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.4.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.4.inst.cfg index 249375bde1..42e2b6218d 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.4.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.4.inst.cfg @@ -8,7 +8,7 @@ material = generic_pla quality_type = h0.4 setting_version = 22 type = quality -variant = Brass 0.4mm +variant = Brass 0.8mm weight = 1 [values] diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.8.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.6.inst.cfg similarity index 90% rename from resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.8.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.6.inst.cfg index ee980fb284..f3c7b09f5c 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.8.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.6.inst.cfg @@ -5,7 +5,7 @@ version = 4 [metadata] material = generic_pla -quality_type = h0.8 +quality_type = h0.6 setting_version = 22 type = quality variant = Brass 0.8mm diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h1.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h1.2.inst.cfg deleted file mode 100644 index 710fe5c29a..0000000000 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h1.2.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -definition = dagoma_sigma_pro_dual -name = Extra Coarse -version = 4 - -[metadata] -material = generic_pla -quality_type = h1.2 -setting_version = 22 -type = quality -variant = Brass 0.8mm -weight = 1 - -[values] diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_global_h1.0.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.1.inst.cfg similarity index 76% rename from resources/quality/dagoma/dagoma_sigma_pro_dual_global_h1.0.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.1.inst.cfg index 0cd101d39d..62b8f6da3e 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_global_h1.0.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.1.inst.cfg @@ -1,16 +1,16 @@ [general] definition = dagoma_sigma_pro_dual -name = Coarse +name = Fine version = 4 [metadata] global_quality = True material = generic_pla -quality_type = h1.0 +quality_type = h0.1 setting_version = 22 type = quality weight = 1 [values] -layer_height = 1.0 +layer_height = 0.1 diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.8.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.3.inst.cfg similarity index 75% rename from resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.8.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.3.inst.cfg index 19eaffad14..3f2f23cc15 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.8.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.3.inst.cfg @@ -1,16 +1,16 @@ [general] definition = dagoma_sigma_pro_dual -name = Very Fast +name = Draft version = 4 [metadata] global_quality = True material = generic_pla -quality_type = h0.8 +quality_type = h0.3 setting_version = 22 type = quality weight = 1 [values] -layer_height = 0.8 +layer_height = 0.3 diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.6.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.6.inst.cfg index bef6d08eeb..45f5d6f59b 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.6.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_global_h0.6.inst.cfg @@ -1,6 +1,6 @@ [general] definition = dagoma_sigma_pro_dual -name = Draft +name = Very Fast version = 4 [metadata] diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_global_h1.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_global_h1.2.inst.cfg deleted file mode 100644 index 74bf3c47f9..0000000000 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_global_h1.2.inst.cfg +++ /dev/null @@ -1,16 +0,0 @@ -[general] -definition = dagoma_sigma_pro_dual -name = Extra Coarse -version = 4 - -[metadata] -global_quality = True -material = generic_pla -quality_type = h1.2 -setting_version = 22 -type = quality -weight = 1 - -[values] -layer_height = 1.2 - diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.1.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.1.inst.cfg new file mode 100644 index 0000000000..2026c66f31 --- /dev/null +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.1.inst.cfg @@ -0,0 +1,14 @@ +[general] +definition = dagoma_sigma_pro_dual +name = Fine +version = 4 + +[metadata] +material = generic_pla +quality_type = h0.1 +setting_version = 22 +type = quality +variant = Steel 0.4mm +weight = 1 + +[values] diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.6.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.3.inst.cfg similarity index 90% rename from resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.6.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.3.inst.cfg index 52841de6b8..40188c628f 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.6.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.3.inst.cfg @@ -5,7 +5,7 @@ version = 4 [metadata] material = generic_pla -quality_type = h0.6 +quality_type = h0.3 setting_version = 22 type = quality variant = Steel 0.4mm diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h1.0.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.2.inst.cfg similarity index 83% rename from resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h1.0.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.2.inst.cfg index eb962e7d1e..ce1eb96fb0 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h1.0.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.2.inst.cfg @@ -1,11 +1,11 @@ [general] definition = dagoma_sigma_pro_dual -name = Coarse +name = Normal version = 4 [metadata] material = generic_pla -quality_type = h1.0 +quality_type = h0.2 setting_version = 22 type = quality variant = Steel 0.8mm diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.4.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.4.inst.cfg similarity index 89% rename from resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.4.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.4.inst.cfg index 8ab3e5c409..f9b9dd7bd3 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.4.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.4.inst.cfg @@ -8,7 +8,7 @@ material = generic_pla quality_type = h0.4 setting_version = 22 type = quality -variant = Steel 0.4mm +variant = Steel 0.8mm weight = 1 [values] diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.8.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.6.inst.cfg similarity index 90% rename from resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.8.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.6.inst.cfg index 4ba4f3e4d1..cd487c1b3f 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.8.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.6.inst.cfg @@ -5,7 +5,7 @@ version = 4 [metadata] material = generic_pla -quality_type = h0.8 +quality_type = h0.6 setting_version = 22 type = quality variant = Steel 0.8mm diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h1.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h1.2.inst.cfg deleted file mode 100644 index c7df9841f5..0000000000 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h1.2.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -definition = dagoma_sigma_pro_dual -name = Extra Coarse -version = 4 - -[metadata] -material = generic_pla -quality_type = h1.2 -setting_version = 22 -type = quality -variant = Steel 0.8mm -weight = 1 - -[values] diff --git a/resources/quality/dagoma/dagoma_sigma_pro_global_h1.0.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_global_h0.1.inst.cfg similarity index 75% rename from resources/quality/dagoma/dagoma_sigma_pro_global_h1.0.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_global_h0.1.inst.cfg index e777dd8c45..ddcdb5a4e4 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_global_h1.0.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_global_h0.1.inst.cfg @@ -1,16 +1,16 @@ [general] definition = dagoma_sigma_pro -name = Coarse +name = Fine version = 4 [metadata] global_quality = True material = generic_pla -quality_type = h1.0 +quality_type = h0.1 setting_version = 22 type = quality weight = 1 [values] -layer_height = 1.0 +layer_height = 0.1 diff --git a/resources/quality/dagoma/dagoma_sigma_pro_global_h0.8.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_global_h0.3.inst.cfg similarity index 74% rename from resources/quality/dagoma/dagoma_sigma_pro_global_h0.8.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_global_h0.3.inst.cfg index 47993b661e..a648eee325 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_global_h0.8.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_global_h0.3.inst.cfg @@ -1,16 +1,16 @@ [general] definition = dagoma_sigma_pro -name = Very Fast +name = Draft version = 4 [metadata] global_quality = True material = generic_pla -quality_type = h0.8 +quality_type = h0.3 setting_version = 22 type = quality weight = 1 [values] -layer_height = 0.8 +layer_height = 0.3 diff --git a/resources/quality/dagoma/dagoma_sigma_pro_global_h0.6.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_global_h0.6.inst.cfg index cf64f98c74..70c094d2e3 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_global_h0.6.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_global_h0.6.inst.cfg @@ -1,6 +1,6 @@ [general] definition = dagoma_sigma_pro -name = Draft +name = Very Fast version = 4 [metadata] diff --git a/resources/quality/dagoma/dagoma_sigma_pro_global_h1.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_global_h1.2.inst.cfg deleted file mode 100644 index bf704f15d0..0000000000 --- a/resources/quality/dagoma/dagoma_sigma_pro_global_h1.2.inst.cfg +++ /dev/null @@ -1,16 +0,0 @@ -[general] -definition = dagoma_sigma_pro -name = Extra Coarse -version = 4 - -[metadata] -global_quality = True -material = generic_pla -quality_type = h1.2 -setting_version = 22 -type = quality -weight = 1 - -[values] -layer_height = 1.2 - diff --git a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.1.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.1.inst.cfg new file mode 100644 index 0000000000..a681f06ca0 --- /dev/null +++ b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.1.inst.cfg @@ -0,0 +1,14 @@ +[general] +definition = dagoma_sigma_pro +name = Fine +version = 4 + +[metadata] +material = generic_pla +quality_type = h0.1 +setting_version = 22 +type = quality +variant = Steel 0.4mm +weight = 1 + +[values] diff --git a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.6.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.3.inst.cfg similarity index 89% rename from resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.6.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.3.inst.cfg index 5053a407bc..16a4921dfd 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.6.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.3.inst.cfg @@ -5,7 +5,7 @@ version = 4 [metadata] material = generic_pla -quality_type = h0.6 +quality_type = h0.3 setting_version = 22 type = quality variant = Steel 0.4mm diff --git a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h1.0.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.2.inst.cfg similarity index 83% rename from resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h1.0.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.2.inst.cfg index 8ec936e5de..7438eb7e0e 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h1.0.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.2.inst.cfg @@ -1,11 +1,11 @@ [general] definition = dagoma_sigma_pro -name = Coarse +name = Normal version = 4 [metadata] material = generic_pla -quality_type = h1.0 +quality_type = h0.2 setting_version = 22 type = quality variant = Steel 0.8mm diff --git a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.4.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.4.inst.cfg similarity index 88% rename from resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.4.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.4.inst.cfg index 89e00edad7..b8fbabeec4 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.4.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.4.inst.cfg @@ -8,7 +8,7 @@ material = generic_pla quality_type = h0.4 setting_version = 22 type = quality -variant = Steel 0.4mm +variant = Steel 0.8mm weight = 1 [values] diff --git a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.8.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.6.inst.cfg similarity index 90% rename from resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.8.inst.cfg rename to resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.6.inst.cfg index c936b25d82..ebf6084c4a 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.8.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.6.inst.cfg @@ -5,7 +5,7 @@ version = 4 [metadata] material = generic_pla -quality_type = h0.8 +quality_type = h0.6 setting_version = 22 type = quality variant = Steel 0.8mm diff --git a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h1.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h1.2.inst.cfg deleted file mode 100644 index 5c1103190d..0000000000 --- a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h1.2.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -definition = dagoma_sigma_pro -name = Extra Coarse -version = 4 - -[metadata] -material = generic_pla -quality_type = h1.2 -setting_version = 22 -type = quality -variant = Steel 0.8mm -weight = 1 - -[values] From cda49f4d6f83571ce2510be11aabb9c37f985a15 Mon Sep 17 00:00:00 2001 From: 0r31 Date: Mon, 28 Aug 2023 19:28:47 +0200 Subject: [PATCH 007/203] Add preferred profile + change image used for uv mapping --- .../definitions/dagoma_sigma_pro.def.json | 5 ++++- .../dagoma_sigma_pro_dual.def.json | 5 ++++- resources/images/dagoma_sigma_pro.png | Bin 112233 -> 111788 bytes 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/resources/definitions/dagoma_sigma_pro.def.json b/resources/definitions/dagoma_sigma_pro.def.json index 7369a06564..9e656d19e9 100644 --- a/resources/definitions/dagoma_sigma_pro.def.json +++ b/resources/definitions/dagoma_sigma_pro.def.json @@ -14,7 +14,10 @@ "has_machine_quality": true, "has_variants": true, "variants_name": "Nozzle", - "machine_extruder_trains": { "0": "dagoma_sigma_pro_extruder" } + "machine_extruder_trains": { "0": "dagoma_sigma_pro_extruder" }, + "preferred_quality_type": "h0.2", + "preferred_variant_name": "Brass 0.4mm", + "quality_definition": "dagoma_sigma_pro" }, "overrides": { diff --git a/resources/definitions/dagoma_sigma_pro_dual.def.json b/resources/definitions/dagoma_sigma_pro_dual.def.json index d3cf350265..6d296dc3ec 100644 --- a/resources/definitions/dagoma_sigma_pro_dual.def.json +++ b/resources/definitions/dagoma_sigma_pro_dual.def.json @@ -17,7 +17,10 @@ "machine_extruder_trains": { "0": "dagoma_sigma_pro_dual_extruder_right", "1": "dagoma_sigma_pro_dual_extruder_left" - } + }, + "preferred_quality_type": "h0.2", + "preferred_variant_name": "Brass 0.4mm", + "quality_definition": "dagoma_sigma_pro_dual" }, "overrides": { diff --git a/resources/images/dagoma_sigma_pro.png b/resources/images/dagoma_sigma_pro.png index b46c0cfb4b80a8aca556122a11ed4b34f9dbd875..900f334c17f27e6e63050866bcbbebe63e0c2f6c 100644 GIT binary patch literal 111788 zcmZsD2|Sf)`~PzevM)sx64N4eib_$)(o|EjMD}nHg)EbOKZUd@GbAB2S<2F(lI$l+ zi#0;X(v*G8zWZPIbIxgI-v7_%^Umqze(vYGul0K^_qnF4eTz2}Sb#!?6Q*5XDLA}k+^Vx_uc_o zD_I8Ws3*QHS80&bc9S?oO&Cm&_z@ykle6lA_ii1oZ2?+++m!t4R6GtTaed8r@KA_j z{&_(B{KfNqIbM<1U?YmjR*V%strML@nOT&lA`*dkJo-(IUqWGNOU`5jN)pd8hp^) z7V3So!Y(BoOB+`{^hfU>uG;svj(p!StjRT(+#u%>c5kLn{x2aO-*tSk{=!d>Nv~0n z*aL5`d)N>vvFb{u3=3?M5QhoC$5@Q4)_{-Vz21+ywIYJP68CB*jFWo*c&xm2oOX9B zpGy4x$@ApCA2Nq;Yp?TNC+zE9AMsuT(O|<$fe-Sv*Ty5t{ugRyVkgdLONR#5FZ4$G z4%pMqdCV`$eX`NukIz0P&7;D@9pJg{X&B*wY}v0etdohu-+I*_+>YJL%O8HUFi#ID zu5cnw5b5f%rr%X~W|AWlN{!1KwTA2uD?2tc^}b4wf1hSn&Q^8l{i%2L-;=&u>Gqv3 z<>gm7bZT2@aQ%Fa5YGw1gD@#6$G3sz}rtLL=PDKwIEg*&>bckpe= zfz6YyrgaOq4fR9N+C%iUH)oqDI;Mqpx*u5BJCv-^NN@0p^rMK3x&B!vFXUcV6x39t zu&;RIzT7R6NU(cPVjS?Hef*}a>D#HXcZH>XVv5)YYg>^k`=G9pE?u9-a~ zy=U>9QNxLxupJdgAAWRBho@+qf*44YVl(;MyI!l8(po>(dyYzF@|75WypuXD|CV(l z`H4!rWK`3&lnK{2pUWFt?rcMZu7Y~s`>#nW;^CeRd*Mljm329S1m(A| z`Rmp7T78zDl1Ti%={w8V83}Io0FR4xSv|@;Y$^I6rN`{>kpDGYNSecc*dMZYYMzOW zOr3k~Sd^;o@B6?)MS*uVIZ3D8vHTDgpX9sdsr;60Y{B&tUxRz{&2|fGm~M#Hjuo9e zHFLoMsh*}5Vjv}DEG5@mrZ3XLSN4!)OQY6=ed0p(T5NA`Uy}KzX;+83@;lbU&y!Xz zXvYdiT~=?p26D}oXQjXn#@jmAO&)hFOw|uCJlwahc1N|FFFScz>y}1zD(i;f(6JUP zF&>BJYn-dlGh_HOF=o4?`O8&qQ%6n+1{ls?K7{%2TPJ^CT>k#L$!-H{8KEegy>edk z)jqqUowCz-=aTDmd^@xsBpl2dcv`?sIX6XL+tJ3UF0(Gmfr~x-=)?9&J|JqZCVs4Y zsaKwnFZ%%hl%q&C%P|*L41Q+*Wpw9>d?v zj&G;BTkxA$_)ARp^J?7Rx^ULVjSZYE(zf+|=SOeo>Z%-fEUS-7dcMDEKn^HQWu?G> zqjhiE#`Z-LRac5L+N?ar-fX7|Exz~D62oF-A|LMOh$5;tthKJ55XmTCwoC^r^#ye& zU&B2E>7}&x%zM8#?tj$|9LOlb$Ta~a2ZzSgm3E)Mc=iNvh4v?YG-J8l(K#|o)pIW9 z?R>?7kNkq|yUvL&?rvwtgqt7gUrrq?=hIWrVk>BjUpe6+-?|}XD^PYr9q9|X#$&KZ zuTENPriIT$BJEP5e0!RL96Z@aRQJ;gs9SY;;5ZkSqN^J#0Hiiu0hUzlCP;!B91ygb zlN*|NbC4=D-k+7LA6Or<5u>#Ttg z+9d@*h2`{FDHym=Ex!C;bSpp_p9m%53U#>QK`)FbRdU#Cm7YvrVR#}ts;x0Zu zKvczO7w3D_>Xbl8vBK~t+HRct-s*_^maKu}7Q1=plW96Z=3VTVB->@ak-SS_JF(&^ zQ{>yLE+6gR2=T9L4i~NR!*!K^$*4Ni1i92`zZ+NNU7S>COs>REEPOn#z!m~Td!Hbx!H14i#l5Y?rU*IL02BcRXQ;jvCNB=jy$bf`be4%uflrwEPTyAmMrWQvG& zz4kBJHFVxZl+U54A^!QUA!G%(S5nqMk0pJ~nwq!%pkq3C=kg($F`FzAjMn1wauA63S;pqRZ6m z57sHAvVcxiom)H>7oijp>8)w0?FG$?yb9YrOz8&jqDl+YyjxWFQE21yP z4~hD2?1XA+ZnI0;V&)U{gxU@*_Jc*8+UyPqVx#iCOQ!+c3GpEfXXx7v-RGeDGDhds3&#TEN;>n+TF%mAm}ybDM8#02eZf z4QoT~*)U44y!mR+*`%zv`}Pwq&4x=FzYV?$ zY>pRN^%UQIJ-++BK@C-zF*ljBKK`W1$nJ(9AhYJQijOkSX`OocB>4?}US(>qxd{#} zYJR=hosyc|XrapGL-i(2g3j+9$&su3{>Z_!)TO2ntcQyYBp$z=APJgy`n9pJ*71zu z);b-k<)>oxN6jxZCgPV@!`XC>u}igW3>!Kxs}dx!%0b(7ZFC1bs2zpW%hkG|uJ(3p zq=xEU@Lp_zsSRL%^T&X7IVW$W>R-~61V=7v|BEgc%aX-9ke#9o5fPa)f1>Z4hrqz| zR?R+k(4Gl79(PySkmq|&;)|s4McfM)`_73@`>dOPKR$UIp1PPJ-5{r{__Ep1N)m`( z$B95*?Usr?`@8krIxf__sN;v=l|sF8$$6i2=%tSJ;hx7H!;&!)D+P2ktx0P>|BLv8 zjX(yUB`-_6bIoY%gjwVz^tUZYfBiQNf*87@j0J(Y%F+b%mK`C1@ZX!9$UbUuyNy{h zPrxYaxA34RxX~ixi@T%m#{LOhI85C*kejuCGIAz$1}NsaC$4o^tz}s;96J7VU# z(Cp({-cX>2ygFH~E?B2+tySbhp;ad$F9j-y4tFGUfS9>)TqSIL)Aqs%uBD>&;}-E( z0zn~7rvPS?9z6{1Kb^FTN8aIJspdKPRxM-#M5K=tHbEN``RkZo9Ti^R2F}J#Z1BR)+2%5Per^^9W z*be?OiwmggiAU;Em9wt$e(EB%2c7wd>F7S*rL%LB5{SzK@8x--nnFS!2Fr8y%~a2o zBB0Z+0#O2oV&t0F#ucfH=5D(}i$ofpC(eJ7ldo;?Lz3HnfU5;q@mMYL;i-n>k(ZWz z7{`hiK*u^DfR1&ndaf{{yRBiZrG0Dd0NEGVJ@(hr@?wGMw@&LGC46xpm zMRd7xRthlr${S+~hYxYp`SQF=5E#~4Vi+d9EsKMjeWq1TS7~jZ7ah;jcyI=;7qrQ5 zj}n^C7azCyqsdRJT-6XUFl}cRhtf+`bHOI%wBu@}PTE{7DV*xS_M13;>&KGUT27JI zX;4**0dy$3A$wc+bX^W?PaUz?^-957O9(M{vu43-^t`!i7?Sc>ZPau%=;*m)NJq3y zkg!dEOxeBj%aOQ{`(Wda65xzaq+!T#CvQuKqRQ>qn$dbN2L%0HPq0#ulD{^#aQ?93 zP*Wp6_Uy&lfyP$|zmhv_!~CR%ZnyQTNqupsSpj`*aF>MTA;{QhoY!-{IG>1}b~^y_ zQ(1SVKb=ZSL|R9R_uXU88$BE#TJ}-B(Or*Y8vq>@bf8=Jk>tgnF(PeeD5+EXQliiz zXYn$UJlS4+!^vO>uR;jnEV;P_ssdag!y~RIaXMq%8v>V~98l%T2>wfZM@fCUEC#49 z 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%0AxLhpN$a92m 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

%7dBFhuGE`NI_ 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 literal 112233 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 Date: Tue, 29 Aug 2023 14:11:11 +0200 Subject: [PATCH 008/203] Add custom settings for 0.1 layer height --- ...goma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg | 61 ++++++++++++++++++ ...sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg | 62 +++++++++++++++++++ 2 files changed, 123 insertions(+) diff --git a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg index dc662ba1a2..f0a7e5dbde 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg @@ -12,3 +12,64 @@ variant = Brass 0.4mm weight = 1 [values] +adhesion_type = brim +bridge_settings_enabled = True +brim_width = 2 +coasting_enable = True +coasting_volume = 0.06 +cool_fan_full_layer = 5 +cool_min_layer_time = 7 +cool_min_temperature = 195 +infill_material_flow = 105 +infill_sparse_density = 15 +material_final_print_temperature = 196 +material_flow_layer_0 = 100 +material_initial_print_temperature = 196 +material_print_temperature = 196 +material_print_temperature_layer_0 = 196 +material_standby_temperature = 195 +ooze_shield_enabled = False +prime_tower_brim_enable = True +prime_tower_enable = True +prime_tower_min_volume = 44 +prime_tower_position_x = 12.5 +prime_tower_position_y = 65 +prime_tower_size = 25 +prime_tower_wipe_enabled = False +retraction_amount = 3.0 +retraction_combing = infill +retraction_hop = 0.4 +retraction_hop_after_extruder_switch_height = 0 +retraction_hop_enabled = True +retraction_prime_speed = 45 +retraction_retract_speed = 60 +retraction_speed = 80 +smooth_spiralized_contours = False +speed_infill = 80 +speed_layer_0 = 22 +speed_prime_tower = 70 +speed_print = 35 +speed_slowdown_layers = 3 +speed_topbottom = 35 +speed_travel = 180 +speed_travel_layer_0 = 70 +speed_wall_0 = 25 +speed_wall_x = 35.0 +speed_z_hop = 120 +support_enable = False +support_tree_angle = 55 +support_tree_top_rate = =30 if support_roof_enable else 10 +support_structure = tree +switch_extruder_extra_prime_amount = 0 +switch_extruder_prime_speed = 20 +switch_extruder_retraction_amount = 80 +switch_extruder_retraction_speed = =switch_extruder_retraction_speeds +switch_extruder_retraction_speeds = 80 +travel_avoid_distance = 2.0 +travel_avoid_other_parts = False +travel_avoid_supports = True +wall_0_material_flow = =wall_material_flow +wall_0_material_flow_layer_0 = 85 +wall_thickness = 0.8 +wall_transition_length = 0.4 +wall_x_material_flow_layer_0 = 90 diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg index f9e20a0011..19e1adcd1c 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg @@ -12,3 +12,65 @@ variant = Brass 0.4mm weight = 1 [values] +adhesion_type = brim +bridge_settings_enabled = True +brim_width = 2 +coasting_enable = True +coasting_volume = 0.1 +cool_fan_full_layer = 5 +cool_min_layer_time = 7 +cool_min_temperature = 195 +infill_material_flow = 105 +infill_sparse_density = 15 +material_final_print_temperature = 196 +material_flow_layer_0 = 100 +material_initial_print_temperature = 196 +material_print_temperature = 196 +material_print_temperature_layer_0 = 196 +material_standby_temperature = 196 +ooze_shield_enabled = False +prime_tower_brim_enable = True +prime_tower_enable = True +prime_tower_min_volume = 24 +prime_tower_position_x = 12.5 +prime_tower_position_y = 65 +prime_tower_size = 25 +prime_tower_wipe_enabled = True +retraction_amount = 10 +retraction_combing = infill +retraction_extrusion_window = 10.0 +retraction_hop = 0.4 +retraction_hop_after_extruder_switch_height = 0 +retraction_hop_enabled = True +retraction_prime_speed = 60 +retraction_retract_speed = 90 +retraction_speed = 80 +smooth_spiralized_contours = False +speed_infill = 80 +speed_layer_0 = 22 +speed_prime_tower = 70 +speed_print = 35 +speed_slowdown_layers = 3 +speed_topbottom = 35 +speed_travel = 180 +speed_travel_layer_0 = 70 +speed_wall_0 = 25 +speed_wall_x = 35.0 +speed_z_hop = 120 +support_enable = False +support_structure = tree +support_tree_angle = 55 +support_tree_top_rate = =30 if support_roof_enable else 10 +switch_extruder_extra_prime_amount = 0 +switch_extruder_prime_speed = 20 +switch_extruder_retraction_amount = 0 +switch_extruder_retraction_speed = =switch_extruder_retraction_speeds +switch_extruder_retraction_speeds = 75 +travel_avoid_distance = 2.0 +travel_avoid_other_parts = False +travel_avoid_supports = True +wall_0_material_flow = =wall_material_flow +wall_0_material_flow_layer_0 = 85 +wall_thickness = 1.2 +wall_transition_length = 0.4 +wall_x_material_flow_layer_0 = 90 From 70947dbb205c5f372e9986267c1cce1b0889f85f Mon Sep 17 00:00:00 2001 From: 0r31 Date: Tue, 29 Aug 2023 14:26:17 +0200 Subject: [PATCH 009/203] Change build plate texture --- resources/images/dagoma_sigma_pro.png | Bin 111788 -> 114025 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/images/dagoma_sigma_pro.png b/resources/images/dagoma_sigma_pro.png index 900f334c17f27e6e63050866bcbbebe63e0c2f6c..26481a350522daab271faab2a9a77ed5f3857088 100644 GIT binary patch literal 114025 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 K$NM2EjP);Wu(z@R literal 111788 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 z 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%0AxLhpN$a92m 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

%7dBFhuGE`NI_ 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 From 36e4d809a41465ae86b83dfb062e47e0c93abc14 Mon Sep 17 00:00:00 2001 From: 0r31 Date: Tue, 26 Sep 2023 16:38:19 +0200 Subject: [PATCH 010/203] Make change on start/end sequences to handle nozzle release --- resources/definitions/dagoma_sigma_pro.def.json | 4 ++-- resources/definitions/dagoma_sigma_pro_dual.def.json | 4 ++-- .../extruders/dagoma_sigma_pro_dual_extruder_left.def.json | 4 ++-- .../extruders/dagoma_sigma_pro_dual_extruder_right.def.json | 4 ++-- resources/extruders/dagoma_sigma_pro_extruder.def.json | 4 +++- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/resources/definitions/dagoma_sigma_pro.def.json b/resources/definitions/dagoma_sigma_pro.def.json index 9e656d19e9..ef0f6ac1d6 100644 --- a/resources/definitions/dagoma_sigma_pro.def.json +++ b/resources/definitions/dagoma_sigma_pro.def.json @@ -26,7 +26,7 @@ "machine_width": { "default_value": 200 }, "machine_depth": { "default_value": 200 }, "machine_height": { "default_value": 501 }, - "machine_start_gcode": { "default_value": ";Start Gcode for {machine_name}\n;Author: Dagoma\n;Sliced: {date} {time}\n;Estimated print time: {print_time}\n;Print speed: {speed_print}mm/s\n;Layer height: {layer_height}mm\n;Wall thickness: {wall_thickness}mm\n;Infill density: {infill_sparse_density}%\n;Infill pattern: {infill_pattern}\n;Support: {support_enable}\n;Print temperature: {material_print_temperature}°C\n;Flow: {material_flow}%\n;Retraction amount: {retraction_amount}mm\n;Retraction speed: {retraction_retract_speed}mm/s\nG28 ;\nG90 ;absolute positioning\n;M190 S{material_bed_temperature_layer_0};\nM109 S140;\nG1 F200 E-1.0\nM106 S255 ;Activating layers fans\nG28 ;Homing\nG29 ;Calibration\nM107 ;Off Ventilateur\nM109 S{material_print_temperature_layer_0} ;Temperature for the first layer only\nG4 S30;\nG92 E0 ;Zero the extruded length again\nG1 E98 F3000\nG92 E0 ;Zero the extruded length again\nG1 F200 E-0.5\nG1 F{speed_travel}\nM117 Printing...\n" }, - "machine_end_gcode": { "default_value": ";End Gcode for {machine_name}\n;Author: Dagoma\nM104 S0\nM107 ;stop fan\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG91 ;Relative positioning\nG1 E-100 F6000;\nG1 E2 F500\nG0 Z15 ;Withdraw\nG90 ; Absolute positioning\nM0 Confirm Bed Free ;Wait user confirm to avoid hit\nG0 F2000 Z529\nM0 Click For Homing ;Wait user confirm to avoid hit\nG28" } + "machine_start_gcode": { "default_value": ";Start Gcode for {machine_name}\n;Author: Dagoma\n;Sliced: {date} {time}\n;Estimated print time: {print_time}\n;Print speed: {speed_print}mm/s\n;Layer height: {layer_height}mm\n;Wall thickness: {wall_thickness}mm\n;Infill density: {infill_sparse_density}%\n;Infill pattern: {infill_pattern}\n;Support: {support_enable}\n;Print temperature: {material_print_temperature}°C\n;Flow: {material_flow}%\n;Retraction amount: {retraction_amount}mm\n;Retraction speed: {retraction_retract_speed}mm/s\nG90 ;absolute positioning\nM190 S{material_bed_temperature_layer_0};\nM109 S140;\nG1 F200 E-1.0\nM106 S255 ;Activating layers fans\nG28 ;Homing\nG29 ;Calibration\nM107 ;Off Ventilateur\nM109 S{material_print_temperature_layer_0} ;Temperature for the first layer only\nG92 E0 ;Zero the extruded length again\nG1 X0 Y-105 Z1 F3000\nG1 F{speed_travel}\nM117 Printing...\n" }, + "machine_end_gcode": { "default_value": ";End Gcode for {machine_name}\n;Author: Dagoma\nM104 S0\nM107 ;stop fan\nM140 S0 ;heated bed heater off (if you have it)\nG92 E0\nG1 E-55 F4600\nG27\nG90 ; Absolute positioning\nT0" } } } diff --git a/resources/definitions/dagoma_sigma_pro_dual.def.json b/resources/definitions/dagoma_sigma_pro_dual.def.json index 6d296dc3ec..ac27e93500 100644 --- a/resources/definitions/dagoma_sigma_pro_dual.def.json +++ b/resources/definitions/dagoma_sigma_pro_dual.def.json @@ -30,7 +30,7 @@ "machine_width": { "default_value": 200 }, "machine_depth": { "default_value": 200 }, "machine_height": { "default_value": 501 }, - "machine_start_gcode": { "default_value": ";Start Gcode for {machine_name}\n;Author: Dagoma\n;Sliced: {date} {time}\n;Estimated print time: {print_time}\n;Print speed: {speed_print}mm/s\n;Layer height: {layer_height}mm\n;Wall thickness: {wall_thickness}mm\n;Infill density: {infill_sparse_density}%\n;Infill pattern: {infill_pattern}\n;Support: {support_enable}\n;Print temperature: {material_print_temperature}°C\n;Flow: {material_flow}%\n;Retraction amount: {retraction_amount}mm\n;Retraction speed: {retraction_retract_speed}mm/s\nG28 ;\nG90 ;absolute positioning\n;M190 S{material_bed_temperature_layer_0};\nM109 S140;\nG1 F200 E-1.0\nM106 S255 ;Activating layers fans\nG28 ;Homing\nG29 ;Calibration\nM107 ;Off Ventilateur\nM109 S{material_print_temperature_layer_0} ;Temperature for the first layer only\nG4 S30;\nG92 E0 ;Zero the extruded length again\nG1 E98 F3000\nG92 E0 ;Zero the extruded length again\nG1 F200 E-0.5\nG1 F{speed_travel}\nM117 Printing...\n" }, - "machine_end_gcode": { "default_value": ";End Gcode for {machine_name}\n;Author: Dagoma\nM104 S0\nM107 ;stop fan\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG91 ;Relative positioning\nG1 E-100 F6000;\nG1 E2 F500\nG0 Z15 ;Withdraw\nG90 ; Absolute positioning\nM0 Confirm Bed Free ;Wait user confirm to avoid hit\nG0 F2000 Z529\nM0 Click For Homing ;Wait user confirm to avoid hit\nG28" } + "machine_start_gcode": { "default_value": ";Start Gcode for {machine_name}\n;Author: Dagoma\n;Sliced: {date} {time}\n;Estimated print time: {print_time}\n;Print speed: {speed_print}mm/s\n;Layer height: {layer_height}mm\n;Wall thickness: {wall_thickness}mm\n;Infill density: {infill_sparse_density}%\n;Infill pattern: {infill_pattern}\n;Support: {support_enable}\n;Print temperature: {material_print_temperature}°C\n;Flow: {material_flow}%\n;Retraction amount: {retraction_amount}mm\n;Retraction speed: {retraction_retract_speed}mm/s\nG90 ;absolute positioning\nM190 S{material_bed_temperature_layer_0};\nM109 S140;\nG1 F200 E-1.0\nM106 S255 ;Activating layers fans\nG28 ;Homing\nG29 ;Calibration\nM107 ;Off Ventilateur\nM109 S{material_print_temperature_layer_0} ;Temperature for the first layer only\nG92 E0 ;Zero the extruded length again\nG1 X0 Y-105 Z1 F3000\nG1 F{speed_travel}\nM117 Printing...\n" }, + "machine_end_gcode": { "default_value": ";End Gcode for {machine_name}\n;Author: Dagoma\nM104 S0\nM107 ;stop fan\nM140 S0 ;heated bed heater off (if you have it)\nG92 E0\nG1 E-55 F4600\nG27\nG90 ; Absolute positioning\nT0" } } } diff --git a/resources/extruders/dagoma_sigma_pro_dual_extruder_left.def.json b/resources/extruders/dagoma_sigma_pro_dual_extruder_left.def.json index 1a4d557227..067ab56b0a 100644 --- a/resources/extruders/dagoma_sigma_pro_dual_extruder_left.def.json +++ b/resources/extruders/dagoma_sigma_pro_dual_extruder_left.def.json @@ -12,7 +12,7 @@ "extruder_nr": { "default_value": 1 }, "machine_nozzle_size": { "default_value": 0.4 }, "material_diameter": { "default_value": 1.75 }, - "machine_extruder_start_code": { "default_value": ";START T1\n;No temperature change\nG1 X0 Y77.5 F8000\nG92 E0\nM83\nG1 E100 F1200\nM82\nG92 E0\n" }, - "machine_extruder_end_code": { "default_value": ";END T1\nG92 E0\nM83\nG1 E-100 F4800\nM82\nG92 E0\n" } + "machine_extruder_start_code": { "default_value": ";START T1\n;No temperature change\nG1 X0 Y77.5 F8000\nG92 E0\nM83\nG1 E50 F1200\nM82\nG92 E0\n" }, + "machine_extruder_end_code": { "default_value": ";END T1\nG92 E0\nM83\nG1 E-55 F4700\nM82\nG92 E0\n" } } } diff --git a/resources/extruders/dagoma_sigma_pro_dual_extruder_right.def.json b/resources/extruders/dagoma_sigma_pro_dual_extruder_right.def.json index fe6221ae5f..c94792aedf 100644 --- a/resources/extruders/dagoma_sigma_pro_dual_extruder_right.def.json +++ b/resources/extruders/dagoma_sigma_pro_dual_extruder_right.def.json @@ -12,7 +12,7 @@ "extruder_nr": { "default_value": 0 }, "machine_nozzle_size": { "default_value": 0.4 }, "material_diameter": { "default_value": 1.75 }, - "machine_extruder_start_code": { "default_value": ";START T0\n;No temperature change\nG1 X0 Y77.5 F8000\nG92 E0\nM83\nG1 E100 F1200\nM82\nG92 E0\n" }, - "machine_extruder_end_code": { "default_value": ";END T0\nG92 E0\nM83\nG1 E-100 F4800\nM82\nG92 E0\n" } + "machine_extruder_start_code": { "default_value": ";START T0\n;No temperature change\nG1 X0 Y77.5 F8000\nG92 E0\nM83\nG1 E50 F1200\nM82\nG92 E0\n" }, + "machine_extruder_end_code": { "default_value": ";END T0\nG92 E0\nM83\nG1 E-55 F4700\nM82\nG92 E0\n" } } } diff --git a/resources/extruders/dagoma_sigma_pro_extruder.def.json b/resources/extruders/dagoma_sigma_pro_extruder.def.json index 3c2c2b69da..82253a0b0a 100644 --- a/resources/extruders/dagoma_sigma_pro_extruder.def.json +++ b/resources/extruders/dagoma_sigma_pro_extruder.def.json @@ -11,6 +11,8 @@ { "extruder_nr": { "default_value": 0 }, "machine_nozzle_size": { "default_value": 0.4 }, - "material_diameter": { "default_value": 1.75 } + "material_diameter": { "default_value": 1.75 }, + "machine_extruder_start_code": { "default_value": ";START T0\n;No temperature change\nG1 X0 Y77.5 F8000\nG92 E0\nM83\nG1 E50 F1200\nM82\nG92 E0\n" }, + "machine_extruder_end_code": { "default_value": ";END T0\nG92 E0\nM83\nG1 E-55 F4700\nM82\nG92 E0\n" } } } From c11ba5aa4fc61d71a1b2d5b0dacaf9afe65bee0e Mon Sep 17 00:00:00 2001 From: 0r31 Date: Tue, 26 Sep 2023 17:06:38 +0200 Subject: [PATCH 011/203] Add default prime tower position for sigma pro dual --- resources/definitions/dagoma_sigma_pro_dual.def.json | 4 +++- .../dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg | 2 -- .../dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.2.inst.cfg | 2 -- .../dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg | 2 -- .../dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.2.inst.cfg | 2 -- 5 files changed, 3 insertions(+), 9 deletions(-) diff --git a/resources/definitions/dagoma_sigma_pro_dual.def.json b/resources/definitions/dagoma_sigma_pro_dual.def.json index ac27e93500..2fbf85580d 100644 --- a/resources/definitions/dagoma_sigma_pro_dual.def.json +++ b/resources/definitions/dagoma_sigma_pro_dual.def.json @@ -31,6 +31,8 @@ "machine_depth": { "default_value": 200 }, "machine_height": { "default_value": 501 }, "machine_start_gcode": { "default_value": ";Start Gcode for {machine_name}\n;Author: Dagoma\n;Sliced: {date} {time}\n;Estimated print time: {print_time}\n;Print speed: {speed_print}mm/s\n;Layer height: {layer_height}mm\n;Wall thickness: {wall_thickness}mm\n;Infill density: {infill_sparse_density}%\n;Infill pattern: {infill_pattern}\n;Support: {support_enable}\n;Print temperature: {material_print_temperature}°C\n;Flow: {material_flow}%\n;Retraction amount: {retraction_amount}mm\n;Retraction speed: {retraction_retract_speed}mm/s\nG90 ;absolute positioning\nM190 S{material_bed_temperature_layer_0};\nM109 S140;\nG1 F200 E-1.0\nM106 S255 ;Activating layers fans\nG28 ;Homing\nG29 ;Calibration\nM107 ;Off Ventilateur\nM109 S{material_print_temperature_layer_0} ;Temperature for the first layer only\nG92 E0 ;Zero the extruded length again\nG1 X0 Y-105 Z1 F3000\nG1 F{speed_travel}\nM117 Printing...\n" }, - "machine_end_gcode": { "default_value": ";End Gcode for {machine_name}\n;Author: Dagoma\nM104 S0\nM107 ;stop fan\nM140 S0 ;heated bed heater off (if you have it)\nG92 E0\nG1 E-55 F4600\nG27\nG90 ; Absolute positioning\nT0" } + "machine_end_gcode": { "default_value": ";End Gcode for {machine_name}\n;Author: Dagoma\nM104 S0\nM107 ;stop fan\nM140 S0 ;heated bed heater off (if you have it)\nG92 E0\nG1 E-55 F4600\nG27\nG90 ; Absolute positioning\nT0" }, + "prime_tower_position_x": { "value": 17.5 }, + "prime_tower_position_y": { "value": 60 } } } diff --git a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg index f0a7e5dbde..e8173416c9 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg @@ -32,8 +32,6 @@ ooze_shield_enabled = False prime_tower_brim_enable = True prime_tower_enable = True prime_tower_min_volume = 44 -prime_tower_position_x = 12.5 -prime_tower_position_y = 65 prime_tower_size = 25 prime_tower_wipe_enabled = False retraction_amount = 3.0 diff --git a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.2.inst.cfg index 1b4a28b45c..b9fef0b7d3 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.2.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.2.inst.cfg @@ -32,8 +32,6 @@ ooze_shield_enabled = False prime_tower_brim_enable = True prime_tower_enable = True prime_tower_min_volume = 44 -prime_tower_position_x = 12.5 -prime_tower_position_y = 65 prime_tower_size = 25 prime_tower_wipe_enabled = False retraction_amount = 3.0 diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg index 19e1adcd1c..d6d21f9a8d 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg @@ -32,8 +32,6 @@ ooze_shield_enabled = False prime_tower_brim_enable = True prime_tower_enable = True prime_tower_min_volume = 24 -prime_tower_position_x = 12.5 -prime_tower_position_y = 65 prime_tower_size = 25 prime_tower_wipe_enabled = True retraction_amount = 10 diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.2.inst.cfg index bd86ce42aa..400aa3e751 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.2.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.2.inst.cfg @@ -32,8 +32,6 @@ ooze_shield_enabled = False prime_tower_brim_enable = True prime_tower_enable = True prime_tower_min_volume = 44 -prime_tower_position_x = 12.5 -prime_tower_position_y = 65 prime_tower_size = 25 prime_tower_wipe_enabled = True retraction_amount = 10 From dc6edffea4da01e0d58ba4e6e95a74f5d35b8cb7 Mon Sep 17 00:00:00 2001 From: Fredrik Ehnbom Date: Sat, 21 Oct 2023 12:18:00 +0200 Subject: [PATCH 012/203] Add navigation style option --- cura/CuraApplication.py | 1 + resources/qml/Preferences/GeneralPage.qml | 50 +++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index e075fe92f5..ca10a12833 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -589,6 +589,7 @@ class CuraApplication(QtApplication): preferences.addPreference("view/invert_zoom", False) preferences.addPreference("view/filter_current_build_plate", False) + preferences.addPreference("view/navigation_style", "cura") preferences.addPreference("cura/sidebar_collapsed", False) preferences.addPreference("cura/favorite_materials", "") diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 32bbcd5053..839dc59f29 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -101,6 +101,7 @@ UM.PreferencesPage centerOnSelectCheckbox.checked = boolCheck(UM.Preferences.getValue("view/center_on_select")) UM.Preferences.resetPreference("view/invert_zoom"); invertZoomCheckbox.checked = boolCheck(UM.Preferences.getValue("view/invert_zoom")) + UM.Preferences.resetPreference("view/navigation_style"); UM.Preferences.resetPreference("view/zoom_to_mouse"); zoomToMouseCheckbox.checked = boolCheck(UM.Preferences.getValue("view/zoom_to_mouse")) //UM.Preferences.resetPreference("view/top_layer_count"); @@ -604,6 +605,55 @@ UM.PreferencesPage } } + UM.TooltipArea + { + width: childrenRect.width + height: childrenRect.height + text: catalog.i18nc("@info:tooltip", "What type of camera navigation should be used?") + Column + { + spacing: UM.Theme.getSize("narrow_margin").height + + UM.Label + { + text: catalog.i18nc("@window:text", "Camera navigation:") + } + ListModel + { + id: navigationStylesList + Component.onCompleted: + { + append({ text: catalog.i18n("Cura"), code: "cura" }) + append({ text: catalog.i18n("FreeCAD trackpad"), code: "freecad_trackpad" }) + } + } + + Cura.ComboBox + { + id: cameraNavigationComboBox + + model: navigationStylesList + textRole: "text" + width: UM.Theme.getSize("combobox").width + height: UM.Theme.getSize("combobox").height + + currentIndex: + { + var code = UM.Preferences.getValue("view/navigation_style"); + for(var i = 0; i < comboBoxList.count; ++i) + { + if(model.get(i).code == code) + { + return i + } + } + return 0 + } + onActivated: UM.Preferences.setValue("view/navigation_style", model.get(index).code) + } + } + } + Item { //: Spacer From 39db261b4b6eadb2f3e95cbfc055b61c7b9f8bde Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 3 Nov 2023 13:13:27 +0100 Subject: [PATCH 013/203] Integrate prime tower mode setting --- cura/BuildVolume.py | 4 ++-- plugins/SliceInfoPlugin/SliceInfo.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 2bfa654d4f..39cd356d3e 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -854,7 +854,7 @@ class BuildVolume(SceneNode): result[extruder.getId()] = [] # Currently, the only normally printed object is the prime tower. - if self._global_container_stack.getProperty("prime_tower_enable", "value"): + if self._global_container_stack.getProperty("prime_tower_mode", "value") != 'none': prime_tower_size = self._global_container_stack.getProperty("prime_tower_size", "value") machine_width = self._global_container_stack.getProperty("machine_width", "value") machine_depth = self._global_container_stack.getProperty("machine_depth", "value") @@ -1182,7 +1182,7 @@ class BuildVolume(SceneNode): _raft_settings = ["adhesion_type", "raft_base_thickness", "raft_interface_layers", "raft_interface_thickness", "raft_surface_layers", "raft_surface_thickness", "raft_airgap", "layer_0_z_overlap"] _extra_z_settings = ["retraction_hop_enabled", "retraction_hop"] _prime_settings = ["extruder_prime_pos_x", "extruder_prime_pos_y", "prime_blob_enable"] - _tower_settings = ["prime_tower_enable", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y", "prime_tower_brim_enable", "prime_tower_base_size", "prime_tower_base_height"] + _tower_settings = ["prime_tower_mode", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y", "prime_tower_brim_enable", "prime_tower_base_size", "prime_tower_base_height"] _ooze_shield_settings = ["ooze_shield_enabled", "ooze_shield_dist"] _distance_settings = ["infill_wipe_dist", "travel_avoid_distance", "support_offset", "support_enable", "travel_avoid_other_parts", "travel_avoid_supports", "wall_line_count", "wall_line_width_0", "wall_line_width_x"] _extruder_settings = ["support_enable", "support_bottom_enable", "support_roof_enable", "support_infill_extruder_nr", "support_extruder_nr_layer_0", "support_bottom_extruder_nr", "support_roof_extruder_nr", "brim_line_count", "skirt_brim_extruder_nr", "raft_base_extruder_nr", "raft_interface_extruder_nr", "raft_surface_extruder_nr", "adhesion_type"] #Settings that can affect which extruders are used. diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index 7e7a132c98..04e083520b 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -263,7 +263,7 @@ class SliceInfo(QObject, Extension): print_settings["retraction_enable"] = global_stack.getProperty("retraction_enable", "value") # Prime tower settings - print_settings["prime_tower_enable"] = global_stack.getProperty("prime_tower_enable", "value") + print_settings["prime_tower_mode"] = global_stack.getProperty("prime_tower_mode", "value") # Infill settings print_settings["infill_sparse_density"] = global_stack.getProperty("infill_sparse_density", "value") From 3bf84c88389a8c9cfb801d1fa8b94e6b2e645a93 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 24 Nov 2023 14:32:56 +0100 Subject: [PATCH 014/203] Terminology and descriptions refinement --- resources/definitions/fdmprinter.def.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 6ee61ab9a8..af08b23cb2 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6595,15 +6595,15 @@ { "prime_tower_mode": { - "label": "Prime Tower Mode", - "description": "Print a tower next to the print which serves to prime the material after each nozzle switch.", + "label": "Prime Tower", + "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.

", "type": "enum", "options": { "none": "None", - "default": "Default", - "optimized": "Optimized", - "optimized_consistent": "Optimized consistent" + "default": "Bucket", + "optimized_consistent": "Sparse bucket", + "optimized": "Sparse" }, "default_value": "default", "enabled": "extruders_enabled_count > 1", From 794023711fc4adb530c0277e46fd24d0cfa8a91c Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Wed, 29 Nov 2023 14:06:39 +0100 Subject: [PATCH 015/203] WIP prime tower mode refinement --- resources/definitions/fdmprinter.def.json | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index af08b23cb2..5ab88de33f 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6596,18 +6596,17 @@ "prime_tower_mode": { "label": "Prime Tower", - "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.
  • None: do not generate a prime tower
  • Bucket: generate a solid prime bucket in which secondary materials are primed
  • Sparse bucket: generate a prime bucket while trying to waste as less material as possible
  • Sparse: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", + "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.
  • None: do not generate a prime tower
  • Bucket: generate a bucket in which secondary materials are primed
  • Sparse: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", "type": "enum", + "value": "'optimized' if all(material_type == extruderValues('material_type')[0] for material_type in extruderValues('material_type')) else 'optimized_consistent'", "options": { "none": "None", - "default": "Bucket", - "optimized_consistent": "Sparse bucket", + "optimized_consistent": "Bucket", "optimized": "Sparse" }, - "default_value": "default", + "default_value": "none", "enabled": "extruders_enabled_count > 1", - "resolve": "(extruders_enabled_count > 1) and any(extruderValues('prime_tower_mode'))", "settable_per_mesh": false, "settable_per_extruder": false }, From 20ef47284526b155f5c47f1463479e4fe81949fc Mon Sep 17 00:00:00 2001 From: zhogov Date: Tue, 26 Dec 2023 05:19:12 -0500 Subject: [PATCH 016/203] Fix Ender 3 V3 SE start g-code 1. Replace square brackets with curly ones 2. Add bed heating command so Cura won't have to implicitly generate it itself --- resources/definitions/creality_ender3v3se.def.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/creality_ender3v3se.def.json b/resources/definitions/creality_ender3v3se.def.json index 5769e3e493..dc3e7bb70d 100644 --- a/resources/definitions/creality_ender3v3se.def.json +++ b/resources/definitions/creality_ender3v3se.def.json @@ -45,11 +45,11 @@ "machine_max_feedrate_y": { "value": 500 }, "machine_max_feedrate_z": { "value": 30 }, "machine_name": { "default_value": "Creality Ender-3 V3 SE" }, - "machine_start_gcode": { "default_value": "M220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nM420 S1; Enable mesh leveling\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S[material_print_temperature_layer_0]\nG1 X10.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y145.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 E-1.0000 F1800 ;Retract a bit\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 E0.0000 F1800 \n" }, + "machine_start_gcode": { "default_value": "M220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nM420 S1; Use saved mesh leveling data\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM190 S{material_bed_temperature_layer_0} ; set bed temperature and wait\nM109 S{material_print_temperature_layer_0} ; set hotend temperature and wait\nG1 X10.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y145.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 E-1.0000 F1800 ;Retract a bit\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 E0.0000 F1800 \n" }, "machine_width": { "default_value": 220 }, "retraction_amount": { "value": 0.8 }, "retraction_speed": { "default_value": 40 }, "speed_layer_0": { "value": 30 }, "speed_print": { "value": 180 } } -} \ No newline at end of file +} From da58c63db6716a9f20de03b86f86dcfe0f39b53e Mon Sep 17 00:00:00 2001 From: zhogov Date: Tue, 26 Dec 2023 05:26:56 -0500 Subject: [PATCH 017/203] Upper case --- resources/definitions/creality_ender3v3se.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/creality_ender3v3se.def.json b/resources/definitions/creality_ender3v3se.def.json index dc3e7bb70d..8e32a44eb9 100644 --- a/resources/definitions/creality_ender3v3se.def.json +++ b/resources/definitions/creality_ender3v3se.def.json @@ -45,7 +45,7 @@ "machine_max_feedrate_y": { "value": 500 }, "machine_max_feedrate_z": { "value": 30 }, "machine_name": { "default_value": "Creality Ender-3 V3 SE" }, - "machine_start_gcode": { "default_value": "M220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nM420 S1; Use saved mesh leveling data\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM190 S{material_bed_temperature_layer_0} ; set bed temperature and wait\nM109 S{material_print_temperature_layer_0} ; set hotend temperature and wait\nG1 X10.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y145.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 E-1.0000 F1800 ;Retract a bit\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 E0.0000 F1800 \n" }, + "machine_start_gcode": { "default_value": "M220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nM420 S1; Use saved mesh leveling data\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM190 S{material_bed_temperature_layer_0} ; Set bed temperature and wait\nM109 S{material_print_temperature_layer_0} ; Set hotend temperature and wait\nG1 X10.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y145.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 E-1.0000 F1800 ;Retract a bit\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 E0.0000 F1800 \n" }, "machine_width": { "default_value": 220 }, "retraction_amount": { "value": 0.8 }, "retraction_speed": { "default_value": 40 }, From 603f49122f3e581281e5f4ff2e559d9738d55bd2 Mon Sep 17 00:00:00 2001 From: DSNS <48170013+dsnsgithub@users.noreply.github.com> Date: Sat, 30 Dec 2023 21:17:01 -0800 Subject: [PATCH 018/203] Fix Ender 5 Plus ABL command --- resources/definitions/creality_ender5plus.def.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/creality_ender5plus.def.json b/resources/definitions/creality_ender5plus.def.json index b7b11343e5..24bf10cd0d 100644 --- a/resources/definitions/creality_ender5plus.def.json +++ b/resources/definitions/creality_ender5plus.def.json @@ -23,8 +23,8 @@ }, "machine_height": { "default_value": 400 }, "machine_name": { "default_value": "Creality Ender-5 Plus" }, - "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\nM420 S1 Z2 ;Enable ABL using saved Mesh and Fade Height\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n" }, + "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\nG29 ;Auto bed level\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n" }, "machine_width": { "default_value": 350 }, "speed_print": { "value": 80.0 } } -} \ No newline at end of file +} From 2b05a370ca7afca70276b28958ac87a60f3d149a Mon Sep 17 00:00:00 2001 From: alexandr-vladimirov Date: Thu, 4 Jan 2024 06:30:23 +0300 Subject: [PATCH 019/203] Allow to set print sequence manually --- conandata.yml | 8 + cura/CuraApplication.py | 26 ++- cura/HitChecker.py | 88 ++++++++++ cura/OneAtATimeIterator.py | 113 ++++--------- cura/PrintOrderManager.py | 171 +++++++++++++++++++ cura/Scene/CuraSceneNode.py | 12 ++ cura/UI/ObjectsModel.py | 19 ++- plugins/3MFReader/ThreeMFReader.py | 3 + plugins/3MFWriter/ThreeMFWriter.py | 4 + resources/definitions/fdmprinter.def.json | 10 ++ resources/i18n/cs_CZ/cura.po | 8 + resources/i18n/cs_CZ/fdmprinter.def.json.po | 8 + resources/i18n/cura.pot | 8 + resources/i18n/de_DE/cura.po | 8 + resources/i18n/de_DE/fdmprinter.def.json.po | 8 + resources/i18n/es_ES/cura.po | 8 + resources/i18n/es_ES/fdmprinter.def.json.po | 8 + resources/i18n/fdmprinter.def.json.pot | 8 + resources/i18n/fi_FI/cura.po | 8 + resources/i18n/fi_FI/fdmprinter.def.json.po | 8 + resources/i18n/fr_FR/cura.po | 8 + resources/i18n/fr_FR/fdmprinter.def.json.po | 8 + resources/i18n/hu_HU/cura.po | 8 + resources/i18n/hu_HU/fdmprinter.def.json.po | 8 + resources/i18n/it_IT/cura.po | 8 + resources/i18n/it_IT/fdmprinter.def.json.po | 8 + resources/i18n/ja_JP/cura.po | 8 + resources/i18n/ja_JP/fdmprinter.def.json.po | 8 + resources/i18n/ko_KR/cura.po | 8 + resources/i18n/ko_KR/fdmprinter.def.json.po | 8 + resources/i18n/nl_NL/cura.po | 8 + resources/i18n/nl_NL/fdmprinter.def.json.po | 8 + resources/i18n/pl_PL/cura.po | 8 + resources/i18n/pl_PL/fdmprinter.def.json.po | 8 + resources/i18n/pt_BR/cura.po | 8 + resources/i18n/pt_BR/fdmprinter.def.json.po | 8 + resources/i18n/pt_PT/cura.po | 8 + resources/i18n/pt_PT/fdmprinter.def.json.po | 8 + resources/i18n/ru_RU/cura.po | 8 + resources/i18n/ru_RU/fdmprinter.def.json.po | 8 + resources/i18n/tr_TR/cura.po | 8 + resources/i18n/tr_TR/fdmprinter.def.json.po | 8 + resources/i18n/zh_CN/cura.po | 8 + resources/i18n/zh_CN/fdmprinter.def.json.po | 8 + resources/i18n/zh_TW/cura.po | 8 + resources/i18n/zh_TW/fdmprinter.def.json.po | 8 + resources/qml/Actions.qml | 23 +++ resources/qml/Menus/ContextMenu.qml | 13 ++ resources/qml/Menus/EditMenu.qml | 13 ++ resources/setting_visibility/advanced.cfg | 1 + resources/setting_visibility/expert.cfg | 1 + tests/TestHitChecker.py | 141 ++++++++++++++++ tests/TestPrintOrderManager.py | 175 ++++++++++++++++++++ 53 files changed, 1021 insertions(+), 88 deletions(-) create mode 100644 cura/HitChecker.py create mode 100644 cura/PrintOrderManager.py create mode 100644 tests/TestHitChecker.py create mode 100644 tests/TestPrintOrderManager.py diff --git a/conandata.yml b/conandata.yml index a0a5a204ca..c1dad5057d 100644 --- a/conandata.yml +++ b/conandata.yml @@ -161,6 +161,10 @@ pycharm_targets: module_name: Cura name: pytest in TestGCodeListDecorator.py script_name: tests/TestGCodeListDecorator.py + - jinja_path: .run_templates/pycharm_cura_test.run.xml.jinja + module_name: Cura + name: pytest in TestHitChecker.py + script_name: tests/TestHitChecker.py - jinja_path: .run_templates/pycharm_cura_test.run.xml.jinja module_name: Cura name: pytest in TestIntentManager.py @@ -189,6 +193,10 @@ pycharm_targets: module_name: Cura name: pytest in TestPrintInformation.py script_name: tests/TestPrintInformation.py + - jinja_path: .run_templates/pycharm_cura_test.run.xml.jinja + module_name: Cura + name: pytest in TestPrintOrderManager.py + script_name: tests/TestPrintOrderManager.py - jinja_path: .run_templates/pycharm_cura_test.run.xml.jinja module_name: Cura name: pytest in TestProfileRequirements.py diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 1ef2f63a9e..387adda5cb 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -125,6 +125,7 @@ from .Machines.Models.CompatibleMachineModel import CompatibleMachineModel from .Machines.Models.MachineListModel import MachineListModel from .Machines.Models.ActiveIntentQualitiesModel import ActiveIntentQualitiesModel from .Machines.Models.IntentSelectionModel import IntentSelectionModel +from .PrintOrderManager import PrintOrderManager from .SingleInstance import SingleInstance if TYPE_CHECKING: @@ -202,6 +203,7 @@ class CuraApplication(QtApplication): self._container_manager = None self._object_manager = None + self._print_order_manager = None self._extruders_model = None self._extruders_model_with_optional = None self._build_plate_model = None @@ -899,6 +901,7 @@ class CuraApplication(QtApplication): # initialize info objects self._print_information = PrintInformation.PrintInformation(self) self._cura_actions = CuraActions.CuraActions(self) + self._print_order_manager = PrintOrderManager(self.getObjectsModel().getNodes) self.processEvents() # Initialize setting visibility presets model. self._setting_visibility_presets_model = SettingVisibilityPresetsModel(self.getPreferences(), parent = self) @@ -979,6 +982,7 @@ class CuraApplication(QtApplication): t.setEnabledAxis([ToolHandle.XAxis, ToolHandle.YAxis, ToolHandle.ZAxis]) Selection.selectionChanged.connect(self.onSelectionChanged) + self._print_order_manager.printOrderChanged.connect(self._onPrintOrderChanged) # Set default background color for scene self.getRenderer().setBackgroundColor(QColor(245, 245, 245)) @@ -1218,6 +1222,7 @@ class CuraApplication(QtApplication): self.processEvents() engine.rootContext().setContextProperty("Printer", self) engine.rootContext().setContextProperty("CuraApplication", self) + engine.rootContext().setContextProperty("PrintOrderManager", self._print_order_manager) engine.rootContext().setContextProperty("PrintInformation", self._print_information) engine.rootContext().setContextProperty("CuraActions", self._cura_actions) engine.rootContext().setContextProperty("CuraSDKVersion", ApplicationMetadata.CuraSDKVersion) @@ -1715,8 +1720,12 @@ class CuraApplication(QtApplication): Selection.remove(node) Selection.add(group_node) + all_nodes = self.getObjectsModel().getNodes() + PrintOrderManager.updatePrintOrdersAfterGroupOperation(all_nodes, group_node, selected_nodes) + @pyqtSlot() def ungroupSelected(self) -> None: + all_nodes = self.getObjectsModel().getNodes() selected_objects = Selection.getAllSelectedObjects().copy() for node in selected_objects: if node.callDecoration("isGroup"): @@ -1724,21 +1733,30 @@ class CuraApplication(QtApplication): group_parent = node.getParent() children = node.getChildren().copy() - for child in children: - # Ungroup only 1 level deep - if child.getParent() != node: - continue + # Ungroup only 1 level deep + children_to_ungroup = list(filter(lambda child: child.getParent() == node, children)) + for child in children_to_ungroup: # Set the parent of the children to the parent of the group-node op.addOperation(SetParentOperation(child, group_parent)) # Add all individual nodes to the selection Selection.add(child) + PrintOrderManager.updatePrintOrdersAfterUngroupOperation(all_nodes, node, children_to_ungroup) op.push() # Note: The group removes itself from the scene once all its children have left it, # see GroupDecorator._onChildrenChanged + def _onPrintOrderChanged(self) -> None: + # update object list + scene = self.getController().getScene() + scene.sceneChanged.emit(scene.getRoot()) + + # reset if already was sliced + Application.getInstance().getBackend().needsSlicing() + Application.getInstance().getBackend().tickle() + def _createSplashScreen(self) -> Optional[CuraSplashScreen.CuraSplashScreen]: if self._is_headless: return None diff --git a/cura/HitChecker.py b/cura/HitChecker.py new file mode 100644 index 0000000000..4b229e6b9b --- /dev/null +++ b/cura/HitChecker.py @@ -0,0 +1,88 @@ +from typing import List, Dict +from cura.Scene.CuraSceneNode import CuraSceneNode + + +class HitChecker: + """Checks if nodes can be printed without causing any collisions and interference""" + + def __init__(self, nodes: List[CuraSceneNode]) -> None: + self._hit_map = self._buildHitMap(nodes) + + def anyTwoNodesBlockEachOther(self, nodes: List[CuraSceneNode]) -> bool: + """Returns True if any 2 nodes block each other""" + for a in nodes: + for b in nodes: + if self._hit_map[a][b] and self._hit_map[b][a]: + return True + return False + + def canPrintBefore(self, node: CuraSceneNode, other_nodes: List[CuraSceneNode]) -> bool: + """Returns True if node doesn't block other_nodes and can be printed before them""" + no_hits = all(not self._hit_map[node][other_node] for other_node in other_nodes) + return no_hits + + def canPrintAfter(self, node: CuraSceneNode, other_nodes: List[CuraSceneNode]) -> bool: + """Returns True if node doesn't hit other nodes and can be printed after them""" + no_hits = all(not self._hit_map[other_node][node] for other_node in other_nodes) + return no_hits + + def calculateScore(self, a: CuraSceneNode, b: CuraSceneNode) -> int: + """Calculate score simply sums the number of other objects it 'blocks' + + :param a: node + :param b: node + :return: sum of the number of other objects + """ + + score_a = sum(self._hit_map[a].values()) + score_b = sum(self._hit_map[b].values()) + return score_a - score_b + + def canPrintNodesInProvidedOrder(self, ordered_nodes: List[CuraSceneNode]) -> bool: + """Returns True If nodes don't have any hits in provided order""" + for node_index, node in enumerate(ordered_nodes): + nodes_before = ordered_nodes[:node_index - 1] if node_index - 1 >= 0 else [] + nodes_after = ordered_nodes[node_index + 1:] if node_index + 1 < len(ordered_nodes) else [] + if not self.canPrintBefore(node, nodes_after) or not self.canPrintAfter(node, nodes_before): + return False + return True + + @staticmethod + def _buildHitMap(nodes: List[CuraSceneNode]) -> Dict[CuraSceneNode, CuraSceneNode]: + """Pre-computes all hits between all objects + + :nodes: nodes that need to be checked for collisions + :return: dictionary where hit_map[node1][node2] is False if there node1 can be printed before node2 + """ + hit_map = {j: {i: HitChecker._checkHit(j, i) for i in nodes} for j in nodes} + return hit_map + + @staticmethod + def _checkHit(a: CuraSceneNode, b: CuraSceneNode) -> bool: + """Checks if a can be printed before b + + :param a: node + :param b: node + :return: False if a can be printed before b + """ + + if a == b: + return False + + a_hit_hull = a.callDecoration("getConvexHullBoundary") + b_hit_hull = b.callDecoration("getConvexHullHeadFull") + overlap = a_hit_hull.intersectsPolygon(b_hit_hull) + + if overlap: + return True + + # Adhesion areas must never overlap, regardless of printing order + # This would cause over-extrusion + a_hit_hull = a.callDecoration("getAdhesionArea") + b_hit_hull = b.callDecoration("getAdhesionArea") + overlap = a_hit_hull.intersectsPolygon(b_hit_hull) + + if overlap: + return True + else: + return False diff --git a/cura/OneAtATimeIterator.py b/cura/OneAtATimeIterator.py index 8bdddba554..f92da3ec14 100644 --- a/cura/OneAtATimeIterator.py +++ b/cura/OneAtATimeIterator.py @@ -7,6 +7,11 @@ from UM.Scene.Iterator import Iterator from UM.Scene.SceneNode import SceneNode from functools import cmp_to_key +from cura.HitChecker import HitChecker +from cura.PrintOrderManager import PrintOrderManager +from cura.Scene.CuraSceneNode import CuraSceneNode + + class OneAtATimeIterator(Iterator.Iterator): """Iterator that returns a list of nodes in the order that they need to be printed @@ -16,8 +21,6 @@ class OneAtATimeIterator(Iterator.Iterator): def __init__(self, scene_node) -> None: super().__init__(scene_node) # Call super to make multiple inheritance work. - self._hit_map = [[]] # type: List[List[bool]] # For each node, which other nodes this hits. A grid of booleans on which nodes hit which. - self._original_node_list = [] # type: List[SceneNode] # The nodes that need to be checked for collisions. def _fillStack(self) -> None: """Fills the ``_node_stack`` with a list of scene nodes that need to be printed in order. """ @@ -38,104 +41,50 @@ class OneAtATimeIterator(Iterator.Iterator): self._node_stack = node_list[:] return - # Copy the list - self._original_node_list = node_list[:] + hit_checker = HitChecker(node_list) - # Initialise the hit map (pre-compute all hits between all objects) - self._hit_map = [[self._checkHit(i, j) for i in node_list] for j in node_list] + if PrintOrderManager.isUserDefinedPrintOrderEnabled(): + self._node_stack = self._getNodesOrderedByUser(hit_checker, node_list) + else: + self._node_stack = self._getNodesOrderedAutomatically(hit_checker, node_list) - # Check if we have to files that block each other. If this is the case, there is no solution! - for a in range(0, len(node_list)): - for b in range(0, len(node_list)): - if a != b and self._hit_map[a][b] and self._hit_map[b][a]: - return + # update print orders so that user can try to arrange the nodes automatically first + # and if result is not satisfactory he/she can switch to manual mode and change it + for index, node in enumerate(self._node_stack): + node.printOrder = index + 1 + + @staticmethod + def _getNodesOrderedByUser(hit_checker: HitChecker, node_list: List[CuraSceneNode]) -> List[CuraSceneNode]: + nodes_ordered_by_user = sorted(node_list, key=lambda n: n.printOrder) + if hit_checker.canPrintNodesInProvidedOrder(nodes_ordered_by_user): + return nodes_ordered_by_user + return [] # No solution + + @staticmethod + def _getNodesOrderedAutomatically(hit_checker: HitChecker, node_list: List[CuraSceneNode]) -> List[CuraSceneNode]: + # Check if we have two files that block each other. If this is the case, there is no solution! + if hit_checker.anyTwoNodesBlockEachOther(node_list): + return [] # No solution # Sort the original list so that items that block the most other objects are at the beginning. # This does not decrease the worst case running time, but should improve it in most cases. - sorted(node_list, key = cmp_to_key(self._calculateScore)) + sorted(node_list, key = cmp_to_key(hit_checker.calculateScore)) todo_node_list = [_ObjectOrder([], node_list)] while len(todo_node_list) > 0: current = todo_node_list.pop() for node in current.todo: # Check if the object can be placed with what we have and still allows for a solution in the future - if not self._checkHitMultiple(node, current.order) and not self._checkBlockMultiple(node, current.todo): + if hit_checker.canPrintAfter(node, current.order) and hit_checker.canPrintBefore(node, current.todo): # We found a possible result. Create new todo & order list. new_todo_list = current.todo[:] new_todo_list.remove(node) new_order = current.order[:] + [node] if len(new_todo_list) == 0: # We have no more nodes to check, so quit looking. - self._node_stack = new_order - return + return new_order # Solution found! todo_node_list.append(_ObjectOrder(new_order, new_todo_list)) - self._node_stack = [] #No result found! - - - # Check if first object can be printed before the provided list (using the hit map) - def _checkHitMultiple(self, node: SceneNode, other_nodes: List[SceneNode]) -> bool: - node_index = self._original_node_list.index(node) - for other_node in other_nodes: - other_node_index = self._original_node_list.index(other_node) - if self._hit_map[node_index][other_node_index]: - return True - return False - - def _checkBlockMultiple(self, node: SceneNode, other_nodes: List[SceneNode]) -> bool: - """Check for a node whether it hits any of the other nodes. - - :param node: The node to check whether it collides with the other nodes. - :param other_nodes: The nodes to check for collisions. - :return: returns collision between nodes - """ - - node_index = self._original_node_list.index(node) - for other_node in other_nodes: - other_node_index = self._original_node_list.index(other_node) - if self._hit_map[other_node_index][node_index] and node_index != other_node_index: - return True - return False - - def _calculateScore(self, a: SceneNode, b: SceneNode) -> int: - """Calculate score simply sums the number of other objects it 'blocks' - - :param a: node - :param b: node - :return: sum of the number of other objects - """ - - score_a = sum(self._hit_map[self._original_node_list.index(a)]) - score_b = sum(self._hit_map[self._original_node_list.index(b)]) - return score_a - score_b - - def _checkHit(self, a: SceneNode, b: SceneNode) -> bool: - """Checks if a can be printed before b - - :param a: node - :param b: node - :return: true if a can be printed before b - """ - - if a == b: - return False - - a_hit_hull = a.callDecoration("getConvexHullBoundary") - b_hit_hull = b.callDecoration("getConvexHullHeadFull") - overlap = a_hit_hull.intersectsPolygon(b_hit_hull) - - if overlap: - return True - - # Adhesion areas must never overlap, regardless of printing order - # This would cause over-extrusion - a_hit_hull = a.callDecoration("getAdhesionArea") - b_hit_hull = b.callDecoration("getAdhesionArea") - overlap = a_hit_hull.intersectsPolygon(b_hit_hull) - - if overlap: - return True - else: - return False + return [] # No result found! class _ObjectOrder: diff --git a/cura/PrintOrderManager.py b/cura/PrintOrderManager.py new file mode 100644 index 0000000000..abfa5442a2 --- /dev/null +++ b/cura/PrintOrderManager.py @@ -0,0 +1,171 @@ +from typing import List, Callable, Optional, Any + +from PyQt6.QtCore import pyqtProperty, pyqtSignal, QObject, pyqtSlot +from UM.Application import Application +from UM.Scene.Selection import Selection + +from cura.Scene.CuraSceneNode import CuraSceneNode + + +class PrintOrderManager(QObject): + """Allows to order the object list to set the print sequence manually""" + + def __init__(self, get_nodes: Callable[[], List[CuraSceneNode]]) -> None: + super().__init__() + self._get_nodes = get_nodes + self._configureEvents() + + _settingsChanged = pyqtSignal() + _uiActionsOutdated = pyqtSignal() + printOrderChanged = pyqtSignal() + + @pyqtSlot() + def swapSelectedAndPreviousNodes(self) -> None: + selected_node, previous_node, next_node = self._getSelectedAndNeighborNodes() + self._swapPrintOrders(selected_node, previous_node) + + @pyqtSlot() + def swapSelectedAndNextNodes(self) -> None: + selected_node, previous_node, next_node = self._getSelectedAndNeighborNodes() + self._swapPrintOrders(selected_node, next_node) + + @pyqtProperty(str, notify=_uiActionsOutdated) + def previousNodeName(self) -> str: + selected_node, previous_node, next_node = self._getSelectedAndNeighborNodes() + return self._getNodeName(previous_node) + + @pyqtProperty(str, notify=_uiActionsOutdated) + def nextNodeName(self) -> str: + selected_node, previous_node, next_node = self._getSelectedAndNeighborNodes() + return self._getNodeName(next_node) + + @pyqtProperty(bool, notify=_uiActionsOutdated) + def shouldEnablePrintBeforeAction(self) -> bool: + selected_node, previous_node, next_node = self._getSelectedAndNeighborNodes() + can_swap_with_previous_node = selected_node is not None and previous_node is not None + return can_swap_with_previous_node + + @pyqtProperty(bool, notify=_uiActionsOutdated) + def shouldEnablePrintAfterAction(self) -> bool: + selected_node, previous_node, next_node = self._getSelectedAndNeighborNodes() + can_swap_with_next_node = selected_node is not None and next_node is not None + return can_swap_with_next_node + + @pyqtProperty(bool, notify=_settingsChanged) + def shouldShowEditPrintOrderActions(self) -> bool: + return PrintOrderManager.isUserDefinedPrintOrderEnabled() + + @staticmethod + def isUserDefinedPrintOrderEnabled() -> bool: + stack = Application.getInstance().getGlobalContainerStack() + is_enabled = stack and \ + stack.getProperty("print_sequence", "value") == "one_at_a_time" and \ + stack.getProperty("user_defined_print_order_enabled", "value") + return is_enabled + + @staticmethod + def initializePrintOrders(nodes: List[CuraSceneNode]) -> None: + """Just created (loaded from file) nodes have print order 0. + + This method initializes print orders with max value to put nodes at the end of object list""" + max_print_order = max(map(lambda n: n.printOrder, nodes), default=0) + for node in nodes: + if node.printOrder == 0: + max_print_order += 1 + node.printOrder = max_print_order + + @staticmethod + def updatePrintOrdersAfterGroupOperation( + all_nodes: List[CuraSceneNode], + group_node: CuraSceneNode, + grouped_nodes: List[CuraSceneNode] + ) -> None: + group_node.printOrder = min(map(lambda n: n.printOrder, grouped_nodes)) + + all_nodes.append(group_node) + for node in grouped_nodes: + all_nodes.remove(node) + + # reassign print orders so there won't be gaps like 1 2 5 6 7 + sorted_nodes = sorted(all_nodes, key=lambda n: n.printOrder) + for i, node in enumerate(sorted_nodes): + node.printOrder = i + 1 + + @staticmethod + def updatePrintOrdersAfterUngroupOperation( + all_nodes: List[CuraSceneNode], + group_node: CuraSceneNode, + ungrouped_nodes: List[CuraSceneNode] + ) -> None: + all_nodes.remove(group_node) + nodes_to_update_print_order = filter(lambda n: n.printOrder > group_node.printOrder, all_nodes) + for node in nodes_to_update_print_order: + node.printOrder += len(ungrouped_nodes) - 1 + + for i, child in enumerate(ungrouped_nodes): + child.printOrder = group_node.printOrder + i + all_nodes.append(child) + + def _swapPrintOrders(self, node1: CuraSceneNode, node2: CuraSceneNode) -> None: + if node1 and node2: + node1.printOrder, node2.printOrder = node2.printOrder, node1.printOrder # swap print orders + self.printOrderChanged.emit() # update object list first + self._uiActionsOutdated.emit() # then update UI actions + + def _getSelectedAndNeighborNodes(self + ) -> (Optional[CuraSceneNode], Optional[CuraSceneNode], Optional[CuraSceneNode]): + nodes = self._get_nodes() + ordered_nodes = sorted(nodes, key=lambda n: n.printOrder) + selected_node = PrintOrderManager._getSingleSelectedNode() + if selected_node and selected_node in ordered_nodes: + selected_node_index = ordered_nodes.index(selected_node) + else: + selected_node_index = None + + if selected_node_index is not None and selected_node_index - 1 >= 0: + previous_node = ordered_nodes[selected_node_index - 1] + else: + previous_node = None + + if selected_node_index is not None and selected_node_index + 1 < len(ordered_nodes): + next_node = ordered_nodes[selected_node_index + 1] + else: + next_node = None + + return selected_node, previous_node, next_node + + @staticmethod + def _getNodeName(node: CuraSceneNode, max_length: int = 30) -> str: + node_name = node.getName() if node else "" + truncated_node_name = node_name[:max_length] + return truncated_node_name + + @staticmethod + def _getSingleSelectedNode() -> Optional[CuraSceneNode]: + if len(Selection.getAllSelectedObjects()) == 1: + selected_node = Selection.getSelectedObject(0) + return selected_node + return None + + def _configureEvents(self) -> None: + Selection.selectionChanged.connect(self._onSelectionChanged) + self._global_stack = None + Application.getInstance().globalContainerStackChanged.connect(self._onGlobalStackChanged) + self._onGlobalStackChanged() + + def _onGlobalStackChanged(self) -> None: + if self._global_stack: + self._global_stack.propertyChanged.disconnect(self._onSettingsChanged) + self._global_stack.containersChanged.disconnect(self._onSettingsChanged) + + self._global_stack = Application.getInstance().getGlobalContainerStack() + + if self._global_stack: + self._global_stack.propertyChanged.connect(self._onSettingsChanged) + self._global_stack.containersChanged.connect(self._onSettingsChanged) + + def _onSettingsChanged(self, *args: Any) -> None: + self._settingsChanged.emit() + + def _onSelectionChanged(self) -> None: + self._uiActionsOutdated.emit() diff --git a/cura/Scene/CuraSceneNode.py b/cura/Scene/CuraSceneNode.py index 5fbaded650..9b412c7d4f 100644 --- a/cura/Scene/CuraSceneNode.py +++ b/cura/Scene/CuraSceneNode.py @@ -25,10 +25,19 @@ class CuraSceneNode(SceneNode): if not no_setting_override: self.addDecorator(SettingOverrideDecorator()) # Now we always have a getActiveExtruderPosition, unless explicitly disabled self._outside_buildarea = False + self._print_order = 0 def setOutsideBuildArea(self, new_value: bool) -> None: self._outside_buildarea = new_value + @property + def printOrder(self): + return self._print_order + + @printOrder.setter + def printOrder(self, new_value): + self._print_order = new_value + def isOutsideBuildArea(self) -> bool: return self._outside_buildarea or self.callDecoration("getBuildPlateNumber") < 0 @@ -157,3 +166,6 @@ class CuraSceneNode(SceneNode): def transformChanged(self) -> None: self._transformChanged() + + def __repr__(self) -> str: + return "{print_order}. {name}".format(print_order = self._print_order, name = self.getName()) diff --git a/cura/UI/ObjectsModel.py b/cura/UI/ObjectsModel.py index 4f64270247..4d5a4dfc81 100644 --- a/cura/UI/ObjectsModel.py +++ b/cura/UI/ObjectsModel.py @@ -14,6 +14,9 @@ from UM.Scene.SceneNode import SceneNode from UM.Scene.Selection import Selection from UM.i18n import i18nCatalog +from cura.PrintOrderManager import PrintOrderManager +from cura.Scene.CuraSceneNode import CuraSceneNode + catalog = i18nCatalog("cura") @@ -76,6 +79,9 @@ class ObjectsModel(ListModel): self._build_plate_number = nr self._update() + def getNodes(self) -> List[CuraSceneNode]: + return list(map(lambda n: n["node"], self.items)) + def _updateSceneDelayed(self, source) -> None: if not isinstance(source, Camera): self._update_timer.start() @@ -175,6 +181,10 @@ class ObjectsModel(ListModel): all_nodes = self._renameNodes(name_to_node_info_dict) + user_defined_print_order_enabled = PrintOrderManager.isUserDefinedPrintOrderEnabled() + if user_defined_print_order_enabled: + PrintOrderManager.initializePrintOrders(all_nodes) + for node in all_nodes: if hasattr(node, "isOutsideBuildArea"): is_outside_build_area = node.isOutsideBuildArea() # type: ignore @@ -223,8 +233,13 @@ class ObjectsModel(ListModel): # for anti overhang meshes and groups the extruder nr is irrelevant extruder_number = -1 + if not user_defined_print_order_enabled: + name = node.getName() + else: + name = "{print_order}. {name}".format(print_order = node.printOrder, name = node.getName()) + nodes.append({ - "name": node.getName(), + "name": name, "selected": Selection.isSelected(node), "outside_build_area": is_outside_build_area, "buildplate_number": node_build_plate_number, @@ -234,5 +249,5 @@ class ObjectsModel(ListModel): "node": node }) - nodes = sorted(nodes, key=lambda n: n["name"]) + nodes = sorted(nodes, key=lambda n: n["name"] if not user_defined_print_order_enabled else n["node"].printOrder) self.setItems(nodes) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 13a97d5a89..85bdbfa551 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -177,6 +177,9 @@ class ThreeMFReader(MeshReader): else: Logger.log("w", "Unable to find extruder in position %s", setting_value) continue + if key == "print_order": + um_node.printOrder = int(setting_value) + continue if key in known_setting_keys: setting_container.setProperty(key, "value", setting_value) else: diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index ad4b0d8dad..5ffd99a1c4 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -20,6 +20,7 @@ from cura.CuraApplication import CuraApplication from cura.CuraPackageManager import CuraPackageManager from cura.Settings import CuraContainerStack from cura.Utils.Threading import call_on_qt_thread +from cura.Scene.CuraSceneNode import CuraSceneNode from cura.Snapshot import Snapshot from PyQt6.QtCore import QBuffer @@ -137,6 +138,9 @@ class ThreeMFWriter(MeshWriter): for key in changed_setting_keys: savitar_node.setSetting("cura:" + key, str(stack.getProperty(key, "value"))) + if isinstance(um_node, CuraSceneNode): + savitar_node.setSetting("cura:print_order", str(um_node.printOrder)) + # Store the metadata. for key, value in um_node.metadata.items(): savitar_node.setSetting(key, value) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 62143cf8f8..160c1d905d 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -7060,6 +7060,16 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, + "user_defined_print_order_enabled": + { + "label": "Set Print Sequence Manually", + "description": "Allows to order the object list to set the print sequence manually. First object from the list will be printed first.", + "type": "bool", + "default_value": false, + "settable_per_mesh": false, + "settable_per_extruder": false, + "enabled": "print_sequence == 'one_at_a_time'" + }, "infill_mesh": { "label": "Infill Mesh", diff --git a/resources/i18n/cs_CZ/cura.po b/resources/i18n/cs_CZ/cura.po index 715af3ea84..3267139490 100644 --- a/resources/i18n/cs_CZ/cura.po +++ b/resources/i18n/cs_CZ/cura.po @@ -4946,6 +4946,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Rozdělit modely" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "Tisknout před" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "Tisknout po" + msgctxt "@button" msgid "Uninstall" msgstr "Odinstalovat" diff --git a/resources/i18n/cs_CZ/fdmprinter.def.json.po b/resources/i18n/cs_CZ/fdmprinter.def.json.po index 7588e81c52..4b697c9cea 100644 --- a/resources/i18n/cs_CZ/fdmprinter.def.json.po +++ b/resources/i18n/cs_CZ/fdmprinter.def.json.po @@ -2583,6 +2583,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "Tisková sekvence" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "Nastavit tiskovou sekvenci ručně" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "Umožňuje řadit seznam objektů pro ruční nastavení tiskové sekvence. První objekt ze seznamu bude vytisknut jako první." + msgctxt "speed_print label" msgid "Print Speed" msgstr "Rychlost tisku" diff --git a/resources/i18n/cura.pot b/resources/i18n/cura.pot index 7d5b5f94d6..2fabd97f7e 100644 --- a/resources/i18n/cura.pot +++ b/resources/i18n/cura.pot @@ -4565,6 +4565,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "" + msgctxt "@button" msgid "Uninstall" msgstr "" diff --git a/resources/i18n/de_DE/cura.po b/resources/i18n/de_DE/cura.po index f006c75fb6..8ca4de67b4 100644 --- a/resources/i18n/de_DE/cura.po +++ b/resources/i18n/de_DE/cura.po @@ -4930,6 +4930,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Gruppierung für Modelle aufheben" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "Vor dem Drucken" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "Nach dem Drucken" + msgctxt "@button" msgid "Uninstall" msgstr "Deinstallieren" diff --git a/resources/i18n/de_DE/fdmprinter.def.json.po b/resources/i18n/de_DE/fdmprinter.def.json.po index ca893ad149..ff44a4837d 100644 --- a/resources/i18n/de_DE/fdmprinter.def.json.po +++ b/resources/i18n/de_DE/fdmprinter.def.json.po @@ -2580,6 +2580,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "Druckreihenfolge" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "Druckreihenfolge manuell einstellen" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "Ermöglicht das Ordnen der Objektliste, um die Druckreihenfolge manuell festzulegen. Das erste Objekt aus der Liste wird zuerst gedruckt." + msgctxt "speed_print label" msgid "Print Speed" msgstr "Druckgeschwindigkeit" diff --git a/resources/i18n/es_ES/cura.po b/resources/i18n/es_ES/cura.po index 07d4ad2d79..aa4c727441 100644 --- a/resources/i18n/es_ES/cura.po +++ b/resources/i18n/es_ES/cura.po @@ -4931,6 +4931,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Desagrupar modelos" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "Imprimir antes" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "Imprimir después" + msgctxt "@button" msgid "Uninstall" msgstr "Desinstalar" diff --git a/resources/i18n/es_ES/fdmprinter.def.json.po b/resources/i18n/es_ES/fdmprinter.def.json.po index 4b797652ed..6811ca05a8 100644 --- a/resources/i18n/es_ES/fdmprinter.def.json.po +++ b/resources/i18n/es_ES/fdmprinter.def.json.po @@ -2580,6 +2580,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "Secuencia de impresión" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "Establecer secuencia de impresión manualmente" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "Permite ordenar la lista de objetos para establecer la secuencia de impresión manualmente. El primer objeto de la lista se imprimirá primero." + msgctxt "speed_print label" msgid "Print Speed" msgstr "Velocidad de impresión" diff --git a/resources/i18n/fdmprinter.def.json.pot b/resources/i18n/fdmprinter.def.json.pot index 6b61ec3173..ab5a717643 100644 --- a/resources/i18n/fdmprinter.def.json.pot +++ b/resources/i18n/fdmprinter.def.json.pot @@ -4596,6 +4596,14 @@ msgctxt "print_sequence option one_at_a_time" msgid "One at a Time" msgstr "" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "" + msgctxt "infill_mesh label" msgid "Infill Mesh" msgstr "" diff --git a/resources/i18n/fi_FI/cura.po b/resources/i18n/fi_FI/cura.po index c3f331c1ef..55a60d50ae 100644 --- a/resources/i18n/fi_FI/cura.po +++ b/resources/i18n/fi_FI/cura.po @@ -4899,6 +4899,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Poista mallien ryhmitys" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "Tulosta ennen" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "Tulosta jälkeen" + msgctxt "@button" msgid "Uninstall" msgstr "" diff --git a/resources/i18n/fi_FI/fdmprinter.def.json.po b/resources/i18n/fi_FI/fdmprinter.def.json.po index 19a83d2f6a..a1e4ab420e 100644 --- a/resources/i18n/fi_FI/fdmprinter.def.json.po +++ b/resources/i18n/fi_FI/fdmprinter.def.json.po @@ -2578,6 +2578,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "Tulostusjärjestys" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "Aseta tulostusjärjestys manuaalisesti" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "Mahdollistaa kohteiden järjestämisen tulostusjärjestyksen manuaaliseen asettamiseen. Listan ensimmäinen kohde tulostetaan ensin." + msgctxt "speed_print label" msgid "Print Speed" msgstr "Tulostusnopeus" diff --git a/resources/i18n/fr_FR/cura.po b/resources/i18n/fr_FR/cura.po index b597b2d540..af46346d63 100644 --- a/resources/i18n/fr_FR/cura.po +++ b/resources/i18n/fr_FR/cura.po @@ -4928,6 +4928,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Dégrouper les modèles" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "Imprimer avant" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "Imprimer après" + msgctxt "@button" msgid "Uninstall" msgstr "Désinstaller" diff --git a/resources/i18n/fr_FR/fdmprinter.def.json.po b/resources/i18n/fr_FR/fdmprinter.def.json.po index e4018d33e5..2376820b7c 100644 --- a/resources/i18n/fr_FR/fdmprinter.def.json.po +++ b/resources/i18n/fr_FR/fdmprinter.def.json.po @@ -2580,6 +2580,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "Séquence d'impression" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "Définir la séquence d'impression manuellement" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "Permet de classer la liste des objets pour définir manuellement la séquence d'impression. Le premier objet de la liste sera imprimé en premier." + msgctxt "speed_print label" msgid "Print Speed" msgstr "Vitesse d’impression" diff --git a/resources/i18n/hu_HU/cura.po b/resources/i18n/hu_HU/cura.po index 9a502fbdf6..d5f06599a1 100644 --- a/resources/i18n/hu_HU/cura.po +++ b/resources/i18n/hu_HU/cura.po @@ -4913,6 +4913,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Csoport bontása" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "Nyomtatás előtt" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "Nyomtatás után" + msgctxt "@button" msgid "Uninstall" msgstr "" diff --git a/resources/i18n/hu_HU/fdmprinter.def.json.po b/resources/i18n/hu_HU/fdmprinter.def.json.po index 789454be37..27eabd4bbc 100644 --- a/resources/i18n/hu_HU/fdmprinter.def.json.po +++ b/resources/i18n/hu_HU/fdmprinter.def.json.po @@ -2585,6 +2585,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "Nyomtatási sorrend" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "Nyomtatási sorrend kézi beállítása" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "Lehetővé teszi az objektumlista rendezését a nyomtatási sorrend kézi beállításához. A lista első objektuma lesz először nyomtatva." + msgctxt "speed_print label" msgid "Print Speed" msgstr "Nyomtatási sebesség" diff --git a/resources/i18n/it_IT/cura.po b/resources/i18n/it_IT/cura.po index 1a131973bf..48918d3883 100644 --- a/resources/i18n/it_IT/cura.po +++ b/resources/i18n/it_IT/cura.po @@ -4931,6 +4931,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Separa modelli" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "Stampa prima" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "Stampa dopo" + msgctxt "@button" msgid "Uninstall" msgstr "Disinstalla" diff --git a/resources/i18n/it_IT/fdmprinter.def.json.po b/resources/i18n/it_IT/fdmprinter.def.json.po index 4565e30aa9..e9fc77ca3c 100644 --- a/resources/i18n/it_IT/fdmprinter.def.json.po +++ b/resources/i18n/it_IT/fdmprinter.def.json.po @@ -2580,6 +2580,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "Sequenza di stampa" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "Imposta manualmente la sequenza di stampa" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "Consente di ordinare l'elenco degli oggetti per impostare manualmente la sequenza di stampa. Il primo oggetto dell'elenco sarà stampato per primo." + msgctxt "speed_print label" msgid "Print Speed" msgstr "Velocità di stampa" diff --git a/resources/i18n/ja_JP/cura.po b/resources/i18n/ja_JP/cura.po index 7826e4df9e..bc2f27e825 100644 --- a/resources/i18n/ja_JP/cura.po +++ b/resources/i18n/ja_JP/cura.po @@ -4914,6 +4914,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "モデルを非グループ化" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "印刷前" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "印刷後" + msgctxt "@button" msgid "Uninstall" msgstr "アンインストール" diff --git a/resources/i18n/ja_JP/fdmprinter.def.json.po b/resources/i18n/ja_JP/fdmprinter.def.json.po index 8e473e72ae..a4311a63bd 100644 --- a/resources/i18n/ja_JP/fdmprinter.def.json.po +++ b/resources/i18n/ja_JP/fdmprinter.def.json.po @@ -2580,6 +2580,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "印刷頻度" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "手動で印刷順序を設定する" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "オブジェクトリストを並べ替えて、手動で印刷順序を設定することができます。リストの最初のオブジェクトが最初に印刷されます。" + msgctxt "speed_print label" msgid "Print Speed" msgstr "印刷速度" diff --git a/resources/i18n/ko_KR/cura.po b/resources/i18n/ko_KR/cura.po index 5926b7c442..6bfbd1bae7 100644 --- a/resources/i18n/ko_KR/cura.po +++ b/resources/i18n/ko_KR/cura.po @@ -4917,6 +4917,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "모델 그룹 해제" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "인쇄 전" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "인쇄 후" + msgctxt "@button" msgid "Uninstall" msgstr "설치 제거" diff --git a/resources/i18n/ko_KR/fdmprinter.def.json.po b/resources/i18n/ko_KR/fdmprinter.def.json.po index 7e2974dd37..0cf075c854 100644 --- a/resources/i18n/ko_KR/fdmprinter.def.json.po +++ b/resources/i18n/ko_KR/fdmprinter.def.json.po @@ -2580,6 +2580,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "프린팅 순서" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "수동으로 인쇄 순서 설정" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "객체 목록을 정렬하여 수동으로 인쇄 순서를 설정할 수 있습니다. 목록의 첫 번째 객체가 먼저 인쇄됩니다." + msgctxt "speed_print label" msgid "Print Speed" msgstr "프린팅 속도" diff --git a/resources/i18n/nl_NL/cura.po b/resources/i18n/nl_NL/cura.po index f831c7989f..43ca87b01e 100644 --- a/resources/i18n/nl_NL/cura.po +++ b/resources/i18n/nl_NL/cura.po @@ -4925,6 +4925,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Groeperen van Modellen Opheffen" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "Afdrukken voor" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "Afdrukken na" + msgctxt "@button" msgid "Uninstall" msgstr "De-installeren" diff --git a/resources/i18n/nl_NL/fdmprinter.def.json.po b/resources/i18n/nl_NL/fdmprinter.def.json.po index 7d6b32e0ac..8c4ef463a8 100644 --- a/resources/i18n/nl_NL/fdmprinter.def.json.po +++ b/resources/i18n/nl_NL/fdmprinter.def.json.po @@ -2580,6 +2580,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "Printvolgorde" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "Handmatig afdrukvolgorde instellen" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "Maakt het mogelijk de objectlijst te ordenen om de afdrukvolgorde handmatig in te stellen. Het eerste object van de lijst wordt als eerste afgedrukt." + msgctxt "speed_print label" msgid "Print Speed" msgstr "Printsnelheid" diff --git a/resources/i18n/pl_PL/cura.po b/resources/i18n/pl_PL/cura.po index ed823e183c..fe9f606141 100644 --- a/resources/i18n/pl_PL/cura.po +++ b/resources/i18n/pl_PL/cura.po @@ -4916,6 +4916,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Rozgrupuj modele" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "Drukuj przed" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "Drukuj po" + msgctxt "@button" msgid "Uninstall" msgstr "" diff --git a/resources/i18n/pl_PL/fdmprinter.def.json.po b/resources/i18n/pl_PL/fdmprinter.def.json.po index b772775d09..7f093c859c 100644 --- a/resources/i18n/pl_PL/fdmprinter.def.json.po +++ b/resources/i18n/pl_PL/fdmprinter.def.json.po @@ -2584,6 +2584,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "Sekwencja Wydruku" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "Ręczne ustawienie kolejności drukowania" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "Umożliwia ręczne ustawienie kolejności drukowania na liście obiektów. Pierwszy obiekt z listy zostanie wydrukowany jako pierwszy." + msgctxt "speed_print label" msgid "Print Speed" msgstr "Prędkość Druku" diff --git a/resources/i18n/pt_BR/cura.po b/resources/i18n/pt_BR/cura.po index 1c4590a016..0ae0a56cfd 100644 --- a/resources/i18n/pt_BR/cura.po +++ b/resources/i18n/pt_BR/cura.po @@ -4942,6 +4942,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Desagrupar Modelos" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "Imprimir antes" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "Imprimir depois" + msgctxt "@button" msgid "Uninstall" msgstr "Desinstalar" diff --git a/resources/i18n/pt_BR/fdmprinter.def.json.po b/resources/i18n/pt_BR/fdmprinter.def.json.po index 651837f458..412a020a7e 100644 --- a/resources/i18n/pt_BR/fdmprinter.def.json.po +++ b/resources/i18n/pt_BR/fdmprinter.def.json.po @@ -2585,6 +2585,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "Sequência de Impressão" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "Definir sequência de impressão manualmente" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "Permite ordenar a lista de objetos para definir a sequência de impressão manualmente. O primeiro objeto da lista será impresso primeiro." + msgctxt "speed_print label" msgid "Print Speed" msgstr "Velocidade de Impressão" diff --git a/resources/i18n/pt_PT/cura.po b/resources/i18n/pt_PT/cura.po index 48ea1e7c2c..d6e19b222d 100644 --- a/resources/i18n/pt_PT/cura.po +++ b/resources/i18n/pt_PT/cura.po @@ -4932,6 +4932,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Desagrupar Modelos" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "Imprimir antes" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "Imprimir depois" + msgctxt "@button" msgid "Uninstall" msgstr "Desinstalar" diff --git a/resources/i18n/pt_PT/fdmprinter.def.json.po b/resources/i18n/pt_PT/fdmprinter.def.json.po index dea593ffe4..36283bc9de 100644 --- a/resources/i18n/pt_PT/fdmprinter.def.json.po +++ b/resources/i18n/pt_PT/fdmprinter.def.json.po @@ -2580,6 +2580,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "Sequência de impressão" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "Definir sequência de impressão manualmente" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "Permite ordenar a lista de objetos para definir a sequência de impressão manualmente. O primeiro objeto da lista será impresso primeiro." + msgctxt "speed_print label" msgid "Print Speed" msgstr "Velocidade de Impressão" diff --git a/resources/i18n/ru_RU/cura.po b/resources/i18n/ru_RU/cura.po index 6494d6b5d2..2960193d7e 100644 --- a/resources/i18n/ru_RU/cura.po +++ b/resources/i18n/ru_RU/cura.po @@ -4955,6 +4955,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Разгруппировать модели" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "Печатать до" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "Печатать после" + msgctxt "@button" msgid "Uninstall" msgstr "Удалить" diff --git a/resources/i18n/ru_RU/fdmprinter.def.json.po b/resources/i18n/ru_RU/fdmprinter.def.json.po index 99036d4865..bba90e21ef 100644 --- a/resources/i18n/ru_RU/fdmprinter.def.json.po +++ b/resources/i18n/ru_RU/fdmprinter.def.json.po @@ -2580,6 +2580,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "Последовательная печать" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "Установить последовательность печати вручную" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "Позволяет упорядочить список объектов для ручной настройки последовательности печати. Первый объект из списка будет напечатан первым." + msgctxt "speed_print label" msgid "Print Speed" msgstr "Скорость печати" diff --git a/resources/i18n/tr_TR/cura.po b/resources/i18n/tr_TR/cura.po index d98ff91e72..c3afd0c7c1 100644 --- a/resources/i18n/tr_TR/cura.po +++ b/resources/i18n/tr_TR/cura.po @@ -4931,6 +4931,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Model Grubunu Çöz" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "Önce Yazdır" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "Sonra Yazdır" + msgctxt "@button" msgid "Uninstall" msgstr "Kaldır" diff --git a/resources/i18n/tr_TR/fdmprinter.def.json.po b/resources/i18n/tr_TR/fdmprinter.def.json.po index b57a0cd0bb..0e11895512 100644 --- a/resources/i18n/tr_TR/fdmprinter.def.json.po +++ b/resources/i18n/tr_TR/fdmprinter.def.json.po @@ -2580,6 +2580,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "Yazdırma Dizisi" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "Baskı Sırasını Manuel Olarak Ayarla" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "Nesne listesini sıralayarak baskı sırasını manuel olarak ayarlamayı sağlar. Listeden ilk nesne ilk olarak basılacak." + msgctxt "speed_print label" msgid "Print Speed" msgstr "Yazdırma Hızı" diff --git a/resources/i18n/zh_CN/cura.po b/resources/i18n/zh_CN/cura.po index 34b4f1d4dc..cf2ed81f9b 100644 --- a/resources/i18n/zh_CN/cura.po +++ b/resources/i18n/zh_CN/cura.po @@ -4919,6 +4919,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "拆分模型" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "打印前" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "打印后" + msgctxt "@button" msgid "Uninstall" msgstr "卸载" diff --git a/resources/i18n/zh_CN/fdmprinter.def.json.po b/resources/i18n/zh_CN/fdmprinter.def.json.po index 1042199d5b..4696832051 100644 --- a/resources/i18n/zh_CN/fdmprinter.def.json.po +++ b/resources/i18n/zh_CN/fdmprinter.def.json.po @@ -2580,6 +2580,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "打印序列" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "手动设置打印顺序" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "允许对对象列表进行排序,以手动设置打印顺序。列表中的第一个对象将首先被打印。" + msgctxt "speed_print label" msgid "Print Speed" msgstr "打印速度" diff --git a/resources/i18n/zh_TW/cura.po b/resources/i18n/zh_TW/cura.po index a461fd1fa3..741bde1d14 100644 --- a/resources/i18n/zh_TW/cura.po +++ b/resources/i18n/zh_TW/cura.po @@ -4911,6 +4911,14 @@ msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "取消模型群組" +msgctxt "@action:inmenu menubar:edit" +msgid "Print Before" +msgstr "列印前" + +msgctxt "@action:inmenu menubar:edit" +msgid "Print After" +msgstr "列印後" + msgctxt "@button" msgid "Uninstall" msgstr "" diff --git a/resources/i18n/zh_TW/fdmprinter.def.json.po b/resources/i18n/zh_TW/fdmprinter.def.json.po index c92a7f861a..aa02299fc1 100644 --- a/resources/i18n/zh_TW/fdmprinter.def.json.po +++ b/resources/i18n/zh_TW/fdmprinter.def.json.po @@ -2585,6 +2585,14 @@ msgctxt "print_sequence label" msgid "Print Sequence" msgstr "列印順序" +msgctxt "user_defined_print_order_enabled label" +msgid "Set Print Sequence Manually" +msgstr "手動設置列印順序" + +msgctxt "user_defined_print_order_enabled description" +msgid "Allows to order the object list to set the print sequence manually. First object from the list will be printed first." +msgstr "允許手動設置物件列表以設定列印順序。列表中的第一個物件將首先被列印。" + msgctxt "speed_print label" msgid "Print Speed" msgstr "列印速度" diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index 458d7fcaae..4cc504166b 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -35,6 +35,9 @@ Item property alias mergeObjects: mergeObjectsAction //property alias unMergeObjects: unMergeObjectsAction + property alias printObjectBeforePrevious: printObjectBeforePreviousAction + property alias printObjectAfterNext: printObjectAfterNextAction + property alias multiplyObject: multiplyObjectAction property alias selectAll: selectAllAction @@ -406,6 +409,26 @@ Item onTriggered: CuraApplication.ungroupSelected() } + Action + { + id: printObjectBeforePreviousAction + text: catalog.i18nc("@action:inmenu menubar:edit","Print Before") + " " + PrintOrderManager.previousNodeName + enabled: PrintOrderManager.shouldEnablePrintBeforeAction + icon.name: "print-before" + shortcut: "PgUp" + onTriggered: PrintOrderManager.swapSelectedAndPreviousNodes() + } + + Action + { + id: printObjectAfterNextAction + text: catalog.i18nc("@action:inmenu menubar:edit","Print After") + " " + PrintOrderManager.nextNodeName + enabled: PrintOrderManager.shouldEnablePrintAfterAction + icon.name: "print-after" + shortcut: "PgDown" + onTriggered: PrintOrderManager.swapSelectedAndNextNodes() + } + Action { id: mergeObjectsAction diff --git a/resources/qml/Menus/ContextMenu.qml b/resources/qml/Menus/ContextMenu.qml index 2de2795a74..1b32c24254 100644 --- a/resources/qml/Menus/ContextMenu.qml +++ b/resources/qml/Menus/ContextMenu.qml @@ -78,6 +78,19 @@ Cura.Menu Cura.MenuItem { action: Cura.Actions.mergeObjects } Cura.MenuItem { action: Cura.Actions.unGroupObjects } + // Edit print sequence actions + Cura.MenuSeparator { visible: PrintOrderManager.shouldShowEditPrintOrderActions } + Cura.MenuItem + { + action: Cura.Actions.printObjectBeforePrevious + visible: PrintOrderManager.shouldShowEditPrintOrderActions + } + Cura.MenuItem + { + action: Cura.Actions.printObjectAfterNext + visible: PrintOrderManager.shouldShowEditPrintOrderActions + } + Connections { target: UM.Controller diff --git a/resources/qml/Menus/EditMenu.qml b/resources/qml/Menus/EditMenu.qml index 522c6b27d1..728b3b212b 100644 --- a/resources/qml/Menus/EditMenu.qml +++ b/resources/qml/Menus/EditMenu.qml @@ -25,4 +25,17 @@ Cura.Menu Cura.MenuItem { action: Cura.Actions.groupObjects } Cura.MenuItem { action: Cura.Actions.mergeObjects } Cura.MenuItem { action: Cura.Actions.unGroupObjects } + + // Edit print sequence actions + Cura.MenuSeparator { visible: PrintOrderManager.shouldShowEditPrintOrderActions } + Cura.MenuItem + { + action: Cura.Actions.printObjectBeforePrevious + visible: PrintOrderManager.shouldShowEditPrintOrderActions + } + Cura.MenuItem + { + action: Cura.Actions.printObjectAfterNext + visible: PrintOrderManager.shouldShowEditPrintOrderActions + } } \ No newline at end of file diff --git a/resources/setting_visibility/advanced.cfg b/resources/setting_visibility/advanced.cfg index c3451d2c98..cd501267d0 100644 --- a/resources/setting_visibility/advanced.cfg +++ b/resources/setting_visibility/advanced.cfg @@ -136,6 +136,7 @@ prime_tower_brim_enable [blackmagic] print_sequence +user_defined_print_order_enabled magic_mesh_surface_mode magic_spiralize smooth_spiralized_contours diff --git a/resources/setting_visibility/expert.cfg b/resources/setting_visibility/expert.cfg index 2f2dd7671d..06ffead8a5 100644 --- a/resources/setting_visibility/expert.cfg +++ b/resources/setting_visibility/expert.cfg @@ -386,6 +386,7 @@ meshfix_fluid_motion_angle [blackmagic] print_sequence +user_defined_print_order_enabled infill_mesh infill_mesh_order cutting_mesh diff --git a/tests/TestHitChecker.py b/tests/TestHitChecker.py new file mode 100644 index 0000000000..59ee1d8162 --- /dev/null +++ b/tests/TestHitChecker.py @@ -0,0 +1,141 @@ +from unittest.mock import patch + +from cura.HitChecker import HitChecker +from cura.OneAtATimeIterator import OneAtATimeIterator +from cura.Scene.CuraSceneNode import CuraSceneNode + + +def test_anyTwoNodesBlockEachOther_True(): + node1 = CuraSceneNode(no_setting_override=True) + node2 = CuraSceneNode(no_setting_override=True) + # node1 and node2 block each other + hit_map = { + node1: {node1: 0, node2: 1}, + node2: {node1: 1, node2: 0} + } + + with patch.object(HitChecker, "_buildHitMap", return_value=hit_map): + hit_checker = HitChecker([node1, node2]) + assert hit_checker.anyTwoNodesBlockEachOther([node1, node2]) + assert hit_checker.anyTwoNodesBlockEachOther([node2, node1]) + + +def test_anyTwoNodesBlockEachOther_False(): + node1 = CuraSceneNode(no_setting_override=True) + node2 = CuraSceneNode(no_setting_override=True) + # node1 blocks node2, but node2 doesn't block node1 + hit_map = { + node1: {node1: 0, node2: 1}, + node2: {node1: 0, node2: 0} + } + + with patch.object(HitChecker, "_buildHitMap", return_value=hit_map): + hit_checker = HitChecker([node1, node2]) + assert not hit_checker.anyTwoNodesBlockEachOther([node1, node2]) + assert not hit_checker.anyTwoNodesBlockEachOther([node2, node1]) + + +def test_canPrintBefore(): + node1 = CuraSceneNode(no_setting_override=True) + node2 = CuraSceneNode(no_setting_override=True) + node3 = CuraSceneNode(no_setting_override=True) + # nodes can be printed only in order node1 -> node2 -> node3 + hit_map = { + node1: {node1: 0, node2: 0, node3: 0}, + node2: {node1: 1, node2: 0, node3: 0}, + node3: {node1: 1, node2: 1, node3: 0}, + } + + with patch.object(HitChecker, "_buildHitMap", return_value=hit_map): + hit_checker = HitChecker([node1, node2, node3]) + + assert hit_checker.canPrintBefore(node1, [node2]) + assert hit_checker.canPrintBefore(node1, [node3]) + assert hit_checker.canPrintBefore(node1, [node2, node3]) + assert hit_checker.canPrintBefore(node1, [node3, node2]) + + assert hit_checker.canPrintBefore(node2, [node3]) + assert not hit_checker.canPrintBefore(node2, [node1]) + assert not hit_checker.canPrintBefore(node2, [node1, node3]) + assert not hit_checker.canPrintBefore(node2, [node3, node1]) + + assert not hit_checker.canPrintBefore(node3, [node1]) + assert not hit_checker.canPrintBefore(node3, [node2]) + assert not hit_checker.canPrintBefore(node3, [node1, node2]) + assert not hit_checker.canPrintBefore(node3, [node2, node1]) + + +def test_canPrintAfter(): + node1 = CuraSceneNode(no_setting_override=True) + node2 = CuraSceneNode(no_setting_override=True) + node3 = CuraSceneNode(no_setting_override=True) + + # nodes can be printed only in order node1 -> node2 -> node3 + hit_map = { + node1: {node1: 0, node2: 0, node3: 0}, + node2: {node1: 1, node2: 0, node3: 0}, + node3: {node1: 1, node2: 1, node3: 0}, + } + + with patch.object(HitChecker, "_buildHitMap", return_value=hit_map): + hit_checker = HitChecker([node1, node2, node3]) + + assert not hit_checker.canPrintAfter(node1, [node2]) + assert not hit_checker.canPrintAfter(node1, [node3]) + assert not hit_checker.canPrintAfter(node1, [node2, node3]) + assert not hit_checker.canPrintAfter(node1, [node3, node2]) + + assert hit_checker.canPrintAfter(node2, [node1]) + assert not hit_checker.canPrintAfter(node2, [node3]) + assert not hit_checker.canPrintAfter(node2, [node1, node3]) + assert not hit_checker.canPrintAfter(node2, [node3, node1]) + + assert hit_checker.canPrintAfter(node3, [node1]) + assert hit_checker.canPrintAfter(node3, [node2]) + assert hit_checker.canPrintAfter(node3, [node1, node2]) + assert hit_checker.canPrintAfter(node3, [node2, node1]) + + +def test_calculateScore(): + node1 = CuraSceneNode(no_setting_override=True) + node2 = CuraSceneNode(no_setting_override=True) + node3 = CuraSceneNode(no_setting_override=True) + + hit_map = { + node1: {node1: 0, node2: 0, node3: 0}, # sum is 0 + node2: {node1: 1, node2: 0, node3: 0}, # sum is 1 + node3: {node1: 1, node2: 1, node3: 0}, # sum is 2 + } + + with patch.object(HitChecker, "_buildHitMap", return_value=hit_map): + hit_checker = HitChecker([node1, node2, node3]) + + # score is a diff between sums + assert hit_checker.calculateScore(node1, node2) == -1 + assert hit_checker.calculateScore(node2, node1) == 1 + assert hit_checker.calculateScore(node1, node3) == -2 + assert hit_checker.calculateScore(node3, node1) == 2 + assert hit_checker.calculateScore(node2, node3) == -1 + assert hit_checker.calculateScore(node3, node2) == 1 + + +def test_canPrintNodesInProvidedOrder(): + node1 = CuraSceneNode(no_setting_override=True) + node2 = CuraSceneNode(no_setting_override=True) + node3 = CuraSceneNode(no_setting_override=True) + + # nodes can be printed only in order node1 -> node2 -> node3 + hit_map = { + node1: {node1: 0, node2: 0, node3: 0}, # 0 + node2: {node1: 1, node2: 0, node3: 0}, # 1 + node3: {node1: 1, node2: 1, node3: 0}, # 2 + } + + with patch.object(HitChecker, "_buildHitMap", return_value=hit_map): + hit_checker = HitChecker([node1, node2, node3]) + assert hit_checker.canPrintNodesInProvidedOrder([node1, node2, node3]) + assert not hit_checker.canPrintNodesInProvidedOrder([node1, node3, node2]) + assert not hit_checker.canPrintNodesInProvidedOrder([node2, node1, node3]) + assert not hit_checker.canPrintNodesInProvidedOrder([node2, node3, node1]) + assert not hit_checker.canPrintNodesInProvidedOrder([node3, node1, node2]) + assert not hit_checker.canPrintNodesInProvidedOrder([node3, node2, node1]) \ No newline at end of file diff --git a/tests/TestPrintOrderManager.py b/tests/TestPrintOrderManager.py new file mode 100644 index 0000000000..8b2c0475b2 --- /dev/null +++ b/tests/TestPrintOrderManager.py @@ -0,0 +1,175 @@ +from unittest.mock import patch, MagicMock + +from cura.PrintOrderManager import PrintOrderManager +from cura.Scene.CuraSceneNode import CuraSceneNode + + +def test_getNodeName(): + node1 = CuraSceneNode(name="cat", no_setting_override=True) + node2 = CuraSceneNode(name="dog", no_setting_override=True) + assert PrintOrderManager._getNodeName(node1) == "cat" + assert PrintOrderManager._getNodeName(node2) == "dog" + assert PrintOrderManager._getNodeName(None) == "" + + +def test_getNodeName_truncatesLongName(): + node = CuraSceneNode(name="some_name_longer_than_30_characters", no_setting_override=True) + assert PrintOrderManager._getNodeName(node) == "some_name_longer_than_30_chara" + assert PrintOrderManager._getNodeName(node, max_length=10) == "some_name_" + + +def test_getSingleSelectedNode(): + node1 = CuraSceneNode(no_setting_override=True) + with patch("UM.Scene.Selection.Selection.getAllSelectedObjects", MagicMock(return_value=[node1])): + with patch("UM.Scene.Selection.Selection.getSelectedObject", MagicMock(return_value=node1)): + assert PrintOrderManager._getSingleSelectedNode() == node1 + + +def test_getSingleSelectedNode_returnsNoneIfNothingSelected(): + with patch("UM.Scene.Selection.Selection.getAllSelectedObjects", MagicMock(return_value=[])): + assert PrintOrderManager._getSingleSelectedNode() is None + + +def test_getSingleSelectedNode_returnsNoneIfMultipleObjectsSelected(): + node1 = CuraSceneNode(no_setting_override=True) + node2 = CuraSceneNode(no_setting_override=True) + with patch("UM.Scene.Selection.Selection.getAllSelectedObjects", MagicMock(return_value=[node1, node2])): + assert PrintOrderManager._getSingleSelectedNode() is None + + +def test_neighborNodeNamesCorrect_WhenSomeNodeSelected(): + node1 = CuraSceneNode(no_setting_override=True, name="node1") + node2 = CuraSceneNode(no_setting_override=True, name="node2") + node3 = CuraSceneNode(no_setting_override=True, name="node3") + node1.printOrder = 1 + node2.printOrder = 2 + node3.printOrder = 3 + with patch.object(PrintOrderManager, "_configureEvents", return_value=None): + with patch.object(PrintOrderManager, "_getSingleSelectedNode", return_value=node1): + print_order_manager = PrintOrderManager(get_nodes=lambda: [node1, node2, node3]) + + assert print_order_manager.previousNodeName == "" + assert print_order_manager.nextNodeName == "node2" + assert not print_order_manager.shouldEnablePrintBeforeAction + assert print_order_manager.shouldEnablePrintAfterAction + + print_order_manager.swapSelectedAndNextNodes() # swaps node1 with node2, result: [node2, node1, node3] + assert print_order_manager.previousNodeName == "node2" + assert print_order_manager.nextNodeName == "node3" + assert print_order_manager.shouldEnablePrintBeforeAction + assert print_order_manager.shouldEnablePrintAfterAction + + print_order_manager.swapSelectedAndNextNodes() # swaps node1 with node3, result: [node2, node3, node1] + assert print_order_manager.previousNodeName == "node3" + assert print_order_manager.nextNodeName == "" + assert print_order_manager.shouldEnablePrintBeforeAction + assert not print_order_manager.shouldEnablePrintAfterAction + + print_order_manager.swapSelectedAndPreviousNodes() # swaps node1 with node3, result: [node2, node1, node3] + assert print_order_manager.previousNodeName == "node2" + assert print_order_manager.nextNodeName == "node3" + assert print_order_manager.shouldEnablePrintBeforeAction + assert print_order_manager.shouldEnablePrintAfterAction + + print_order_manager.swapSelectedAndPreviousNodes() # swaps node1 with node2, result: [node1, node2, node3] + assert print_order_manager.previousNodeName == "" + assert print_order_manager.nextNodeName == "node2" + assert not print_order_manager.shouldEnablePrintBeforeAction + assert print_order_manager.shouldEnablePrintAfterAction + + +def test_neighborNodeNamesEmpty_WhenNothingSelected(): + node1 = CuraSceneNode(no_setting_override=True, name="node1") + node2 = CuraSceneNode(no_setting_override=True, name="node2") + node3 = CuraSceneNode(no_setting_override=True, name="node3") + node1.printOrder = 1 + node2.printOrder = 2 + node3.printOrder = 3 + with patch.object(PrintOrderManager, "_configureEvents", return_value=None): + with patch.object(PrintOrderManager, "_getSingleSelectedNode", return_value=None): + print_order_manager = PrintOrderManager(get_nodes=lambda: [node1, node2, node3]) + assert print_order_manager.previousNodeName == "" + assert print_order_manager.nextNodeName == "" + assert not print_order_manager.shouldEnablePrintBeforeAction + assert not print_order_manager.shouldEnablePrintAfterAction + + +def test_initializePrintOrders(): + node1 = CuraSceneNode(no_setting_override=True) + node2 = CuraSceneNode(no_setting_override=True) + + # assume print orders are 0 + assert node1.printOrder == 0 + assert node2.printOrder == 0 + + PrintOrderManager.initializePrintOrders([node1, node2]) + + # assert print orders initialized + assert node1.printOrder == 1 + assert node2.printOrder == 2 + + node3 = CuraSceneNode(no_setting_override=True) + node4 = CuraSceneNode(no_setting_override=True) + # assume print orders are 0 + assert node3.printOrder == 0 + assert node4.printOrder == 0 + + PrintOrderManager.initializePrintOrders([node2, node1, node3, node4]) + + # assert print orders not changed for node1 and node2 and initialized for node3 and node4 + assert node1.printOrder == 1 + assert node2.printOrder == 2 + assert node3.printOrder == 3 + assert node4.printOrder == 4 + + +def test_updatePrintOrdersAfterGroupOperation(): + node1 = CuraSceneNode(no_setting_override=True) + node2 = CuraSceneNode(no_setting_override=True) + node3 = CuraSceneNode(no_setting_override=True) + node4 = CuraSceneNode(no_setting_override=True) + node5 = CuraSceneNode(no_setting_override=True) + node1.printOrder = 1 + node2.printOrder = 2 + node3.printOrder = 3 + node4.printOrder = 4 + node5.printOrder = 5 + + all_nodes = [node1, node2, node3, node4, node5] + grouped_nodes = [node2, node4] + group_node = CuraSceneNode(no_setting_override=True) + + PrintOrderManager.updatePrintOrdersAfterGroupOperation(all_nodes, group_node, grouped_nodes) + + assert node1.printOrder == 1 + assert group_node.printOrder == 2 + assert node3.printOrder == 3 + assert node5.printOrder == 4 + + +def test_updatePrintOrdersAfterUngroupOperation(): + node1 = CuraSceneNode(no_setting_override=True) + node2 = CuraSceneNode(no_setting_override=True) + node3 = CuraSceneNode(no_setting_override=True) + node1.printOrder = 1 + node2.printOrder = 2 + node3.printOrder = 3 + + all_nodes = [node1, node2, node3] + node4 = CuraSceneNode(no_setting_override=True) + node5 = CuraSceneNode(no_setting_override=True) + + group_node = node2 + ungrouped_nodes = [node4, node5] + PrintOrderManager.updatePrintOrdersAfterUngroupOperation(all_nodes, group_node, ungrouped_nodes) + + assert node1.printOrder == 1 + assert node4.printOrder == 2 + assert node5.printOrder == 3 + assert node3.printOrder == 4 + + assert node1 in all_nodes + assert node2 not in all_nodes + assert node3 in all_nodes + assert node4 in all_nodes + assert node5 in all_nodes From 330dfd8be0dc4ea312273df3e73654ca51618242 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Wed, 10 Jan 2024 15:13:42 +0100 Subject: [PATCH 020/203] Add retry to OAuth token refresh failure CURA-11406 --- cura/OAuth2/AuthorizationHelpers.py | 11 ++++++++--- cura/OAuth2/AuthorizationService.py | 26 +++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/cura/OAuth2/AuthorizationHelpers.py b/cura/OAuth2/AuthorizationHelpers.py index a654ee4bdb..1bc0d545f4 100644 --- a/cura/OAuth2/AuthorizationHelpers.py +++ b/cura/OAuth2/AuthorizationHelpers.py @@ -16,6 +16,7 @@ from UM.TaskManagement.HttpRequestManager import HttpRequestManager # To downlo catalog = i18nCatalog("cura") TOKEN_TIMESTAMP_FORMAT = "%Y-%m-%d %H:%M:%S" +REQUEST_TIMEOUT = 5 # Seconds class AuthorizationHelpers: @@ -52,7 +53,8 @@ class AuthorizationHelpers: data = urllib.parse.urlencode(data).encode("UTF-8"), headers_dict = headers, callback = lambda response: self.parseTokenResponse(response, callback), - error_callback = lambda response, _: self.parseTokenResponse(response, callback) + error_callback = lambda response, _: self.parseTokenResponse(response, callback), + timeout = REQUEST_TIMEOUT ) def getAccessTokenUsingRefreshToken(self, refresh_token: str, callback: Callable[[AuthenticationResponse], None]) -> None: @@ -75,7 +77,9 @@ class AuthorizationHelpers: data = urllib.parse.urlencode(data).encode("UTF-8"), headers_dict = headers, callback = lambda response: self.parseTokenResponse(response, callback), - error_callback = lambda response, _: self.parseTokenResponse(response, callback) + error_callback = lambda response, _: self.parseTokenResponse(response, callback), + urgent = True, + timeout = REQUEST_TIMEOUT ) def parseTokenResponse(self, token_response: QNetworkReply, callback: Callable[[AuthenticationResponse], None]) -> None: @@ -120,7 +124,8 @@ class AuthorizationHelpers: check_token_url, headers_dict = headers, callback = lambda reply: self._parseUserProfile(reply, success_callback, failed_callback), - error_callback = lambda _, _2: failed_callback() if failed_callback is not None else None + error_callback = lambda _, _2: failed_callback() if failed_callback is not None else None, + timeout = REQUEST_TIMEOUT ) def _parseUserProfile(self, reply: QNetworkReply, success_callback: Optional[Callable[[UserProfile], None]], failed_callback: Optional[Callable[[], None]] = None) -> None: diff --git a/cura/OAuth2/AuthorizationService.py b/cura/OAuth2/AuthorizationService.py index 62bf31982a..7a1bfb75f7 100644 --- a/cura/OAuth2/AuthorizationService.py +++ b/cura/OAuth2/AuthorizationService.py @@ -6,13 +6,14 @@ from datetime import datetime, timedelta from typing import Callable, Dict, Optional, TYPE_CHECKING, Union from urllib.parse import urlencode, quote_plus -from PyQt6.QtCore import QUrl +from PyQt6.QtCore import QUrl, QTimer from PyQt6.QtGui import QDesktopServices from UM.Logger import Logger from UM.Message import Message from UM.Signal import Signal from UM.i18n import i18nCatalog +from UM.TaskManagement.HttpRequestManager import HttpRequestManager # To download log-in tokens. from cura.OAuth2.AuthorizationHelpers import AuthorizationHelpers, TOKEN_TIMESTAMP_FORMAT from cura.OAuth2.LocalAuthorizationServer import LocalAuthorizationServer from cura.OAuth2.Models import AuthenticationResponse, BaseModel @@ -53,6 +54,12 @@ class AuthorizationService: self.onAuthStateChanged.connect(self._authChanged) + self._refresh_token_retries = 0 + self._refresh_token_retry_timer = QTimer() + self._refresh_token_retry_timer.setInterval(1000) + self._refresh_token_retry_timer.setSingleShot(True) + self._refresh_token_retry_timer.timeout.connect(self.refreshAccessToken) + def _authChanged(self, logged_in): if logged_in and self._unable_to_get_data_message is not None: self._unable_to_get_data_message.hide() @@ -163,16 +170,29 @@ class AuthorizationService: return def process_auth_data(response: AuthenticationResponse) -> None: + self._currently_refreshing_token = False + if response.success: + self._refresh_token_retries = 0 self._storeAuthData(response) + HttpRequestManager.getInstance().setDelayRequests(False) self.onAuthStateChanged.emit(logged_in = True) else: - Logger.warning("Failed to get a new access token from the server.") - self.onAuthStateChanged.emit(logged_in = False) + if self._refresh_token_retries >= 15: + self._refresh_token_retries = 0 + Logger.warning("Failed to get a new access token from the server, giving up.") + HttpRequestManager.getInstance().setDelayRequests(False) + self.onAuthStateChanged.emit(logged_in = False) + else: + # Retry a bit later, network may be offline right now and will hopefully be back soon + Logger.warning("Failed to get a new access token from the server, retrying later.") + self._refresh_token_retries += 1 + self._refresh_token_retry_timer.start() if self._currently_refreshing_token: Logger.debug("Was already busy refreshing token. Do not start a new request.") return + HttpRequestManager.getInstance().setDelayRequests(True) self._currently_refreshing_token = True self._auth_helpers.getAccessTokenUsingRefreshToken(self._auth_data.refresh_token, process_auth_data) From 332222f9aa8e1733ad96f20bee8c1f5788ebb6e6 Mon Sep 17 00:00:00 2001 From: wawanbreton Date: Wed, 10 Jan 2024 15:31:30 +0000 Subject: [PATCH 021/203] Applied printer-linter format --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 2066ca5bd9..bc25ce590c 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6900,7 +6900,7 @@ "minimum_value": "0", "maximum_value": "min(0.5 * machine_width, 0.5 * machine_depth)", "settable_per_mesh": false, - "settable_per_extruder": false + "settable_per_extruder": false }, "prime_tower_base_height": { From 34555d4dd138f478911c75b539be9834e6b5317c Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Wed, 10 Jan 2024 17:24:10 +0100 Subject: [PATCH 022/203] Rename prime tower enabled -> mode in profiles --- resources/setting_visibility/advanced.cfg | 2 +- resources/setting_visibility/basic.cfg | 2 +- resources/setting_visibility/expert.cfg | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/resources/setting_visibility/advanced.cfg b/resources/setting_visibility/advanced.cfg index c3451d2c98..1b59302c4d 100644 --- a/resources/setting_visibility/advanced.cfg +++ b/resources/setting_visibility/advanced.cfg @@ -127,7 +127,7 @@ brim_line_count brim_outside_only [dual] -prime_tower_enable +prime_tower_mode prime_tower_position_x prime_tower_position_y prime_tower_brim_enable diff --git a/resources/setting_visibility/basic.cfg b/resources/setting_visibility/basic.cfg index 0193eb26ba..f5552f3cd8 100644 --- a/resources/setting_visibility/basic.cfg +++ b/resources/setting_visibility/basic.cfg @@ -53,7 +53,7 @@ adhesion_type adhesion_extruder_nr [dual] -prime_tower_enable +prime_tower_mode prime_tower_position_x prime_tower_position_y diff --git a/resources/setting_visibility/expert.cfg b/resources/setting_visibility/expert.cfg index ab0d2aa920..5a9b9bd585 100644 --- a/resources/setting_visibility/expert.cfg +++ b/resources/setting_visibility/expert.cfg @@ -356,7 +356,7 @@ raft_fan_speed raft_is_shrink_plate [dual] -prime_tower_enable +prime_tower_mode prime_tower_size prime_tower_min_volume prime_tower_position_x @@ -367,6 +367,7 @@ prime_tower_base_size prime_tower_base_height prime_tower_base_curve_magnitude prime_tower_raft_base_line_spacing +prime_tower_max_bridging_distance ooze_shield_enabled ooze_shield_angle ooze_shield_dist From a4137676af257ab391a7102f0c01c2716e439e57 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Mon, 15 Jan 2024 09:56:14 +0100 Subject: [PATCH 023/203] Settings name consistency --- resources/definitions/fdmprinter.def.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index bc25ce590c..1f348f2828 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6789,8 +6789,8 @@ "options": { "none": "None", - "optimized_consistent": "Bucket", - "optimized": "Sparse" + "bucket": "Bucket", + "sparse": "Sparse" }, "default_value": "none", "enabled": "extruders_enabled_count > 1", @@ -6835,7 +6835,7 @@ "default_value": 5, "minimum_value": "line_width", "maximum_value_warning": "10.0", - "enabled": "resolveOrValue('prime_tower_mode') == 'optimized' or resolveOrValue('prime_tower_mode') == 'optimized_consistent'", + "enabled": "resolveOrValue('prime_tower_mode') == 'sparse' or resolveOrValue('prime_tower_mode') == 'bucket'", "settable_per_mesh": false, "settable_per_extruder": true }, From 22b67f1c2045f0ddcb887c910df74ae6049b0ab6 Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Thu, 18 Jan 2024 15:53:11 +0100 Subject: [PATCH 024/203] Increase small skin width from 0.8mm to 4mm to prevent jerky moves in small skin areas. Increase wipe distance to 0.8mm to improve seam quality. PP-423 --- resources/definitions/ultimaker_method_base.def.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/definitions/ultimaker_method_base.def.json b/resources/definitions/ultimaker_method_base.def.json index 1ceb05a43a..f0808c529e 100644 --- a/resources/definitions/ultimaker_method_base.def.json +++ b/resources/definitions/ultimaker_method_base.def.json @@ -386,6 +386,7 @@ "skin_preshrink": { "value": 0 }, "skirt_brim_material_flow": { "value": "material_flow" }, "skirt_brim_minimal_length": { "value": 500 }, + "small_skin_width": { "value": 4 }, "speed_equalize_flow_width_factor": { "value": 0 }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_print": { "value": 50 }, @@ -426,7 +427,7 @@ "travel_avoid_other_parts": { "value": false }, "wall_0_inset": { "value": 0 }, "wall_0_material_flow": { "value": "material_flow" }, - "wall_0_wipe_dist": { "value": 0 }, + "wall_0_wipe_dist": { "value": 0.8 }, "wall_material_flow": { "value": "material_flow" }, "wall_x_material_flow": { "value": "material_flow" }, "xy_offset": { "value": 0 }, From 54af5bca3c5e9b5700ce106f854f97e3ed102842 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Thu, 25 Jan 2024 13:30:56 +0100 Subject: [PATCH 025/203] Add export sub-menu CURA-11561 --- resources/qml/Menus/ExportMenu.qml | 44 ++++++++++++++++++++++++++++++ resources/qml/Menus/FileMenu.qml | 26 +++++++++--------- 2 files changed, 57 insertions(+), 13 deletions(-) create mode 100644 resources/qml/Menus/ExportMenu.qml diff --git a/resources/qml/Menus/ExportMenu.qml b/resources/qml/Menus/ExportMenu.qml new file mode 100644 index 0000000000..70560f0772 --- /dev/null +++ b/resources/qml/Menus/ExportMenu.qml @@ -0,0 +1,44 @@ +// Copyright (c) 2024 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 2.1 + +import UM 1.5 as UM +import Cura 1.1 as Cura + +import "../Dialogs" + +Cura.Menu +{ + id: exportMenu + property alias model: meshWriters.model + property bool selectionOnly: false + + Instantiator + { + id: meshWriters + Cura.MenuItem + { + text: model.description + onTriggered: + { + var localDeviceId = "local_file" + var file_name = PrintInformation.jobName + var args = { "filter_by_machine": false, "limit_mimetypes": model.mime_type} + if(exportMenu.selectionOnly) + { + UM.OutputDeviceManager.requestWriteSelectionToDevice(localDeviceId, file_name, args) + } + else + { + UM.OutputDeviceManager.requestWriteToDevice(localDeviceId, file_name, args) + } + } + shortcut: model.shortcut + enabled: exportMenu.shouldBeVisible + } + onObjectAdded: function(index, object) { exportMenu.insertItem(index, object)} + onObjectRemoved: function(index, object) { exportMenu.removeItem(object)} + } +} diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml index 0884053ef3..254c0d5468 100644 --- a/resources/qml/Menus/FileMenu.qml +++ b/resources/qml/Menus/FileMenu.qml @@ -4,7 +4,7 @@ import QtQuick 2.2 import QtQuick.Controls 2.1 -import UM 1.6 as UM +import UM 1.7 as UM import Cura 1.0 as Cura Cura.Menu @@ -72,24 +72,24 @@ Cura.Menu Cura.MenuSeparator { } - Cura.MenuItem + UM.MeshWritersModel { id: meshWritersModel } + + ExportMenu { - id: saveAsMenu - text: catalog.i18nc("@title:menu menubar:file", "&Export...") - onTriggered: - { - var localDeviceId = "local_file" - UM.OutputDeviceManager.requestWriteToDevice(localDeviceId, PrintInformation.jobName, { "filter_by_machine": false, "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"}) - } + id: exportMenu + title: catalog.i18nc("@title:menu menubar:file", "&Export...") + model: meshWritersModel + shouldBeVisible: model.count > 0 } - Cura.MenuItem + ExportMenu { id: exportSelectionMenu - text: catalog.i18nc("@action:inmenu menubar:file", "Export Selection...") + title: catalog.i18nc("@action:inmenu menubar:file", "Export Selection...") + model: meshWritersModel + shouldBeVisible: model.count > 0 enabled: UM.Selection.hasSelection - icon.name: "document-save-as" - onTriggered: UM.OutputDeviceManager.requestWriteSelectionToDevice("local_file", PrintInformation.jobName, { "filter_by_machine": false, "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"}) + selectionOnly: true } Cura.MenuSeparator { } From edd5cee41a770bc844a262a3079e1f3618c0b228 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Thu, 25 Jan 2024 14:04:47 +0100 Subject: [PATCH 026/203] Fix exporting binary/ascii STL CURA-11561 --- resources/qml/Menus/ExportMenu.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/Menus/ExportMenu.qml b/resources/qml/Menus/ExportMenu.qml index 70560f0772..5c08b04f0f 100644 --- a/resources/qml/Menus/ExportMenu.qml +++ b/resources/qml/Menus/ExportMenu.qml @@ -25,7 +25,7 @@ Cura.Menu { var localDeviceId = "local_file" var file_name = PrintInformation.jobName - var args = { "filter_by_machine": false, "limit_mimetypes": model.mime_type} + var args = { "filter_by_machine": false, "limit_mimetypes": [model.mime_type], "limit_modes": [model.mode]} if(exportMenu.selectionOnly) { UM.OutputDeviceManager.requestWriteSelectionToDevice(localDeviceId, file_name, args) From 1bf789f6f495a7986182854e85d3e3810b92879f Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Fri, 26 Jan 2024 10:36:13 +0100 Subject: [PATCH 027/203] Update pyinstaller for mac --- UltiMaker-Cura.spec.jinja | 186 +------------------------------------- conandata.yml | 1 - conanfile.py | 4 +- cura/CuraApplication.py | 3 + requirements-dev.txt | 2 +- 5 files changed, 10 insertions(+), 186 deletions(-) diff --git a/UltiMaker-Cura.spec.jinja b/UltiMaker-Cura.spec.jinja index cd939cf736..2c930e6ed6 100644 --- a/UltiMaker-Cura.spec.jinja +++ b/UltiMaker-Cura.spec.jinja @@ -70,188 +70,7 @@ coll = COLLECT( ) {% if macos == true %} -# PyInstaller seems to copy everything in the resource folder for the MacOS, this causes issues with codesigning and notarizing -# The folder structure should adhere to the one specified in Table 2-5 -# https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1 -# The class below is basically ducktyping the BUNDLE class of PyInstaller and using our own `assemble` method for more fine-grain and specific -# control. Some code of the method below is copied from: -# https://github.com/pyinstaller/pyinstaller/blob/22d1d2a5378228744cc95f14904dae1664df32c4/PyInstaller/building/osx.py#L115 -#----------------------------------------------------------------------------- -# Copyright (c) 2005-2022, PyInstaller Development Team. -# -# Distributed under the terms of the GNU General Public License (version 2 -# or later) with exception for distributing the bootloader. -# -# The full license is in the file COPYING.txt, distributed with this software. -# -# SPDX-License-Identifier: (GPL-2.0-or-later WITH Bootloader-exception) -#----------------------------------------------------------------------------- - -import plistlib -import shutil -import PyInstaller.utils.osx as osxutils -from pathlib import Path -from PyInstaller.building.osx import BUNDLE -from PyInstaller.building.utils import (_check_path_overlap, _rmtree, add_suffix_to_extension, checkCache) -from PyInstaller.building.datastruct import logger -from PyInstaller.building.icon import normalize_icon_type - - -class UMBUNDLE(BUNDLE): - def assemble(self): - from PyInstaller.config import CONF - - if _check_path_overlap(self.name) and os.path.isdir(self.name): - _rmtree(self.name) - logger.info("Building BUNDLE %s", self.tocbasename) - - # Create a minimal Mac bundle structure. - macos_path = Path(self.name, "Contents", "MacOS") - resources_path = Path(self.name, "Contents", "Resources") - frameworks_path = Path(self.name, "Contents", "Frameworks") - os.makedirs(macos_path) - os.makedirs(resources_path) - os.makedirs(frameworks_path) - - # Makes sure the icon exists and attempts to convert to the proper format if applicable - self.icon = normalize_icon_type(self.icon, ("icns",), "icns", CONF["workpath"]) - - # Ensure icon path is absolute - self.icon = os.path.abspath(self.icon) - - # Copy icns icon to Resources directory. - shutil.copy(self.icon, os.path.join(self.name, 'Contents', 'Resources')) - - # Key/values for a minimal Info.plist file - info_plist_dict = { - "CFBundleDisplayName": self.appname, - "CFBundleName": self.appname, - - # Required by 'codesign' utility. - # The value for CFBundleIdentifier is used as the default unique name of your program for Code Signing - # purposes. It even identifies the APP for access to restricted OS X areas like Keychain. - # - # The identifier used for signing must be globally unique. The usual form for this identifier is a - # hierarchical name in reverse DNS notation, starting with the toplevel domain, followed by the company - # name, followed by the department within the company, and ending with the product name. Usually in the - # form: com.mycompany.department.appname - # CLI option --osx-bundle-identifier sets this value. - "CFBundleIdentifier": self.bundle_identifier, - "CFBundleExecutable": os.path.basename(self.exename), - "CFBundleIconFile": os.path.basename(self.icon), - "CFBundleInfoDictionaryVersion": "6.0", - "CFBundlePackageType": "APPL", - "CFBundleVersionString": self.version, - "CFBundleShortVersionString": self.version, - } - - # Set some default values. But they still can be overwritten by the user. - if self.console: - # Setting EXE console=True implies LSBackgroundOnly=True. - info_plist_dict['LSBackgroundOnly'] = True - else: - # Let's use high resolution by default. - info_plist_dict['NSHighResolutionCapable'] = True - - # Merge info_plist settings from spec file - if isinstance(self.info_plist, dict) and self.info_plist: - info_plist_dict.update(self.info_plist) - - plist_filename = os.path.join(self.name, "Contents", "Info.plist") - with open(plist_filename, "wb") as plist_fh: - plistlib.dump(info_plist_dict, plist_fh) - - links = [] - _QT_BASE_PATH = {'PySide2', 'PySide6', 'PyQt5', 'PyQt6', 'PySide6'} - for inm, fnm, typ in self.toc: - # Adjust name for extensions, if applicable - inm, fnm, typ = add_suffix_to_extension(inm, fnm, typ) - inm = Path(inm) - fnm = Path(fnm) - # Copy files from cache. This ensures that are used files with relative paths to dynamic library - # dependencies (@executable_path) - if typ in ('EXTENSION', 'BINARY') or (typ == 'DATA' and inm.suffix == '.so'): - if any(['.' in p for p in inm.parent.parts]): - inm = Path(inm.name) - fnm = Path(checkCache( - str(fnm), - strip = self.strip, - upx = self.upx, - upx_exclude = self.upx_exclude, - dist_nm = str(inm), - target_arch = self.target_arch, - codesign_identity = self.codesign_identity, - entitlements_file = self.entitlements_file, - strict_arch_validation = (typ == 'EXTENSION'), - )) - frame_dst = frameworks_path.joinpath(inm) - if not frame_dst.exists(): - if frame_dst.is_dir(): - os.makedirs(frame_dst, exist_ok = True) - else: - os.makedirs(frame_dst.parent, exist_ok = True) - shutil.copy(fnm, frame_dst, follow_symlinks = True) - macos_dst = macos_path.joinpath(inm) - if not macos_dst.exists(): - if macos_dst.is_dir(): - os.makedirs(macos_dst, exist_ok = True) - else: - os.makedirs(macos_dst.parent, exist_ok = True) - - # Create relative symlink to the framework - symlink_to = Path(*[".." for p in macos_dst.relative_to(macos_path).parts], "Frameworks").joinpath( - frame_dst.relative_to(frameworks_path)) - try: - macos_dst.symlink_to(symlink_to) - except FileExistsError: - pass - else: - if typ == 'DATA': - if any(['.' in p for p in inm.parent.parts]) or inm.suffix == '.so': - # Skip info dist egg and some not needed folders in tcl and tk, since they all contain dots in their files - logger.warning(f"Skipping DATA file {inm}") - continue - res_dst = resources_path.joinpath(inm) - if not res_dst.exists(): - if res_dst.is_dir(): - os.makedirs(res_dst, exist_ok = True) - else: - os.makedirs(res_dst.parent, exist_ok = True) - shutil.copy(fnm, res_dst, follow_symlinks = True) - macos_dst = macos_path.joinpath(inm) - if not macos_dst.exists(): - if macos_dst.is_dir(): - os.makedirs(macos_dst, exist_ok = True) - else: - os.makedirs(macos_dst.parent, exist_ok = True) - - # Create relative symlink to the resource - symlink_to = Path(*[".." for p in macos_dst.relative_to(macos_path).parts], "Resources").joinpath( - res_dst.relative_to(resources_path)) - try: - macos_dst.symlink_to(symlink_to) - except FileExistsError: - pass - else: - macos_dst = macos_path.joinpath(inm) - if not macos_dst.exists(): - if macos_dst.is_dir(): - os.makedirs(macos_dst, exist_ok = True) - else: - os.makedirs(macos_dst.parent, exist_ok = True) - shutil.copy(fnm, macos_dst, follow_symlinks = True) - - # Sign the bundle - logger.info('Signing the BUNDLE...') - try: - osxutils.sign_binary(self.name, self.codesign_identity, self.entitlements_file, deep = True) - except Exception as e: - logger.warning(f"Error while signing the bundle: {e}") - logger.warning("You will need to sign the bundle manually!") - - logger.info(f"Building BUNDLE {self.tocbasename} completed successfully.") - -app = UMBUNDLE( +app = BUNDLE( coll, name='{{ display_name }}.app', icon={{ icon }}, @@ -276,4 +95,5 @@ app = UMBUNDLE( 'CFBundleTypeName': 'Model Files', }] }, -){% endif %} +) +{% endif %} diff --git a/conandata.yml b/conandata.yml index 486a64c26e..2485dd8bd0 100644 --- a/conandata.yml +++ b/conandata.yml @@ -118,7 +118,6 @@ pyinstaller: - "sqlite3" - "trimesh" - "win32ctypes" - - "PyQt6" - "PyQt6.QtNetwork" - "PyQt6.sip" - "stl" diff --git a/conanfile.py b/conanfile.py index 87e3377687..6f0c598b22 100644 --- a/conanfile.py +++ b/conanfile.py @@ -163,8 +163,10 @@ class CuraConan(ConanFile): def _python_installs(self): python_installs = {} + python_executable = "python3" if self.settings.os == "Macos" else "python" + # list of python installs - python_ins_cmd = f"python -c \"import pkg_resources; print(';'.join([(s.key+','+ s.version) for s in pkg_resources.working_set]))\"" + python_ins_cmd = f"{python_executable} -c \"import pkg_resources; print(';'.join([(s.key+','+ s.version) for s in pkg_resources.working_set]))\"" from six import StringIO buffer = StringIO() self.run(python_ins_cmd, run_environment= True, env = "conanrun", output=buffer) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 67c420028b..ddc080d748 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -374,8 +374,10 @@ class CuraApplication(QtApplication): app_root = os.path.abspath(os.path.join(os.path.dirname(sys.executable))) Resources.addSecureSearchPath(os.path.join(app_root, "share", "cura", "resources")) + Resources.addSecureSearchPath(os.path.join(app_root, "Resources", "share", "cura", "resources")) Resources.addSecureSearchPath(os.path.join(self._app_install_dir, "share", "cura", "resources")) + Resources.addSecureSearchPath(os.path.join(self._app_install_dir, "Resources", "share", "cura", "resources")) if not hasattr(sys, "frozen"): cura_data_root = os.environ.get('CURA_DATA_ROOT', None) if cura_data_root: @@ -389,6 +391,7 @@ class CuraApplication(QtApplication): # venv site-packages Resources.addSearchPath(os.path.join(app_root, "..", "share", "cura", "resources")) + Resources.addSearchPath(os.path.join(app_root, "..", "Resources", "share", "cura", "resources")) @classmethod def _initializeSettingDefinitions(cls): diff --git a/requirements-dev.txt b/requirements-dev.txt index a1b191009a..162b33bf15 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,5 +1,5 @@ pytest -pyinstaller==5.8.0 +pyinstaller==6.3.0 pyinstaller-hooks-contrib pyyaml sip==6.5.1 From 18fabe468be1b3b215de67fd68473e0c210d5c19 Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Fri, 26 Jan 2024 12:38:09 +0100 Subject: [PATCH 028/203] Increase part strength of high speed modes by compensating for the slip at high flow rates. PP-386 --- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg | 4 ++++ .../quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg | 4 ++++ .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg | 4 ++++ .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg | 4 ++++ .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg | 4 ++++ .../quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg | 4 ++++ .../quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg | 4 ++++ .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg | 4 ++++ 8 files changed, 32 insertions(+) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg index 57413c4b30..435af40ae9 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg @@ -28,6 +28,7 @@ bridge_skin_speed = =bridge_wall_speed bridge_sparse_infill_max_density = 50 bridge_wall_speed = 30 cool_min_layer_time = 4 +infill_material_flow = =1.05 * material_flow infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid' infill_sparse_density = 15 jerk_infill = =jerk_print @@ -49,6 +50,7 @@ raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 retraction_speed = 45 +skin_material_flow = =material_flow small_skin_on_surface = False small_skin_width = 4 speed_infill = =speed_print @@ -70,6 +72,8 @@ support_top_distance = =support_z_distance support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 +wall_x_material_flow = =1.05 * wall_material_flow +wall_x_material_flow_roofing = =wall_material_flow z_seam_relative = True z_seam_type = back zig_zaggify_infill = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg index e7e50350c0..29138b1fa1 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg @@ -28,6 +28,7 @@ bridge_skin_speed = =bridge_wall_speed bridge_sparse_infill_max_density = 50 bridge_wall_speed = 30 cool_min_layer_time = 4 +infill_material_flow = =1.1 * material_flow infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid' infill_sparse_density = 15 jerk_infill = =jerk_print @@ -48,6 +49,7 @@ prime_tower_enable = False retraction_amount = 8 retraction_prime_speed = 15 retraction_speed = 45 +skin_material_flow = =1.05 * material_flow small_skin_on_surface = False small_skin_width = 4 speed_infill = =speed_print @@ -69,6 +71,8 @@ support_top_distance = =support_z_distance support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 +wall_x_material_flow = =1.1 * wall_material_flow +wall_x_material_flow_roofing = =wall_material_flow z_seam_relative = True z_seam_type = back zig_zaggify_infill = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg index dcbb580edb..859289d447 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg @@ -28,6 +28,7 @@ bridge_skin_speed = =bridge_wall_speed bridge_sparse_infill_max_density = 50 bridge_wall_speed = 30 cool_min_layer_time = 6 +infill_material_flow = =1.1 * material_flow infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid' infill_sparse_density = 15 jerk_infill = =jerk_print @@ -49,6 +50,7 @@ raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed retraction_speed = 45 +skin_material_flow = =1.05 * material_flow small_skin_on_surface = False small_skin_width = 4 speed_infill = =speed_print @@ -70,6 +72,8 @@ support_top_distance = =support_z_distance support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 +wall_x_material_flow = =1.1 * wall_material_flow +wall_x_material_flow_roofing = =wall_material_flow z_seam_relative = True z_seam_type = back zig_zaggify_infill = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg index 151af3ed50..8b6af78965 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg @@ -28,6 +28,7 @@ bridge_skin_speed = =bridge_wall_speed bridge_sparse_infill_max_density = 50 bridge_wall_speed = 30 cool_min_layer_time = 6 +infill_material_flow = =1.1 * material_flow infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid' infill_sparse_density = 15 jerk_infill = =jerk_print @@ -48,6 +49,7 @@ raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed retraction_speed = 45 +skin_material_flow = =1.05 * material_flow small_skin_on_surface = False small_skin_width = 4 speed_infill = =speed_print @@ -69,6 +71,8 @@ support_top_distance = =support_z_distance support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 +wall_x_material_flow = =1.1 * wall_material_flow +wall_x_material_flow_roofing = =wall_material_flow z_seam_relative = True z_seam_type = back zig_zaggify_infill = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg index f430e6bc16..c700c42674 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg @@ -28,6 +28,7 @@ bridge_skin_speed = =bridge_wall_speed bridge_sparse_infill_max_density = 50 bridge_wall_speed = 30 cool_min_layer_time = 4 +infill_material_flow = =1.05 * material_flow infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid' infill_sparse_density = 15 jerk_infill = =jerk_print @@ -49,6 +50,7 @@ raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 retraction_speed = 45 +skin_material_flow = =material_flow small_skin_on_surface = False small_skin_width = 4 speed_infill = =speed_print @@ -70,6 +72,8 @@ support_top_distance = =support_z_distance support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 +wall_x_material_flow = =1.05 * wall_material_flow +wall_x_material_flow_roofing = =wall_material_flow z_seam_relative = True z_seam_type = back zig_zaggify_infill = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg index 55696eccb4..cb3419dadc 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg @@ -28,6 +28,7 @@ bridge_skin_speed = =bridge_wall_speed bridge_sparse_infill_max_density = 50 bridge_wall_speed = 30 cool_min_layer_time = 4 +infill_material_flow = =1.1 * material_flow infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid' infill_sparse_density = 15 jerk_infill = =jerk_print @@ -48,6 +49,7 @@ prime_tower_enable = False retraction_amount = 8 retraction_prime_speed = 15 retraction_speed = 45 +skin_material_flow = =1.05 * material_flow small_skin_on_surface = False small_skin_width = 4 speed_infill = =speed_print @@ -69,6 +71,8 @@ support_top_distance = =support_z_distance support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 +wall_x_material_flow = =1.1 * wall_material_flow +wall_x_material_flow_roofing = =wall_material_flow z_seam_relative = True z_seam_type = back zig_zaggify_infill = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg index 02d22b06b8..ba379b1b05 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg @@ -28,6 +28,7 @@ bridge_skin_speed = =bridge_wall_speed bridge_sparse_infill_max_density = 50 bridge_wall_speed = 30 cool_min_layer_time = 6 +infill_material_flow = =1.1 * material_flow infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid' infill_sparse_density = 15 jerk_infill = =jerk_print @@ -49,6 +50,7 @@ raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed retraction_speed = 45 +skin_material_flow = =1.05 * material_flow small_skin_on_surface = False small_skin_width = 4 speed_infill = =speed_print @@ -70,6 +72,8 @@ support_top_distance = =support_z_distance support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 +wall_x_material_flow = =1.1 * wall_material_flow +wall_x_material_flow_roofing = =wall_material_flow z_seam_relative = True z_seam_type = back zig_zaggify_infill = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg index ee0ee279e6..6f4efb905b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg @@ -28,6 +28,7 @@ bridge_skin_speed = =bridge_wall_speed bridge_sparse_infill_max_density = 50 bridge_wall_speed = 30 cool_min_layer_time = 6 +infill_material_flow = =1.1 * material_flow infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid' infill_sparse_density = 15 jerk_infill = =jerk_print @@ -48,6 +49,7 @@ raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed retraction_speed = 45 +skin_material_flow = =1.05 * material_flow small_skin_on_surface = False small_skin_width = 4 speed_infill = =speed_print @@ -69,6 +71,8 @@ support_top_distance = =support_z_distance support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 +wall_x_material_flow = =1.1 * wall_material_flow +wall_x_material_flow_roofing = =wall_material_flow z_seam_relative = True z_seam_type = back zig_zaggify_infill = True From b5b0575baf505d4902d4aa1b72c940485914419a Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 26 Jan 2024 14:01:26 +0100 Subject: [PATCH 029/203] Display (uncomplete) configuration UI to export PCB file CURA-11561 --- plugins/PCBWriter/PCBDialog.py | 37 +++++ plugins/PCBWriter/PCBDialog.qml | 148 +++++++++++++++++++ plugins/PCBWriter/PCBWriter.py | 67 +++++++++ plugins/PCBWriter/SettingExport.py | 24 +++ plugins/PCBWriter/SettingsExportGroup.py | 59 ++++++++ plugins/PCBWriter/SettingsExportModel.py | 31 ++++ plugins/PCBWriter/SettingsSelectionGroup.qml | 70 +++++++++ plugins/PCBWriter/__init__.py | 21 +++ plugins/PCBWriter/plugin.json | 8 + resources/qml/ExtruderIcon.qml | 1 + 10 files changed, 466 insertions(+) create mode 100644 plugins/PCBWriter/PCBDialog.py create mode 100644 plugins/PCBWriter/PCBDialog.qml create mode 100644 plugins/PCBWriter/PCBWriter.py create mode 100644 plugins/PCBWriter/SettingExport.py create mode 100644 plugins/PCBWriter/SettingsExportGroup.py create mode 100644 plugins/PCBWriter/SettingsExportModel.py create mode 100644 plugins/PCBWriter/SettingsSelectionGroup.qml create mode 100644 plugins/PCBWriter/__init__.py create mode 100644 plugins/PCBWriter/plugin.json diff --git a/plugins/PCBWriter/PCBDialog.py b/plugins/PCBWriter/PCBDialog.py new file mode 100644 index 0000000000..f31c87a61b --- /dev/null +++ b/plugins/PCBWriter/PCBDialog.py @@ -0,0 +1,37 @@ +# Copyright (c) 2024 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt6.QtCore import pyqtSignal, QObject, pyqtProperty, QCoreApplication, QUrl +from PyQt6.QtGui import QDesktopServices +from typing import List, Optional, Dict, cast + +from cura.Machines.Models.MachineListModel import MachineListModel +from cura.Machines.Models.IntentTranslations import intent_translations +from cura.Settings.GlobalStack import GlobalStack +from UM.Application import Application +from UM.FlameProfiler import pyqtSlot +from UM.i18n import i18nCatalog +from UM.Logger import Logger +from UM.Message import Message +from UM.PluginRegistry import PluginRegistry +from UM.Settings.ContainerRegistry import ContainerRegistry + +import os +import threading +import time + +from cura.CuraApplication import CuraApplication + +i18n_catalog = i18nCatalog("cura") + + +class PCBDialog(QObject): + def __init__(self, parent = None) -> None: + super().__init__(parent) + + plugin_path = os.path.dirname(__file__) + dialog_path = os.path.join(plugin_path, 'PCBDialog.qml') + self._view = CuraApplication.getInstance().createQmlComponent(dialog_path, {"manager": self}) + + def show(self) -> None: + self._view.show() diff --git a/plugins/PCBWriter/PCBDialog.qml b/plugins/PCBWriter/PCBDialog.qml new file mode 100644 index 0000000000..1937c00828 --- /dev/null +++ b/plugins/PCBWriter/PCBDialog.qml @@ -0,0 +1,148 @@ +// Copyright (c) 2024 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.3 +import QtQuick.Window 2.2 + +import UM 1.5 as UM +import Cura 1.1 as Cura +import PCBWriter 1.0 as PCBWriter + +UM.Dialog +{ + id: workspaceDialog + title: catalog.i18nc("@title:window", "Export pre-configured build batch") + + margin: UM.Theme.getSize("default_margin").width + minimumWidth: UM.Theme.getSize("modal_window_minimum").width + minimumHeight: UM.Theme.getSize("modal_window_minimum").height + + backgroundColor: UM.Theme.getColor("detail_background") + + headerComponent: Rectangle + { + UM.I18nCatalog { id: catalog; name: "cura" } + + height: childrenRect.height + 2 * UM.Theme.getSize("default_margin").height + color: UM.Theme.getColor("main_background") + + ColumnLayout + { + id: headerColumn + + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.rightMargin: anchors.leftMargin + + UM.Label + { + id: titleLabel + text: catalog.i18nc("@action:title", "Summary - Pre-configured build batch") + font: UM.Theme.getFont("large") + } + + UM.Label + { + id: descriptionLabel + text: catalog.i18nc("@action:description", "When exporting a build batch, all the models present on the build plate will be included with their current position, orientation and scale. You can also select which per-extruder or per-model settings should be included to ensure a proper printing of the batch, even on different printers.") + font: UM.Theme.getFont("default") + wrapMode: Text.Wrap + Layout.maximumWidth: headerColumn.width + } + } + } + + Rectangle + { + anchors.fill: parent + color: UM.Theme.getColor("main_background") + + PCBWriter.SettingsExportModel{ id: settingsExportModel } + + ListView + { + id: settingsExportList + anchors.fill: parent + anchors.margins: UM.Theme.getSize("default_margin").width + spacing: UM.Theme.getSize("default_margin").height + model: settingsExportModel.settingsGroups + clip: true + + ScrollBar.vertical: UM.ScrollBar { id: verticalScrollBar } + + delegate: SettingsSelectionGroup { Layout.margins: 0 } + } + + // Flickable + // { + // Column + // { + // width: parent.width - scrollbar.width - UM.Theme.getSize("default_margin").width + // height: childrenRect.height + // + // spacing: UM.Theme.getSize("default_margin").height + // leftPadding: UM.Theme.getSize("default_margin").width + // rightPadding: leftPadding + // topPadding: UM.Theme.getSize("default_margin").height + // bottomPadding: topPadding + // } + // } + } + + footerComponent: Rectangle + { + color: warning ? UM.Theme.getColor("warning") : "transparent" + anchors.bottom: parent.bottom + width: parent.width + height: childrenRect.height + (warning ? 2 * workspaceDialog.margin : workspaceDialog.margin) + + Column + { + height: childrenRect.height + spacing: workspaceDialog.margin + + anchors.leftMargin: workspaceDialog.margin + anchors.rightMargin: workspaceDialog.margin + anchors.bottomMargin: workspaceDialog.margin + anchors.topMargin: warning ? workspaceDialog.margin : 0 + + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + + RowLayout + { + id: warningRow + height: childrenRect.height + visible: warning + spacing: workspaceDialog.margin + UM.ColorImage + { + width: UM.Theme.getSize("extruder_icon").width + height: UM.Theme.getSize("extruder_icon").height + source: UM.Theme.getIcon("Warning") + } + + UM.Label + { + id: warningText + text: catalog.i18nc("@label", "This project contains materials or plugins that are currently not installed in Cura.
Install the missing packages and reopen the project.") + } + } + + Loader + { + width: parent.width + height: childrenRect.height + sourceComponent: buttonRow + } + } + } + + buttonSpacing: UM.Theme.getSize("wide_margin").width +} diff --git a/plugins/PCBWriter/PCBWriter.py b/plugins/PCBWriter/PCBWriter.py new file mode 100644 index 0000000000..6391493ae3 --- /dev/null +++ b/plugins/PCBWriter/PCBWriter.py @@ -0,0 +1,67 @@ +# Copyright (c) 2024 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +import json +import re + +from threading import Lock + +from typing import Optional, cast, List, Dict, Pattern, Set + +from UM.Mesh.MeshWriter import MeshWriter +from UM.Math.Vector import Vector +from UM.Logger import Logger +from UM.Math.Matrix import Matrix +from UM.Application import Application +from UM.Message import Message +from UM.Resources import Resources +from UM.Scene.SceneNode import SceneNode +from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.Settings.EmptyInstanceContainer import EmptyInstanceContainer +from PyQt6.QtQml import qmlRegisterType + +from cura.CuraApplication import CuraApplication +from cura.CuraPackageManager import CuraPackageManager +from cura.Settings import CuraContainerStack +from cura.Utils.Threading import call_on_qt_thread +from cura.Snapshot import Snapshot + +from PyQt6.QtCore import QBuffer + +import pySavitar as Savitar + +import numpy +import datetime + +import zipfile +import UM.Application + +from .PCBDialog import PCBDialog +from .SettingsExportModel import SettingsExportModel +from .SettingsExportGroup import SettingsExportGroup + +from UM.i18n import i18nCatalog +catalog = i18nCatalog("cura") + +class PCBWriter(MeshWriter): + def __init__(self): + super().__init__() + + qmlRegisterType(SettingsExportModel, "PCBWriter", 1, 0, "SettingsExportModel") + qmlRegisterType(SettingsExportGroup, "PCBWriter", 1, 0, "SettingsExportGroup") + #qmlRegisterUncreatableType(SettingsExportGroup.Category, "PCBWriter", 1, 0, "SettingsExportGroup.Category") + + self._config_dialog = None + self._main_thread_lock = Lock() + + def write(self, stream, nodes, mode = MeshWriter.OutputMode.BinaryMode) -> bool: + self._main_thread_lock.acquire() + # Start configuration window in main application thread + CuraApplication.getInstance().callLater(self._write, stream, nodes, mode) + self._main_thread_lock.acquire() # Block until lock has been released, meaning the config is over + + self._main_thread_lock.release() + return True + + def _write(self, stream, nodes, mode): + self._config_dialog = PCBDialog() + self._config_dialog.show() diff --git a/plugins/PCBWriter/SettingExport.py b/plugins/PCBWriter/SettingExport.py new file mode 100644 index 0000000000..901dcdc804 --- /dev/null +++ b/plugins/PCBWriter/SettingExport.py @@ -0,0 +1,24 @@ +# Copyright (c) 2024 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt6.QtCore import Qt, QObject, pyqtProperty +from UM.FlameProfiler import pyqtSlot +from UM.Application import Application +from UM.Qt.ListModel import ListModel +from UM.Logger import Logger + + +class SettingsExport(): + + def __init__(self): + super().__init__() + self._name = "Generate Support" + self._value = "Enabled" + + @pyqtProperty(str, constant=True) + def name(self): + return self._name + + @pyqtProperty(str, constant=True) + def value(self): + return self._value diff --git a/plugins/PCBWriter/SettingsExportGroup.py b/plugins/PCBWriter/SettingsExportGroup.py new file mode 100644 index 0000000000..355b2347f6 --- /dev/null +++ b/plugins/PCBWriter/SettingsExportGroup.py @@ -0,0 +1,59 @@ +# Copyright (c) 2024 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from enum import IntEnum + +from PyQt6.QtCore import Qt, QObject, pyqtProperty, pyqtEnum +from UM.FlameProfiler import pyqtSlot +from UM.Application import Application +from UM.Qt.ListModel import ListModel +from UM.Logger import Logger + +from .SettingExport import SettingsExport + + +class SettingsExportGroup(QObject): + + @pyqtEnum + class Category(IntEnum): + Global = 0 + Extruder = 1 + Model = 2 + + def __init__(self, name, category, category_details = '', extruder_index = 0, extruder_color = ''): + super().__init__() + self._name = name + self._settings = [] + self._category = category + self._category_details = category_details + self._extruder_index = extruder_index + self._extruder_color = extruder_color + self._updateSettings() + + @pyqtProperty(str, constant=True) + def name(self): + return self._name + + @pyqtProperty(list, constant=True) + def settings(self): + return self._settings + + @pyqtProperty(int, constant=True) + def category(self): + return self._category + + @pyqtProperty(str, constant=True) + def category_details(self): + return self._category_details + + @pyqtProperty(int, constant=True) + def extruder_index(self): + return self._extruder_index + + @pyqtProperty(str, constant=True) + def extruder_color(self): + return self._extruder_color + + def _updateSettings(self): + self._settings.append(SettingsExport()) + self._settings.append(SettingsExport()) \ No newline at end of file diff --git a/plugins/PCBWriter/SettingsExportModel.py b/plugins/PCBWriter/SettingsExportModel.py new file mode 100644 index 0000000000..3351e22b59 --- /dev/null +++ b/plugins/PCBWriter/SettingsExportModel.py @@ -0,0 +1,31 @@ +# Copyright (c) 2024 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt6.QtCore import QObject, Qt, pyqtProperty +from UM.FlameProfiler import pyqtSlot +from UM.Application import Application +from UM.Qt.ListModel import ListModel +from UM.Logger import Logger + +from .SettingsExportGroup import SettingsExportGroup + + +class SettingsExportModel(QObject): + + def __init__(self, parent = None): + super().__init__(parent) + self._settingsGroups = [] + self._updateSettingsExportGroups() + + @pyqtProperty(list, constant=True) + def settingsGroups(self): + return self._settingsGroups + + def _updateSettingsExportGroups(self): + self._settingsGroups.append(SettingsExportGroup("Global settings", SettingsExportGroup.Category.Global)) + self._settingsGroups.append(SettingsExportGroup("Extruder settings", SettingsExportGroup.Category.Extruder, extruder_index=1, extruder_color='#ff0000')) + self._settingsGroups.append(SettingsExportGroup("Extruder settings", SettingsExportGroup.Category.Extruder, extruder_index=8, extruder_color='#008fff')) + self._settingsGroups.append(SettingsExportGroup("Model settings", + SettingsExportGroup.Category.Model, 'hypercube.stl')) + self._settingsGroups.append(SettingsExportGroup("Model settings", + SettingsExportGroup.Category.Model, 'homer-simpson.stl')) diff --git a/plugins/PCBWriter/SettingsSelectionGroup.qml b/plugins/PCBWriter/SettingsSelectionGroup.qml new file mode 100644 index 0000000000..12829c96d4 --- /dev/null +++ b/plugins/PCBWriter/SettingsSelectionGroup.qml @@ -0,0 +1,70 @@ +// Copyright (c) 2024 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.3 +import QtQuick.Window 2.2 + +import UM 1.5 as UM +import Cura 1.1 as Cura +import PCBWriter 1.0 as PCBWriter + +Column +{ + id: settingsGroup + + UM.I18nCatalog { id: catalog; name: "cura" } + + Row + { + id: settingsGroupTitleRow + spacing: UM.Theme.getSize("default_margin").width + + Item + { + id: icon + anchors.verticalCenter: parent.verticalCenter + height: UM.Theme.getSize("medium_button_icon").height + width: height + + UM.ColorImage + { + id: settingsMainImage + anchors.fill: parent + source: + { + switch(modelData.category) + { + case PCBWriter.SettingsExportGroup.Global: + return UM.Theme.getIcon("Sliders") + case PCBWriter.SettingsExportGroup.Model: + return UM.Theme.getIcon("View3D") + default: + return "" + } + } + + color: UM.Theme.getColor("text") + } + + Cura.ExtruderIcon + { + id: settingsExtruderIcon + anchors.fill: parent + visible: modelData.category === PCBWriter.SettingsExportGroup.Extruder + text: (modelData.extruder_index + 1).toString() + font: UM.Theme.getFont("tiny_emphasis") + materialColor: modelData.extruder_color + } + } + + UM.Label + { + id: settingsTitle + text: modelData.name + (modelData.category_details ? ' (%1)'.arg(modelData.category_details) : '') + anchors.verticalCenter: parent.verticalCenter + font: UM.Theme.getFont("default_bold") + } + } +} diff --git a/plugins/PCBWriter/__init__.py b/plugins/PCBWriter/__init__.py new file mode 100644 index 0000000000..3ec2eba95f --- /dev/null +++ b/plugins/PCBWriter/__init__.py @@ -0,0 +1,21 @@ +# Copyright (c) 2024 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +import sys + +from . import PCBWriter +from UM.i18n import i18nCatalog + +i18n_catalog = i18nCatalog("cura") + +def getMetaData(): + return {"mesh_writer": { + "output": [{ + "extension": "pcb", + "description": i18n_catalog.i18nc("@item:inlistbox", "Pre-Configured Batch file"), + "mime_type": "application/vnd.um.preconfigured-batch+3mf", + "mode": PCBWriter.PCBWriter.OutputMode.BinaryMode + }] + }} + +def register(app): + return {"mesh_writer": PCBWriter.PCBWriter() } diff --git a/plugins/PCBWriter/plugin.json b/plugins/PCBWriter/plugin.json new file mode 100644 index 0000000000..6571185779 --- /dev/null +++ b/plugins/PCBWriter/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Pre-Configured Batch Writer", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Provides support for writing Pre-Configured Batch files.", + "api": 8, + "i18n-catalog": "cura" +} diff --git a/resources/qml/ExtruderIcon.qml b/resources/qml/ExtruderIcon.qml index 3231d924ee..bd15df7848 100644 --- a/resources/qml/ExtruderIcon.qml +++ b/resources/qml/ExtruderIcon.qml @@ -15,6 +15,7 @@ Item property int iconSize: UM.Theme.getSize("extruder_icon").width property string iconVariant: "medium" property alias font: extruderNumberText.font + property alias text: extruderNumberText.text implicitWidth: iconSize implicitHeight: iconSize From 2aef33f52143f210be44f4f4a84712c68ee1d1b1 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Tue, 30 Jan 2024 14:35:55 +0100 Subject: [PATCH 030/203] Completed configuration UI to export PCB file CURA-11561 --- plugins/PCBWriter/PCBDialog.qml | 17 +----------- plugins/PCBWriter/SettingExport.py | 8 +++--- plugins/PCBWriter/SettingSelection.qml | 27 ++++++++++++++++++ plugins/PCBWriter/SettingsExportGroup.py | 9 ++---- plugins/PCBWriter/SettingsExportModel.py | 28 +++++++++++++++---- plugins/PCBWriter/SettingsSelectionGroup.qml | 29 ++++++++++++++++---- 6 files changed, 80 insertions(+), 38 deletions(-) create mode 100644 plugins/PCBWriter/SettingSelection.qml diff --git a/plugins/PCBWriter/PCBDialog.qml b/plugins/PCBWriter/PCBDialog.qml index 1937c00828..213bed108c 100644 --- a/plugins/PCBWriter/PCBDialog.qml +++ b/plugins/PCBWriter/PCBDialog.qml @@ -69,7 +69,7 @@ UM.Dialog id: settingsExportList anchors.fill: parent anchors.margins: UM.Theme.getSize("default_margin").width - spacing: UM.Theme.getSize("default_margin").height + spacing: UM.Theme.getSize("thick_margin").height model: settingsExportModel.settingsGroups clip: true @@ -77,21 +77,6 @@ UM.Dialog delegate: SettingsSelectionGroup { Layout.margins: 0 } } - - // Flickable - // { - // Column - // { - // width: parent.width - scrollbar.width - UM.Theme.getSize("default_margin").width - // height: childrenRect.height - // - // spacing: UM.Theme.getSize("default_margin").height - // leftPadding: UM.Theme.getSize("default_margin").width - // rightPadding: leftPadding - // topPadding: UM.Theme.getSize("default_margin").height - // bottomPadding: topPadding - // } - // } } footerComponent: Rectangle diff --git a/plugins/PCBWriter/SettingExport.py b/plugins/PCBWriter/SettingExport.py index 901dcdc804..2c230f9ab3 100644 --- a/plugins/PCBWriter/SettingExport.py +++ b/plugins/PCBWriter/SettingExport.py @@ -8,12 +8,12 @@ from UM.Qt.ListModel import ListModel from UM.Logger import Logger -class SettingsExport(): +class SettingsExport(QObject): - def __init__(self): + def __init__(self, name, value): super().__init__() - self._name = "Generate Support" - self._value = "Enabled" + self._name = name + self._value = value @pyqtProperty(str, constant=True) def name(self): diff --git a/plugins/PCBWriter/SettingSelection.qml b/plugins/PCBWriter/SettingSelection.qml new file mode 100644 index 0000000000..9b09593a7d --- /dev/null +++ b/plugins/PCBWriter/SettingSelection.qml @@ -0,0 +1,27 @@ +// Copyright (c) 2024 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.3 +import QtQuick.Window 2.2 + +import UM 1.5 as UM +import Cura 1.1 as Cura + +RowLayout +{ + id: settingSelection + + UM.CheckBox + { + text: modelData.name + Layout.preferredWidth: UM.Theme.getSize("setting").width + checked: true + } + + UM.Label + { + text: modelData.value + } +} diff --git a/plugins/PCBWriter/SettingsExportGroup.py b/plugins/PCBWriter/SettingsExportGroup.py index 355b2347f6..0a721a7fb8 100644 --- a/plugins/PCBWriter/SettingsExportGroup.py +++ b/plugins/PCBWriter/SettingsExportGroup.py @@ -20,15 +20,14 @@ class SettingsExportGroup(QObject): Extruder = 1 Model = 2 - def __init__(self, name, category, category_details = '', extruder_index = 0, extruder_color = ''): + def __init__(self, name, category, settings, category_details = '', extruder_index = 0, extruder_color = ''): super().__init__() self._name = name - self._settings = [] + self._settings = settings self._category = category self._category_details = category_details self._extruder_index = extruder_index self._extruder_color = extruder_color - self._updateSettings() @pyqtProperty(str, constant=True) def name(self): @@ -53,7 +52,3 @@ class SettingsExportGroup(QObject): @pyqtProperty(str, constant=True) def extruder_color(self): return self._extruder_color - - def _updateSettings(self): - self._settings.append(SettingsExport()) - self._settings.append(SettingsExport()) \ No newline at end of file diff --git a/plugins/PCBWriter/SettingsExportModel.py b/plugins/PCBWriter/SettingsExportModel.py index 3351e22b59..0f1ec5113a 100644 --- a/plugins/PCBWriter/SettingsExportModel.py +++ b/plugins/PCBWriter/SettingsExportModel.py @@ -8,6 +8,7 @@ from UM.Qt.ListModel import ListModel from UM.Logger import Logger from .SettingsExportGroup import SettingsExportGroup +from .SettingExport import SettingsExport class SettingsExportModel(QObject): @@ -22,10 +23,27 @@ class SettingsExportModel(QObject): return self._settingsGroups def _updateSettingsExportGroups(self): - self._settingsGroups.append(SettingsExportGroup("Global settings", SettingsExportGroup.Category.Global)) - self._settingsGroups.append(SettingsExportGroup("Extruder settings", SettingsExportGroup.Category.Extruder, extruder_index=1, extruder_color='#ff0000')) - self._settingsGroups.append(SettingsExportGroup("Extruder settings", SettingsExportGroup.Category.Extruder, extruder_index=8, extruder_color='#008fff')) + self._settingsGroups.append(SettingsExportGroup("Global settings", + SettingsExportGroup.Category.Global, + [SettingsExport("Generate Support", "Enabled"), + SettingsExport("Support Type", "Tree")])) + self._settingsGroups.append(SettingsExportGroup("Extruder settings", + SettingsExportGroup.Category.Extruder, + [SettingsExport("Brim Width", "0.7mm")], + extruder_index=1, + extruder_color='#ff0000')) + self._settingsGroups.append(SettingsExportGroup("Extruder settings", + SettingsExportGroup.Category.Extruder, + [], + extruder_index=8, + extruder_color='#008fff')) self._settingsGroups.append(SettingsExportGroup("Model settings", - SettingsExportGroup.Category.Model, 'hypercube.stl')) + SettingsExportGroup.Category.Model, + [SettingsExport("Brim Width", "20.0 mm"), + SettingsExport("Z Hop when retracted", "Disabled")], + 'hypercube.stl')) self._settingsGroups.append(SettingsExportGroup("Model settings", - SettingsExportGroup.Category.Model, 'homer-simpson.stl')) + SettingsExportGroup.Category.Model, + [SettingsExport("Walls Thickness", "3.0 mm"), + SettingsExport("Enable Ironing", "Enabled")], + 'homer-simpson.stl')) diff --git a/plugins/PCBWriter/SettingsSelectionGroup.qml b/plugins/PCBWriter/SettingsSelectionGroup.qml index 12829c96d4..39299ab7c3 100644 --- a/plugins/PCBWriter/SettingsSelectionGroup.qml +++ b/plugins/PCBWriter/SettingsSelectionGroup.qml @@ -10,13 +10,12 @@ import UM 1.5 as UM import Cura 1.1 as Cura import PCBWriter 1.0 as PCBWriter -Column +ColumnLayout { id: settingsGroup + spacing: UM.Theme.getSize("narrow_margin").width - UM.I18nCatalog { id: catalog; name: "cura" } - - Row + RowLayout { id: settingsGroupTitleRow spacing: UM.Theme.getSize("default_margin").width @@ -24,7 +23,6 @@ Column Item { id: icon - anchors.verticalCenter: parent.verticalCenter height: UM.Theme.getSize("medium_button_icon").height width: height @@ -63,8 +61,27 @@ Column { id: settingsTitle text: modelData.name + (modelData.category_details ? ' (%1)'.arg(modelData.category_details) : '') - anchors.verticalCenter: parent.verticalCenter font: UM.Theme.getFont("default_bold") } } + + ListView + { + id: settingsExportList + Layout.fillWidth: true + Layout.preferredHeight: contentHeight + spacing: 0 + model: modelData.settings + visible: modelData.settings.length > 0 + + delegate: SettingSelection { } + } + + UM.Label + { + UM.I18nCatalog { id: catalog; name: "cura" } + + text: catalog.i18nc("@label", "No specific value has been set") + visible: modelData.settings.length === 0 + } } From 8ad4ab90a8e90a173f6e1aa08b02d75a0b822fb2 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Wed, 31 Jan 2024 09:26:49 +0100 Subject: [PATCH 031/203] User settings are now properly proposed for export CURA-11561 --- plugins/PCBWriter/PCBDialog.py | 8 +- plugins/PCBWriter/PCBDialog.qml | 2 + plugins/PCBWriter/PCBWriter.py | 4 + plugins/PCBWriter/SettingExport.py | 6 +- plugins/PCBWriter/SettingsExportGroup.py | 8 +- plugins/PCBWriter/SettingsExportModel.py | 132 +++++++++++++++++------ 6 files changed, 114 insertions(+), 46 deletions(-) diff --git a/plugins/PCBWriter/PCBDialog.py b/plugins/PCBWriter/PCBDialog.py index f31c87a61b..385b60272e 100644 --- a/plugins/PCBWriter/PCBDialog.py +++ b/plugins/PCBWriter/PCBDialog.py @@ -1,7 +1,7 @@ # Copyright (c) 2024 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt6.QtCore import pyqtSignal, QObject, pyqtProperty, QCoreApplication, QUrl +from PyQt6.QtCore import pyqtSignal, QObject, pyqtProperty, QCoreApplication, QUrl, pyqtSlot from PyQt6.QtGui import QDesktopServices from typing import List, Optional, Dict, cast @@ -26,6 +26,8 @@ i18n_catalog = i18nCatalog("cura") class PCBDialog(QObject): + finished = pyqtSignal() + def __init__(self, parent = None) -> None: super().__init__(parent) @@ -35,3 +37,7 @@ class PCBDialog(QObject): def show(self) -> None: self._view.show() + + @pyqtSlot() + def notifyClosed(self): + self.finished.emit() diff --git a/plugins/PCBWriter/PCBDialog.qml b/plugins/PCBWriter/PCBDialog.qml index 213bed108c..ddf99d5e1f 100644 --- a/plugins/PCBWriter/PCBDialog.qml +++ b/plugins/PCBWriter/PCBDialog.qml @@ -130,4 +130,6 @@ UM.Dialog } buttonSpacing: UM.Theme.getSize("wide_margin").width + + onClosing: manager.notifyClosed() } diff --git a/plugins/PCBWriter/PCBWriter.py b/plugins/PCBWriter/PCBWriter.py index 6391493ae3..26e552f583 100644 --- a/plugins/PCBWriter/PCBWriter.py +++ b/plugins/PCBWriter/PCBWriter.py @@ -64,4 +64,8 @@ class PCBWriter(MeshWriter): def _write(self, stream, nodes, mode): self._config_dialog = PCBDialog() + self._config_dialog.finished.connect(self._onDialogClosed) self._config_dialog.show() + + def _onDialogClosed(self): + self._main_thread_lock.release() diff --git a/plugins/PCBWriter/SettingExport.py b/plugins/PCBWriter/SettingExport.py index 2c230f9ab3..0a761bb6b9 100644 --- a/plugins/PCBWriter/SettingExport.py +++ b/plugins/PCBWriter/SettingExport.py @@ -1,11 +1,7 @@ # Copyright (c) 2024 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt6.QtCore import Qt, QObject, pyqtProperty -from UM.FlameProfiler import pyqtSlot -from UM.Application import Application -from UM.Qt.ListModel import ListModel -from UM.Logger import Logger +from PyQt6.QtCore import QObject, pyqtProperty class SettingsExport(QObject): diff --git a/plugins/PCBWriter/SettingsExportGroup.py b/plugins/PCBWriter/SettingsExportGroup.py index 0a721a7fb8..2b21c42b78 100644 --- a/plugins/PCBWriter/SettingsExportGroup.py +++ b/plugins/PCBWriter/SettingsExportGroup.py @@ -3,13 +3,7 @@ from enum import IntEnum -from PyQt6.QtCore import Qt, QObject, pyqtProperty, pyqtEnum -from UM.FlameProfiler import pyqtSlot -from UM.Application import Application -from UM.Qt.ListModel import ListModel -from UM.Logger import Logger - -from .SettingExport import SettingsExport +from PyQt6.QtCore import QObject, pyqtProperty, pyqtEnum class SettingsExportGroup(QObject): diff --git a/plugins/PCBWriter/SettingsExportModel.py b/plugins/PCBWriter/SettingsExportModel.py index 0f1ec5113a..b09717298a 100644 --- a/plugins/PCBWriter/SettingsExportModel.py +++ b/plugins/PCBWriter/SettingsExportModel.py @@ -1,49 +1,115 @@ # Copyright (c) 2024 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt6.QtCore import QObject, Qt, pyqtProperty -from UM.FlameProfiler import pyqtSlot -from UM.Application import Application -from UM.Qt.ListModel import ListModel -from UM.Logger import Logger +from PyQt6.QtCore import QObject, pyqtProperty from .SettingsExportGroup import SettingsExportGroup from .SettingExport import SettingsExport +from cura.CuraApplication import CuraApplication +from UM.Settings.SettingDefinition import SettingDefinition +from cura.Settings.ExtruderManager import ExtruderManager class SettingsExportModel(QObject): + EXPORTABLE_SETTINGS = {'infill_sparse_density', + 'adhesion_type', + 'support_enable', + 'infill_pattern', + 'support_type', + 'support_structure', + 'support_angle', + 'support_infill_rate', + 'ironing_enabled', + 'fill_outline_gaps', + 'coasting_enable', + 'skin_monotonic', + 'z_seam_position', + 'infill_before_walls', + 'ironing_only_highest_layer', + 'xy_offset', + 'adaptive_layer_height_enabled', + 'brim_gap', + 'support_offset', + 'brim_outside_only', + 'magic_spiralize', + 'slicing_tolerance', + 'outer_inset_first', + 'magic_fuzzy_skin_outside_only', + 'conical_overhang_enabled', + 'min_infill_area', + 'small_hole_max_size', + 'magic_mesh_surface_mode', + 'carve_multiple_volumes', + 'meshfix_union_all_remove_holes', + 'support_tree_rest_preference', + 'small_feature_max_length', + 'draft_shield_enabled', + 'brim_smart_ordering', + 'ooze_shield_enabled', + 'bottom_skin_preshrink', + 'skin_edge_support_thickness', + 'alternate_carve_order', + 'top_skin_preshrink', + 'interlocking_enable'} + def __init__(self, parent = None): super().__init__(parent) - self._settingsGroups = [] - self._updateSettingsExportGroups() + self._settings_groups = [] + + application = CuraApplication.getInstance() + + # Display global settings + global_stack = application.getGlobalContainerStack() + self._settings_groups.append(SettingsExportGroup("Global settings", + SettingsExportGroup.Category.Global, + self._exportSettings(global_stack))) + + # Display per-extruder settings + extruders_stacks = ExtruderManager.getInstance().getUsedExtruderStacks() + for extruder_stack in extruders_stacks: + color = "" + if extruder_stack.material: + color = extruder_stack.material.getMetaDataEntry("color_code") + + self._settings_groups.append(SettingsExportGroup("Extruder settings", + SettingsExportGroup.Category.Extruder, + self._exportSettings(extruder_stack), + extruder_index=extruder_stack.position, + extruder_color=color)) + + # Display per-model settings + scene_root = application.getController().getScene().getRoot() + for scene_node in scene_root.getChildren(): + per_model_stack = scene_node.callDecoration("getStack") + if per_model_stack is not None: + self._settings_groups.append(SettingsExportGroup("Model settings", + SettingsExportGroup.Category.Model, + self._exportSettings(per_model_stack), + scene_node.getName())) @pyqtProperty(list, constant=True) def settingsGroups(self): - return self._settingsGroups + return self._settings_groups - def _updateSettingsExportGroups(self): - self._settingsGroups.append(SettingsExportGroup("Global settings", - SettingsExportGroup.Category.Global, - [SettingsExport("Generate Support", "Enabled"), - SettingsExport("Support Type", "Tree")])) - self._settingsGroups.append(SettingsExportGroup("Extruder settings", - SettingsExportGroup.Category.Extruder, - [SettingsExport("Brim Width", "0.7mm")], - extruder_index=1, - extruder_color='#ff0000')) - self._settingsGroups.append(SettingsExportGroup("Extruder settings", - SettingsExportGroup.Category.Extruder, - [], - extruder_index=8, - extruder_color='#008fff')) - self._settingsGroups.append(SettingsExportGroup("Model settings", - SettingsExportGroup.Category.Model, - [SettingsExport("Brim Width", "20.0 mm"), - SettingsExport("Z Hop when retracted", "Disabled")], - 'hypercube.stl')) - self._settingsGroups.append(SettingsExportGroup("Model settings", - SettingsExportGroup.Category.Model, - [SettingsExport("Walls Thickness", "3.0 mm"), - SettingsExport("Enable Ironing", "Enabled")], - 'homer-simpson.stl')) + @staticmethod + def _exportSettings(settings_stack): + user_settings_container = settings_stack.getTop() + user_keys = user_settings_container.getAllKeys() + + settings_export = [] + + for setting_to_export in user_keys.intersection(SettingsExportModel.EXPORTABLE_SETTINGS): + label = settings_stack.getProperty(setting_to_export, "label") + value = settings_stack.getProperty(setting_to_export, "value") + + setting_type = settings_stack.getProperty(setting_to_export, "type") + if setting_type is not None: + # This is not very good looking, but will do for now + value = SettingDefinition.settingValueToString(setting_type, value) + else: + value = str(value) + + settings_export.append(SettingsExport(label, value)) + + return settings_export \ No newline at end of file From fcf1e63160007a894b8dddf8cf0a32438f95b6cb Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Thu, 1 Feb 2024 09:29:47 +0100 Subject: [PATCH 032/203] It is now possible to generate the PCB file CURA-11561 --- plugins/PCBWriter/PCBDialog.py | 49 ++- plugins/PCBWriter/PCBDialog.qml | 64 +--- plugins/PCBWriter/PCBWriter.py | 443 +++++++++++++++++++++-- plugins/PCBWriter/SettingExport.py | 19 +- plugins/PCBWriter/SettingSelection.qml | 3 +- plugins/PCBWriter/SettingsExportGroup.py | 3 +- plugins/PCBWriter/SettingsExportModel.py | 29 +- plugins/PCBWriter/__init__.py | 12 +- 8 files changed, 510 insertions(+), 112 deletions(-) diff --git a/plugins/PCBWriter/PCBDialog.py b/plugins/PCBWriter/PCBDialog.py index 385b60272e..089fa259ac 100644 --- a/plugins/PCBWriter/PCBDialog.py +++ b/plugins/PCBWriter/PCBDialog.py @@ -1,43 +1,56 @@ # Copyright (c) 2024 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt6.QtCore import pyqtSignal, QObject, pyqtProperty, QCoreApplication, QUrl, pyqtSlot -from PyQt6.QtGui import QDesktopServices -from typing import List, Optional, Dict, cast +import os -from cura.Machines.Models.MachineListModel import MachineListModel -from cura.Machines.Models.IntentTranslations import intent_translations -from cura.Settings.GlobalStack import GlobalStack -from UM.Application import Application +from PyQt6.QtCore import pyqtSignal, QObject from UM.FlameProfiler import pyqtSlot from UM.i18n import i18nCatalog -from UM.Logger import Logger -from UM.Message import Message -from UM.PluginRegistry import PluginRegistry -from UM.Settings.ContainerRegistry import ContainerRegistry - -import os -import threading -import time from cura.CuraApplication import CuraApplication +from .SettingsExportModel import SettingsExportModel + i18n_catalog = i18nCatalog("cura") class PCBDialog(QObject): - finished = pyqtSignal() + finished = pyqtSignal(bool) def __init__(self, parent = None) -> None: super().__init__(parent) plugin_path = os.path.dirname(__file__) dialog_path = os.path.join(plugin_path, 'PCBDialog.qml') - self._view = CuraApplication.getInstance().createQmlComponent(dialog_path, {"manager": self}) + self._model = SettingsExportModel() + self._view = CuraApplication.getInstance().createQmlComponent(dialog_path, + {"manager": self, + "settingsExportModel": self._model}) + self._view.accepted.connect(self._onAccepted) + self._view.rejected.connect(self._onRejected) + self._finished = False + self._accepted = False def show(self) -> None: self._view.show() + def getModel(self) -> SettingsExportModel: + return self._model + @pyqtSlot() def notifyClosed(self): - self.finished.emit() + self._onFinished() + + @pyqtSlot() + def _onAccepted(self): + self._accepted = True + self._onFinished() + + @pyqtSlot() + def _onRejected(self): + self._onFinished() + + def _onFinished(self): + if not self._finished: # Make sure we don't send the finished signal twice, whatever happens + self._finished = True + self.finished.emit(self._accepted) diff --git a/plugins/PCBWriter/PCBDialog.qml b/plugins/PCBWriter/PCBDialog.qml index ddf99d5e1f..8264e3ee96 100644 --- a/plugins/PCBWriter/PCBDialog.qml +++ b/plugins/PCBWriter/PCBDialog.qml @@ -12,7 +12,7 @@ import PCBWriter 1.0 as PCBWriter UM.Dialog { - id: workspaceDialog + id: exportDialog title: catalog.i18nc("@title:window", "Export pre-configured build batch") margin: UM.Theme.getSize("default_margin").width @@ -23,8 +23,6 @@ UM.Dialog headerComponent: Rectangle { - UM.I18nCatalog { id: catalog; name: "cura" } - height: childrenRect.height + 2 * UM.Theme.getSize("default_margin").height color: UM.Theme.getColor("main_background") @@ -62,7 +60,7 @@ UM.Dialog anchors.fill: parent color: UM.Theme.getColor("main_background") - PCBWriter.SettingsExportModel{ id: settingsExportModel } + UM.I18nCatalog { id: catalog; name: "cura" } ListView { @@ -79,55 +77,19 @@ UM.Dialog } } - footerComponent: Rectangle - { - color: warning ? UM.Theme.getColor("warning") : "transparent" - anchors.bottom: parent.bottom - width: parent.width - height: childrenRect.height + (warning ? 2 * workspaceDialog.margin : workspaceDialog.margin) - - Column + rightButtons: + [ + Cura.TertiaryButton { - height: childrenRect.height - spacing: workspaceDialog.margin - - anchors.leftMargin: workspaceDialog.margin - anchors.rightMargin: workspaceDialog.margin - anchors.bottomMargin: workspaceDialog.margin - anchors.topMargin: warning ? workspaceDialog.margin : 0 - - anchors.left: parent.left - anchors.right: parent.right - anchors.top: parent.top - - RowLayout - { - id: warningRow - height: childrenRect.height - visible: warning - spacing: workspaceDialog.margin - UM.ColorImage - { - width: UM.Theme.getSize("extruder_icon").width - height: UM.Theme.getSize("extruder_icon").height - source: UM.Theme.getIcon("Warning") - } - - UM.Label - { - id: warningText - text: catalog.i18nc("@label", "This project contains materials or plugins that are currently not installed in Cura.
Install the missing packages and reopen the project.") - } - } - - Loader - { - width: parent.width - height: childrenRect.height - sourceComponent: buttonRow - } + text: catalog.i18nc("@action:button", "Cancel") + onClicked: reject() + }, + Cura.PrimaryButton + { + text: catalog.i18nc("@action:button", "Save project") + onClicked: accept() } - } + ] buttonSpacing: UM.Theme.getSize("wide_margin").width diff --git a/plugins/PCBWriter/PCBWriter.py b/plugins/PCBWriter/PCBWriter.py index 26e552f583..794eac9d4a 100644 --- a/plugins/PCBWriter/PCBWriter.py +++ b/plugins/PCBWriter/PCBWriter.py @@ -1,71 +1,460 @@ # Copyright (c) 2024 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import json +import zipfile +import datetime +import numpy import re - +from dataclasses import asdict +from typing import Optional, cast, List, Dict, Pattern, Set, Union, Mapping, Any from threading import Lock +from io import StringIO # For converting g-code to bytes. -from typing import Optional, cast, List, Dict, Pattern, Set +import pySavitar as Savitar + +from PyQt6.QtCore import QBuffer from UM.Mesh.MeshWriter import MeshWriter -from UM.Math.Vector import Vector from UM.Logger import Logger -from UM.Math.Matrix import Matrix -from UM.Application import Application -from UM.Message import Message -from UM.Resources import Resources from UM.Scene.SceneNode import SceneNode +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator +from UM.i18n import i18nCatalog +from UM.Settings.InstanceContainer import InstanceContainer +from UM.Settings.SettingFunction import SettingFunction from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Settings.EmptyInstanceContainer import EmptyInstanceContainer -from PyQt6.QtQml import qmlRegisterType +from UM.Math.Matrix import Matrix +from UM.Math.Vector import Vector from cura.CuraApplication import CuraApplication from cura.CuraPackageManager import CuraPackageManager from cura.Settings import CuraContainerStack +from cura.Settings.GlobalStack import GlobalStack from cura.Utils.Threading import call_on_qt_thread from cura.Snapshot import Snapshot -from PyQt6.QtCore import QBuffer - -import pySavitar as Savitar - -import numpy -import datetime - -import zipfile -import UM.Application - from .PCBDialog import PCBDialog from .SettingsExportModel import SettingsExportModel from .SettingsExportGroup import SettingsExportGroup -from UM.i18n import i18nCatalog +MYPY = False +try: + if not MYPY: + import xml.etree.cElementTree as ET +except ImportError: + Logger.log("w", "Unable to load cElementTree, switching to slower version") + import xml.etree.ElementTree as ET + catalog = i18nCatalog("cura") +THUMBNAIL_PATH = "Metadata/thumbnail.png" +MODEL_PATH = "3D/3dmodel.model" +PACKAGE_METADATA_PATH = "Cura/packages.json" +USER_SETTINGS_PATH = "Cura/user-settings.json" + class PCBWriter(MeshWriter): def __init__(self): super().__init__() - - qmlRegisterType(SettingsExportModel, "PCBWriter", 1, 0, "SettingsExportModel") - qmlRegisterType(SettingsExportGroup, "PCBWriter", 1, 0, "SettingsExportGroup") - #qmlRegisterUncreatableType(SettingsExportGroup.Category, "PCBWriter", 1, 0, "SettingsExportGroup.Category") + self._namespaces = { + "3mf": "http://schemas.microsoft.com/3dmanufacturing/core/2015/02", + "content-types": "http://schemas.openxmlformats.org/package/2006/content-types", + "relationships": "http://schemas.openxmlformats.org/package/2006/relationships", + "cura": "http://software.ultimaker.com/xml/cura/3mf/2015/10" + } self._config_dialog = None self._main_thread_lock = Lock() + self._success = False + self._export_model = None def write(self, stream, nodes, mode = MeshWriter.OutputMode.BinaryMode) -> bool: + self._success = False + self._export_model = None + self._main_thread_lock.acquire() # Start configuration window in main application thread CuraApplication.getInstance().callLater(self._write, stream, nodes, mode) self._main_thread_lock.acquire() # Block until lock has been released, meaning the config is over self._main_thread_lock.release() - return True + + if self._export_model is not None: + archive = zipfile.ZipFile(stream, "w", compression=zipfile.ZIP_DEFLATED) + try: + model_file = zipfile.ZipInfo(MODEL_PATH) + # Because zipfile is stupid and ignores archive-level compression settings when writing with ZipInfo. + model_file.compress_type = zipfile.ZIP_DEFLATED + + # Create content types file + content_types_file = zipfile.ZipInfo("[Content_Types].xml") + content_types_file.compress_type = zipfile.ZIP_DEFLATED + content_types = ET.Element("Types", xmlns=self._namespaces["content-types"]) + rels_type = ET.SubElement(content_types, "Default", Extension="rels", + ContentType="application/vnd.openxmlformats-package.relationships+xml") + model_type = ET.SubElement(content_types, "Default", Extension="model", + ContentType="application/vnd.ms-package.3dmanufacturing-3dmodel+xml") + + # Create _rels/.rels file + relations_file = zipfile.ZipInfo("_rels/.rels") + relations_file.compress_type = zipfile.ZIP_DEFLATED + relations_element = ET.Element("Relationships", xmlns=self._namespaces["relationships"]) + model_relation_element = ET.SubElement(relations_element, "Relationship", Target="/" + MODEL_PATH, + Id="rel0", + Type="http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel") + + # Attempt to add a thumbnail + snapshot = self._createSnapshot() + if snapshot: + thumbnail_buffer = QBuffer() + thumbnail_buffer.open(QBuffer.OpenModeFlag.ReadWrite) + snapshot.save(thumbnail_buffer, "PNG") + + thumbnail_file = zipfile.ZipInfo(THUMBNAIL_PATH) + # Don't try to compress snapshot file, because the PNG is pretty much as compact as it will get + archive.writestr(thumbnail_file, thumbnail_buffer.data()) + + # Add PNG to content types file + thumbnail_type = ET.SubElement(content_types, "Default", Extension="png", ContentType="image/png") + # Add thumbnail relation to _rels/.rels file + thumbnail_relation_element = ET.SubElement(relations_element, "Relationship", + Target="/" + THUMBNAIL_PATH, Id="rel1", + Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail") + + # Write material metadata + packages_metadata = self._getMaterialPackageMetadata() + self._getPluginPackageMetadata() + self._storeMetadataJson({"packages": packages_metadata}, archive, PACKAGE_METADATA_PATH) + + # Write user settings data + user_settings_data = self._getUserSettings(self._export_model) + self._storeMetadataJson(user_settings_data, archive, USER_SETTINGS_PATH) + + savitar_scene = Savitar.Scene() + + scene_metadata = CuraApplication.getInstance().getController().getScene().getMetaData() + + for key, value in scene_metadata.items(): + savitar_scene.setMetaDataEntry(key, value) + + current_time_string = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + if "Application" not in scene_metadata: + # This might sound a bit strange, but this field should store the original application that created + # the 3mf. So if it was already set, leave it to whatever it was. + savitar_scene.setMetaDataEntry("Application", + CuraApplication.getInstance().getApplicationDisplayName()) + if "CreationDate" not in scene_metadata: + savitar_scene.setMetaDataEntry("CreationDate", current_time_string) + + savitar_scene.setMetaDataEntry("ModificationDate", current_time_string) + + transformation_matrix = Matrix() + transformation_matrix._data[1, 1] = 0 + transformation_matrix._data[1, 2] = -1 + transformation_matrix._data[2, 1] = 1 + transformation_matrix._data[2, 2] = 0 + + global_container_stack = CuraApplication.getInstance().getGlobalContainerStack() + # Second step: 3MF defines the left corner of the machine as center, whereas cura uses the center of the + # build volume. + if global_container_stack: + translation_vector = Vector(x=global_container_stack.getProperty("machine_width", "value") / 2, + y=global_container_stack.getProperty("machine_depth", "value") / 2, + z=0) + translation_matrix = Matrix() + translation_matrix.setByTranslation(translation_vector) + transformation_matrix.preMultiply(translation_matrix) + + root_node = CuraApplication.getInstance().getController().getScene().getRoot() + exported_model_settings = PCBWriter._extractModelExportedSettings(self._export_model) + for node in nodes: + if node == root_node: + for root_child in node.getChildren(): + savitar_node = PCBWriter._convertUMNodeToSavitarNode(root_child, + transformation_matrix, + exported_model_settings) + if savitar_node: + savitar_scene.addSceneNode(savitar_node) + else: + savitar_node = self._convertUMNodeToSavitarNode(node, + transformation_matrix, + exported_model_settings) + if savitar_node: + savitar_scene.addSceneNode(savitar_node) + + parser = Savitar.ThreeMFParser() + scene_string = parser.sceneToString(savitar_scene) + + archive.writestr(model_file, scene_string) + archive.writestr(content_types_file, + b' \n' + ET.tostring(content_types)) + archive.writestr(relations_file, + b' \n' + ET.tostring(relations_element)) + except Exception as error: + Logger.logException("e", "Error writing zip file") + self.setInformation(str(error)) + return False + finally: + archive.close() + + return True + else: + return False def _write(self, stream, nodes, mode): self._config_dialog = PCBDialog() - self._config_dialog.finished.connect(self._onDialogClosed) + self._config_dialog.finished.connect(self._onDialogFinished) self._config_dialog.show() - def _onDialogClosed(self): + def _onDialogFinished(self, accepted: bool): + if accepted: + self._export_model = self._config_dialog.getModel() + self._main_thread_lock.release() + + @staticmethod + def _extractModelExportedSettings(model: SettingsExportModel) -> Mapping[str, Set[str]]: + extra_settings = {} + + for group in model.settingsGroups: + if group.category == SettingsExportGroup.Category.Model: + exported_model_settings = set() + + for exported_setting in group.settings: + if exported_setting.selected: + exported_model_settings.add(exported_setting.id) + + extra_settings[group.category_details] = exported_model_settings + + return extra_settings + + @staticmethod + def _convertUMNodeToSavitarNode(um_node, + transformation: Matrix = Matrix(), + exported_settings: Mapping[str, Set[str]] = None): + """Convenience function that converts an Uranium SceneNode object to a SavitarSceneNode + + :returns: Uranium Scene node. + """ + if not isinstance(um_node, SceneNode): + return None + + active_build_plate_nr = CuraApplication.getInstance().getMultiBuildPlateModel().activeBuildPlate + if um_node.callDecoration("getBuildPlateNumber") != active_build_plate_nr: + return + + savitar_node = Savitar.SceneNode() + savitar_node.setName(um_node.getName()) + + node_matrix = Matrix() + mesh_data = um_node.getMeshData() + # compensate for original center position, if object(s) is/are not around its zero position + if mesh_data is not None: + extents = mesh_data.getExtents() + if extents is not None: + # We use a different coordinate space while writing, so flip Z and Y + center_vector = Vector(extents.center.x, extents.center.z, extents.center.y) + node_matrix.setByTranslation(center_vector) + node_matrix.multiply(um_node.getLocalTransformation()) + + matrix_string = PCBWriter._convertMatrixToString(node_matrix.preMultiply(transformation)) + + savitar_node.setTransformation(matrix_string) + if mesh_data is not None: + savitar_node.getMeshData().setVerticesFromBytes(mesh_data.getVerticesAsByteArray()) + indices_array = mesh_data.getIndicesAsByteArray() + if indices_array is not None: + savitar_node.getMeshData().setFacesFromBytes(indices_array) + else: + savitar_node.getMeshData().setFacesFromBytes( + numpy.arange(mesh_data.getVertices().size / 3, dtype=numpy.int32).tostring()) + + # Handle per object settings (if any) + stack = um_node.callDecoration("getStack") + if stack is not None: + if um_node.getName() in exported_settings: + model_exported_settings = exported_settings[um_node.getName()] + + # Get values for all exported settings & save them. + for key in model_exported_settings: + savitar_node.setSetting("cura:" + key, str(stack.getProperty(key, "value"))) + + # Store the metadata. + for key, value in um_node.metadata.items(): + savitar_node.setSetting(key, value) + + for child_node in um_node.getChildren(): + # only save the nodes on the active build plate + if child_node.callDecoration("getBuildPlateNumber") != active_build_plate_nr: + continue + savitar_child_node = PCBWriter._convertUMNodeToSavitarNode(child_node, + exported_settings = exported_settings) + if savitar_child_node is not None: + savitar_node.addChild(savitar_child_node) + + return savitar_node + + @call_on_qt_thread # must be called from the main thread because of OpenGL + def _createSnapshot(self): + Logger.log("d", "Creating thumbnail image...") + if not CuraApplication.getInstance().isVisible: + Logger.log("w", "Can't create snapshot when renderer not initialized.") + return None + try: + snapshot = Snapshot.snapshot(width=300, height=300) + except: + Logger.logException("w", "Failed to create snapshot image") + return None + + return snapshot + + @staticmethod + def _storeMetadataJson(metadata: Union[Dict[str, List[Dict[str, str]]], Dict[str, Dict[str, Any]]], + archive: zipfile.ZipFile, path + : str) -> None: + """Stores metadata inside archive path as json file""" + metadata_file = zipfile.ZipInfo(path) + # We have to set the compress type of each file as well (it doesn't keep the type of the entire archive) + metadata_file.compress_type = zipfile.ZIP_DEFLATED + archive.writestr(metadata_file, + json.dumps(metadata, separators=(", ", ": "), indent=4, skipkeys=True, ensure_ascii=False)) + + @staticmethod + def _getUserSettings(model: SettingsExportModel) -> Dict[str, Dict[str, Any]]: + user_settings = {} + + for group in model.settingsGroups: + category = '' + if group.category == SettingsExportGroup.Category.Global: + category = 'global' + elif group.category == SettingsExportGroup.Category.Extruder: + category = f"extruder_{group.extruder_index}" + + if len(category) > 0: + settings_values = {} + stack = group.stack + + for setting in group.settings: + if setting.selected: + settings_values[setting.id] = stack.getProperty(setting.id, "value") + + user_settings[category] = settings_values + + return user_settings + + @staticmethod + def _getPluginPackageMetadata() -> List[Dict[str, str]]: + """Get metadata for all backend plugins that are used in the project. + + :return: List of material metadata dictionaries. + """ + + backend_plugin_enum_value_regex = re.compile( + r"PLUGIN::(?P\w+)@(?P\d+.\d+.\d+)::(?P\w+)") + # This regex parses enum values to find if they contain custom + # backend engine values. These custom enum values are in the format + # PLUGIN::@:: + # where + # - plugin_id is the id of the plugin + # - version is in the semver format + # - value is the value of the enum + + plugin_ids = set() + + def addPluginIdsInStack(stack: CuraContainerStack) -> None: + for key in stack.getAllKeys(): + value = str(stack.getProperty(key, "value")) + for plugin_id, _version, _value in backend_plugin_enum_value_regex.findall(value): + plugin_ids.add(plugin_id) + + # Go through all stacks and find all the plugin id contained in the project + global_stack = CuraApplication.getInstance().getMachineManager().activeMachine + addPluginIdsInStack(global_stack) + + for container in global_stack.getContainers(): + addPluginIdsInStack(container) + + for extruder_stack in global_stack.extruderList: + addPluginIdsInStack(extruder_stack) + + for container in extruder_stack.getContainers(): + addPluginIdsInStack(container) + + metadata = {} + + package_manager = cast(CuraPackageManager, CuraApplication.getInstance().getPackageManager()) + for plugin_id in plugin_ids: + package_data = package_manager.getInstalledPackageInfo(plugin_id) + + metadata[plugin_id] = { + "id": plugin_id, + "display_name": package_data.get("display_name") if package_data.get("display_name") else "", + "package_version": package_data.get("package_version") if package_data.get("package_version") else "", + "sdk_version_semver": package_data.get("sdk_version_semver") if package_data.get( + "sdk_version_semver") else "", + "type": "plugin", + } + + # Storing in a dict and fetching values to avoid duplicates + return list(metadata.values()) + + @staticmethod + def _getMaterialPackageMetadata() -> List[Dict[str, str]]: + """Get metadata for installed materials in active extruder stack, this does not include bundled materials. + + :return: List of material metadata dictionaries. + """ + metadata = {} + + package_manager = cast(CuraPackageManager, CuraApplication.getInstance().getPackageManager()) + + for extruder in CuraApplication.getInstance().getExtruderManager().getActiveExtruderStacks(): + if not extruder.isEnabled: + # Don't export materials not in use + continue + + if isinstance(extruder.material, type(ContainerRegistry.getInstance().getEmptyInstanceContainer())): + # This is an empty material container, no material to export + continue + + if package_manager.isMaterialBundled(extruder.material.getFileName(), + extruder.material.getMetaDataEntry("GUID")): + # Don't export bundled materials + continue + + package_id = package_manager.getMaterialFilePackageId(extruder.material.getFileName(), + extruder.material.getMetaDataEntry("GUID")) + package_data = package_manager.getInstalledPackageInfo(package_id) + + # We failed to find the package for this material + if not package_data: + Logger.info(f"Could not find package for material in extruder {extruder.id}, skipping.") + continue + + material_metadata = { + "id": package_id, + "display_name": package_data.get("display_name") if package_data.get("display_name") else "", + "package_version": package_data.get("package_version") if package_data.get("package_version") else "", + "sdk_version_semver": package_data.get("sdk_version_semver") if package_data.get( + "sdk_version_semver") else "", + "type": "material", + } + + metadata[package_id] = material_metadata + + # Storing in a dict and fetching values to avoid duplicates + return list(metadata.values()) + + @staticmethod + def _convertMatrixToString(matrix): + result = "" + result += str(matrix._data[0, 0]) + " " + result += str(matrix._data[1, 0]) + " " + result += str(matrix._data[2, 0]) + " " + result += str(matrix._data[0, 1]) + " " + result += str(matrix._data[1, 1]) + " " + result += str(matrix._data[2, 1]) + " " + result += str(matrix._data[0, 2]) + " " + result += str(matrix._data[1, 2]) + " " + result += str(matrix._data[2, 2]) + " " + result += str(matrix._data[0, 3]) + " " + result += str(matrix._data[1, 3]) + " " + result += str(matrix._data[2, 3]) + return result \ No newline at end of file diff --git a/plugins/PCBWriter/SettingExport.py b/plugins/PCBWriter/SettingExport.py index 0a761bb6b9..73dd818897 100644 --- a/plugins/PCBWriter/SettingExport.py +++ b/plugins/PCBWriter/SettingExport.py @@ -1,15 +1,17 @@ # Copyright (c) 2024 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt6.QtCore import QObject, pyqtProperty +from PyQt6.QtCore import QObject, pyqtProperty, pyqtSignal -class SettingsExport(QObject): +class SettingExport(QObject): - def __init__(self, name, value): + def __init__(self, id, name, value): super().__init__() + self.id = id self._name = name self._value = value + self._selected = True @pyqtProperty(str, constant=True) def name(self): @@ -18,3 +20,14 @@ class SettingsExport(QObject): @pyqtProperty(str, constant=True) def value(self): return self._value + + selectedChanged = pyqtSignal(bool) + + def setSelected(self, selected): + if selected != self._selected: + self._selected = selected + self.selectedChanged.emit(self._selected) + + @pyqtProperty(bool, fset = setSelected, notify = selectedChanged) + def selected(self): + return self._selected diff --git a/plugins/PCBWriter/SettingSelection.qml b/plugins/PCBWriter/SettingSelection.qml index 9b09593a7d..6439542f3f 100644 --- a/plugins/PCBWriter/SettingSelection.qml +++ b/plugins/PCBWriter/SettingSelection.qml @@ -17,7 +17,8 @@ RowLayout { text: modelData.name Layout.preferredWidth: UM.Theme.getSize("setting").width - checked: true + checked: modelData.selected + onClicked: modelData.selected = checked } UM.Label diff --git a/plugins/PCBWriter/SettingsExportGroup.py b/plugins/PCBWriter/SettingsExportGroup.py index 2b21c42b78..cc3fc7b4f5 100644 --- a/plugins/PCBWriter/SettingsExportGroup.py +++ b/plugins/PCBWriter/SettingsExportGroup.py @@ -14,8 +14,9 @@ class SettingsExportGroup(QObject): Extruder = 1 Model = 2 - def __init__(self, name, category, settings, category_details = '', extruder_index = 0, extruder_color = ''): + def __init__(self, stack, name, category, settings, category_details = '', extruder_index = 0, extruder_color = ''): super().__init__() + self.stack = stack self._name = name self._settings = settings self._category = category diff --git a/plugins/PCBWriter/SettingsExportModel.py b/plugins/PCBWriter/SettingsExportModel.py index b09717298a..992adeb089 100644 --- a/plugins/PCBWriter/SettingsExportModel.py +++ b/plugins/PCBWriter/SettingsExportModel.py @@ -1,13 +1,21 @@ # Copyright (c) 2024 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from dataclasses import asdict +from typing import Optional, cast, List, Dict, Pattern, Set + from PyQt6.QtCore import QObject, pyqtProperty -from .SettingsExportGroup import SettingsExportGroup -from .SettingExport import SettingsExport -from cura.CuraApplication import CuraApplication from UM.Settings.SettingDefinition import SettingDefinition +from UM.Settings.InstanceContainer import InstanceContainer +from UM.Settings.SettingFunction import SettingFunction + +from cura.CuraApplication import CuraApplication from cura.Settings.ExtruderManager import ExtruderManager +from cura.Settings.GlobalStack import GlobalStack + +from .SettingsExportGroup import SettingsExportGroup +from .SettingExport import SettingExport class SettingsExportModel(QObject): @@ -61,7 +69,8 @@ class SettingsExportModel(QObject): # Display global settings global_stack = application.getGlobalContainerStack() - self._settings_groups.append(SettingsExportGroup("Global settings", + self._settings_groups.append(SettingsExportGroup(global_stack, + "Global settings", SettingsExportGroup.Category.Global, self._exportSettings(global_stack))) @@ -72,7 +81,8 @@ class SettingsExportModel(QObject): if extruder_stack.material: color = extruder_stack.material.getMetaDataEntry("color_code") - self._settings_groups.append(SettingsExportGroup("Extruder settings", + self._settings_groups.append(SettingsExportGroup(extruder_stack, + "Extruder settings", SettingsExportGroup.Category.Extruder, self._exportSettings(extruder_stack), extruder_index=extruder_stack.position, @@ -83,13 +93,14 @@ class SettingsExportModel(QObject): for scene_node in scene_root.getChildren(): per_model_stack = scene_node.callDecoration("getStack") if per_model_stack is not None: - self._settings_groups.append(SettingsExportGroup("Model settings", + self._settings_groups.append(SettingsExportGroup(per_model_stack, + "Model settings", SettingsExportGroup.Category.Model, self._exportSettings(per_model_stack), scene_node.getName())) @pyqtProperty(list, constant=True) - def settingsGroups(self): + def settingsGroups(self) -> List[SettingsExportGroup]: return self._settings_groups @staticmethod @@ -110,6 +121,6 @@ class SettingsExportModel(QObject): else: value = str(value) - settings_export.append(SettingsExport(label, value)) + settings_export.append(SettingExport(setting_to_export, label, value)) - return settings_export \ No newline at end of file + return settings_export diff --git a/plugins/PCBWriter/__init__.py b/plugins/PCBWriter/__init__.py index 3ec2eba95f..da4205a7d7 100644 --- a/plugins/PCBWriter/__init__.py +++ b/plugins/PCBWriter/__init__.py @@ -2,9 +2,14 @@ # Cura is released under the terms of the LGPLv3 or higher. import sys -from . import PCBWriter +from PyQt6.QtQml import qmlRegisterType + from UM.i18n import i18nCatalog +from . import PCBWriter +from .SettingsExportModel import SettingsExportModel +from .SettingsExportGroup import SettingsExportGroup + i18n_catalog = i18nCatalog("cura") def getMetaData(): @@ -12,10 +17,13 @@ def getMetaData(): "output": [{ "extension": "pcb", "description": i18n_catalog.i18nc("@item:inlistbox", "Pre-Configured Batch file"), - "mime_type": "application/vnd.um.preconfigured-batch+3mf", + "mime_type": "application/x-pcb", "mode": PCBWriter.PCBWriter.OutputMode.BinaryMode }] }} def register(app): + qmlRegisterType(SettingsExportModel, "PCBWriter", 1, 0, "SettingsExportModel") + qmlRegisterType(SettingsExportGroup, "PCBWriter", 1, 0, "SettingsExportGroup") + return {"mesh_writer": PCBWriter.PCBWriter() } From 38b67f8015e508c162c65ba35e25cdbe760d51cb Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Thu, 1 Feb 2024 10:34:19 +0100 Subject: [PATCH 033/203] Now displaying a help icon and value units CURA-11561 --- plugins/3MFReader/WorkspaceSection.qml | 29 ++++-------------------- plugins/PCBWriter/SettingExport.py | 9 ++++++-- plugins/PCBWriter/SettingSelection.qml | 12 +++++++++- plugins/PCBWriter/SettingsExportModel.py | 10 +++++--- 4 files changed, 29 insertions(+), 31 deletions(-) diff --git a/plugins/3MFReader/WorkspaceSection.qml b/plugins/3MFReader/WorkspaceSection.qml index 0c94ab5d6a..63b5e89b41 100644 --- a/plugins/3MFReader/WorkspaceSection.qml +++ b/plugins/3MFReader/WorkspaceSection.qml @@ -5,7 +5,7 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 -import UM 1.5 as UM +import UM 1.8 as UM Item @@ -80,34 +80,13 @@ Item sourceComponent: combobox } - MouseArea + UM.HelpIcon { - id: helpIconMouseArea anchors.right: parent.right anchors.verticalCenter: comboboxLabel.verticalCenter - width: childrenRect.width - height: childrenRect.height - hoverEnabled: true - UM.ColorImage - { - width: UM.Theme.getSize("section_icon").width - height: width - - visible: comboboxTooltipText != "" - source: UM.Theme.getIcon("Help") - color: UM.Theme.getColor("text") - - UM.ToolTip - { - text: comboboxTooltipText - visible: helpIconMouseArea.containsMouse - targetPoint: Qt.point(parent.x + Math.round(parent.width / 2), parent.y) - x: 0 - y: parent.y + parent.height + UM.Theme.getSize("default_margin").height - width: UM.Theme.getSize("tooltip").width - } - } + text: comboboxTooltipText + visible: comboboxTooltipText != "" } } diff --git a/plugins/PCBWriter/SettingExport.py b/plugins/PCBWriter/SettingExport.py index 73dd818897..6702aa1f68 100644 --- a/plugins/PCBWriter/SettingExport.py +++ b/plugins/PCBWriter/SettingExport.py @@ -6,12 +6,13 @@ from PyQt6.QtCore import QObject, pyqtProperty, pyqtSignal class SettingExport(QObject): - def __init__(self, id, name, value): + def __init__(self, id, name, value, selectable): super().__init__() self.id = id self._name = name self._value = value - self._selected = True + self._selected = selectable + self._selectable = selectable @pyqtProperty(str, constant=True) def name(self): @@ -31,3 +32,7 @@ class SettingExport(QObject): @pyqtProperty(bool, fset = setSelected, notify = selectedChanged) def selected(self): return self._selected + + @pyqtProperty(bool, constant=True) + def selectable(self): + return self._selectable diff --git a/plugins/PCBWriter/SettingSelection.qml b/plugins/PCBWriter/SettingSelection.qml index 6439542f3f..636b67fb37 100644 --- a/plugins/PCBWriter/SettingSelection.qml +++ b/plugins/PCBWriter/SettingSelection.qml @@ -6,7 +6,7 @@ import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 import QtQuick.Window 2.2 -import UM 1.5 as UM +import UM 1.8 as UM import Cura 1.1 as Cura RowLayout @@ -19,10 +19,20 @@ RowLayout Layout.preferredWidth: UM.Theme.getSize("setting").width checked: modelData.selected onClicked: modelData.selected = checked + enabled: modelData.selectable } UM.Label { text: modelData.value } + + UM.HelpIcon + { + UM.I18nCatalog { id: catalog; name: "cura" } + + text: catalog.i18nc("@tooltip", + "This setting can't be exported because it depends too much on the used printer capacities") + visible: !modelData.selectable + } } diff --git a/plugins/PCBWriter/SettingsExportModel.py b/plugins/PCBWriter/SettingsExportModel.py index 992adeb089..a4acaf02f7 100644 --- a/plugins/PCBWriter/SettingsExportModel.py +++ b/plugins/PCBWriter/SettingsExportModel.py @@ -110,17 +110,21 @@ class SettingsExportModel(QObject): settings_export = [] - for setting_to_export in user_keys.intersection(SettingsExportModel.EXPORTABLE_SETTINGS): + for setting_to_export in user_keys: label = settings_stack.getProperty(setting_to_export, "label") value = settings_stack.getProperty(setting_to_export, "value") + unit = settings_stack.getProperty(setting_to_export, "unit") setting_type = settings_stack.getProperty(setting_to_export, "type") if setting_type is not None: # This is not very good looking, but will do for now - value = SettingDefinition.settingValueToString(setting_type, value) + value = SettingDefinition.settingValueToString(setting_type, value) + " " + unit else: value = str(value) - settings_export.append(SettingExport(setting_to_export, label, value)) + settings_export.append(SettingExport(setting_to_export, + label, + value, + setting_to_export in SettingsExportModel.EXPORTABLE_SETTINGS)) return settings_export From 3fc859c76bb17e7792692fb75c16dba0d288a548 Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Thu, 1 Feb 2024 11:34:19 +0100 Subject: [PATCH 034/203] crash while opening printer setting It happened because of creating MachineActionManager as a singleton. Code is refractored to make it work. CURA-11558 --- cura/CuraApplication.py | 17 ++++++++--------- resources/qml/Preferences/MachinesPage.qml | 4 ++-- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 67c420028b..08fec4479e 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -104,7 +104,8 @@ from cura.Settings.SettingInheritanceManager import SettingInheritanceManager from cura.Settings.SidebarCustomMenuItemsModel import SidebarCustomMenuItemsModel from cura.Settings.SimpleModeSettingsManager import SimpleModeSettingsManager from cura.TaskManagement.OnExitCallbackManager import OnExitCallbackManager -from cura.UI import CuraSplashScreen, MachineActionManager, PrintInformation +from cura.UI import CuraSplashScreen, PrintInformation +from cura.UI.MachineActionManager import MachineActionManager from cura.UI.AddPrinterPagesModel import AddPrinterPagesModel from cura.UI.MachineSettingsManager import MachineSettingsManager from cura.UI.ObjectsModel import ObjectsModel @@ -186,7 +187,7 @@ class CuraApplication(QtApplication): self._cura_formula_functions = None # type: Optional[CuraFormulaFunctions] - self._machine_action_manager = None # type: Optional[MachineActionManager.MachineActionManager] + self._machine_action_manager = None # type: Optional[MachineActionManager] self.empty_container = None # type: EmptyInstanceContainer self.empty_definition_changes_container = None # type: EmptyInstanceContainer @@ -352,7 +353,7 @@ class CuraApplication(QtApplication): self.__addAllEmptyContainers() self.__setLatestResouceVersionsForVersionUpgrade() - self._machine_action_manager = MachineActionManager.MachineActionManager(self) + self._machine_action_manager = MachineActionManager(self) self._machine_action_manager.initialize() def __sendCommandToSingleInstance(self): @@ -1129,18 +1130,16 @@ class CuraApplication(QtApplication): self._setting_inheritance_manager = SettingInheritanceManager.createSettingInheritanceManager() return self._setting_inheritance_manager - def getMachineActionManager(self, *args: Any) -> MachineActionManager.MachineActionManager: + @pyqtSlot(result = QObject) + def getMachineActionManager(self, *args: Any) -> MachineActionManager: """Get the machine action manager We ignore any *args given to this, as we also register the machine manager as qml singleton. It wants to give this function an engine and script engine, but we don't care about that. """ - return cast(MachineActionManager.MachineActionManager, self._machine_action_manager) + return self._machine_action_manager - @pyqtSlot(result = QObject) - def getMachineActionManagerQml(self)-> MachineActionManager.MachineActionManager: - return cast(QObject, self._machine_action_manager) @pyqtSlot(result = QObject) def getMaterialManagementModel(self) -> MaterialManagementModel: @@ -1264,7 +1263,7 @@ class CuraApplication(QtApplication): qmlRegisterSingletonType(IntentManager, "Cura", 1, 6, self.getIntentManager, "IntentManager") qmlRegisterSingletonType(SettingInheritanceManager, "Cura", 1, 0, self.getSettingInheritanceManager, "SettingInheritanceManager") qmlRegisterSingletonType(SimpleModeSettingsManager, "Cura", 1, 0, self.getSimpleModeSettingsManagerWrapper, "SimpleModeSettingsManager") - qmlRegisterSingletonType(MachineActionManager.MachineActionManager, "Cura", 1, 0, self.getMachineActionManagerWrapper, "MachineActionManager") + qmlRegisterSingletonType(MachineActionManager, "Cura", 1, 0, self.getMachineActionManagerWrapper, "MachineActionManager") self.processEvents() qmlRegisterType(NetworkingUtil, "Cura", 1, 5, "NetworkingUtil") diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml index 971de03696..845c6cf492 100644 --- a/resources/qml/Preferences/MachinesPage.qml +++ b/resources/qml/Preferences/MachinesPage.qml @@ -12,7 +12,7 @@ import Cura 1.0 as Cura UM.ManagementPage { id: base - property var machineActionManager: CuraApplication.getMachineActionManagerQml() + property var machineActionManager: CuraApplication.getMachineActionManager() Item { enabled: false; UM.I18nCatalog { id: catalog; name: "cura"} } title: catalog.i18nc("@title:tab", "Printers") @@ -63,7 +63,7 @@ UM.ManagementPage Repeater { id: machineActionRepeater - model: base.currentItem ? machineActionManager.getSupportedActions(Cura.MachineManager.getDefinitionByMachineId(base.currentItem.id)) : null + model: base.currentItem.id ? machineActionManager.getSupportedActions(Cura.MachineManager.getDefinitionByMachineId(base.currentItem.id)) : null Item { From b931029f1c6c165bf841e512281d3c770df40c55 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 2 Feb 2024 10:03:48 +0100 Subject: [PATCH 035/203] Now using ThreeMFWriter to save PCB files CURA-11561 --- plugins/{PCBWriter => 3MFWriter}/PCBDialog.py | 0 .../{PCBWriter => 3MFWriter}/PCBDialog.qml | 1 - .../{PCBWriter => 3MFWriter}/SettingExport.py | 0 .../SettingSelection.qml | 2 +- .../SettingsExportGroup.py | 0 .../SettingsExportModel.py | 0 .../SettingsSelectionGroup.qml | 8 +- plugins/3MFWriter/ThreeMFWorkspaceWriter.py | 128 ++++- plugins/3MFWriter/ThreeMFWriter.py | 59 ++- plugins/3MFWriter/__init__.py | 45 +- plugins/PCBWriter/PCBWriter.py | 460 ------------------ plugins/PCBWriter/__init__.py | 29 -- plugins/PCBWriter/plugin.json | 8 - resources/qml/Menus/FileMenu.qml | 12 + 14 files changed, 207 insertions(+), 545 deletions(-) rename plugins/{PCBWriter => 3MFWriter}/PCBDialog.py (100%) rename plugins/{PCBWriter => 3MFWriter}/PCBDialog.qml (98%) rename plugins/{PCBWriter => 3MFWriter}/SettingExport.py (100%) rename plugins/{PCBWriter => 3MFWriter}/SettingSelection.qml (93%) rename plugins/{PCBWriter => 3MFWriter}/SettingsExportGroup.py (100%) rename plugins/{PCBWriter => 3MFWriter}/SettingsExportModel.py (100%) rename plugins/{PCBWriter => 3MFWriter}/SettingsSelectionGroup.qml (88%) delete mode 100644 plugins/PCBWriter/PCBWriter.py delete mode 100644 plugins/PCBWriter/__init__.py delete mode 100644 plugins/PCBWriter/plugin.json diff --git a/plugins/PCBWriter/PCBDialog.py b/plugins/3MFWriter/PCBDialog.py similarity index 100% rename from plugins/PCBWriter/PCBDialog.py rename to plugins/3MFWriter/PCBDialog.py diff --git a/plugins/PCBWriter/PCBDialog.qml b/plugins/3MFWriter/PCBDialog.qml similarity index 98% rename from plugins/PCBWriter/PCBDialog.qml rename to plugins/3MFWriter/PCBDialog.qml index 8264e3ee96..b65520961b 100644 --- a/plugins/PCBWriter/PCBDialog.qml +++ b/plugins/3MFWriter/PCBDialog.qml @@ -8,7 +8,6 @@ import QtQuick.Window 2.2 import UM 1.5 as UM import Cura 1.1 as Cura -import PCBWriter 1.0 as PCBWriter UM.Dialog { diff --git a/plugins/PCBWriter/SettingExport.py b/plugins/3MFWriter/SettingExport.py similarity index 100% rename from plugins/PCBWriter/SettingExport.py rename to plugins/3MFWriter/SettingExport.py diff --git a/plugins/PCBWriter/SettingSelection.qml b/plugins/3MFWriter/SettingSelection.qml similarity index 93% rename from plugins/PCBWriter/SettingSelection.qml rename to plugins/3MFWriter/SettingSelection.qml index 636b67fb37..478c2d393c 100644 --- a/plugins/PCBWriter/SettingSelection.qml +++ b/plugins/3MFWriter/SettingSelection.qml @@ -32,7 +32,7 @@ RowLayout UM.I18nCatalog { id: catalog; name: "cura" } text: catalog.i18nc("@tooltip", - "This setting can't be exported because it depends too much on the used printer capacities") + "This setting can't be exported because it depends on the used printer capacities") visible: !modelData.selectable } } diff --git a/plugins/PCBWriter/SettingsExportGroup.py b/plugins/3MFWriter/SettingsExportGroup.py similarity index 100% rename from plugins/PCBWriter/SettingsExportGroup.py rename to plugins/3MFWriter/SettingsExportGroup.py diff --git a/plugins/PCBWriter/SettingsExportModel.py b/plugins/3MFWriter/SettingsExportModel.py similarity index 100% rename from plugins/PCBWriter/SettingsExportModel.py rename to plugins/3MFWriter/SettingsExportModel.py diff --git a/plugins/PCBWriter/SettingsSelectionGroup.qml b/plugins/3MFWriter/SettingsSelectionGroup.qml similarity index 88% rename from plugins/PCBWriter/SettingsSelectionGroup.qml rename to plugins/3MFWriter/SettingsSelectionGroup.qml index 39299ab7c3..e77ba692bc 100644 --- a/plugins/PCBWriter/SettingsSelectionGroup.qml +++ b/plugins/3MFWriter/SettingsSelectionGroup.qml @@ -8,7 +8,7 @@ import QtQuick.Window 2.2 import UM 1.5 as UM import Cura 1.1 as Cura -import PCBWriter 1.0 as PCBWriter +import ThreeMFWriter 1.0 as ThreeMFWriter ColumnLayout { @@ -34,9 +34,9 @@ ColumnLayout { switch(modelData.category) { - case PCBWriter.SettingsExportGroup.Global: + case ThreeMFWriter.SettingsExportGroup.Global: return UM.Theme.getIcon("Sliders") - case PCBWriter.SettingsExportGroup.Model: + case ThreeMFWriter.SettingsExportGroup.Model: return UM.Theme.getIcon("View3D") default: return "" @@ -50,7 +50,7 @@ ColumnLayout { id: settingsExtruderIcon anchors.fill: parent - visible: modelData.category === PCBWriter.SettingsExportGroup.Extruder + visible: modelData.category === ThreeMFWriter.SettingsExportGroup.Extruder text: (modelData.extruder_index + 1).toString() font: UM.Theme.getFont("tiny_emphasis") materialColor: modelData.extruder_color diff --git a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py index e89af5c70a..9715e9ac98 100644 --- a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py +++ b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py @@ -3,7 +3,9 @@ import configparser from io import StringIO +from threading import Lock import zipfile +from typing import Dict, Any from UM.Application import Application from UM.Logger import Logger @@ -13,15 +15,50 @@ from UM.Workspace.WorkspaceWriter import WorkspaceWriter from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") -from cura.Utils.Threading import call_on_qt_thread +from .PCBDialog import PCBDialog +from .ThreeMFWriter import ThreeMFWriter +from .SettingsExportModel import SettingsExportModel +from .SettingsExportGroup import SettingsExportGroup + +USER_SETTINGS_PATH = "Cura/user-settings.json" class ThreeMFWorkspaceWriter(WorkspaceWriter): def __init__(self): super().__init__() + self._main_thread_lock = Lock() + self._success = False + self._export_model = None + self._stream = None + self._nodes = None + self._mode = None + self._config_dialog = None - @call_on_qt_thread - def write(self, stream, nodes, mode=WorkspaceWriter.OutputMode.BinaryMode): + def _preWrite(self): + is_pcb = False + if hasattr(self._stream, 'name'): + # This only works with local file, but we don't want remote PCB files yet + is_pcb = self._stream.name.endswith('.pcb') + + if is_pcb: + self._config_dialog = PCBDialog() + self._config_dialog.finished.connect(self._onPCBConfigFinished) + self._config_dialog.show() + else: + self._doWrite() + + def _onPCBConfigFinished(self, accepted: bool): + if accepted: + self._export_model = self._config_dialog.getModel() + self._doWrite() + else: + self._main_thread_lock.release() + + def _doWrite(self): + self._write() + self._main_thread_lock.release() + + def _write(self): application = Application.getInstance() machine_manager = application.getMachineManager() @@ -30,24 +67,24 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): if not mesh_writer: # We need to have the 3mf mesh writer, otherwise we can't save the entire workspace self.setInformation(catalog.i18nc("@error:zip", "3MF Writer plug-in is corrupt.")) Logger.error("3MF Writer class is unavailable. Can't write workspace.") - return False + return global_stack = machine_manager.activeMachine if global_stack is None: - self.setInformation(catalog.i18nc("@error", "There is no workspace yet to write. Please add a printer first.")) + self.setInformation( + catalog.i18nc("@error", "There is no workspace yet to write. Please add a printer first.")) Logger.error("Tried to write a 3MF workspace before there was a global stack.") - return False + return # Indicate that the 3mf mesh writer should not close the archive just yet (we still need to add stuff to it). mesh_writer.setStoreArchive(True) - if not mesh_writer.write(stream, nodes, mode): + if not mesh_writer.write(self._stream, self._nodes, self._mode, self._export_model): self.setInformation(mesh_writer.getInformation()) - return False + return archive = mesh_writer.getArchive() if archive is None: # This happens if there was no mesh data to write. - archive = zipfile.ZipFile(stream, "w", compression = zipfile.ZIP_DEFLATED) - + archive = zipfile.ZipFile(self._stream, "w", compression=zipfile.ZIP_DEFLATED) try: # Add global container stack data to the archive. @@ -62,15 +99,21 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): self._writeContainerToArchive(extruder_stack, archive) for container in extruder_stack.getContainers(): self._writeContainerToArchive(container, archive) + + # Write user settings data + if self._export_model is not None: + user_settings_data = self._getUserSettings(self._export_model) + ThreeMFWriter._storeMetadataJson(user_settings_data, archive, USER_SETTINGS_PATH) except PermissionError: self.setInformation(catalog.i18nc("@error:zip", "No permission to write the workspace here.")) Logger.error("No permission to write workspace to this stream.") - return False + return # Write preferences to archive - original_preferences = Application.getInstance().getPreferences() #Copy only the preferences that we use to the workspace. + original_preferences = Application.getInstance().getPreferences() # Copy only the preferences that we use to the workspace. temp_preferences = Preferences() - for preference in {"general/visible_settings", "cura/active_mode", "cura/categories_expanded", "metadata/setting_version"}: + for preference in {"general/visible_settings", "cura/active_mode", "cura/categories_expanded", + "metadata/setting_version"}: temp_preferences.addPreference(preference, None) temp_preferences.setValue(preference, original_preferences.getValue(preference)) preferences_string = StringIO() @@ -81,7 +124,7 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): # Save Cura version version_file = zipfile.ZipInfo("Cura/version.ini") - version_config_parser = configparser.ConfigParser(interpolation = None) + version_config_parser = configparser.ConfigParser(interpolation=None) version_config_parser.add_section("versions") version_config_parser.set("versions", "cura_version", application.getVersion()) version_config_parser.set("versions", "build_type", application.getBuildType()) @@ -98,13 +141,37 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): except PermissionError: self.setInformation(catalog.i18nc("@error:zip", "No permission to write the workspace here.")) Logger.error("No permission to write workspace to this stream.") - return False + return except EnvironmentError as e: self.setInformation(catalog.i18nc("@error:zip", str(e))) - Logger.error("EnvironmentError when writing workspace to this stream: {err}".format(err = str(e))) - return False + Logger.error("EnvironmentError when writing workspace to this stream: {err}".format(err=str(e))) + return mesh_writer.setStoreArchive(False) - return True + + self._success = True + + def write(self, stream, nodes, mode=WorkspaceWriter.OutputMode.BinaryMode): + self._success = False + self._export_model = None + self._stream = stream + self._nodes = nodes + self._mode = mode + self._config_dialog = None + + self._main_thread_lock.acquire() + # Export is done in main thread because it may require a few asynchronous configuration steps + Application.getInstance().callLater(self._preWrite) + self._main_thread_lock.acquire() # Block until lock has been released, meaning the config+write is over + + self._main_thread_lock.release() + + self._export_model = None + self._stream = None + self._nodes = None + self._mode = None + self._config_dialog = None + + return self._success @staticmethod def _writePluginMetadataToArchive(archive: zipfile.ZipFile) -> None: @@ -165,4 +232,27 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): archive.writestr(file_in_archive, serialized_data) except (FileNotFoundError, EnvironmentError): Logger.error("File became inaccessible while writing to it: {archive_filename}".format(archive_filename = archive.fp.name)) - return \ No newline at end of file + return + + @staticmethod + def _getUserSettings(model: SettingsExportModel) -> Dict[str, Dict[str, Any]]: + user_settings = {} + + for group in model.settingsGroups: + category = '' + if group.category == SettingsExportGroup.Category.Global: + category = 'global' + elif group.category == SettingsExportGroup.Category.Extruder: + category = f"extruder_{group.extruder_index}" + + if len(category) > 0: + settings_values = {} + stack = group.stack + + for setting in group.settings: + if setting.selected: + settings_values[setting.id] = stack.getProperty(setting.id, "value") + + user_settings[category] = settings_values + + return user_settings \ No newline at end of file diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index ad4b0d8dad..8924ac0a61 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -40,6 +40,9 @@ except ImportError: import zipfile import UM.Application +from .SettingsExportModel import SettingsExportModel +from .SettingsExportGroup import SettingsExportGroup + from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") @@ -87,7 +90,9 @@ class ThreeMFWriter(MeshWriter): self._store_archive = store_archive @staticmethod - def _convertUMNodeToSavitarNode(um_node, transformation=Matrix()): + def _convertUMNodeToSavitarNode(um_node, + transformation = Matrix(), + exported_settings: Optional[Dict[str, Set[str]]] = None): """Convenience function that converts an Uranium SceneNode object to a SavitarSceneNode :returns: Uranium Scene node. @@ -129,13 +134,22 @@ class ThreeMFWriter(MeshWriter): if stack is not None: changed_setting_keys = stack.getTop().getAllKeys() - # Ensure that we save the extruder used for this object in a multi-extrusion setup - if stack.getProperty("machine_extruder_count", "value") > 1: - changed_setting_keys.add("extruder_nr") + if exported_settings is None: + # Ensure that we save the extruder used for this object in a multi-extrusion setup + if stack.getProperty("machine_extruder_count", "value") > 1: + changed_setting_keys.add("extruder_nr") - # Get values for all changed settings & save them. - for key in changed_setting_keys: - savitar_node.setSetting("cura:" + key, str(stack.getProperty(key, "value"))) + # Get values for all changed settings & save them. + for key in changed_setting_keys: + savitar_node.setSetting("cura:" + key, str(stack.getProperty(key, "value"))) + else: + # We want to export only the specified settings + if um_node.getName() in exported_settings: + model_exported_settings = exported_settings[um_node.getName()] + + # Get values for all exported settings & save them. + for key in model_exported_settings: + savitar_node.setSetting("cura:" + key, str(stack.getProperty(key, "value"))) # Store the metadata. for key, value in um_node.metadata.items(): @@ -145,7 +159,8 @@ class ThreeMFWriter(MeshWriter): # only save the nodes on the active build plate if child_node.callDecoration("getBuildPlateNumber") != active_build_plate_nr: continue - savitar_child_node = ThreeMFWriter._convertUMNodeToSavitarNode(child_node) + savitar_child_node = ThreeMFWriter._convertUMNodeToSavitarNode(child_node, + exported_settings = exported_settings) if savitar_child_node is not None: savitar_node.addChild(savitar_child_node) @@ -154,7 +169,7 @@ class ThreeMFWriter(MeshWriter): def getArchive(self): return self._archive - def write(self, stream, nodes, mode = MeshWriter.OutputMode.BinaryMode) -> bool: + def write(self, stream, nodes, mode = MeshWriter.OutputMode.BinaryMode, export_settings_model = None) -> bool: self._archive = None # Reset archive archive = zipfile.ZipFile(stream, "w", compression = zipfile.ZIP_DEFLATED) try: @@ -232,14 +247,19 @@ class ThreeMFWriter(MeshWriter): transformation_matrix.preMultiply(translation_matrix) root_node = UM.Application.Application.getInstance().getController().getScene().getRoot() + exported_model_settings = ThreeMFWriter._extractModelExportedSettings(export_settings_model) for node in nodes: if node == root_node: for root_child in node.getChildren(): - savitar_node = ThreeMFWriter._convertUMNodeToSavitarNode(root_child, transformation_matrix) + savitar_node = ThreeMFWriter._convertUMNodeToSavitarNode(root_child, + transformation_matrix, + exported_model_settings) if savitar_node: savitar_scene.addSceneNode(savitar_node) else: - savitar_node = self._convertUMNodeToSavitarNode(node, transformation_matrix) + savitar_node = self._convertUMNodeToSavitarNode(node, + transformation_matrix, + exported_model_settings) if savitar_node: savitar_scene.addSceneNode(savitar_node) @@ -395,3 +415,20 @@ class ThreeMFWriter(MeshWriter): parser = Savitar.ThreeMFParser() scene_string = parser.sceneToString(savitar_scene) return scene_string + + @staticmethod + def _extractModelExportedSettings(model: Optional[SettingsExportModel]) -> Dict[str, Set[str]]: + extra_settings = {} + + if model is not None: + for group in model.settingsGroups: + if group.category == SettingsExportGroup.Category.Model: + exported_model_settings = set() + + for exported_setting in group.settings: + if exported_setting.selected: + exported_model_settings.add(exported_setting.id) + + extra_settings[group.category_details] = exported_model_settings + + return extra_settings diff --git a/plugins/3MFWriter/__init__.py b/plugins/3MFWriter/__init__.py index eb8a596afe..e0d4037603 100644 --- a/plugins/3MFWriter/__init__.py +++ b/plugins/3MFWriter/__init__.py @@ -2,9 +2,12 @@ # Uranium is released under the terms of the LGPLv3 or higher. import sys +from PyQt6.QtQml import qmlRegisterType + from UM.Logger import Logger try: from . import ThreeMFWriter + from .SettingsExportGroup import SettingsExportGroup threemf_writer_was_imported = True except ImportError: Logger.log("w", "Could not import ThreeMFWriter; libSavitar may be missing") @@ -23,20 +26,36 @@ def getMetaData(): if threemf_writer_was_imported: metaData["mesh_writer"] = { - "output": [{ - "extension": "3mf", - "description": i18n_catalog.i18nc("@item:inlistbox", "3MF file"), - "mime_type": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml", - "mode": ThreeMFWriter.ThreeMFWriter.OutputMode.BinaryMode - }] + "output": [ + { + "extension": "3mf", + "description": i18n_catalog.i18nc("@item:inlistbox", "3MF file"), + "mime_type": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml", + "mode": ThreeMFWriter.ThreeMFWriter.OutputMode.BinaryMode + }, + { + "extension": "pcb", + "description": i18n_catalog.i18nc("@item:inlistbox", "PCB file"), + "mime_type": "application/x-pcb", + "mode": ThreeMFWriter.ThreeMFWriter.OutputMode.BinaryMode + } + ] } metaData["workspace_writer"] = { - "output": [{ - "extension": workspace_extension, - "description": i18n_catalog.i18nc("@item:inlistbox", "Cura Project 3MF file"), - "mime_type": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml", - "mode": ThreeMFWorkspaceWriter.ThreeMFWorkspaceWriter.OutputMode.BinaryMode - }] + "output": [ + { + "extension": workspace_extension, + "description": i18n_catalog.i18nc("@item:inlistbox", "Cura Project 3MF file"), + "mime_type": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml", + "mode": ThreeMFWorkspaceWriter.ThreeMFWorkspaceWriter.OutputMode.BinaryMode + }, + { + "extension": "pcb", + "description": i18n_catalog.i18nc("@item:inlistbox", "Pre-Configured Batch file"), + "mime_type": "application/x-pcb", + "mode": ThreeMFWorkspaceWriter.ThreeMFWorkspaceWriter.OutputMode.BinaryMode + } + ] } return metaData @@ -44,6 +63,8 @@ def getMetaData(): def register(app): if "3MFWriter.ThreeMFWriter" in sys.modules: + qmlRegisterType(SettingsExportGroup, "ThreeMFWriter", 1, 0, "SettingsExportGroup") + return {"mesh_writer": ThreeMFWriter.ThreeMFWriter(), "workspace_writer": ThreeMFWorkspaceWriter.ThreeMFWorkspaceWriter()} else: diff --git a/plugins/PCBWriter/PCBWriter.py b/plugins/PCBWriter/PCBWriter.py deleted file mode 100644 index 794eac9d4a..0000000000 --- a/plugins/PCBWriter/PCBWriter.py +++ /dev/null @@ -1,460 +0,0 @@ -# Copyright (c) 2024 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -import json -import zipfile -import datetime -import numpy -import re -from dataclasses import asdict -from typing import Optional, cast, List, Dict, Pattern, Set, Union, Mapping, Any -from threading import Lock -from io import StringIO # For converting g-code to bytes. - -import pySavitar as Savitar - -from PyQt6.QtCore import QBuffer - -from UM.Mesh.MeshWriter import MeshWriter -from UM.Logger import Logger -from UM.Scene.SceneNode import SceneNode -from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator -from UM.i18n import i18nCatalog -from UM.Settings.InstanceContainer import InstanceContainer -from UM.Settings.SettingFunction import SettingFunction -from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Math.Matrix import Matrix -from UM.Math.Vector import Vector - -from cura.CuraApplication import CuraApplication -from cura.CuraPackageManager import CuraPackageManager -from cura.Settings import CuraContainerStack -from cura.Settings.GlobalStack import GlobalStack -from cura.Utils.Threading import call_on_qt_thread -from cura.Snapshot import Snapshot - -from .PCBDialog import PCBDialog -from .SettingsExportModel import SettingsExportModel -from .SettingsExportGroup import SettingsExportGroup - -MYPY = False -try: - if not MYPY: - import xml.etree.cElementTree as ET -except ImportError: - Logger.log("w", "Unable to load cElementTree, switching to slower version") - import xml.etree.ElementTree as ET - -catalog = i18nCatalog("cura") - -THUMBNAIL_PATH = "Metadata/thumbnail.png" -MODEL_PATH = "3D/3dmodel.model" -PACKAGE_METADATA_PATH = "Cura/packages.json" -USER_SETTINGS_PATH = "Cura/user-settings.json" - -class PCBWriter(MeshWriter): - def __init__(self): - super().__init__() - self._namespaces = { - "3mf": "http://schemas.microsoft.com/3dmanufacturing/core/2015/02", - "content-types": "http://schemas.openxmlformats.org/package/2006/content-types", - "relationships": "http://schemas.openxmlformats.org/package/2006/relationships", - "cura": "http://software.ultimaker.com/xml/cura/3mf/2015/10" - } - - self._config_dialog = None - self._main_thread_lock = Lock() - self._success = False - self._export_model = None - - def write(self, stream, nodes, mode = MeshWriter.OutputMode.BinaryMode) -> bool: - self._success = False - self._export_model = None - - self._main_thread_lock.acquire() - # Start configuration window in main application thread - CuraApplication.getInstance().callLater(self._write, stream, nodes, mode) - self._main_thread_lock.acquire() # Block until lock has been released, meaning the config is over - - self._main_thread_lock.release() - - if self._export_model is not None: - archive = zipfile.ZipFile(stream, "w", compression=zipfile.ZIP_DEFLATED) - try: - model_file = zipfile.ZipInfo(MODEL_PATH) - # Because zipfile is stupid and ignores archive-level compression settings when writing with ZipInfo. - model_file.compress_type = zipfile.ZIP_DEFLATED - - # Create content types file - content_types_file = zipfile.ZipInfo("[Content_Types].xml") - content_types_file.compress_type = zipfile.ZIP_DEFLATED - content_types = ET.Element("Types", xmlns=self._namespaces["content-types"]) - rels_type = ET.SubElement(content_types, "Default", Extension="rels", - ContentType="application/vnd.openxmlformats-package.relationships+xml") - model_type = ET.SubElement(content_types, "Default", Extension="model", - ContentType="application/vnd.ms-package.3dmanufacturing-3dmodel+xml") - - # Create _rels/.rels file - relations_file = zipfile.ZipInfo("_rels/.rels") - relations_file.compress_type = zipfile.ZIP_DEFLATED - relations_element = ET.Element("Relationships", xmlns=self._namespaces["relationships"]) - model_relation_element = ET.SubElement(relations_element, "Relationship", Target="/" + MODEL_PATH, - Id="rel0", - Type="http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel") - - # Attempt to add a thumbnail - snapshot = self._createSnapshot() - if snapshot: - thumbnail_buffer = QBuffer() - thumbnail_buffer.open(QBuffer.OpenModeFlag.ReadWrite) - snapshot.save(thumbnail_buffer, "PNG") - - thumbnail_file = zipfile.ZipInfo(THUMBNAIL_PATH) - # Don't try to compress snapshot file, because the PNG is pretty much as compact as it will get - archive.writestr(thumbnail_file, thumbnail_buffer.data()) - - # Add PNG to content types file - thumbnail_type = ET.SubElement(content_types, "Default", Extension="png", ContentType="image/png") - # Add thumbnail relation to _rels/.rels file - thumbnail_relation_element = ET.SubElement(relations_element, "Relationship", - Target="/" + THUMBNAIL_PATH, Id="rel1", - Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail") - - # Write material metadata - packages_metadata = self._getMaterialPackageMetadata() + self._getPluginPackageMetadata() - self._storeMetadataJson({"packages": packages_metadata}, archive, PACKAGE_METADATA_PATH) - - # Write user settings data - user_settings_data = self._getUserSettings(self._export_model) - self._storeMetadataJson(user_settings_data, archive, USER_SETTINGS_PATH) - - savitar_scene = Savitar.Scene() - - scene_metadata = CuraApplication.getInstance().getController().getScene().getMetaData() - - for key, value in scene_metadata.items(): - savitar_scene.setMetaDataEntry(key, value) - - current_time_string = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") - if "Application" not in scene_metadata: - # This might sound a bit strange, but this field should store the original application that created - # the 3mf. So if it was already set, leave it to whatever it was. - savitar_scene.setMetaDataEntry("Application", - CuraApplication.getInstance().getApplicationDisplayName()) - if "CreationDate" not in scene_metadata: - savitar_scene.setMetaDataEntry("CreationDate", current_time_string) - - savitar_scene.setMetaDataEntry("ModificationDate", current_time_string) - - transformation_matrix = Matrix() - transformation_matrix._data[1, 1] = 0 - transformation_matrix._data[1, 2] = -1 - transformation_matrix._data[2, 1] = 1 - transformation_matrix._data[2, 2] = 0 - - global_container_stack = CuraApplication.getInstance().getGlobalContainerStack() - # Second step: 3MF defines the left corner of the machine as center, whereas cura uses the center of the - # build volume. - if global_container_stack: - translation_vector = Vector(x=global_container_stack.getProperty("machine_width", "value") / 2, - y=global_container_stack.getProperty("machine_depth", "value") / 2, - z=0) - translation_matrix = Matrix() - translation_matrix.setByTranslation(translation_vector) - transformation_matrix.preMultiply(translation_matrix) - - root_node = CuraApplication.getInstance().getController().getScene().getRoot() - exported_model_settings = PCBWriter._extractModelExportedSettings(self._export_model) - for node in nodes: - if node == root_node: - for root_child in node.getChildren(): - savitar_node = PCBWriter._convertUMNodeToSavitarNode(root_child, - transformation_matrix, - exported_model_settings) - if savitar_node: - savitar_scene.addSceneNode(savitar_node) - else: - savitar_node = self._convertUMNodeToSavitarNode(node, - transformation_matrix, - exported_model_settings) - if savitar_node: - savitar_scene.addSceneNode(savitar_node) - - parser = Savitar.ThreeMFParser() - scene_string = parser.sceneToString(savitar_scene) - - archive.writestr(model_file, scene_string) - archive.writestr(content_types_file, - b' \n' + ET.tostring(content_types)) - archive.writestr(relations_file, - b' \n' + ET.tostring(relations_element)) - except Exception as error: - Logger.logException("e", "Error writing zip file") - self.setInformation(str(error)) - return False - finally: - archive.close() - - return True - else: - return False - - def _write(self, stream, nodes, mode): - self._config_dialog = PCBDialog() - self._config_dialog.finished.connect(self._onDialogFinished) - self._config_dialog.show() - - def _onDialogFinished(self, accepted: bool): - if accepted: - self._export_model = self._config_dialog.getModel() - - self._main_thread_lock.release() - - @staticmethod - def _extractModelExportedSettings(model: SettingsExportModel) -> Mapping[str, Set[str]]: - extra_settings = {} - - for group in model.settingsGroups: - if group.category == SettingsExportGroup.Category.Model: - exported_model_settings = set() - - for exported_setting in group.settings: - if exported_setting.selected: - exported_model_settings.add(exported_setting.id) - - extra_settings[group.category_details] = exported_model_settings - - return extra_settings - - @staticmethod - def _convertUMNodeToSavitarNode(um_node, - transformation: Matrix = Matrix(), - exported_settings: Mapping[str, Set[str]] = None): - """Convenience function that converts an Uranium SceneNode object to a SavitarSceneNode - - :returns: Uranium Scene node. - """ - if not isinstance(um_node, SceneNode): - return None - - active_build_plate_nr = CuraApplication.getInstance().getMultiBuildPlateModel().activeBuildPlate - if um_node.callDecoration("getBuildPlateNumber") != active_build_plate_nr: - return - - savitar_node = Savitar.SceneNode() - savitar_node.setName(um_node.getName()) - - node_matrix = Matrix() - mesh_data = um_node.getMeshData() - # compensate for original center position, if object(s) is/are not around its zero position - if mesh_data is not None: - extents = mesh_data.getExtents() - if extents is not None: - # We use a different coordinate space while writing, so flip Z and Y - center_vector = Vector(extents.center.x, extents.center.z, extents.center.y) - node_matrix.setByTranslation(center_vector) - node_matrix.multiply(um_node.getLocalTransformation()) - - matrix_string = PCBWriter._convertMatrixToString(node_matrix.preMultiply(transformation)) - - savitar_node.setTransformation(matrix_string) - if mesh_data is not None: - savitar_node.getMeshData().setVerticesFromBytes(mesh_data.getVerticesAsByteArray()) - indices_array = mesh_data.getIndicesAsByteArray() - if indices_array is not None: - savitar_node.getMeshData().setFacesFromBytes(indices_array) - else: - savitar_node.getMeshData().setFacesFromBytes( - numpy.arange(mesh_data.getVertices().size / 3, dtype=numpy.int32).tostring()) - - # Handle per object settings (if any) - stack = um_node.callDecoration("getStack") - if stack is not None: - if um_node.getName() in exported_settings: - model_exported_settings = exported_settings[um_node.getName()] - - # Get values for all exported settings & save them. - for key in model_exported_settings: - savitar_node.setSetting("cura:" + key, str(stack.getProperty(key, "value"))) - - # Store the metadata. - for key, value in um_node.metadata.items(): - savitar_node.setSetting(key, value) - - for child_node in um_node.getChildren(): - # only save the nodes on the active build plate - if child_node.callDecoration("getBuildPlateNumber") != active_build_plate_nr: - continue - savitar_child_node = PCBWriter._convertUMNodeToSavitarNode(child_node, - exported_settings = exported_settings) - if savitar_child_node is not None: - savitar_node.addChild(savitar_child_node) - - return savitar_node - - @call_on_qt_thread # must be called from the main thread because of OpenGL - def _createSnapshot(self): - Logger.log("d", "Creating thumbnail image...") - if not CuraApplication.getInstance().isVisible: - Logger.log("w", "Can't create snapshot when renderer not initialized.") - return None - try: - snapshot = Snapshot.snapshot(width=300, height=300) - except: - Logger.logException("w", "Failed to create snapshot image") - return None - - return snapshot - - @staticmethod - def _storeMetadataJson(metadata: Union[Dict[str, List[Dict[str, str]]], Dict[str, Dict[str, Any]]], - archive: zipfile.ZipFile, path - : str) -> None: - """Stores metadata inside archive path as json file""" - metadata_file = zipfile.ZipInfo(path) - # We have to set the compress type of each file as well (it doesn't keep the type of the entire archive) - metadata_file.compress_type = zipfile.ZIP_DEFLATED - archive.writestr(metadata_file, - json.dumps(metadata, separators=(", ", ": "), indent=4, skipkeys=True, ensure_ascii=False)) - - @staticmethod - def _getUserSettings(model: SettingsExportModel) -> Dict[str, Dict[str, Any]]: - user_settings = {} - - for group in model.settingsGroups: - category = '' - if group.category == SettingsExportGroup.Category.Global: - category = 'global' - elif group.category == SettingsExportGroup.Category.Extruder: - category = f"extruder_{group.extruder_index}" - - if len(category) > 0: - settings_values = {} - stack = group.stack - - for setting in group.settings: - if setting.selected: - settings_values[setting.id] = stack.getProperty(setting.id, "value") - - user_settings[category] = settings_values - - return user_settings - - @staticmethod - def _getPluginPackageMetadata() -> List[Dict[str, str]]: - """Get metadata for all backend plugins that are used in the project. - - :return: List of material metadata dictionaries. - """ - - backend_plugin_enum_value_regex = re.compile( - r"PLUGIN::(?P\w+)@(?P\d+.\d+.\d+)::(?P\w+)") - # This regex parses enum values to find if they contain custom - # backend engine values. These custom enum values are in the format - # PLUGIN::@:: - # where - # - plugin_id is the id of the plugin - # - version is in the semver format - # - value is the value of the enum - - plugin_ids = set() - - def addPluginIdsInStack(stack: CuraContainerStack) -> None: - for key in stack.getAllKeys(): - value = str(stack.getProperty(key, "value")) - for plugin_id, _version, _value in backend_plugin_enum_value_regex.findall(value): - plugin_ids.add(plugin_id) - - # Go through all stacks and find all the plugin id contained in the project - global_stack = CuraApplication.getInstance().getMachineManager().activeMachine - addPluginIdsInStack(global_stack) - - for container in global_stack.getContainers(): - addPluginIdsInStack(container) - - for extruder_stack in global_stack.extruderList: - addPluginIdsInStack(extruder_stack) - - for container in extruder_stack.getContainers(): - addPluginIdsInStack(container) - - metadata = {} - - package_manager = cast(CuraPackageManager, CuraApplication.getInstance().getPackageManager()) - for plugin_id in plugin_ids: - package_data = package_manager.getInstalledPackageInfo(plugin_id) - - metadata[plugin_id] = { - "id": plugin_id, - "display_name": package_data.get("display_name") if package_data.get("display_name") else "", - "package_version": package_data.get("package_version") if package_data.get("package_version") else "", - "sdk_version_semver": package_data.get("sdk_version_semver") if package_data.get( - "sdk_version_semver") else "", - "type": "plugin", - } - - # Storing in a dict and fetching values to avoid duplicates - return list(metadata.values()) - - @staticmethod - def _getMaterialPackageMetadata() -> List[Dict[str, str]]: - """Get metadata for installed materials in active extruder stack, this does not include bundled materials. - - :return: List of material metadata dictionaries. - """ - metadata = {} - - package_manager = cast(CuraPackageManager, CuraApplication.getInstance().getPackageManager()) - - for extruder in CuraApplication.getInstance().getExtruderManager().getActiveExtruderStacks(): - if not extruder.isEnabled: - # Don't export materials not in use - continue - - if isinstance(extruder.material, type(ContainerRegistry.getInstance().getEmptyInstanceContainer())): - # This is an empty material container, no material to export - continue - - if package_manager.isMaterialBundled(extruder.material.getFileName(), - extruder.material.getMetaDataEntry("GUID")): - # Don't export bundled materials - continue - - package_id = package_manager.getMaterialFilePackageId(extruder.material.getFileName(), - extruder.material.getMetaDataEntry("GUID")) - package_data = package_manager.getInstalledPackageInfo(package_id) - - # We failed to find the package for this material - if not package_data: - Logger.info(f"Could not find package for material in extruder {extruder.id}, skipping.") - continue - - material_metadata = { - "id": package_id, - "display_name": package_data.get("display_name") if package_data.get("display_name") else "", - "package_version": package_data.get("package_version") if package_data.get("package_version") else "", - "sdk_version_semver": package_data.get("sdk_version_semver") if package_data.get( - "sdk_version_semver") else "", - "type": "material", - } - - metadata[package_id] = material_metadata - - # Storing in a dict and fetching values to avoid duplicates - return list(metadata.values()) - - @staticmethod - def _convertMatrixToString(matrix): - result = "" - result += str(matrix._data[0, 0]) + " " - result += str(matrix._data[1, 0]) + " " - result += str(matrix._data[2, 0]) + " " - result += str(matrix._data[0, 1]) + " " - result += str(matrix._data[1, 1]) + " " - result += str(matrix._data[2, 1]) + " " - result += str(matrix._data[0, 2]) + " " - result += str(matrix._data[1, 2]) + " " - result += str(matrix._data[2, 2]) + " " - result += str(matrix._data[0, 3]) + " " - result += str(matrix._data[1, 3]) + " " - result += str(matrix._data[2, 3]) - return result \ No newline at end of file diff --git a/plugins/PCBWriter/__init__.py b/plugins/PCBWriter/__init__.py deleted file mode 100644 index da4205a7d7..0000000000 --- a/plugins/PCBWriter/__init__.py +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright (c) 2024 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -import sys - -from PyQt6.QtQml import qmlRegisterType - -from UM.i18n import i18nCatalog - -from . import PCBWriter -from .SettingsExportModel import SettingsExportModel -from .SettingsExportGroup import SettingsExportGroup - -i18n_catalog = i18nCatalog("cura") - -def getMetaData(): - return {"mesh_writer": { - "output": [{ - "extension": "pcb", - "description": i18n_catalog.i18nc("@item:inlistbox", "Pre-Configured Batch file"), - "mime_type": "application/x-pcb", - "mode": PCBWriter.PCBWriter.OutputMode.BinaryMode - }] - }} - -def register(app): - qmlRegisterType(SettingsExportModel, "PCBWriter", 1, 0, "SettingsExportModel") - qmlRegisterType(SettingsExportGroup, "PCBWriter", 1, 0, "SettingsExportGroup") - - return {"mesh_writer": PCBWriter.PCBWriter() } diff --git a/plugins/PCBWriter/plugin.json b/plugins/PCBWriter/plugin.json deleted file mode 100644 index 6571185779..0000000000 --- a/plugins/PCBWriter/plugin.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "Pre-Configured Batch Writer", - "author": "Ultimaker B.V.", - "version": "1.0.0", - "description": "Provides support for writing Pre-Configured Batch files.", - "api": 8, - "i18n-catalog": "cura" -} diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml index 254c0d5468..850c0d7e73 100644 --- a/resources/qml/Menus/FileMenu.qml +++ b/resources/qml/Menus/FileMenu.qml @@ -70,6 +70,18 @@ Cura.Menu enabled: UM.WorkspaceFileHandler.enabled } + Cura.MenuItem + { + id: savePCBMenu + text: catalog.i18nc("@title:menu menubar:file", "&Save PCB Project...") + enabled: UM.WorkspaceFileHandler.enabled + onTriggered: + { + var args = { "filter_by_machine": false, "file_type": "workspace", "preferred_mimetypes": "application/x-pcb" }; + UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args) + } + } + Cura.MenuSeparator { } UM.MeshWritersModel { id: meshWritersModel } From c6e56202954ef1b7752306a9aac41805920b2428 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 2 Feb 2024 10:07:11 +0100 Subject: [PATCH 036/203] Revert "Add export sub-menu" This reverts commit 54af5bca3c5e9b5700ce106f854f97e3ed102842. --- resources/qml/Menus/ExportMenu.qml | 44 ------------------------------ resources/qml/Menus/FileMenu.qml | 26 +++++++++--------- 2 files changed, 13 insertions(+), 57 deletions(-) delete mode 100644 resources/qml/Menus/ExportMenu.qml diff --git a/resources/qml/Menus/ExportMenu.qml b/resources/qml/Menus/ExportMenu.qml deleted file mode 100644 index 5c08b04f0f..0000000000 --- a/resources/qml/Menus/ExportMenu.qml +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) 2024 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 2.1 - -import UM 1.5 as UM -import Cura 1.1 as Cura - -import "../Dialogs" - -Cura.Menu -{ - id: exportMenu - property alias model: meshWriters.model - property bool selectionOnly: false - - Instantiator - { - id: meshWriters - Cura.MenuItem - { - text: model.description - onTriggered: - { - var localDeviceId = "local_file" - var file_name = PrintInformation.jobName - var args = { "filter_by_machine": false, "limit_mimetypes": [model.mime_type], "limit_modes": [model.mode]} - if(exportMenu.selectionOnly) - { - UM.OutputDeviceManager.requestWriteSelectionToDevice(localDeviceId, file_name, args) - } - else - { - UM.OutputDeviceManager.requestWriteToDevice(localDeviceId, file_name, args) - } - } - shortcut: model.shortcut - enabled: exportMenu.shouldBeVisible - } - onObjectAdded: function(index, object) { exportMenu.insertItem(index, object)} - onObjectRemoved: function(index, object) { exportMenu.removeItem(object)} - } -} diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml index 850c0d7e73..36a2820087 100644 --- a/resources/qml/Menus/FileMenu.qml +++ b/resources/qml/Menus/FileMenu.qml @@ -4,7 +4,7 @@ import QtQuick 2.2 import QtQuick.Controls 2.1 -import UM 1.7 as UM +import UM 1.6 as UM import Cura 1.0 as Cura Cura.Menu @@ -84,24 +84,24 @@ Cura.Menu Cura.MenuSeparator { } - UM.MeshWritersModel { id: meshWritersModel } - - ExportMenu + Cura.MenuItem { - id: exportMenu - title: catalog.i18nc("@title:menu menubar:file", "&Export...") - model: meshWritersModel - shouldBeVisible: model.count > 0 + id: saveAsMenu + text: catalog.i18nc("@title:menu menubar:file", "&Export...") + onTriggered: + { + var localDeviceId = "local_file" + UM.OutputDeviceManager.requestWriteToDevice(localDeviceId, PrintInformation.jobName, { "filter_by_machine": false, "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"}) + } } - ExportMenu + Cura.MenuItem { id: exportSelectionMenu - title: catalog.i18nc("@action:inmenu menubar:file", "Export Selection...") - model: meshWritersModel - shouldBeVisible: model.count > 0 + text: catalog.i18nc("@action:inmenu menubar:file", "Export Selection...") enabled: UM.Selection.hasSelection - selectionOnly: true + icon.name: "document-save-as" + onTriggered: UM.OutputDeviceManager.requestWriteSelectionToDevice("local_file", PrintInformation.jobName, { "filter_by_machine": false, "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"}) } Cura.MenuSeparator { } From 733ef4d3d827e11bdcaefe484f17e066f1b0ce89 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 2 Feb 2024 12:17:34 +0100 Subject: [PATCH 037/203] UI now displays an option to select the same profile CURA-11561 --- plugins/3MFReader/ThreeMFReader.py | 9 ++++++- plugins/3MFReader/ThreeMFWorkspaceReader.py | 10 +++++--- plugins/3MFReader/WorkspaceDialog.py | 26 +++++++++++++++++++++ plugins/3MFReader/WorkspaceDialog.qml | 9 +++++++ plugins/3MFReader/__init__.py | 8 +++++++ plugins/3MFReader/plugin.json | 2 +- plugins/3MFWriter/plugin.json | 2 +- resources/qml/Menus/FileMenu.qml | 5 +++- 8 files changed, 64 insertions(+), 7 deletions(-) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 13a97d5a89..9f4a4b197b 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -46,8 +46,15 @@ class ThreeMFReader(MeshReader): suffixes=["3mf"] ) ) + MimeTypeDatabase.addMimeType( + MimeType( + name="application/x-pcb", + comment="PCB", + suffixes=["pcb"] + ) + ) - self._supported_extensions = [".3mf"] + self._supported_extensions = [".3mf", ".pcb"] self._root = None self._base_name = "" self._unit = None diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index b97cb34b01..76cd1f386b 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -112,7 +112,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): def __init__(self) -> None: super().__init__() - self._supported_extensions = [".3mf"] + self._supported_extensions = [".3mf", ".pcb"] self._dialog = WorkspaceDialog() self._3mf_mesh_reader = None self._container_registry = ContainerRegistry.getInstance() @@ -228,11 +228,14 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._resolve_strategies = {k: None for k in resolve_strategy_keys} containers_found_dict = {k: False for k in resolve_strategy_keys} + # Check whether the file is a PCB + is_pcb = file_name.endswith('.pcb') + # # Read definition containers # machine_definition_id = None - updatable_machines = [] + updatable_machines = None if is_pcb else [] machine_definition_container_count = 0 extruder_definition_container_count = 0 definition_container_files = [name for name in cura_file_names if name.endswith(self._definition_container_suffix)] @@ -250,7 +253,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if definition_container_type == "machine": machine_definition_id = container_id machine_definition_containers = self._container_registry.findDefinitionContainers(id = machine_definition_id) - if machine_definition_containers: + if machine_definition_containers and updatable_machines is not None: updatable_machines = [machine for machine in self._container_registry.findContainerStacks(type = "machine") if machine.definition == machine_definition_containers[0]] machine_type = definition_container["name"] variant_type_name = definition_container.get("variants_name", variant_type_name) @@ -617,6 +620,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._dialog.setVariantType(variant_type_name) self._dialog.setHasObjectsOnPlate(Application.getInstance().platformActivity) self._dialog.setMissingPackagesMetadata(missing_package_metadata) + self._dialog.setHasVisibleSelectSameProfileChanged(is_pcb) self._dialog.show() # Choosing the initially selected printer in MachineSelector diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 0203fc92b5..c5b624d35d 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -71,6 +71,8 @@ class WorkspaceDialog(QObject): self._install_missing_package_dialog: Optional[QObject] = None self._is_abstract_machine = False self._is_networked_machine = False + self._is_compatible_machine = False + self._has_visible_select_same_profile = False machineConflictChanged = pyqtSignal() qualityChangesConflictChanged = pyqtSignal() @@ -94,6 +96,8 @@ class WorkspaceDialog(QObject): extrudersChanged = pyqtSignal() isPrinterGroupChanged = pyqtSignal() missingPackagesChanged = pyqtSignal() + isCompatibleMachineChanged = pyqtSignal() + hasVisibleSelectSameProfileChanged = pyqtSignal() @pyqtProperty(bool, notify = isPrinterGroupChanged) def isPrinterGroup(self) -> bool: @@ -291,8 +295,30 @@ class WorkspaceDialog(QObject): @pyqtSlot(str) def setMachineToOverride(self, machine_name: str) -> None: + registry = ContainerRegistry.getInstance() + containers_expected = registry.findDefinitionContainers(name = self._machine_type) + containers_selected = registry.findContainerStacks(id = machine_name) + if len(containers_expected) == 1 and len(containers_selected) == 1: + new_compatible_machine = (containers_expected[0] == containers_selected[0].definition) + if new_compatible_machine != self._is_compatible_machine: + self._is_compatible_machine = new_compatible_machine + self.isCompatibleMachineChanged.emit() + self._override_machine = machine_name + @pyqtProperty(bool, notify = isCompatibleMachineChanged) + def isCompatibleMachine(self) -> bool: + return self._is_compatible_machine + + def setHasVisibleSelectSameProfileChanged(self, has_visible_select_same_profile): + if has_visible_select_same_profile != self._has_visible_select_same_profile: + self._has_visible_select_same_profile = has_visible_select_same_profile + self.hasVisibleSelectSameProfileChanged.emit() + + @pyqtProperty(bool, notify = hasVisibleSelectSameProfileChanged) + def hasVisibleSelectSameProfile(self): + return self._has_visible_select_same_profile + @pyqtSlot() def closeBackend(self) -> None: """Close the backend: otherwise one could end up with "Slicing...""" diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index d5f9b1817d..45fe7b6989 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -186,6 +186,15 @@ UM.Dialog rightLabelText: catalog.i18ncp("@action:label", "%1, %2 override", "%1, %2 overrides", manager.numSettingsOverridenByQualityChanges).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges) visible: manager.numSettingsOverridenByQualityChanges != 0 } + + UM.CheckBox + { + text: catalog.i18nc("@action:checkbox", "Select the same profile") + enabled: manager.isCompatibleMachine + onEnabledChanged: checked = enabled + tooltip: enabled ? "" : catalog.i18nc("@tooltip", "You can use the same profile only if you have the same printer as the project was published with") + visible: manager.hasVisibleSelectSameProfile + } } comboboxVisible: manager.qualityChangesConflict diff --git a/plugins/3MFReader/__init__.py b/plugins/3MFReader/__init__.py index 5e2b68fce0..a07420d2c6 100644 --- a/plugins/3MFReader/__init__.py +++ b/plugins/3MFReader/__init__.py @@ -25,12 +25,20 @@ def getMetaData() -> Dict: { "extension": "3mf", "description": catalog.i18nc("@item:inlistbox", "3MF File") + }, + { + "extension": "pcb", + "description": catalog.i18nc("@item:inlistbox", "PCB File") } ] metaData["workspace_reader"] = [ { "extension": workspace_extension, "description": catalog.i18nc("@item:inlistbox", "3MF File") + }, + { + "extension": "pcb", + "description": catalog.i18nc("@item:inlistbox", "PCB File") } ] diff --git a/plugins/3MFReader/plugin.json b/plugins/3MFReader/plugin.json index bf0bc05364..1611c956d3 100644 --- a/plugins/3MFReader/plugin.json +++ b/plugins/3MFReader/plugin.json @@ -2,7 +2,7 @@ "name": "3MF Reader", "author": "Ultimaker B.V.", "version": "1.0.1", - "description": "Provides support for reading 3MF files.", + "description": "Provides support for reading 3MF and PCB files.", "api": 8, "i18n-catalog": "cura" } diff --git a/plugins/3MFWriter/plugin.json b/plugins/3MFWriter/plugin.json index b59d4ef8e1..be6d50267c 100644 --- a/plugins/3MFWriter/plugin.json +++ b/plugins/3MFWriter/plugin.json @@ -2,7 +2,7 @@ "name": "3MF Writer", "author": "Ultimaker B.V.", "version": "1.0.1", - "description": "Provides support for writing 3MF files.", + "description": "Provides support for writing 3MF and PCB files.", "api": 8, "i18n-catalog": "cura" } diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml index 36a2820087..a6fb339faf 100644 --- a/resources/qml/Menus/FileMenu.qml +++ b/resources/qml/Menus/FileMenu.qml @@ -77,7 +77,10 @@ Cura.Menu enabled: UM.WorkspaceFileHandler.enabled onTriggered: { - var args = { "filter_by_machine": false, "file_type": "workspace", "preferred_mimetypes": "application/x-pcb" }; + var args = { "filter_by_machine": false, + "file_type": "workspace", + "preferred_mimetypes": "application/x-pcb", + "limit_mimetypes": "application/x-pcb"}; UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args) } } From ab0a52063d0d0f327b7b7c4ccbc28d35dd61feb1 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 2 Feb 2024 16:05:36 +0100 Subject: [PATCH 038/203] Now loading user settings CURA-11561 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 222 ++++++++++++-------- plugins/3MFReader/WorkspaceDialog.py | 29 ++- plugins/3MFReader/WorkspaceDialog.qml | 15 +- plugins/3MFWriter/SettingsExportModel.py | 2 +- 4 files changed, 178 insertions(+), 90 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 76cd1f386b..3398b2e7d5 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -5,6 +5,7 @@ from configparser import ConfigParser import zipfile import os import json +import re from typing import cast, Dict, List, Optional, Tuple, Any, Set import xml.etree.ElementTree as ET @@ -141,10 +142,13 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._old_new_materials: Dict[str, str] = {} self._machine_info = None + self._load_profile = False + def _clearState(self): self._id_mapping = {} self._old_new_materials = {} self._machine_info = None + self._load_profile = False def getNewId(self, old_id: str): """Get a unique name based on the old_id. This is different from directly calling the registry in that it caches results. @@ -228,7 +232,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._resolve_strategies = {k: None for k in resolve_strategy_keys} containers_found_dict = {k: False for k in resolve_strategy_keys} - # Check whether the file is a PCB + # Check whether the file is a PCB, which changes some import options is_pcb = file_name.endswith('.pcb') # @@ -621,6 +625,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._dialog.setHasObjectsOnPlate(Application.getInstance().platformActivity) self._dialog.setMissingPackagesMetadata(missing_package_metadata) self._dialog.setHasVisibleSelectSameProfileChanged(is_pcb) + self._dialog.setAllowCreatemachine(not is_pcb) self._dialog.show() # Choosing the initially selected printer in MachineSelector @@ -652,6 +657,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._dialog.setIsNetworkedMachine(is_networked_machine) self._dialog.setIsAbstractMachine(is_abstract_machine) self._dialog.setMachineName(machine_name) + self._dialog.updateCompatibleMachine() + self._dialog.setSelectSameProfileChecked(self._dialog.isCompatibleMachine) # Block until the dialog is closed. self._dialog.waitForClose() @@ -659,6 +666,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if self._dialog.getResult() == {}: return WorkspaceReader.PreReadResult.cancelled + self._load_profile = not is_pcb or self._dialog.selectSameProfileChecked + self._resolve_strategies = self._dialog.getResult() # # There can be 3 resolve strategies coming from the dialog: @@ -694,16 +703,16 @@ class ThreeMFWorkspaceReader(WorkspaceReader): except EnvironmentError as e: message = Message(i18n_catalog.i18nc("@info:error Don't translate the XML tags or !", "Project file {0} is suddenly inaccessible: {1}.", file_name, str(e)), - title = i18n_catalog.i18nc("@info:title", "Can't Open Project File"), - message_type = Message.MessageType.ERROR) + title = i18n_catalog.i18nc("@info:title", "Can't Open Project File"), + message_type = Message.MessageType.ERROR) message.show() self.setWorkspaceName("") return [], {} except zipfile.BadZipFile as e: message = Message(i18n_catalog.i18nc("@info:error Don't translate the XML tags or !", "Project file {0} is corrupt: {1}.", file_name, str(e)), - title = i18n_catalog.i18nc("@info:title", "Can't Open Project File"), - message_type = Message.MessageType.ERROR) + title = i18n_catalog.i18nc("@info:title", "Can't Open Project File"), + message_type = Message.MessageType.ERROR) message.show() self.setWorkspaceName("") return [], {} @@ -765,9 +774,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Find the machine which will be overridden global_stacks = self._container_registry.findContainerStacks(id = self._dialog.getMachineToOverride(), type = "machine") if not global_stacks: - message = Message(i18n_catalog.i18nc("@info:error Don't translate the XML tag !", + message = Message(i18n_catalog.i18nc("@info:error Don't translate the XML tag !", "Project file {0} is made using profiles that are unknown to this version of UltiMaker Cura.", file_name), - message_type = Message.MessageType.ERROR) + message_type = Message.MessageType.ERROR) message.show() self.setWorkspaceName("") return [], {} @@ -781,84 +790,107 @@ class ThreeMFWorkspaceReader(WorkspaceReader): for stack in extruder_stacks: stack.setNextStack(global_stack, connect_signals = False) - Logger.log("d", "Workspace loading is checking definitions...") - # Get all the definition files & check if they exist. If not, add them. - definition_container_files = [name for name in cura_file_names if name.endswith(self._definition_container_suffix)] - for definition_container_file in definition_container_files: - container_id = self._stripFileToId(definition_container_file) + user_settings = {} - definitions = self._container_registry.findDefinitionContainersMetadata(id = container_id) - if not definitions: - definition_container = DefinitionContainer(container_id) - try: - definition_container.deserialize(archive.open(definition_container_file).read().decode("utf-8"), - file_name = definition_container_file) - except ContainerFormatError: - # We cannot just skip the definition file because everything else later will just break if the - # machine definition cannot be found. - Logger.logException("e", "Failed to deserialize definition file %s in project file %s", - definition_container_file, file_name) - definition_container = self._container_registry.findDefinitionContainers(id = "fdmprinter")[0] #Fall back to defaults. - self._container_registry.addContainer(definition_container) - Job.yieldThread() - QCoreApplication.processEvents() # Ensure that the GUI does not freeze. + if self._load_profile: + Logger.log("d", "Workspace loading is checking definitions...") + # Get all the definition files & check if they exist. If not, add them. + definition_container_files = [name for name in cura_file_names if name.endswith(self._definition_container_suffix)] + for definition_container_file in definition_container_files: + container_id = self._stripFileToId(definition_container_file) - Logger.log("d", "Workspace loading is checking materials...") - # Get all the material files and check if they exist. If not, add them. - xml_material_profile = self._getXmlProfileClass() - if self._material_container_suffix is None: - self._material_container_suffix = ContainerRegistry.getMimeTypeForContainer(xml_material_profile).suffixes[0] - if xml_material_profile: - material_container_files = [name for name in cura_file_names if name.endswith(self._material_container_suffix)] - for material_container_file in material_container_files: - to_deserialize_material = False - container_id = self._stripFileToId(material_container_file) - need_new_name = False - materials = self._container_registry.findInstanceContainers(id = container_id) - - if not materials: - # No material found, deserialize this material later and add it - to_deserialize_material = True - else: - material_container = materials[0] - old_material_root_id = material_container.getMetaDataEntry("base_file") - if old_material_root_id is not None and not self._container_registry.isReadOnly(old_material_root_id): # Only create new materials if they are not read only. - to_deserialize_material = True - - if self._resolve_strategies["material"] == "override": - # Remove the old materials and then deserialize the one from the project - root_material_id = material_container.getMetaDataEntry("base_file") - application.getContainerRegistry().removeContainer(root_material_id) - elif self._resolve_strategies["material"] == "new": - # Note that we *must* deserialize it with a new ID, as multiple containers will be - # auto created & added. - container_id = self.getNewId(container_id) - self._old_new_materials[old_material_root_id] = container_id - need_new_name = True - - if to_deserialize_material: - material_container = xml_material_profile(container_id) + definitions = self._container_registry.findDefinitionContainersMetadata(id = container_id) + if not definitions: + definition_container = DefinitionContainer(container_id) try: - material_container.deserialize(archive.open(material_container_file).read().decode("utf-8"), - file_name = container_id + "." + self._material_container_suffix) + definition_container.deserialize(archive.open(definition_container_file).read().decode("utf-8"), + file_name = definition_container_file) except ContainerFormatError: - Logger.logException("e", "Failed to deserialize material file %s in project file %s", - material_container_file, file_name) - continue - if need_new_name: - new_name = ContainerRegistry.getInstance().uniqueName(material_container.getName()) - material_container.setName(new_name) - material_container.setDirty(True) - self._container_registry.addContainer(material_container) + # We cannot just skip the definition file because everything else later will just break if the + # machine definition cannot be found. + Logger.logException("e", "Failed to deserialize definition file %s in project file %s", + definition_container_file, file_name) + definition_container = self._container_registry.findDefinitionContainers(id = "fdmprinter")[0] #Fall back to defaults. + self._container_registry.addContainer(definition_container) Job.yieldThread() QCoreApplication.processEvents() # Ensure that the GUI does not freeze. - if global_stack: - # Handle quality changes if any - self._processQualityChanges(global_stack) + Logger.log("d", "Workspace loading is checking materials...") + # Get all the material files and check if they exist. If not, add them. + xml_material_profile = self._getXmlProfileClass() + if self._material_container_suffix is None: + self._material_container_suffix = ContainerRegistry.getMimeTypeForContainer(xml_material_profile).suffixes[0] + if xml_material_profile: + material_container_files = [name for name in cura_file_names if name.endswith(self._material_container_suffix)] + for material_container_file in material_container_files: + to_deserialize_material = False + container_id = self._stripFileToId(material_container_file) + need_new_name = False + materials = self._container_registry.findInstanceContainers(id = container_id) - # Prepare the machine - self._applyChangesToMachine(global_stack, extruder_stack_dict) + if not materials: + # No material found, deserialize this material later and add it + to_deserialize_material = True + else: + material_container = materials[0] + old_material_root_id = material_container.getMetaDataEntry("base_file") + if old_material_root_id is not None and not self._container_registry.isReadOnly(old_material_root_id): # Only create new materials if they are not read only. + to_deserialize_material = True + + if self._resolve_strategies["material"] == "override": + # Remove the old materials and then deserialize the one from the project + root_material_id = material_container.getMetaDataEntry("base_file") + application.getContainerRegistry().removeContainer(root_material_id) + elif self._resolve_strategies["material"] == "new": + # Note that we *must* deserialize it with a new ID, as multiple containers will be + # auto created & added. + container_id = self.getNewId(container_id) + self._old_new_materials[old_material_root_id] = container_id + need_new_name = True + + if to_deserialize_material: + material_container = xml_material_profile(container_id) + try: + material_container.deserialize(archive.open(material_container_file).read().decode("utf-8"), + file_name = container_id + "." + self._material_container_suffix) + except ContainerFormatError: + Logger.logException("e", "Failed to deserialize material file %s in project file %s", + material_container_file, file_name) + continue + if need_new_name: + new_name = ContainerRegistry.getInstance().uniqueName(material_container.getName()) + material_container.setName(new_name) + material_container.setDirty(True) + self._container_registry.addContainer(material_container) + Job.yieldThread() + QCoreApplication.processEvents() # Ensure that the GUI does not freeze. + else: + Logger.log("d", "Workspace loading user settings...") + try: + user_settings = json.loads(archive.open("Cura/user-settings.json").read().decode("utf-8")) + except KeyError as e: + # If there is no user settings file, it's not a PCB, so notify user of failure. + Logger.log("w", "File %s is not a valid PCB.", file_name) + message = Message( + i18n_catalog.i18nc("@info:error Don't translate the XML tags or !", + "Project file {0} is corrupt: {1}.", + file_name, str(e)), + title=i18n_catalog.i18nc("@info:title", "Can't Open Project File"), + message_type=Message.MessageType.ERROR) + message.show() + self.setWorkspaceName("") + return [], {} + + + if global_stack: + if self._load_profile: + # Handle quality changes if any + self._processQualityChanges(global_stack) + + # Prepare the machine + self._applyChangesToMachine(global_stack, extruder_stack_dict) + else: + self._applyUserSettings(global_stack, extruder_stack_dict, user_settings) Logger.log("d", "Workspace loading is notifying rest of the code of changes...") # Actually change the active machine. @@ -1181,21 +1213,47 @@ class ThreeMFWorkspaceReader(WorkspaceReader): material_node = machine_node.variants[extruder_stack.variant.getName()].materials[root_material_id] extruder_stack.material = material_node.container - def _applyChangesToMachine(self, global_stack, extruder_stack_dict): - # Clear all first + def _clearMachineSettings(self, global_stack, extruder_stack_dict): self._clearStack(global_stack) for extruder_stack in extruder_stack_dict.values(): self._clearStack(extruder_stack) + self._quality_changes_to_apply = None + self._quality_type_to_apply = None + self._intent_category_to_apply = None + self._user_settings_to_apply = None + + def _applyUserSettings(self, global_stack, extruder_stack_dict, user_settings): + # Clear all first + self._clearMachineSettings(global_stack, extruder_stack_dict) + + for stack_name, settings in user_settings.items(): + if stack_name == 'global': + ThreeMFWorkspaceReader._applyUserSettingsOnStack(global_stack, settings) + else: + extruder_match = re.fullmatch('extruder_([0-9]+)', stack_name) + if extruder_match is not None: + extruder_nr = extruder_match.group(1) + if extruder_nr in extruder_stack_dict: + ThreeMFWorkspaceReader._applyUserSettingsOnStack(extruder_stack_dict[extruder_nr], settings) + + @staticmethod + def _applyUserSettingsOnStack(stack, user_settings): + user_settings_container = stack.userChanges + + for setting_to_import, setting_value in user_settings.items(): + user_settings_container.setProperty(setting_to_import, 'value', setting_value) + + def _applyChangesToMachine(self, global_stack, extruder_stack_dict): + # Clear all first + self._clearMachineSettings(global_stack, extruder_stack_dict) + self._applyDefinitionChanges(global_stack, extruder_stack_dict) self._applyUserChanges(global_stack, extruder_stack_dict) self._applyVariants(global_stack, extruder_stack_dict) self._applyMaterials(global_stack, extruder_stack_dict) # prepare the quality to select - self._quality_changes_to_apply = None - self._quality_type_to_apply = None - self._intent_category_to_apply = None if self._machine_info.quality_changes_info is not None: self._quality_changes_to_apply = self._machine_info.quality_changes_info.name else: diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index c5b624d35d..c0006e21a8 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -73,6 +73,8 @@ class WorkspaceDialog(QObject): self._is_networked_machine = False self._is_compatible_machine = False self._has_visible_select_same_profile = False + self._select_same_profile_checked = True + self._allow_create_machine = True machineConflictChanged = pyqtSignal() qualityChangesConflictChanged = pyqtSignal() @@ -98,6 +100,7 @@ class WorkspaceDialog(QObject): missingPackagesChanged = pyqtSignal() isCompatibleMachineChanged = pyqtSignal() hasVisibleSelectSameProfileChanged = pyqtSignal() + selectSameProfileCheckedChanged = pyqtSignal() @pyqtProperty(bool, notify = isPrinterGroupChanged) def isPrinterGroup(self) -> bool: @@ -295,17 +298,19 @@ class WorkspaceDialog(QObject): @pyqtSlot(str) def setMachineToOverride(self, machine_name: str) -> None: + self._override_machine = machine_name + self.updateCompatibleMachine() + + def updateCompatibleMachine(self): registry = ContainerRegistry.getInstance() - containers_expected = registry.findDefinitionContainers(name = self._machine_type) - containers_selected = registry.findContainerStacks(id = machine_name) + containers_expected = registry.findDefinitionContainers(name=self._machine_type) + containers_selected = registry.findContainerStacks(id=self._override_machine) if len(containers_expected) == 1 and len(containers_selected) == 1: new_compatible_machine = (containers_expected[0] == containers_selected[0].definition) if new_compatible_machine != self._is_compatible_machine: self._is_compatible_machine = new_compatible_machine self.isCompatibleMachineChanged.emit() - self._override_machine = machine_name - @pyqtProperty(bool, notify = isCompatibleMachineChanged) def isCompatibleMachine(self) -> bool: return self._is_compatible_machine @@ -319,6 +324,22 @@ class WorkspaceDialog(QObject): def hasVisibleSelectSameProfile(self): return self._has_visible_select_same_profile + def setSelectSameProfileChecked(self, select_same_profile_checked): + if select_same_profile_checked != self._select_same_profile_checked: + self._select_same_profile_checked = select_same_profile_checked + self.selectSameProfileCheckedChanged.emit() + + @pyqtProperty(bool, notify = selectSameProfileCheckedChanged, fset = setSelectSameProfileChecked) + def selectSameProfileChecked(self): + return self._select_same_profile_checked + + def setAllowCreatemachine(self, allow_create_machine): + self._allow_create_machine = allow_create_machine + + @pyqtProperty(bool, constant = True) + def allowCreateMachine(self): + return self._allow_create_machine + @pyqtSlot() def closeBackend(self) -> None: """Close the backend: otherwise one could end up with "Slicing...""" diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 45fe7b6989..c7074ce220 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -120,13 +120,17 @@ UM.Dialog minDropDownWidth: machineSelector.width - buttons: [ + Component + { + id: componentNewPrinter + Cura.SecondaryButton { id: createNewPrinter text: catalog.i18nc("@button", "Create new") fixedWidthMode: true width: parent.width - leftPadding * 1.5 + visible: manager.allowCreateMachine onClicked: { toggleContent() @@ -136,7 +140,9 @@ UM.Dialog manager.setIsNetworkedMachine(false) } } - ] + } + + buttons: manager.allowCreateMachine ? [componentNewPrinter.createObject()] : [] onSelectPrinter: function(machine) { @@ -191,9 +197,12 @@ UM.Dialog { text: catalog.i18nc("@action:checkbox", "Select the same profile") enabled: manager.isCompatibleMachine - onEnabledChanged: checked = enabled + onEnabledChanged: manager.selectSameProfileChecked = enabled tooltip: enabled ? "" : catalog.i18nc("@tooltip", "You can use the same profile only if you have the same printer as the project was published with") visible: manager.hasVisibleSelectSameProfile + + checked: manager.selectSameProfileChecked + onCheckedChanged: manager.selectSameProfileChecked = checked } } diff --git a/plugins/3MFWriter/SettingsExportModel.py b/plugins/3MFWriter/SettingsExportModel.py index a4acaf02f7..0c34278067 100644 --- a/plugins/3MFWriter/SettingsExportModel.py +++ b/plugins/3MFWriter/SettingsExportModel.py @@ -105,7 +105,7 @@ class SettingsExportModel(QObject): @staticmethod def _exportSettings(settings_stack): - user_settings_container = settings_stack.getTop() + user_settings_container = settings_stack.userChanges user_keys = user_settings_container.getAllKeys() settings_export = [] From 2d79479a26d25d81ff523e34c346004f969fb12a Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 2 Feb 2024 16:17:27 +0100 Subject: [PATCH 039/203] Avoid displaying the discard changed dialog CURA-11561 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 3398b2e7d5..57bf4be5bb 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -890,7 +890,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Prepare the machine self._applyChangesToMachine(global_stack, extruder_stack_dict) else: - self._applyUserSettings(global_stack, extruder_stack_dict, user_settings) + # Just clear the settings now, so that we can change the active machine without conflicts + self._clearMachineSettings(global_stack, extruder_stack_dict) Logger.log("d", "Workspace loading is notifying rest of the code of changes...") # Actually change the active machine. @@ -902,6 +903,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # To solve this, we schedule _updateActiveMachine() for later so it will have the latest data. self._updateActiveMachine(global_stack) + if not self._load_profile: + # Now we have switched, apply the user settings + self._applyUserSettings(global_stack, extruder_stack_dict, user_settings) + # Load all the nodes / mesh data of the workspace nodes = self._3mf_mesh_reader.read(file_name) if nodes is None: @@ -1224,9 +1229,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._user_settings_to_apply = None def _applyUserSettings(self, global_stack, extruder_stack_dict, user_settings): - # Clear all first - self._clearMachineSettings(global_stack, extruder_stack_dict) - for stack_name, settings in user_settings.items(): if stack_name == 'global': ThreeMFWorkspaceReader._applyUserSettingsOnStack(global_stack, settings) From 8a0914c981ad6d3df1a8bcd963b75521f1bcede9 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Fri, 2 Feb 2024 16:38:02 +0100 Subject: [PATCH 040/203] Adding more paths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🥲 CURA-11483 --- cura/CuraApplication.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index ddc080d748..827f0d8598 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -373,11 +373,16 @@ class CuraApplication(QtApplication): Resources.addExpectedDirNameInData(dir_name) app_root = os.path.abspath(os.path.join(os.path.dirname(sys.executable))) + Resources.addSecureSearchPath(os.path.join(app_root, "share", "cura", "resources")) Resources.addSecureSearchPath(os.path.join(app_root, "Resources", "share", "cura", "resources")) + Resources.addSecureSearchPath(os.path.join(app_root, "..", "Resources", "share", "cura", "resources")) Resources.addSecureSearchPath(os.path.join(self._app_install_dir, "share", "cura", "resources")) Resources.addSecureSearchPath(os.path.join(self._app_install_dir, "Resources", "share", "cura", "resources")) + Resources.addSecureSearchPath( + os.path.join(self._app_install_dir, "..", "Resources", "share", "cura", "resources")) + if not hasattr(sys, "frozen"): cura_data_root = os.environ.get('CURA_DATA_ROOT', None) if cura_data_root: From 29fcbf7f7453a0db2c589d6e7d092a758c256b87 Mon Sep 17 00:00:00 2001 From: GregValiant <64202104+GregValiant@users.noreply.github.com> Date: Sun, 4 Feb 2024 08:57:08 -0500 Subject: [PATCH 041/203] Update LimitXYAccelJerk.py --- .../scripts/LimitXYAccelJerk.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/plugins/PostProcessingPlugin/scripts/LimitXYAccelJerk.py b/plugins/PostProcessingPlugin/scripts/LimitXYAccelJerk.py index 17d17c9e24..9dac57e218 100644 --- a/plugins/PostProcessingPlugin/scripts/LimitXYAccelJerk.py +++ b/plugins/PostProcessingPlugin/scripts/LimitXYAccelJerk.py @@ -9,6 +9,7 @@ # When setting an accel limit on multi-extruder printers ALL extruders are effected. # This post does not distinguish between Print Accel and Travel Accel. The limit is the limit for all regardless. Example: Skin Accel = 1000 and Outer Wall accel = 500. If the limit is set to 300 then both Skin and Outer Wall will be Accel = 300. # 9/15/2023 added support for RepRap M566 command for Jerk in mm/min +# 2/4/2024 Added a block so the script doesn't run unless Accel Control is enabled in Cura. This should keep users from increasing the Accel Limits. from ..Script import Script from cura.CuraApplication import CuraApplication @@ -45,6 +46,10 @@ class LimitXYAccelJerk(Script): # Warn the user if the printer is multi-extruder------------------ if ext_count > 1: Message(text = " 'Limit the X-Y Accel/Jerk': The post processor treats all extruders the same. If you have multiple extruders they will all be subject to the same Accel and Jerk limits imposed. If you have different Travel and Print Accel they will also be subject to the same limits. If that is not acceptable then you should not use this Post Processor.").show() + + # Warn the user if Accel Control is not enabled in Cura. This keeps the script from being able to increase the Accel limits----------- + if not bool(extruder[0].getProperty("acceleration_enabled", "value")): + Message(title = "[Limit the X-Y Accel/Jerk]", text = "You must have 'Enable Acceleration Control' checked in Cura or the script will exit.").show() def getSettingDataString(self): return """{ @@ -169,6 +174,13 @@ class LimitXYAccelJerk(Script): extruder = mycura.extruderList machine_name = str(mycura.getProperty("machine_name", "value")) print_sequence = str(mycura.getProperty("print_sequence", "value")) + acceleration_enabled = bool(extruder[0].getProperty("acceleration_enabled", "value")) + + # Exit if acceleration control is not enabled---------------- + if not acceleration_enabled: + Message(title = "[Limit the X-Y Accel/Jerk]", text = "DID NOT RUN. You must have 'Enable Acceleration Control' checked in Cura.").show() + data[0] += "; [LimitXYAccelJerk] DID NOT RUN because 'Enable Acceleration Control' is not checked in Cura.\n" + return data # Exit if 'one_at_a_time' is enabled------------------------- if print_sequence == "one_at_a_time": @@ -183,12 +195,8 @@ class LimitXYAccelJerk(Script): return data type_of_change = str(self.getSettingValueByKey("type_of_change")) - accel_print_enabled = bool(extruder[0].getProperty("acceleration_enabled", "value")) - accel_travel_enabled = bool(extruder[0].getProperty("acceleration_travel_enabled", "value")) accel_print = extruder[0].getProperty("acceleration_print", "value") accel_travel = extruder[0].getProperty("acceleration_travel", "value") - jerk_print_enabled = str(extruder[0].getProperty("jerk_enabled", "value")) - jerk_travel_enabled = str(extruder[0].getProperty("jerk_travel_enabled", "value")) jerk_print_old = extruder[0].getProperty("jerk_print", "value") jerk_travel_old = extruder[0].getProperty("jerk_travel", "value") if int(accel_print) >= int(accel_travel): From c29eb49113a18fa1eb29cdcb56f2d173b2d0d327 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Sun, 4 Feb 2024 22:44:21 +0100 Subject: [PATCH 042/203] Add more `paths` --- plugins/CuraEngineBackend/CuraEngineBackend.py | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 0c4003fadc..66949eeaf5 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -76,6 +76,7 @@ class CuraEngineBackend(QObject, Backend): self._default_engine_location = executable_name search_path = [ + os.path.abspath(os.path.join(os.path.dirname(sys.executable), "..", "Resources")), os.path.abspath(os.path.dirname(sys.executable)), os.path.abspath(os.path.join(os.path.dirname(sys.executable), "bin")), os.path.abspath(os.path.join(os.path.dirname(sys.executable), "..")), From fc081b20e30bc4e978a5103a8a6c6a77e4cf6aed Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Sun, 4 Feb 2024 22:48:55 +0100 Subject: [PATCH 043/203] Remove unused variable --- conanfile.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/conanfile.py b/conanfile.py index 18fe339528..3b48442fa0 100644 --- a/conanfile.py +++ b/conanfile.py @@ -166,8 +166,6 @@ class CuraConan(ConanFile): self.output.info("Collecting python installs") python_installs = {} - python_executable = "python3" if self.settings.os == "Macos" else "python" - # list of python installs run_env = VirtualRunEnv(self) env = run_env.environment() From 7d9a699eb145ee68ada6b793da7584241c564a65 Mon Sep 17 00:00:00 2001 From: Saumya Jain <70144862+saumyaj3@users.noreply.github.com> Date: Mon, 5 Feb 2024 09:07:22 +0100 Subject: [PATCH 044/203] Update cura/CuraApplication.py using modern typing Co-authored-by: Casper Lamboo --- cura/CuraApplication.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 08fec4479e..508c36bf7c 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -187,7 +187,7 @@ class CuraApplication(QtApplication): self._cura_formula_functions = None # type: Optional[CuraFormulaFunctions] - self._machine_action_manager = None # type: Optional[MachineActionManager] + self._machine_action_manager: Optional[MachineActionManager] = None self.empty_container = None # type: EmptyInstanceContainer self.empty_definition_changes_container = None # type: EmptyInstanceContainer From 9d6f80fb86a0d1585bf6d6e86e2053c2a65c4a6b Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Mon, 5 Feb 2024 09:27:01 +0100 Subject: [PATCH 045/203] Also make app bundle for linux/windows --- UltiMaker-Cura.spec.jinja | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/UltiMaker-Cura.spec.jinja b/UltiMaker-Cura.spec.jinja index 2c930e6ed6..795de41424 100644 --- a/UltiMaker-Cura.spec.jinja +++ b/UltiMaker-Cura.spec.jinja @@ -69,9 +69,9 @@ coll = COLLECT( name=r'{{ name }}' ) -{% if macos == true %} app = BUNDLE( coll, + {% if macos == true %} name='{{ display_name }}.app', icon={{ icon }}, bundle_identifier={{ osx_bundle_identifier }} + "_" + '{{ display_name }}'.replace(" ", "_") + "_" {{ short_version }}, @@ -90,10 +90,10 @@ app = BUNDLE( 'CFBundleURLSchemes': ['cura', 'slicer'], }], 'CFBundleDocumentTypes': [{ - 'CFBundleTypeRole': 'Viewer', - 'CFBundleTypeExtensions': ['*'], - 'CFBundleTypeName': 'Model Files', - }] - }, + 'CFBundleTypeRole': 'Viewer', + 'CFBundleTypeExtensions': ['*'], + 'CFBundleTypeName': 'Model Files', + }] + }, + {% endif %} ) -{% endif %} From ebea2b46db71f472a7f8080de17ae8c27eb43c87 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Mon, 5 Feb 2024 10:46:34 +0100 Subject: [PATCH 046/203] Only bundle for mac CURA-11483 --- UltiMaker-Cura.spec.jinja | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/UltiMaker-Cura.spec.jinja b/UltiMaker-Cura.spec.jinja index 795de41424..ec9820fd57 100644 --- a/UltiMaker-Cura.spec.jinja +++ b/UltiMaker-Cura.spec.jinja @@ -69,9 +69,9 @@ coll = COLLECT( name=r'{{ name }}' ) +{% if macos == true %} app = BUNDLE( coll, - {% if macos == true %} name='{{ display_name }}.app', icon={{ icon }}, bundle_identifier={{ osx_bundle_identifier }} + "_" + '{{ display_name }}'.replace(" ", "_") + "_" {{ short_version }}, @@ -95,5 +95,5 @@ app = BUNDLE( 'CFBundleTypeName': 'Model Files', }] }, - {% endif %} ) +{% endif %} From 54d6315f28f1ff0240aea1b9e63cf6f115542838 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Mon, 5 Feb 2024 10:58:19 +0100 Subject: [PATCH 047/203] Fix broken windows/linux builds Due to some breaking changes in pyinstaller upgrade, add option to use old packaging https://github.com/pyinstaller/pyinstaller/pull/7713 CURA-11483 --- UltiMaker-Cura.spec.jinja | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/UltiMaker-Cura.spec.jinja b/UltiMaker-Cura.spec.jinja index ec9820fd57..99bfa80078 100644 --- a/UltiMaker-Cura.spec.jinja +++ b/UltiMaker-Cura.spec.jinja @@ -55,7 +55,8 @@ exe = EXE( target_arch={{ target_arch }}, codesign_identity=os.getenv('CODESIGN_IDENTITY', None), entitlements_file={{ entitlements_file }}, - icon={{ icon }} + icon={{ icon }}, + contents_directory='.' ) coll = COLLECT( From 965f9e5a1cfc1dcab15d1e1ad2fe0b38017ed7d4 Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Mon, 5 Feb 2024 11:15:34 +0100 Subject: [PATCH 048/203] Increased maximum warning value for the small skin width from 3 line widths to 10 line widths. PP-424 --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 03850a7344..36590649d0 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1668,7 +1668,7 @@ "value": "skin_line_width * 2", "default_value": 1, "minimum_value": "0", - "maximum_value_warning": "skin_line_width * 3", + "maximum_value_warning": "skin_line_width * 10", "type": "float", "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'", "limit_to_extruder": "top_bottom_extruder_nr", From 0f6f18e7ddb2db7f9b9851938467070ce5c9ae6b Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Mon, 5 Feb 2024 11:30:15 +0100 Subject: [PATCH 049/203] Clean up some paths CURA-11483 --- cura/CuraApplication.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 827f0d8598..241113ece7 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -374,14 +374,15 @@ class CuraApplication(QtApplication): app_root = os.path.abspath(os.path.join(os.path.dirname(sys.executable))) - Resources.addSecureSearchPath(os.path.join(app_root, "share", "cura", "resources")) - Resources.addSecureSearchPath(os.path.join(app_root, "Resources", "share", "cura", "resources")) - Resources.addSecureSearchPath(os.path.join(app_root, "..", "Resources", "share", "cura", "resources")) - - Resources.addSecureSearchPath(os.path.join(self._app_install_dir, "share", "cura", "resources")) - Resources.addSecureSearchPath(os.path.join(self._app_install_dir, "Resources", "share", "cura", "resources")) - Resources.addSecureSearchPath( - os.path.join(self._app_install_dir, "..", "Resources", "share", "cura", "resources")) + if platform.system() == "Darwin": + Resources.addSecureSearchPath(os.path.join(app_root, "Resources", "share", "cura", "resources")) + Resources.addSecureSearchPath(os.path.join(app_root, "..", "Resources", "share", "cura", "resources")) + Resources.addSecureSearchPath( + os.path.join(self._app_install_dir, "..", "Resources", "share", "cura", "resources")) + else: + Resources.addSecureSearchPath(os.path.join(app_root, "share", "cura", "resources")) + Resources.addSecureSearchPath(os.path.join(self._app_install_dir, "share", "cura", "resources")) + Resources.addSecureSearchPath(os.path.join(app_root, "Resources", "share", "cura", "resources")) if not hasattr(sys, "frozen"): cura_data_root = os.environ.get('CURA_DATA_ROOT', None) @@ -396,7 +397,6 @@ class CuraApplication(QtApplication): # venv site-packages Resources.addSearchPath(os.path.join(app_root, "..", "share", "cura", "resources")) - Resources.addSearchPath(os.path.join(app_root, "..", "Resources", "share", "cura", "resources")) @classmethod def _initializeSettingDefinitions(cls): From 03abc91bda185549642666f50f833dd14f95df0d Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Mon, 5 Feb 2024 11:35:44 +0100 Subject: [PATCH 050/203] Improved self support z distance settings for Ultimaker PLA, T-PLA, PETG and ABS PP-424 --- .../quality/ultimaker_s3/um_s3_aa0.25_um-abs_0.1mm.inst.cfg | 3 +-- .../quality/ultimaker_s3/um_s3_aa0.25_um-petg_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.25_um-pla_0.1mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.25_um-tough-pla_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.3mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.06mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.15mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.1mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.3mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg | 1 + .../quality/ultimaker_s5/um_s5_aa0.25_um-abs_0.1mm.inst.cfg | 3 +-- .../quality/ultimaker_s5/um_s5_aa0.25_um-petg_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.25_um-pla_0.1mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.25_um-tough-pla_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.3mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.06mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.15mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.1mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.3mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg | 1 + 50 files changed, 50 insertions(+), 50 deletions(-) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_um-abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_um-abs_0.1mm.inst.cfg index 8557b08b1b..24c5a1d9e6 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_um-abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_um-abs_0.1mm.inst.cfg @@ -27,7 +27,6 @@ acceleration_wall_x = =acceleration_wall bridge_skin_speed = =bridge_wall_speed bridge_sparse_infill_max_density = 50 bridge_wall_speed = 30 -cool_fan_speed_0 = 0 cool_min_layer_time = 4 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid' infill_sparse_density = 15 @@ -65,7 +64,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_um-petg_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_um-petg_0.1mm.inst.cfg index 1aa26ebcfc..e3965d9c5c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_um-petg_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_um-petg_0.1mm.inst.cfg @@ -63,7 +63,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_um-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_um-pla_0.1mm.inst.cfg index 3343f7627a..9589f2f915 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_um-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_um-pla_0.1mm.inst.cfg @@ -64,7 +64,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_um-tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_um-tough-pla_0.1mm.inst.cfg index d0d532f410..b8aec4972f 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_um-tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_um-tough-pla_0.1mm.inst.cfg @@ -64,7 +64,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.06mm.inst.cfg index 85dc32801e..de5e0faf2e 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.06mm.inst.cfg @@ -65,7 +65,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.15mm.inst.cfg index ee0525c13e..c39c6d42c8 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.15mm.inst.cfg @@ -66,7 +66,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.1mm.inst.cfg index ca1d9d7afc..08bb2befdf 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.1mm.inst.cfg @@ -65,7 +65,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg index 57413c4b30..9d67113da0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg @@ -67,7 +67,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.3mm.inst.cfg index 0052ce90cd..cc0da1a253 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.3mm.inst.cfg @@ -67,7 +67,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.4 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.06mm.inst.cfg index 0e9ceaf9e3..7eb5de8b64 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.06mm.inst.cfg @@ -64,7 +64,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.15mm.inst.cfg index 8732c3ad63..d4431382dd 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.15mm.inst.cfg @@ -65,7 +65,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.1mm.inst.cfg index 6f8db11141..bb7de56356 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.1mm.inst.cfg @@ -64,7 +64,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg index e7e50350c0..6b333e2f13 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg @@ -66,7 +66,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.3mm.inst.cfg index 5ecaa739db..854b868259 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.3mm.inst.cfg @@ -66,7 +66,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.4 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.06mm.inst.cfg index 25887f19d7..9678ba9523 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.06mm.inst.cfg @@ -65,7 +65,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.15mm.inst.cfg index 136a3bed42..c53596bc9f 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.15mm.inst.cfg @@ -66,7 +66,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.1mm.inst.cfg index e8820673ea..58a8a1ebb0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.1mm.inst.cfg @@ -65,7 +65,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg index dcbb580edb..c3139970db 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg @@ -67,7 +67,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.3mm.inst.cfg index fc2a185be4..6f450463b9 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.3mm.inst.cfg @@ -67,7 +67,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.06mm.inst.cfg index 73f25eae0f..e193aa51c3 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.06mm.inst.cfg @@ -65,7 +65,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.15mm.inst.cfg index 2aa24f805d..622f2030e4 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.15mm.inst.cfg @@ -66,7 +66,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.35 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.1mm.inst.cfg index e51d440c31..09f02aa375 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.1mm.inst.cfg @@ -65,7 +65,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg index 151af3ed50..91b522349d 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg @@ -66,7 +66,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.35 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.3mm.inst.cfg index 56c097d890..2fd9e5ef2c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.3mm.inst.cfg @@ -67,7 +67,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.4 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg index a76864a1a3..2310f2503f 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg @@ -69,6 +69,7 @@ speed_wall_x_roofing = =speed_roofing support_angle = 70 support_interface_enable = False support_structure = tree +support_z_distance = 0.35 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_um-abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_um-abs_0.1mm.inst.cfg index d725b5aa15..7b14730a66 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_um-abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_um-abs_0.1mm.inst.cfg @@ -27,7 +27,6 @@ acceleration_wall_x = =acceleration_wall bridge_skin_speed = =bridge_wall_speed bridge_sparse_infill_max_density = 50 bridge_wall_speed = 30 -cool_fan_speed_0 = 0 cool_min_layer_time = 4 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid' infill_sparse_density = 15 @@ -65,7 +64,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_um-petg_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_um-petg_0.1mm.inst.cfg index 82e07b6fdf..a2233703d4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_um-petg_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_um-petg_0.1mm.inst.cfg @@ -63,7 +63,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_um-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_um-pla_0.1mm.inst.cfg index 789d186f77..44f6670085 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_um-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_um-pla_0.1mm.inst.cfg @@ -64,7 +64,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_um-tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_um-tough-pla_0.1mm.inst.cfg index 307869d494..997f823e51 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_um-tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_um-tough-pla_0.1mm.inst.cfg @@ -64,7 +64,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.06mm.inst.cfg index fbe230fb2e..c0b4799ca9 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.06mm.inst.cfg @@ -65,7 +65,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.15mm.inst.cfg index 9c7ceca13b..d430f867d8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.15mm.inst.cfg @@ -66,7 +66,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.1mm.inst.cfg index 8ef78a6fb5..b2c25e26c7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.1mm.inst.cfg @@ -65,7 +65,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg index f430e6bc16..8a02dfe38c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg @@ -67,7 +67,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.3mm.inst.cfg index 98ca8927b6..9a10024813 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.3mm.inst.cfg @@ -67,7 +67,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.4 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.06mm.inst.cfg index aea8906877..ef58c14663 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.06mm.inst.cfg @@ -64,7 +64,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.15mm.inst.cfg index 201c663d5c..5d14f014b9 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.15mm.inst.cfg @@ -65,7 +65,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.1mm.inst.cfg index a9d239bf3a..d23a7b8cea 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.1mm.inst.cfg @@ -64,7 +64,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg index 55696eccb4..8bfe117380 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg @@ -66,7 +66,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.3mm.inst.cfg index fe3eeb67ad..ab66eed0ab 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.3mm.inst.cfg @@ -66,7 +66,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.4 top_bottom_thickness = =max(1.2 , layer_height * 6) wall_0_wipe_dist = 0.8 wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.06mm.inst.cfg index a9043c7372..2b192e8c1c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.06mm.inst.cfg @@ -65,7 +65,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.15mm.inst.cfg index 713f94219f..11301a2990 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.15mm.inst.cfg @@ -66,7 +66,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.1mm.inst.cfg index 4e451d4165..1d07e0f63c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.1mm.inst.cfg @@ -65,7 +65,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg index 02d22b06b8..990271dd9e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg @@ -67,7 +67,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.3mm.inst.cfg index b0d5d41d0f..a01b433eb2 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.3mm.inst.cfg @@ -67,7 +67,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.06mm.inst.cfg index 641c1279e4..f368ac13d8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.06mm.inst.cfg @@ -65,7 +65,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.15mm.inst.cfg index 55e724da9d..b699ebc9f3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.15mm.inst.cfg @@ -66,7 +66,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.35 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.1mm.inst.cfg index 35e8c0903c..d0ee391c65 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.1mm.inst.cfg @@ -65,7 +65,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.3 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg index ee0ee279e6..d9bbd7cc00 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg @@ -66,7 +66,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.35 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.3mm.inst.cfg index 875bd5a669..fc8507c42b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.3mm.inst.cfg @@ -67,7 +67,7 @@ support_bottom_distance = =support_z_distance support_interface_enable = True support_structure = tree support_top_distance = =support_z_distance -support_z_distance = =math.ceil(0.3/layer_height)*layer_height +support_z_distance = 0.4 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg index 4973ec35bb..b3711c1cbd 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg @@ -69,6 +69,7 @@ speed_wall_x_roofing = =speed_roofing support_angle = 70 support_interface_enable = False support_structure = tree +support_z_distance = 0.35 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True From 9afe5b46dbaf94d5214df9e8f285dcb39b0f3eb6 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Mon, 5 Feb 2024 12:39:56 +0100 Subject: [PATCH 051/203] We now display the global and extruder settings in the dialog CURA-11561 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 54 +++++++++++++-------- plugins/3MFReader/WorkspaceDialog.py | 7 +++ plugins/3MFReader/WorkspaceDialog.qml | 45 ++++++++++++++--- plugins/3MFReader/WorkspaceRow.qml | 20 ++++++-- 4 files changed, 96 insertions(+), 30 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 57bf4be5bb..caf411bc67 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -143,12 +143,14 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._machine_info = None self._load_profile = False + self._user_settings: Dict[str, Dict[str, Any]] = {} def _clearState(self): self._id_mapping = {} self._old_new_materials = {} self._machine_info = None self._load_profile = False + self._user_settings = {} def getNewId(self, old_id: str): """Get a unique name based on the old_id. This is different from directly calling the registry in that it caches results. @@ -604,6 +606,36 @@ class ThreeMFWorkspaceReader(WorkspaceReader): package_metadata = self._parse_packages_metadata(archive) missing_package_metadata = self._filter_missing_package_metadata(package_metadata) + # Load the user specifically exported settings + self._dialog.exportedSettingModel.clear() + if is_pcb: + try: + self._user_settings = json.loads(archive.open("Cura/user-settings.json").read().decode("utf-8")) + any_extruder_stack = ExtruderManager.getInstance().getExtruderStack(0) + + for stack_name, settings in self._user_settings.items(): + if stack_name == 'global': + self._dialog.exportedSettingModel.addSettingsFromStack(global_stack, i18n_catalog.i18nc("@label", "Global"), settings) + else: + extruder_match = re.fullmatch('extruder_([0-9]+)', stack_name) + if extruder_match is not None: + extruder_nr = int(extruder_match.group(1)) + self._dialog.exportedSettingModel.addSettingsFromStack(any_extruder_stack, + i18n_catalog.i18nc("@label", + "Extruder {0}", extruder_nr + 1), + settings) + except KeyError as e: + # If there is no user settings file, it's not a PCB, so notify user of failure. + Logger.log("w", "File %s is not a valid PCB.", file_name) + message = Message( + i18n_catalog.i18nc("@info:error Don't translate the XML tags or !", + "Project file {0} is corrupt: {1}.", + file_name, str(e)), + title=i18n_catalog.i18nc("@info:title", "Can't Open Project File"), + message_type=Message.MessageType.ERROR) + message.show() + return WorkspaceReader.PreReadResult.failed + # Show the dialog, informing the user what is about to happen. self._dialog.setMachineConflict(machine_conflict) self._dialog.setIsPrinterGroup(is_printer_group) @@ -628,6 +660,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._dialog.setAllowCreatemachine(not is_pcb) self._dialog.show() + # Choosing the initially selected printer in MachineSelector is_networked_machine = False is_abstract_machine = False @@ -790,8 +823,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): for stack in extruder_stacks: stack.setNextStack(global_stack, connect_signals = False) - user_settings = {} - if self._load_profile: Logger.log("d", "Workspace loading is checking definitions...") # Get all the definition files & check if they exist. If not, add them. @@ -864,23 +895,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._container_registry.addContainer(material_container) Job.yieldThread() QCoreApplication.processEvents() # Ensure that the GUI does not freeze. - else: - Logger.log("d", "Workspace loading user settings...") - try: - user_settings = json.loads(archive.open("Cura/user-settings.json").read().decode("utf-8")) - except KeyError as e: - # If there is no user settings file, it's not a PCB, so notify user of failure. - Logger.log("w", "File %s is not a valid PCB.", file_name) - message = Message( - i18n_catalog.i18nc("@info:error Don't translate the XML tags or !", - "Project file {0} is corrupt: {1}.", - file_name, str(e)), - title=i18n_catalog.i18nc("@info:title", "Can't Open Project File"), - message_type=Message.MessageType.ERROR) - message.show() - self.setWorkspaceName("") - return [], {} - if global_stack: if self._load_profile: @@ -905,7 +919,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if not self._load_profile: # Now we have switched, apply the user settings - self._applyUserSettings(global_stack, extruder_stack_dict, user_settings) + self._applyUserSettings(global_stack, extruder_stack_dict, self._user_settings) # Load all the nodes / mesh data of the workspace nodes = self._3mf_mesh_reader.read(file_name) diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index c0006e21a8..1fafcf59f5 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -22,6 +22,8 @@ import time from cura.CuraApplication import CuraApplication +from .SpecificSettingsModel import SpecificSettingsModel + i18n_catalog = i18nCatalog("cura") @@ -75,6 +77,7 @@ class WorkspaceDialog(QObject): self._has_visible_select_same_profile = False self._select_same_profile_checked = True self._allow_create_machine = True + self._exported_settings_model = SpecificSettingsModel() machineConflictChanged = pyqtSignal() qualityChangesConflictChanged = pyqtSignal() @@ -340,6 +343,10 @@ class WorkspaceDialog(QObject): def allowCreateMachine(self): return self._allow_create_machine + @pyqtProperty(QObject, constant = True) + def exportedSettingModel(self): + return self._exported_settings_model + @pyqtSlot() def closeBackend(self) -> None: """Close the backend: otherwise one could end up with "Slicing...""" diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index c7074ce220..b6a9d59751 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -1,12 +1,12 @@ // Copyright (c) 2022 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.10 +import QtQuick 2.14 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 import QtQuick.Window 2.2 -import UM 1.5 as UM +import UM 1.6 as UM import Cura 1.1 as Cura UM.Dialog @@ -171,35 +171,68 @@ UM.Dialog { leftLabelText: catalog.i18nc("@action:label", "Name") rightLabelText: manager.qualityName + visible: manager.isCompatibleMachine } WorkspaceRow { leftLabelText: catalog.i18nc("@action:label", "Intent") rightLabelText: manager.intentName + visible: manager.isCompatibleMachine } WorkspaceRow { leftLabelText: catalog.i18nc("@action:label", "Not in profile") rightLabelText: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", manager.numUserSettings).arg(manager.numUserSettings) - visible: manager.numUserSettings != 0 + visible: manager.numUserSettings != 0 && manager.selectSameProfileChecked && manager.isCompatibleMachine } WorkspaceRow { leftLabelText: catalog.i18nc("@action:label", "Derivative from") rightLabelText: catalog.i18ncp("@action:label", "%1, %2 override", "%1, %2 overrides", manager.numSettingsOverridenByQualityChanges).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges) - visible: manager.numSettingsOverridenByQualityChanges != 0 + visible: manager.numSettingsOverridenByQualityChanges != 0 && manager.selectSameProfileChecked && manager.isCompatibleMachine + } + + WorkspaceRow + { + leftLabelText: catalog.i18nc("@action:label", "Specific settings") + rightLabelText: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", manager.exportedSettingModel.rowCount()).arg(manager.exportedSettingModel.rowCount()) + buttonText: tableViewSpecificSettings.shouldBeVisible ? catalog.i18nc("@action:button", "Hide settings") : catalog.i18nc("@action:button", "Show settings") + visible: !manager.selectSameProfileChecked || !manager.isCompatibleMachine + onButtonClicked: tableViewSpecificSettings.shouldBeVisible = !tableViewSpecificSettings.shouldBeVisible + } + + Cura.TableView + { + id: tableViewSpecificSettings + width: parent.width - parent.leftPadding - UM.Theme.getSize("default_margin").width + height: UM.Theme.getSize("card").height + visible: shouldBeVisible && (!manager.selectSameProfileChecked || !manager.isCompatibleMachine) + property bool shouldBeVisible: false + + columnHeaders: + [ + catalog.i18nc("@title:column", "Applies on"), + catalog.i18nc("@title:column", "Setting"), + catalog.i18nc("@title:column", "Value") + ] + + model: UM.TableModel + { + id: tableModel + headers: ["category", "label", "value"] + rows: manager.exportedSettingModel.items + } } UM.CheckBox { text: catalog.i18nc("@action:checkbox", "Select the same profile") - enabled: manager.isCompatibleMachine onEnabledChanged: manager.selectSameProfileChecked = enabled tooltip: enabled ? "" : catalog.i18nc("@tooltip", "You can use the same profile only if you have the same printer as the project was published with") - visible: manager.hasVisibleSelectSameProfile + visible: manager.hasVisibleSelectSameProfile && manager.isCompatibleMachine checked: manager.selectSameProfileChecked onCheckedChanged: manager.selectSameProfileChecked = checked diff --git a/plugins/3MFReader/WorkspaceRow.qml b/plugins/3MFReader/WorkspaceRow.qml index 8d9f1f25b3..855b8c18b0 100644 --- a/plugins/3MFReader/WorkspaceRow.qml +++ b/plugins/3MFReader/WorkspaceRow.qml @@ -9,26 +9,38 @@ import QtQuick.Window 2.2 import UM 1.5 as UM import Cura 1.1 as Cura -Row +RowLayout { + id: root + property alias leftLabelText: leftLabel.text property alias rightLabelText: rightLabel.text + property alias buttonText: button.text + signal buttonClicked width: parent.width - height: visible ? childrenRect.height : 0 UM.Label { id: leftLabel text: catalog.i18nc("@action:label", "Type") - width: Math.round(parent.width / 4) + Layout.preferredWidth: Math.round(parent.width / 4) wrapMode: Text.WordWrap } + UM.Label { id: rightLabel text: manager.machineType - width: Math.round(parent.width / 3) wrapMode: Text.WordWrap } + + Cura.TertiaryButton + { + id: button + visible: !text.isEmpty + Layout.maximumHeight: leftLabel.implicitHeight + Layout.fillWidth: true + onClicked: root.buttonClicked() + } } \ No newline at end of file From 2ae990833486e035c8291732e211b32d2ff55799 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Mon, 5 Feb 2024 12:58:02 +0100 Subject: [PATCH 052/203] Fix crash CURA-11561 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index caf411bc67..c28880211d 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -699,7 +699,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if self._dialog.getResult() == {}: return WorkspaceReader.PreReadResult.cancelled - self._load_profile = not is_pcb or self._dialog.selectSameProfileChecked + self._load_profile = not is_pcb or (self._dialog.selectSameProfileChecked and self._dialog.isCompatibleMachine) self._resolve_strategies = self._dialog.getResult() # From bf3f4061df832376ad30e424ad751d972d41964d Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 5 Feb 2024 13:12:14 +0100 Subject: [PATCH 053/203] Fix ratrig definitions --- resources/definitions/ratrig_base.def.json | 1 + resources/definitions/ratrig_vcore3_base.def.json | 1 - resources/definitions/ratrig_vminion.def.json | 1 - 3 files changed, 1 insertion(+), 2 deletions(-) diff --git a/resources/definitions/ratrig_base.def.json b/resources/definitions/ratrig_base.def.json index 22c01c8bc3..ebbef821ce 100644 --- a/resources/definitions/ratrig_base.def.json +++ b/resources/definitions/ratrig_base.def.json @@ -9,6 +9,7 @@ "manufacturer": "RatRig", "file_formats": "text/x-gcode", "exclude_materials": [], + "machine_extruder_trains": { "0": "ratrig_base_extruder_0" }, "first_start_actions": [ "MachineSettingsAction" ], "has_materials": true, "preferred_material": "generic_pla", diff --git a/resources/definitions/ratrig_vcore3_base.def.json b/resources/definitions/ratrig_vcore3_base.def.json index a736da4506..7788bf36f8 100644 --- a/resources/definitions/ratrig_vcore3_base.def.json +++ b/resources/definitions/ratrig_vcore3_base.def.json @@ -27,7 +27,6 @@ "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, "cool_min_layer_time": { "value": 2 }, "fill_outline_gaps": { "value": false }, - "filter_out_tiny_gaps": { "value": false }, "gantry_height": { "value": 30 }, "infill_before_walls": { "value": false }, "infill_overlap": { "value": 30 }, diff --git a/resources/definitions/ratrig_vminion.def.json b/resources/definitions/ratrig_vminion.def.json index 3cfb3baad6..425e1e6a15 100644 --- a/resources/definitions/ratrig_vminion.def.json +++ b/resources/definitions/ratrig_vminion.def.json @@ -34,7 +34,6 @@ "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, "cool_min_layer_time": { "value": 2 }, "fill_outline_gaps": { "value": false }, - "filter_out_tiny_gaps": { "value": false }, "gantry_height": { "value": 30 }, "infill_before_walls": { "value": false }, "infill_overlap": { "value": 30 }, From d67f0696cd0cd1759e65dda99ed9439b67562542 Mon Sep 17 00:00:00 2001 From: nallath Date: Mon, 5 Feb 2024 12:14:00 +0000 Subject: [PATCH 054/203] Applied printer-linter format --- resources/definitions/ratrig_base.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/ratrig_base.def.json b/resources/definitions/ratrig_base.def.json index ac952969c4..69ab0f139d 100644 --- a/resources/definitions/ratrig_base.def.json +++ b/resources/definitions/ratrig_base.def.json @@ -9,9 +9,9 @@ "manufacturer": "RatRig", "file_formats": "text/x-gcode", "exclude_materials": [], - "machine_extruder_trains": { "0": "ratrig_base_extruder_0" }, "first_start_actions": [ "MachineSettingsAction" ], "has_materials": true, + "machine_extruder_trains": { "0": "ratrig_base_extruder_0" }, "preferred_material": "generic_pla", "preferred_quality_type": "standard", "quality_definition": "ratrig_base", From 21517c502589000777d42e0b1c3dcd487e9260bc Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Mon, 5 Feb 2024 13:22:26 +0100 Subject: [PATCH 055/203] Adding openURL in singleinstance --- cura/SingleInstance.py | 6 +++++- packaging/NSIS/Ultimaker-Cura.nsi.jinja | 2 +- packaging/msi/UltiMaker-Cura.wxs.jinja | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cura/SingleInstance.py b/cura/SingleInstance.py index 61ab1204fe..2c3e816767 100644 --- a/cura/SingleInstance.py +++ b/cura/SingleInstance.py @@ -92,7 +92,11 @@ class SingleInstance: # Command: Load a model or project file elif command == "open": - self._application.callLater(lambda f = payload["filePath"]: self._application._openFile(f)) + if payload["filePath"].file(): + self._application.callLater(lambda f = payload["filePath"]: self._application._openFile(f)) + if payload["filePath"].url(): + self._application.callLater(lambda f= payload["filepath"]: self._application._openUrl(f)) + # Command: Activate the window and bring it to the top. elif command == "focus": diff --git a/packaging/NSIS/Ultimaker-Cura.nsi.jinja b/packaging/NSIS/Ultimaker-Cura.nsi.jinja index 0a2ce0f517..2106c47312 100644 --- a/packaging/NSIS/Ultimaker-Cura.nsi.jinja +++ b/packaging/NSIS/Ultimaker-Cura.nsi.jinja @@ -156,7 +156,7 @@ WriteRegStr HKCR "slicer" "" "URL:slicer" WriteRegStr HKCR "slicer" "URL Protocol" "" WriteRegStr HKCR "slicer\DefaultIcon" "" "$INSTDIR\${MAIN_APP_EXE},1" WriteRegStr HKCR "slicer\shell" "" "open" -WriteRegStr HKCR "slicer\shell\open\command" "" '"$INSTDIR\${MAIN_APP_EXE}" "%1"' +WriteRegStr HKCR "slicer\shell\open\command" "" '"$INSTDIR\${MAIN_APP_EXE}" --single-instance "%1"' SectionEnd ###################################################################### diff --git a/packaging/msi/UltiMaker-Cura.wxs.jinja b/packaging/msi/UltiMaker-Cura.wxs.jinja index 21f017c813..13c5d2842e 100644 --- a/packaging/msi/UltiMaker-Cura.wxs.jinja +++ b/packaging/msi/UltiMaker-Cura.wxs.jinja @@ -165,7 +165,7 @@ - + From 63c1eb8990ff3b86337fddb0331bc8ca24ea1092 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Mon, 5 Feb 2024 14:15:43 +0100 Subject: [PATCH 056/203] Rename to Universal Cura Project CURA-11561 --- plugins/3MFReader/ThreeMFReader.py | 8 ++++---- plugins/3MFReader/ThreeMFWorkspaceReader.py | 20 +++++++++---------- plugins/3MFReader/__init__.py | 8 ++++---- plugins/3MFReader/plugin.json | 2 +- plugins/3MFWriter/ThreeMFWorkspaceWriter.py | 16 +++++++-------- .../3MFWriter/{PCBDialog.py => UCPDialog.py} | 4 ++-- .../{PCBDialog.qml => UCPDialog.qml} | 6 +++--- plugins/3MFWriter/__init__.py | 12 +++++------ plugins/3MFWriter/plugin.json | 2 +- resources/qml/Menus/FileMenu.qml | 8 ++++---- 10 files changed, 43 insertions(+), 43 deletions(-) rename plugins/3MFWriter/{PCBDialog.py => UCPDialog.py} (94%) rename plugins/3MFWriter/{PCBDialog.qml => UCPDialog.qml} (86%) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 9f4a4b197b..13d069f5a7 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -48,13 +48,13 @@ class ThreeMFReader(MeshReader): ) MimeTypeDatabase.addMimeType( MimeType( - name="application/x-pcb", - comment="PCB", - suffixes=["pcb"] + name="application/x-ucp", + comment="UCP", + suffixes=["ucp"] ) ) - self._supported_extensions = [".3mf", ".pcb"] + self._supported_extensions = [".3mf", ".ucp"] self._root = None self._base_name = "" self._unit = None diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index c28880211d..e3056065a8 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -113,7 +113,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): def __init__(self) -> None: super().__init__() - self._supported_extensions = [".3mf", ".pcb"] + self._supported_extensions = [".3mf", ".ucp"] self._dialog = WorkspaceDialog() self._3mf_mesh_reader = None self._container_registry = ContainerRegistry.getInstance() @@ -234,14 +234,14 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._resolve_strategies = {k: None for k in resolve_strategy_keys} containers_found_dict = {k: False for k in resolve_strategy_keys} - # Check whether the file is a PCB, which changes some import options - is_pcb = file_name.endswith('.pcb') + # Check whether the file is a UCP, which changes some import options + is_ucp = file_name.endswith('.ucp') # # Read definition containers # machine_definition_id = None - updatable_machines = None if is_pcb else [] + updatable_machines = None if is_ucp else [] machine_definition_container_count = 0 extruder_definition_container_count = 0 definition_container_files = [name for name in cura_file_names if name.endswith(self._definition_container_suffix)] @@ -608,7 +608,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Load the user specifically exported settings self._dialog.exportedSettingModel.clear() - if is_pcb: + if is_ucp: try: self._user_settings = json.loads(archive.open("Cura/user-settings.json").read().decode("utf-8")) any_extruder_stack = ExtruderManager.getInstance().getExtruderStack(0) @@ -625,8 +625,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): "Extruder {0}", extruder_nr + 1), settings) except KeyError as e: - # If there is no user settings file, it's not a PCB, so notify user of failure. - Logger.log("w", "File %s is not a valid PCB.", file_name) + # If there is no user settings file, it's not a UCP, so notify user of failure. + Logger.log("w", "File %s is not a valid UCP.", file_name) message = Message( i18n_catalog.i18nc("@info:error Don't translate the XML tags or !", "Project file {0} is corrupt: {1}.", @@ -656,8 +656,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._dialog.setVariantType(variant_type_name) self._dialog.setHasObjectsOnPlate(Application.getInstance().platformActivity) self._dialog.setMissingPackagesMetadata(missing_package_metadata) - self._dialog.setHasVisibleSelectSameProfileChanged(is_pcb) - self._dialog.setAllowCreatemachine(not is_pcb) + self._dialog.setHasVisibleSelectSameProfileChanged(is_ucp) + self._dialog.setAllowCreatemachine(not is_ucp) self._dialog.show() @@ -699,7 +699,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if self._dialog.getResult() == {}: return WorkspaceReader.PreReadResult.cancelled - self._load_profile = not is_pcb or (self._dialog.selectSameProfileChecked and self._dialog.isCompatibleMachine) + self._load_profile = not is_ucp or (self._dialog.selectSameProfileChecked and self._dialog.isCompatibleMachine) self._resolve_strategies = self._dialog.getResult() # diff --git a/plugins/3MFReader/__init__.py b/plugins/3MFReader/__init__.py index a07420d2c6..101337f05f 100644 --- a/plugins/3MFReader/__init__.py +++ b/plugins/3MFReader/__init__.py @@ -27,8 +27,8 @@ def getMetaData() -> Dict: "description": catalog.i18nc("@item:inlistbox", "3MF File") }, { - "extension": "pcb", - "description": catalog.i18nc("@item:inlistbox", "PCB File") + "extension": "ucp", + "description": catalog.i18nc("@item:inlistbox", "UCP File") } ] metaData["workspace_reader"] = [ @@ -37,8 +37,8 @@ def getMetaData() -> Dict: "description": catalog.i18nc("@item:inlistbox", "3MF File") }, { - "extension": "pcb", - "description": catalog.i18nc("@item:inlistbox", "PCB File") + "extension": "ucp", + "description": catalog.i18nc("@item:inlistbox", "UCP File") } ] diff --git a/plugins/3MFReader/plugin.json b/plugins/3MFReader/plugin.json index 1611c956d3..010adbb501 100644 --- a/plugins/3MFReader/plugin.json +++ b/plugins/3MFReader/plugin.json @@ -2,7 +2,7 @@ "name": "3MF Reader", "author": "Ultimaker B.V.", "version": "1.0.1", - "description": "Provides support for reading 3MF and PCB files.", + "description": "Provides support for reading 3MF and UCP files.", "api": 8, "i18n-catalog": "cura" } diff --git a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py index 9715e9ac98..7cdf884709 100644 --- a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py +++ b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py @@ -15,7 +15,7 @@ from UM.Workspace.WorkspaceWriter import WorkspaceWriter from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") -from .PCBDialog import PCBDialog +from .UCPDialog import UCPDialog from .ThreeMFWriter import ThreeMFWriter from .SettingsExportModel import SettingsExportModel from .SettingsExportGroup import SettingsExportGroup @@ -35,19 +35,19 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): self._config_dialog = None def _preWrite(self): - is_pcb = False + is_ucp = False if hasattr(self._stream, 'name'): - # This only works with local file, but we don't want remote PCB files yet - is_pcb = self._stream.name.endswith('.pcb') + # This only works with local file, but we don't want remote UCP files yet + is_ucp = self._stream.name.endswith('.ucp') - if is_pcb: - self._config_dialog = PCBDialog() - self._config_dialog.finished.connect(self._onPCBConfigFinished) + if is_ucp: + self._config_dialog = UCPDialog() + self._config_dialog.finished.connect(self._onUCPConfigFinished) self._config_dialog.show() else: self._doWrite() - def _onPCBConfigFinished(self, accepted: bool): + def _onUCPConfigFinished(self, accepted: bool): if accepted: self._export_model = self._config_dialog.getModel() self._doWrite() diff --git a/plugins/3MFWriter/PCBDialog.py b/plugins/3MFWriter/UCPDialog.py similarity index 94% rename from plugins/3MFWriter/PCBDialog.py rename to plugins/3MFWriter/UCPDialog.py index 089fa259ac..fb214aded0 100644 --- a/plugins/3MFWriter/PCBDialog.py +++ b/plugins/3MFWriter/UCPDialog.py @@ -14,14 +14,14 @@ from .SettingsExportModel import SettingsExportModel i18n_catalog = i18nCatalog("cura") -class PCBDialog(QObject): +class UCPDialog(QObject): finished = pyqtSignal(bool) def __init__(self, parent = None) -> None: super().__init__(parent) plugin_path = os.path.dirname(__file__) - dialog_path = os.path.join(plugin_path, 'PCBDialog.qml') + dialog_path = os.path.join(plugin_path, 'UCPDialog.qml') self._model = SettingsExportModel() self._view = CuraApplication.getInstance().createQmlComponent(dialog_path, {"manager": self, diff --git a/plugins/3MFWriter/PCBDialog.qml b/plugins/3MFWriter/UCPDialog.qml similarity index 86% rename from plugins/3MFWriter/PCBDialog.qml rename to plugins/3MFWriter/UCPDialog.qml index b65520961b..88552cc292 100644 --- a/plugins/3MFWriter/PCBDialog.qml +++ b/plugins/3MFWriter/UCPDialog.qml @@ -12,7 +12,7 @@ import Cura 1.1 as Cura UM.Dialog { id: exportDialog - title: catalog.i18nc("@title:window", "Export pre-configured build batch") + title: catalog.i18nc("@title:window", "Export Universal Cura Project") margin: UM.Theme.getSize("default_margin").width minimumWidth: UM.Theme.getSize("modal_window_minimum").width @@ -39,14 +39,14 @@ UM.Dialog UM.Label { id: titleLabel - text: catalog.i18nc("@action:title", "Summary - Pre-configured build batch") + text: catalog.i18nc("@action:title", "Summary - Universal Cura Project") font: UM.Theme.getFont("large") } UM.Label { id: descriptionLabel - text: catalog.i18nc("@action:description", "When exporting a build batch, all the models present on the build plate will be included with their current position, orientation and scale. You can also select which per-extruder or per-model settings should be included to ensure a proper printing of the batch, even on different printers.") + text: catalog.i18nc("@action:description", "When exporting a Universal Cura Project, all the models present on the build plate will be included with their current position, orientation and scale. You can also select which per-extruder or per-model settings should be included to ensure a proper printing of the batch, even on different printers.") font: UM.Theme.getFont("default") wrapMode: Text.Wrap Layout.maximumWidth: headerColumn.width diff --git a/plugins/3MFWriter/__init__.py b/plugins/3MFWriter/__init__.py index e0d4037603..40fd42b199 100644 --- a/plugins/3MFWriter/__init__.py +++ b/plugins/3MFWriter/__init__.py @@ -34,9 +34,9 @@ def getMetaData(): "mode": ThreeMFWriter.ThreeMFWriter.OutputMode.BinaryMode }, { - "extension": "pcb", - "description": i18n_catalog.i18nc("@item:inlistbox", "PCB file"), - "mime_type": "application/x-pcb", + "extension": "ucp", + "description": i18n_catalog.i18nc("@item:inlistbox", "Universal Cura Project"), + "mime_type": "application/x-ucp", "mode": ThreeMFWriter.ThreeMFWriter.OutputMode.BinaryMode } ] @@ -50,9 +50,9 @@ def getMetaData(): "mode": ThreeMFWorkspaceWriter.ThreeMFWorkspaceWriter.OutputMode.BinaryMode }, { - "extension": "pcb", - "description": i18n_catalog.i18nc("@item:inlistbox", "Pre-Configured Batch file"), - "mime_type": "application/x-pcb", + "extension": "ucp", + "description": i18n_catalog.i18nc("@item:inlistbox", "Universal Cura Project"), + "mime_type": "application/x-ucp", "mode": ThreeMFWorkspaceWriter.ThreeMFWorkspaceWriter.OutputMode.BinaryMode } ] diff --git a/plugins/3MFWriter/plugin.json b/plugins/3MFWriter/plugin.json index be6d50267c..254384dc25 100644 --- a/plugins/3MFWriter/plugin.json +++ b/plugins/3MFWriter/plugin.json @@ -2,7 +2,7 @@ "name": "3MF Writer", "author": "Ultimaker B.V.", "version": "1.0.1", - "description": "Provides support for writing 3MF and PCB files.", + "description": "Provides support for writing 3MF and UCP files.", "api": 8, "i18n-catalog": "cura" } diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml index a6fb339faf..4f7734cb11 100644 --- a/resources/qml/Menus/FileMenu.qml +++ b/resources/qml/Menus/FileMenu.qml @@ -72,15 +72,15 @@ Cura.Menu Cura.MenuItem { - id: savePCBMenu - text: catalog.i18nc("@title:menu menubar:file", "&Save PCB Project...") + id: saveUCPMenu + text: catalog.i18nc("@title:menu menubar:file", "&Save Universal Cura Project...") enabled: UM.WorkspaceFileHandler.enabled onTriggered: { var args = { "filter_by_machine": false, "file_type": "workspace", - "preferred_mimetypes": "application/x-pcb", - "limit_mimetypes": "application/x-pcb"}; + "preferred_mimetypes": "application/x-ucp", + "limit_mimetypes": "application/x-ucp"}; UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args) } } From e554eb264e4e3f44752addcd9079c0257fdb24c3 Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Mon, 5 Feb 2024 15:44:46 +0100 Subject: [PATCH 057/203] adding logging for debugging CURA-11596 --- cura/SingleInstance.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cura/SingleInstance.py b/cura/SingleInstance.py index 2c3e816767..ef04ef5ddc 100644 --- a/cura/SingleInstance.py +++ b/cura/SingleInstance.py @@ -52,6 +52,7 @@ class SingleInstance: single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding = "ascii")) for filename in self._files_to_open: + Logger.log("i",f"Filename isxxx {os.path(filename)}") payload = {"command": "open", "filePath": os.path.abspath(filename)} single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding = "ascii")) @@ -73,14 +74,18 @@ class SingleInstance: def _onClientConnected(self) -> None: Logger.log("i", "New connection received on our single-instance server") connection = None #type: Optional[QLocalSocket] + Logger.log("i","getting connection") if self._single_instance_server: connection = self._single_instance_server.nextPendingConnection() + Logger.log("i", f"here: {connection}") if connection is not None: + Logger.log("i","here2") connection.readyRead.connect(lambda c = connection: self.__readCommands(c)) def __readCommands(self, connection: QLocalSocket) -> None: line = connection.readLine() + Logger.log("i", f"line read is {line}") while len(line) != 0: # There is also a .canReadLine() try: payload = json.loads(str(line, encoding = "ascii").strip()) From a5d6ae1c97290a24a6598b0c1d9432028f0b61ee Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Tue, 6 Feb 2024 10:55:33 +0100 Subject: [PATCH 058/203] Bug fix: Do not sett the z distance for the AA0.8 cores of T-PLA. PP-424 --- resources/definitions/fdmprinter.def.json | 12 ------------ .../um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg | 1 - .../um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg | 1 - 3 files changed, 14 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 03850a7344..31a67d0122 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6453,18 +6453,6 @@ "settable_per_extruder": true, "limit_to_extruder": "raft_surface_extruder_nr" }, - "raft_surface_monotonic": - { - "label": "Monotonic Raft Top Surface Order", - "description": "Print raft top surface lines in an ordering that causes them to always overlap with adjacent lines in a single direction. This takes slightly more time to print, but makes the surface look more consistent, which is also visible on the model bottom surface.", - "type": "bool", - "default_value": false, - "value": "skin_monotonic", - "enabled": "resolveOrValue('adhesion_type') == 'raft' and raft_surface_layers > 0", - "settable_per_mesh": false, - "settable_per_extruder": true, - "limit_to_extruder": "raft_surface_extruder_nr" - }, "raft_wall_count": { "label": "Raft Wall Count", diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg index 2310f2503f..a76864a1a3 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg @@ -69,7 +69,6 @@ speed_wall_x_roofing = =speed_roofing support_angle = 70 support_interface_enable = False support_structure = tree -support_z_distance = 0.35 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg index b3711c1cbd..4973ec35bb 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg @@ -69,7 +69,6 @@ speed_wall_x_roofing = =speed_roofing support_angle = 70 support_interface_enable = False support_structure = tree -support_z_distance = 0.35 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True From 4bb5eed97e13f3f178d32f9112a79959d6ef9e25 Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Tue, 6 Feb 2024 10:57:25 +0100 Subject: [PATCH 059/203] Bug fix: Do not sett the z distance for the AA0.8 cores of T-PLA. PP-424 --- .../quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg | 1 - .../quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg | 1 - 2 files changed, 2 deletions(-) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg index 2310f2503f..a76864a1a3 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg @@ -69,7 +69,6 @@ speed_wall_x_roofing = =speed_roofing support_angle = 70 support_interface_enable = False support_structure = tree -support_z_distance = 0.35 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg index b3711c1cbd..4973ec35bb 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg @@ -69,7 +69,6 @@ speed_wall_x_roofing = =speed_roofing support_angle = 70 support_interface_enable = False support_structure = tree -support_z_distance = 0.35 top_bottom_thickness = =max(1 , layer_height * 5) wall_0_wipe_dist = 0.8 z_seam_relative = True From 87cd7a47f5380c7292c4a79eabec6a1a348da6aa Mon Sep 17 00:00:00 2001 From: Frederic Meeuwissen <13856291+Frederic98@users.noreply.github.com> Date: Tue, 6 Feb 2024 11:05:11 +0100 Subject: [PATCH 060/203] Revert "Merge remote-tracking branch 'origin/PP-424-Improve-self-support' into PP-424-Improve-self-support" This reverts commit 0e18407286f9ec1e83548a2bf11386f6667f20fd, reversing changes made to 4bb5eed97e13f3f178d32f9112a79959d6ef9e25. --- resources/definitions/fdmprinter.def.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 31a67d0122..03850a7344 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6453,6 +6453,18 @@ "settable_per_extruder": true, "limit_to_extruder": "raft_surface_extruder_nr" }, + "raft_surface_monotonic": + { + "label": "Monotonic Raft Top Surface Order", + "description": "Print raft top surface lines in an ordering that causes them to always overlap with adjacent lines in a single direction. This takes slightly more time to print, but makes the surface look more consistent, which is also visible on the model bottom surface.", + "type": "bool", + "default_value": false, + "value": "skin_monotonic", + "enabled": "resolveOrValue('adhesion_type') == 'raft' and raft_surface_layers > 0", + "settable_per_mesh": false, + "settable_per_extruder": true, + "limit_to_extruder": "raft_surface_extruder_nr" + }, "raft_wall_count": { "label": "Raft Wall Count", From 9c57627a8828d45b2336396b29a572eebc9d5a44 Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Tue, 6 Feb 2024 12:17:38 +0100 Subject: [PATCH 061/203] Adding command for opening url CURA-11596 --- cura/SingleInstance.py | 3 --- packaging/msi/UltiMaker-Cura.wxs.jinja | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/cura/SingleInstance.py b/cura/SingleInstance.py index ef04ef5ddc..fb85e258db 100644 --- a/cura/SingleInstance.py +++ b/cura/SingleInstance.py @@ -74,13 +74,10 @@ class SingleInstance: def _onClientConnected(self) -> None: Logger.log("i", "New connection received on our single-instance server") connection = None #type: Optional[QLocalSocket] - Logger.log("i","getting connection") if self._single_instance_server: connection = self._single_instance_server.nextPendingConnection() - Logger.log("i", f"here: {connection}") if connection is not None: - Logger.log("i","here2") connection.readyRead.connect(lambda c = connection: self.__readCommands(c)) def __readCommands(self, connection: QLocalSocket) -> None: diff --git a/packaging/msi/UltiMaker-Cura.wxs.jinja b/packaging/msi/UltiMaker-Cura.wxs.jinja index 13c5d2842e..1f22dcc8bc 100644 --- a/packaging/msi/UltiMaker-Cura.wxs.jinja +++ b/packaging/msi/UltiMaker-Cura.wxs.jinja @@ -166,6 +166,8 @@ + + From d8cc99bf0deb951d32059e47b7690a0c76babfcb Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Tue, 6 Feb 2024 13:00:31 +0100 Subject: [PATCH 062/203] Remove duplicate paths CURA-11483 --- cura/CuraApplication.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 241113ece7..0cc3d20d58 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -376,13 +376,11 @@ class CuraApplication(QtApplication): if platform.system() == "Darwin": Resources.addSecureSearchPath(os.path.join(app_root, "Resources", "share", "cura", "resources")) - Resources.addSecureSearchPath(os.path.join(app_root, "..", "Resources", "share", "cura", "resources")) Resources.addSecureSearchPath( - os.path.join(self._app_install_dir, "..", "Resources", "share", "cura", "resources")) + os.path.join(self._app_install_dir, "Resources", "share", "cura", "resources")) else: Resources.addSecureSearchPath(os.path.join(app_root, "share", "cura", "resources")) Resources.addSecureSearchPath(os.path.join(self._app_install_dir, "share", "cura", "resources")) - Resources.addSecureSearchPath(os.path.join(app_root, "Resources", "share", "cura", "resources")) if not hasattr(sys, "frozen"): cura_data_root = os.environ.get('CURA_DATA_ROOT', None) From 31f3d6161d764e66c469f9c1d3d6de5cff1c8b76 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Tue, 6 Feb 2024 13:19:42 +0100 Subject: [PATCH 063/203] Add missing file CURA-11561 --- plugins/3MFReader/SpecificSettingsModel.py | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 plugins/3MFReader/SpecificSettingsModel.py diff --git a/plugins/3MFReader/SpecificSettingsModel.py b/plugins/3MFReader/SpecificSettingsModel.py new file mode 100644 index 0000000000..fd5719d6b3 --- /dev/null +++ b/plugins/3MFReader/SpecificSettingsModel.py @@ -0,0 +1,38 @@ +# Copyright (c) 2024 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt6.QtCore import Qt + +from UM.Settings.SettingDefinition import SettingDefinition +from UM.Qt.ListModel import ListModel + + +class SpecificSettingsModel(ListModel): + CategoryRole = Qt.ItemDataRole.UserRole + 1 + LabelRole = Qt.ItemDataRole.UserRole + 2 + ValueRole = Qt.ItemDataRole.UserRole + 3 + + def __init__(self, parent = None): + super().__init__(parent = parent) + self.addRoleName(self.CategoryRole, "category") + self.addRoleName(self.LabelRole, "label") + self.addRoleName(self.ValueRole, "value") + + self._i18n_catalog = None + + def addSettingsFromStack(self, stack, category, settings): + for setting, value in settings.items(): + unit = stack.getProperty(setting, "unit") + + setting_type = stack.getProperty(setting, "type") + if setting_type is not None: + # This is not very good looking, but will do for now + value = SettingDefinition.settingValueToString(setting_type, value) + " " + unit + else: + value = str(value) + + self.appendItem({ + "category": category, + "label": stack.getProperty(setting, "label"), + "value": value + }) From 8073bc0e50473ada7828d707674c9d3822f59b70 Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Tue, 6 Feb 2024 16:04:08 +0100 Subject: [PATCH 064/203] adding this preference in mac-os doesn't work. It always opens it up in singlenstance CURA-11596 --- resources/qml/Preferences/GeneralPage.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 8871944523..0a430eda5d 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -627,6 +627,7 @@ UM.PreferencesPage UM.TooltipArea { width: childrenRect.width + visible: Qt.platform.os !== "osx" height: childrenRect.height text: catalog.i18nc("@info:tooltip","Should opening files from the desktop or external applications open in the same instance of Cura?") From eff45842038373ab436ca67e9fc2173458a09eb5 Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Tue, 6 Feb 2024 16:05:34 +0100 Subject: [PATCH 065/203] adding files in single instance in case of url CURA-11596 --- cura/CuraApplication.py | 2 +- cura/SingleInstance.py | 33 ++++++++++++++----------- packaging/NSIS/Ultimaker-Cura.nsi.jinja | 2 +- packaging/msi/UltiMaker-Cura.wxs.jinja | 4 +-- 4 files changed, 21 insertions(+), 20 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 67c420028b..bae609c07b 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -356,7 +356,7 @@ class CuraApplication(QtApplication): self._machine_action_manager.initialize() def __sendCommandToSingleInstance(self): - self._single_instance = SingleInstance(self, self._files_to_open) + self._single_instance = SingleInstance(self, self._files_to_open, self._open_url_queue) # If we use single instance, try to connect to the single instance server, send commands, and then exit. # If we cannot find an existing single instance server, this is the only instance, so just keep going. diff --git a/cura/SingleInstance.py b/cura/SingleInstance.py index fb85e258db..02fa6622aa 100644 --- a/cura/SingleInstance.py +++ b/cura/SingleInstance.py @@ -7,14 +7,15 @@ from typing import List, Optional from PyQt6.QtNetwork import QLocalServer, QLocalSocket -from UM.Qt.QtApplication import QtApplication #For typing. +from UM.Qt.QtApplication import QtApplication # For typing. from UM.Logger import Logger class SingleInstance: - def __init__(self, application: QtApplication, files_to_open: Optional[List[str]]) -> None: + def __init__(self, application: QtApplication, files_to_open: Optional[List[str]], url_to_open: Optional[List[str]]) -> None: self._application = application self._files_to_open = files_to_open + self._url_to_open = url_to_open self._single_instance_server = None @@ -33,7 +34,7 @@ class SingleInstance: return False # We only send the files that need to be opened. - if not self._files_to_open: + if not self._files_to_open or not self._url_to_open: Logger.log("i", "No file need to be opened, do nothing.") return True @@ -46,18 +47,21 @@ class SingleInstance: if self._application.getPreferences().getValue("cura/single_instance_clear_before_load"): payload = {"command": "clear-all"} - single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding = "ascii")) + single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding="ascii")) payload = {"command": "focus"} - single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding = "ascii")) + single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding="ascii")) for filename in self._files_to_open: - Logger.log("i",f"Filename isxxx {os.path(filename)}") payload = {"command": "open", "filePath": os.path.abspath(filename)} - single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding = "ascii")) + single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding="ascii")) + + for filename in self._url_to_open: + payload = {"command": "open", "urlPath": os.path.abspath(filename)} + single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding="ascii")) payload = {"command": "close-connection"} - single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding = "ascii")) + single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding="ascii")) single_instance_socket.flush() single_instance_socket.waitForDisconnected() @@ -73,7 +77,7 @@ class SingleInstance: def _onClientConnected(self) -> None: Logger.log("i", "New connection received on our single-instance server") - connection = None #type: Optional[QLocalSocket] + connection = None # type: Optional[QLocalSocket] if self._single_instance_server: connection = self._single_instance_server.nextPendingConnection() @@ -82,10 +86,9 @@ class SingleInstance: def __readCommands(self, connection: QLocalSocket) -> None: line = connection.readLine() - Logger.log("i", f"line read is {line}") - while len(line) != 0: # There is also a .canReadLine() + while len(line) != 0: # There is also a .canReadLine() try: - payload = json.loads(str(line, encoding = "ascii").strip()) + payload = json.loads(str(line, encoding="ascii").strip()) command = payload["command"] # Command: Remove all models from the build plate. @@ -96,8 +99,8 @@ class SingleInstance: elif command == "open": if payload["filePath"].file(): self._application.callLater(lambda f = payload["filePath"]: self._application._openFile(f)) - if payload["filePath"].url(): - self._application.callLater(lambda f= payload["filepath"]: self._application._openUrl(f)) + if payload["urlPath"].url(): + self._application.callLater(lambda f = payload["urlPath"]: self._application._openUrl(f)) # Command: Activate the window and bring it to the top. @@ -106,7 +109,7 @@ class SingleInstance: # 'alert' or flashing the icon in the taskbar is the best thing we do now. main_window = self._application.getMainWindow() if main_window is not None: - self._application.callLater(lambda: main_window.alert(0)) # type: ignore # I don't know why MyPy complains here + self._application.callLater(lambda: main_window.alert(0)) # type: ignore # I don't know why MyPy complains here # Command: Close the socket connection. We're done. elif command == "close-connection": diff --git a/packaging/NSIS/Ultimaker-Cura.nsi.jinja b/packaging/NSIS/Ultimaker-Cura.nsi.jinja index 2106c47312..0a2ce0f517 100644 --- a/packaging/NSIS/Ultimaker-Cura.nsi.jinja +++ b/packaging/NSIS/Ultimaker-Cura.nsi.jinja @@ -156,7 +156,7 @@ WriteRegStr HKCR "slicer" "" "URL:slicer" WriteRegStr HKCR "slicer" "URL Protocol" "" WriteRegStr HKCR "slicer\DefaultIcon" "" "$INSTDIR\${MAIN_APP_EXE},1" WriteRegStr HKCR "slicer\shell" "" "open" -WriteRegStr HKCR "slicer\shell\open\command" "" '"$INSTDIR\${MAIN_APP_EXE}" --single-instance "%1"' +WriteRegStr HKCR "slicer\shell\open\command" "" '"$INSTDIR\${MAIN_APP_EXE}" "%1"' SectionEnd ###################################################################### diff --git a/packaging/msi/UltiMaker-Cura.wxs.jinja b/packaging/msi/UltiMaker-Cura.wxs.jinja index 1f22dcc8bc..21f017c813 100644 --- a/packaging/msi/UltiMaker-Cura.wxs.jinja +++ b/packaging/msi/UltiMaker-Cura.wxs.jinja @@ -165,9 +165,7 @@ - - - + From 664fa4f48d215d9cf52e5f2437bd0ac21a1f9ba5 Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Tue, 6 Feb 2024 16:19:01 +0100 Subject: [PATCH 066/203] assigning different command for opening url CURA-11596 --- cura/SingleInstance.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/cura/SingleInstance.py b/cura/SingleInstance.py index 02fa6622aa..3357d22d30 100644 --- a/cura/SingleInstance.py +++ b/cura/SingleInstance.py @@ -56,8 +56,8 @@ class SingleInstance: payload = {"command": "open", "filePath": os.path.abspath(filename)} single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding="ascii")) - for filename in self._url_to_open: - payload = {"command": "open", "urlPath": os.path.abspath(filename)} + for url in self._url_to_open: + payload = {"command": "open-url", "urlPath": url} single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding="ascii")) payload = {"command": "close-connection"} @@ -88,7 +88,7 @@ class SingleInstance: line = connection.readLine() while len(line) != 0: # There is also a .canReadLine() try: - payload = json.loads(str(line, encoding="ascii").strip()) + payload = json.loads(str(line, encoding = "ascii").strip()) command = payload["command"] # Command: Remove all models from the build plate. @@ -97,10 +97,11 @@ class SingleInstance: # Command: Load a model or project file elif command == "open": - if payload["filePath"].file(): - self._application.callLater(lambda f = payload["filePath"]: self._application._openFile(f)) - if payload["urlPath"].url(): - self._application.callLater(lambda f = payload["urlPath"]: self._application._openUrl(f)) + self._application.callLater(lambda f = payload["filePath"]: self._application._openFile(f)) + + #command: Load a url link in Cura + elif command == "open-url": + self._application.callLater(lambda f = payload["urlPath"]: self._application._openUrl(f)) # Command: Activate the window and bring it to the top. From 627bef2eabfd3b3d1560e0df34929d0a46e1c566 Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Tue, 6 Feb 2024 19:34:12 +0100 Subject: [PATCH 067/203] Enable monotonic raft surface for all Ultimaker machines. Disable skin_monotonic for Method XL machines (speed increase), roofing_monotonic is still enable to create a good top surface. PP-430 --- resources/definitions/ultimaker.def.json | 1 + resources/definitions/ultimaker_method_base.def.json | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 1669dd5e00..97eaf278e8 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -96,6 +96,7 @@ "raft_interface_thickness": { "value": "(raft_base_thickness + raft_surface_thickness) / 2" }, "raft_speed": { "value": 15 }, "raft_surface_fan_speed": { "value": "cool_fan_speed_min" }, + "raft_surface_monotonic": { "value": true }, "raft_surface_speed": { "value": "speed_topbottom" }, "relative_extrusion": { diff --git a/resources/definitions/ultimaker_method_base.def.json b/resources/definitions/ultimaker_method_base.def.json index f0808c529e..19fe80b2e2 100644 --- a/resources/definitions/ultimaker_method_base.def.json +++ b/resources/definitions/ultimaker_method_base.def.json @@ -380,7 +380,6 @@ "roofing_material_flow": { "value": "material_flow" }, "roofing_monotonic": { "value": true }, "skin_material_flow": { "value": "0.95*material_flow" }, - "skin_monotonic": { "value": true }, "skin_outline_count": { "value": 0 }, "skin_overlap": { "value": 0 }, "skin_preshrink": { "value": 0 }, From 671698d1a3efe77043501b462507d8f8a2ed7429 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Wed, 7 Feb 2024 08:49:05 +0100 Subject: [PATCH 068/203] Restore useless import version bump CURA-11561 --- plugins/3MFReader/WorkspaceDialog.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index b6a9d59751..8d06b32e14 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -1,7 +1,7 @@ // Copyright (c) 2022 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.14 +import QtQuick 2.10 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 import QtQuick.Window 2.2 From bb28a7c5063666b138be862acd607e0fa47a8d42 Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Wed, 7 Feb 2024 11:00:54 +0100 Subject: [PATCH 069/203] fixing the if condition CURA-11596 --- cura/SingleInstance.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/cura/SingleInstance.py b/cura/SingleInstance.py index 3357d22d30..c4590fc275 100644 --- a/cura/SingleInstance.py +++ b/cura/SingleInstance.py @@ -5,6 +5,7 @@ import json import os from typing import List, Optional +from PyQt6.QtCore import QUrl from PyQt6.QtNetwork import QLocalServer, QLocalSocket from UM.Qt.QtApplication import QtApplication # For typing. @@ -34,7 +35,7 @@ class SingleInstance: return False # We only send the files that need to be opened. - if not self._files_to_open or not self._url_to_open: + if not self._files_to_open and not self._url_to_open: Logger.log("i", "No file need to be opened, do nothing.") return True @@ -47,17 +48,17 @@ class SingleInstance: if self._application.getPreferences().getValue("cura/single_instance_clear_before_load"): payload = {"command": "clear-all"} - single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding="ascii")) + single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding = "ascii")) payload = {"command": "focus"} - single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding="ascii")) + single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding = "ascii")) for filename in self._files_to_open: payload = {"command": "open", "filePath": os.path.abspath(filename)} - single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding="ascii")) + single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding = "ascii")) for url in self._url_to_open: - payload = {"command": "open-url", "urlPath": url} + payload = {"command": "open-url", "urlPath": url.toString()} single_instance_socket.write(bytes(json.dumps(payload) + "\n", encoding="ascii")) payload = {"command": "close-connection"} @@ -82,10 +83,12 @@ class SingleInstance: connection = self._single_instance_server.nextPendingConnection() if connection is not None: + x = self.__readCommands(connection) connection.readyRead.connect(lambda c = connection: self.__readCommands(c)) def __readCommands(self, connection: QLocalSocket) -> None: line = connection.readLine() + print(f"line is {line}") while len(line) != 0: # There is also a .canReadLine() try: payload = json.loads(str(line, encoding = "ascii").strip()) @@ -101,7 +104,8 @@ class SingleInstance: #command: Load a url link in Cura elif command == "open-url": - self._application.callLater(lambda f = payload["urlPath"]: self._application._openUrl(f)) + url = QUrl(payload["urlPath"]) + self._application.callLater(lambda f = url: self._application._openUrl(f)) # Command: Activate the window and bring it to the top. From 206b53072465273db18be15ca398ae116157dbb1 Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Wed, 7 Feb 2024 11:05:48 +0100 Subject: [PATCH 070/203] Removing debug statement CURA-11596 --- cura/SingleInstance.py | 1 - 1 file changed, 1 deletion(-) diff --git a/cura/SingleInstance.py b/cura/SingleInstance.py index c4590fc275..c081044201 100644 --- a/cura/SingleInstance.py +++ b/cura/SingleInstance.py @@ -88,7 +88,6 @@ class SingleInstance: def __readCommands(self, connection: QLocalSocket) -> None: line = connection.readLine() - print(f"line is {line}") while len(line) != 0: # There is also a .canReadLine() try: payload = json.loads(str(line, encoding = "ascii").strip()) From 313a7f7068ef494e4e1b6f4fd84669434340302a Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Wed, 7 Feb 2024 12:16:01 +0100 Subject: [PATCH 071/203] remove debug statement CURA-11596 --- cura/SingleInstance.py | 1 - 1 file changed, 1 deletion(-) diff --git a/cura/SingleInstance.py b/cura/SingleInstance.py index c081044201..8c4018a4f7 100644 --- a/cura/SingleInstance.py +++ b/cura/SingleInstance.py @@ -83,7 +83,6 @@ class SingleInstance: connection = self._single_instance_server.nextPendingConnection() if connection is not None: - x = self.__readCommands(connection) connection.readyRead.connect(lambda c = connection: self.__readCommands(c)) def __readCommands(self, connection: QLocalSocket) -> None: From d2e8999e453eacc6bfcc633592c2249d1d730b2a Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Wed, 7 Feb 2024 15:20:52 +0100 Subject: [PATCH 072/203] creating pyqtslot for desired functionality CURA-11596 --- cura/CuraApplication.py | 4 ++++ resources/qml/Preferences/MachinesPage.qml | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index edf4353ae8..f8b3894ed9 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1101,6 +1101,10 @@ class CuraApplication(QtApplication): self._object_manager = ObjectsModel(self) return self._object_manager + @pyqtSlot(str, result = "QVariantList") + def getSupportedActionMachineList(self, definition_id: str) -> List["MachineAction"]: + return self._machine_action_manager.getSupportedActions(self._machine_manager.getDefinitionByMachineId(definition_id)) + @pyqtSlot(result = QObject) def getExtrudersModel(self, *args) -> "ExtrudersModel": if self._extruders_model is None: diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml index 845c6cf492..1e287e74a0 100644 --- a/resources/qml/Preferences/MachinesPage.qml +++ b/resources/qml/Preferences/MachinesPage.qml @@ -12,7 +12,6 @@ import Cura 1.0 as Cura UM.ManagementPage { id: base - property var machineActionManager: CuraApplication.getMachineActionManager() Item { enabled: false; UM.I18nCatalog { id: catalog; name: "cura"} } title: catalog.i18nc("@title:tab", "Printers") @@ -63,7 +62,7 @@ UM.ManagementPage Repeater { id: machineActionRepeater - model: base.currentItem.id ? machineActionManager.getSupportedActions(Cura.MachineManager.getDefinitionByMachineId(base.currentItem.id)) : null + model: base.currentItem ? CuraApplication.getSupportedActionMachineList(base.currentItem.id) : null Item { From cf1a7889c237a25e92f6307572e750d4dc3ae822 Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Wed, 7 Feb 2024 17:01:56 +0100 Subject: [PATCH 073/203] mimicing behavior as files to open CURA-11596 --- cura/CuraApplication.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 8a87ba448c..51ceecd7dd 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -180,6 +180,7 @@ class CuraApplication(QtApplication): # Variables set from CLI self._files_to_open = [] + self._urls_to_open = [] self._use_single_instance = False self._single_instance = None @@ -334,7 +335,7 @@ class CuraApplication(QtApplication): for filename in self._cli_args.file: url = QUrl(filename) if url.scheme() in self._supported_url_schemes: - self._open_url_queue.append(url) + self._urls_to_open.append(url) else: self._files_to_open.append(os.path.abspath(filename)) @@ -357,7 +358,7 @@ class CuraApplication(QtApplication): self._machine_action_manager.initialize() def __sendCommandToSingleInstance(self): - self._single_instance = SingleInstance(self, self._files_to_open, self._open_url_queue) + self._single_instance = SingleInstance(self, self._files_to_open, self._urls_to_open) # If we use single instance, try to connect to the single instance server, send commands, and then exit. # If we cannot find an existing single instance server, this is the only instance, so just keep going. @@ -963,6 +964,8 @@ class CuraApplication(QtApplication): self.callLater(self._openFile, file_name) for file_name in self._open_file_queue: # Open all the files that were queued up while plug-ins were loading. self.callLater(self._openFile, file_name) + for url in self._urls_to_open: + self.callLater(self._openUrl, url) for url in self._open_url_queue: self.callLater(self._openUrl, url) From 495be39d1f7b4c62419edd5742a497f123c2f741 Mon Sep 17 00:00:00 2001 From: Saumya Jain <70144862+saumyaj3@users.noreply.github.com> Date: Thu, 8 Feb 2024 10:51:49 +0100 Subject: [PATCH 074/203] Update cura/SingleInstance.py Co-authored-by: Casper Lamboo --- cura/SingleInstance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/SingleInstance.py b/cura/SingleInstance.py index 8c4018a4f7..0448ddc647 100644 --- a/cura/SingleInstance.py +++ b/cura/SingleInstance.py @@ -103,7 +103,7 @@ class SingleInstance: #command: Load a url link in Cura elif command == "open-url": url = QUrl(payload["urlPath"]) - self._application.callLater(lambda f = url: self._application._openUrl(f)) + self._application.callLater(lambda: self._application._openUrl(url)) # Command: Activate the window and bring it to the top. From a251a5d2ca1cdba0a1d8971968b49f5076720c95 Mon Sep 17 00:00:00 2001 From: Saumya Jain <70144862+saumyaj3@users.noreply.github.com> Date: Thu, 8 Feb 2024 10:51:56 +0100 Subject: [PATCH 075/203] Update resources/qml/Preferences/GeneralPage.qml Co-authored-by: Casper Lamboo --- resources/qml/Preferences/GeneralPage.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 0a430eda5d..c313ffbd94 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -627,6 +627,7 @@ UM.PreferencesPage UM.TooltipArea { width: childrenRect.width + // Mac only allows applications to run as a single instance, so providing the option for this os doesn't make much sense visible: Qt.platform.os !== "osx" height: childrenRect.height text: catalog.i18nc("@info:tooltip","Should opening files from the desktop or external applications open in the same instance of Cura?") From 2d82bb94abc92d5ff2e4e0a60e307d44d5cbd8b2 Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Thu, 8 Feb 2024 16:20:02 +0100 Subject: [PATCH 076/203] Set retraction_min_travel to 5mm for all S-line and Method machines. This improves the infill pattern wall overlaps (for TPU top surfaces and raft base layers) and reduces the amount of retracts in tree supports islands. It also cleans up the settings. PP-389 --- resources/definitions/ultimaker.def.json | 1 + resources/definitions/ultimaker3.def.json | 1 - resources/definitions/ultimaker_method_base.def.json | 1 - resources/definitions/ultimaker_s3.def.json | 1 - resources/definitions/ultimaker_s5.def.json | 1 - resources/quality/ultimaker_s3/um_s3_aa0.25_nylon_0.1mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg | 1 - resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.25_nylon_0.1mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg | 1 - resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg | 1 - resources/variants/ultimaker_s3_aa0.25.inst.cfg | 1 - resources/variants/ultimaker_s3_aa0.8.inst.cfg | 1 - resources/variants/ultimaker_s3_aa04.inst.cfg | 1 - resources/variants/ultimaker_s3_bb0.8.inst.cfg | 1 - resources/variants/ultimaker_s3_bb04.inst.cfg | 1 - resources/variants/ultimaker_s3_cc04.inst.cfg | 1 - resources/variants/ultimaker_s3_cc06.inst.cfg | 1 - resources/variants/ultimaker_s5_aa0.25.inst.cfg | 1 - resources/variants/ultimaker_s5_aa0.8.inst.cfg | 1 - resources/variants/ultimaker_s5_aa04.inst.cfg | 1 - resources/variants/ultimaker_s5_bb0.8.inst.cfg | 1 - resources/variants/ultimaker_s5_bb04.inst.cfg | 1 - resources/variants/ultimaker_s5_cc04.inst.cfg | 1 - resources/variants/ultimaker_s5_cc06.inst.cfg | 1 - resources/variants/ultimaker_s7_aa0.25.inst.cfg | 1 - resources/variants/ultimaker_s7_aa0.8.inst.cfg | 1 - resources/variants/ultimaker_s7_aa04.inst.cfg | 1 - resources/variants/ultimaker_s7_bb0.8.inst.cfg | 1 - resources/variants/ultimaker_s7_bb04.inst.cfg | 1 - resources/variants/ultimaker_s7_cc04.inst.cfg | 1 - resources/variants/ultimaker_s7_cc06.inst.cfg | 1 - 64 files changed, 1 insertion(+), 63 deletions(-) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 1669dd5e00..dae64cea6b 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -106,6 +106,7 @@ "retraction_combing_max_distance": { "value": 15 }, "retraction_count_max": { "value": 25 }, "retraction_extrusion_window": { "value": 1 }, + "retraction_min_travel": { "value": 5 }, "roofing_layer_count": { "value": "1" }, "roofing_material_flow": { "value": "material_flow" }, "skin_angles": { "value": "[] if infill_pattern not in ['cross', 'cross_3d'] else [20, 110]" }, diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index 19df92c08d..17a4b6045e 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -156,7 +156,6 @@ "retraction_hop": { "value": "2" }, "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" }, "retraction_hop_only_when_collides": { "value": "True" }, - "retraction_min_travel": { "value": "5" }, "retraction_prime_speed": { "value": "15" }, "skin_overlap": { "value": "10" }, "speed_prime_tower": { "value": "speed_topbottom" }, diff --git a/resources/definitions/ultimaker_method_base.def.json b/resources/definitions/ultimaker_method_base.def.json index f0808c529e..6e40f0bbf1 100644 --- a/resources/definitions/ultimaker_method_base.def.json +++ b/resources/definitions/ultimaker_method_base.def.json @@ -373,7 +373,6 @@ "retraction_hop": { "value": 0.4 }, "retraction_hop_enabled": { "value": true }, "retraction_hop_only_when_collides": { "value": false }, - "retraction_min_travel": { "value": "line_width * 4" }, "retraction_prime_speed": { "value": "retraction_speed" }, "retraction_speed": { "value": 5 }, "roofing_layer_count": { "value": 2 }, diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json index add1782368..483825df5a 100644 --- a/resources/definitions/ultimaker_s3.def.json +++ b/resources/definitions/ultimaker_s3.def.json @@ -108,7 +108,6 @@ "retraction_hop": { "value": "2" }, "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" }, "retraction_hop_only_when_collides": { "value": "True" }, - "retraction_min_travel": { "value": "5" }, "retraction_prime_speed": { "value": "15" }, "retraction_speed": { "value": "45" }, "speed_prime_tower": { "value": "speed_topbottom" }, diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index ec82e6b630..cd48c4fd38 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -110,7 +110,6 @@ "retraction_hop": { "value": "2" }, "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" }, "retraction_hop_only_when_collides": { "value": "True" }, - "retraction_min_travel": { "value": "5" }, "retraction_prime_speed": { "value": "15" }, "retraction_speed": { "value": "45" }, "speed_prime_tower": { "value": "speed_topbottom" }, diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_nylon_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_nylon_0.1mm.inst.cfg index c6d99b63b5..e0d3aa4d50 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_nylon_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_nylon_0.1mm.inst.cfg @@ -17,7 +17,6 @@ machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 20 ooze_shield_angle = 40 raft_airgap = 0.4 -retraction_min_travel = 5 speed_print = 70 speed_topbottom = =math.ceil(speed_print * 30 / 70) speed_wall = =math.ceil(speed_print * 30 / 70) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg index ec86494397..369cbcd563 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg @@ -25,7 +25,6 @@ prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg index 77082932a5..6485844da8 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg @@ -28,7 +28,6 @@ retraction_count_max = 15 retraction_extra_prime_amount = 0.2 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 retraction_prime_speed = 15 speed_print = 25 speed_wall = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg index f46f816cfb..c9eebee8a0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg @@ -26,7 +26,6 @@ prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg index 2c23449373..bcd04f4b24 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg @@ -25,7 +25,6 @@ prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg index e0899c8dc2..278e502231 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg @@ -26,7 +26,6 @@ prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg index 329bd095d5..1baf43933c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg @@ -25,7 +25,6 @@ prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg index eee8fc31b6..3b106196f2 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg @@ -28,7 +28,6 @@ retraction_count_max = 15 retraction_extra_prime_amount = 0.8 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_wall = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg index fa87825718..455338a901 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg @@ -29,7 +29,6 @@ retraction_count_max = 15 retraction_extra_prime_amount = 0.8 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_wall = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg index 6c90ec685f..b1f5e1f19a 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg @@ -29,7 +29,6 @@ retraction_count_max = 15 retraction_extra_prime_amount = 0.8 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_wall = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg index 15018203e9..601886a065 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg @@ -28,7 +28,6 @@ prime_tower_wipe_enabled = True retraction_count_max = 15 retraction_extra_prime_amount = 0.8 retraction_hop_only_when_collides = True -retraction_min_travel = =line_width * 2 skin_line_width = =round(line_width / 0.8, 2) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 0.8) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg index 1b9912c1d6..bb303eeb33 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg @@ -29,7 +29,6 @@ prime_tower_wipe_enabled = True retraction_count_max = 15 retraction_extra_prime_amount = 0.8 retraction_hop_only_when_collides = True -retraction_min_travel = =line_width * 2 skin_line_width = =round(line_width / 0.8, 2) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 0.8) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg index 971cee7b3a..85c37d439d 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg @@ -28,7 +28,6 @@ prime_tower_wipe_enabled = True retraction_count_max = 15 retraction_extra_prime_amount = 0.8 retraction_hop_only_when_collides = True -retraction_min_travel = =line_width * 2 skin_line_width = =round(line_width / 0.8, 2) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 0.8) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg index 163f32a36d..7619fcf43d 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg @@ -24,7 +24,6 @@ prime_tower_min_volume = 10 retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 -retraction_min_travel = 1.5 retraction_prime_speed = 15 speed_wall_x = =math.ceil(speed_wall * 30 / 30) switch_extruder_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg index 3f75c3366e..b157ed198c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg @@ -24,7 +24,6 @@ prime_tower_min_volume = 15 retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 -retraction_min_travel = 1.5 retraction_prime_speed = 15 speed_wall_x = =math.ceil(speed_wall * 30 / 30) switch_extruder_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg index b2c5dab3c4..550a26c7f8 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg @@ -24,7 +24,6 @@ prime_tower_min_volume = 20 retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 -retraction_min_travel = 1.5 retraction_prime_speed = 15 speed_infill = =math.ceil(speed_wall * 30 / 30) speed_wall_x = =math.ceil(speed_wall * 30 / 30) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg index 75949f45aa..5d6ce58f7c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg @@ -27,7 +27,6 @@ retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False -retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 speed_print = 30 speed_topbottom = =math.ceil(speed_print * 25 / 30) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg index 034bda5d09..1b69ada75d 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg @@ -28,7 +28,6 @@ retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False -retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 speed_print = 30 speed_topbottom = =math.ceil(speed_print * 23 / 30) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg index e7189d5467..d678d7e178 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg @@ -27,7 +27,6 @@ retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False -retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 speed_infill = =speed_print speed_print = 30 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_nylon_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_nylon_0.1mm.inst.cfg index 38267fcf24..ea86a9a9a6 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_nylon_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_nylon_0.1mm.inst.cfg @@ -17,7 +17,6 @@ machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 20 ooze_shield_angle = 40 raft_airgap = 0.4 -retraction_min_travel = 5 speed_print = 70 speed_topbottom = =math.ceil(speed_print * 30 / 70) speed_wall = =math.ceil(speed_print * 30 / 70) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg index 5779142162..eef6e66a5e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg @@ -25,7 +25,6 @@ prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg index 64b1be79aa..56689c4bfa 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg @@ -28,7 +28,6 @@ retraction_count_max = 15 retraction_extra_prime_amount = 0.2 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 retraction_prime_speed = 15 speed_print = 25 speed_wall = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg index 0b471a8c75..c58107dcf9 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg @@ -26,7 +26,6 @@ prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg index 6c9710e436..b210b894e5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg @@ -25,7 +25,6 @@ prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg index 945b77e699..aa17d35a97 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg @@ -26,7 +26,6 @@ prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg index b523e3c646..616443b129 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg @@ -25,7 +25,6 @@ prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg index 85e892628d..8eb0d257d6 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg @@ -28,7 +28,6 @@ retraction_count_max = 15 retraction_extra_prime_amount = 0.8 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_wall = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg index 531f946ba8..bd4dd317bb 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg @@ -29,7 +29,6 @@ retraction_count_max = 15 retraction_extra_prime_amount = 0.8 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_wall = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg index a7f63a76b1..1e5ea9efb6 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg @@ -29,7 +29,6 @@ retraction_count_max = 15 retraction_extra_prime_amount = 0.8 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_wall = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg index 0b69ae0c43..db01865cf8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg @@ -28,7 +28,6 @@ prime_tower_wipe_enabled = True retraction_count_max = 15 retraction_extra_prime_amount = 0.8 retraction_hop_only_when_collides = True -retraction_min_travel = =line_width * 2 skin_line_width = =round(line_width / 0.8, 2) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 0.8) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg index 29aa42a436..27a8bb863b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg @@ -29,7 +29,6 @@ prime_tower_wipe_enabled = True retraction_count_max = 15 retraction_extra_prime_amount = 0.8 retraction_hop_only_when_collides = True -retraction_min_travel = =line_width * 2 skin_line_width = =round(line_width / 0.8, 2) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 0.8) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg index 48e6ffb81b..cf3069ee0f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg @@ -28,7 +28,6 @@ prime_tower_wipe_enabled = True retraction_count_max = 15 retraction_extra_prime_amount = 0.8 retraction_hop_only_when_collides = True -retraction_min_travel = =line_width * 2 skin_line_width = =round(line_width / 0.8, 2) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 0.8) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg index 149104700e..c338c4b7ff 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg @@ -24,7 +24,6 @@ prime_tower_min_volume = 10 retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 -retraction_min_travel = 1.5 retraction_prime_speed = 15 speed_wall_x = =math.ceil(speed_wall * 30 / 30) switch_extruder_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg index 670ec78d51..62d9eb235d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg @@ -24,7 +24,6 @@ prime_tower_min_volume = 15 retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 -retraction_min_travel = 1.5 retraction_prime_speed = 15 speed_wall_x = =math.ceil(speed_wall * 30 / 30) switch_extruder_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg index c9b5c26d64..b2792b6fee 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg @@ -24,7 +24,6 @@ prime_tower_min_volume = 20 retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 -retraction_min_travel = 1.5 retraction_prime_speed = 15 speed_infill = =math.ceil(speed_wall * 30 / 30) speed_wall_x = =math.ceil(speed_wall * 30 / 30) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg index 43436cd4c7..2491d0ed88 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg @@ -27,7 +27,6 @@ retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False -retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 speed_print = 30 speed_topbottom = =math.ceil(speed_print * 25 / 30) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg index 58b524dd2a..e975175ce0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg @@ -28,7 +28,6 @@ retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False -retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 speed_print = 30 speed_topbottom = =math.ceil(speed_print * 23 / 30) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg index d17ec5486a..5334fac1f0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg @@ -27,7 +27,6 @@ retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False -retraction_min_travel = =line_width * 2 speed_infill = =speed_print speed_print = 30 speed_topbottom = =math.ceil(speed_print * 20 / 30) diff --git a/resources/variants/ultimaker_s3_aa0.25.inst.cfg b/resources/variants/ultimaker_s3_aa0.25.inst.cfg index 1f3baa432f..97b303035c 100644 --- a/resources/variants/ultimaker_s3_aa0.25.inst.cfg +++ b/resources/variants/ultimaker_s3_aa0.25.inst.cfg @@ -16,7 +16,6 @@ machine_nozzle_heat_up_speed = 1.5 machine_nozzle_id = AA 0.25 machine_nozzle_size = 0.25 machine_nozzle_tip_outer_diameter = 0.65 -retraction_min_travel = 0.7 retraction_prime_speed = =retraction_speed speed_print = 55 speed_topbottom = 20 diff --git a/resources/variants/ultimaker_s3_aa0.8.inst.cfg b/resources/variants/ultimaker_s3_aa0.8.inst.cfg index c30365897b..e7d3487503 100644 --- a/resources/variants/ultimaker_s3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker_s3_aa0.8.inst.cfg @@ -29,7 +29,6 @@ raft_surface_layers = 1 retraction_amount = 6.5 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = =line_width * 2 retraction_speed = 25 speed_print = 35 speed_topbottom = =math.ceil(speed_print * 25 / 35) diff --git a/resources/variants/ultimaker_s3_aa04.inst.cfg b/resources/variants/ultimaker_s3_aa04.inst.cfg index b3f76758f4..76992b5805 100644 --- a/resources/variants/ultimaker_s3_aa04.inst.cfg +++ b/resources/variants/ultimaker_s3_aa04.inst.cfg @@ -14,7 +14,6 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_id = AA 0.4 machine_nozzle_tip_outer_diameter = 1.0 retraction_amount = 6.5 -retraction_min_travel = =line_width * 2 speed_print = 70 speed_topbottom = =math.ceil(speed_print * 30 / 70) speed_wall = =math.ceil(speed_print * 30 / 70) diff --git a/resources/variants/ultimaker_s3_bb0.8.inst.cfg b/resources/variants/ultimaker_s3_bb0.8.inst.cfg index 34e1b6d308..d0f78ac3bd 100644 --- a/resources/variants/ultimaker_s3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s3_bb0.8.inst.cfg @@ -30,7 +30,6 @@ prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = =line_width * 3 speed_prime_tower = =math.ceil(speed_print * 7 / 35) speed_print = 35 speed_support = =math.ceil(speed_print * 25 / 35) diff --git a/resources/variants/ultimaker_s3_bb04.inst.cfg b/resources/variants/ultimaker_s3_bb04.inst.cfg index e50241aa3a..4e232cbb5e 100644 --- a/resources/variants/ultimaker_s3_bb04.inst.cfg +++ b/resources/variants/ultimaker_s3_bb04.inst.cfg @@ -16,7 +16,6 @@ acceleration_support_interface = =math.ceil(acceleration_support * 1500 / 2000) machine_nozzle_heat_up_speed = 1.5 machine_nozzle_id = BB 0.4 machine_nozzle_tip_outer_diameter = 1.0 -retraction_min_travel = =3 * line_width speed_prime_tower = =math.ceil(speed_print * 10 / 35) speed_support = =math.ceil(speed_print * 25 / 35) speed_support_interface = =math.ceil(speed_support * 20 / 25) diff --git a/resources/variants/ultimaker_s3_cc04.inst.cfg b/resources/variants/ultimaker_s3_cc04.inst.cfg index 19192bfba6..38f04547aa 100644 --- a/resources/variants/ultimaker_s3_cc04.inst.cfg +++ b/resources/variants/ultimaker_s3_cc04.inst.cfg @@ -13,7 +13,6 @@ brim_width = 7 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_id = CC 0.4 machine_nozzle_size = 0.4 -retraction_min_travel = =line_width * 2 retraction_prime_speed = =retraction_speed speed_infill = =speed_print speed_print = 45 diff --git a/resources/variants/ultimaker_s3_cc06.inst.cfg b/resources/variants/ultimaker_s3_cc06.inst.cfg index 925a9f68d6..e42817e8f8 100644 --- a/resources/variants/ultimaker_s3_cc06.inst.cfg +++ b/resources/variants/ultimaker_s3_cc06.inst.cfg @@ -13,7 +13,6 @@ brim_width = 7 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_id = CC 0.6 machine_nozzle_size = 0.6 -retraction_min_travel = =line_width * 2 retraction_prime_speed = =retraction_speed speed_infill = =speed_print speed_print = 45 diff --git a/resources/variants/ultimaker_s5_aa0.25.inst.cfg b/resources/variants/ultimaker_s5_aa0.25.inst.cfg index 519b21c920..08ed6132f5 100644 --- a/resources/variants/ultimaker_s5_aa0.25.inst.cfg +++ b/resources/variants/ultimaker_s5_aa0.25.inst.cfg @@ -16,7 +16,6 @@ machine_nozzle_heat_up_speed = 1.5 machine_nozzle_id = AA 0.25 machine_nozzle_size = 0.25 machine_nozzle_tip_outer_diameter = 0.65 -retraction_min_travel = 0.7 retraction_prime_speed = =retraction_speed speed_print = 55 speed_topbottom = 20 diff --git a/resources/variants/ultimaker_s5_aa0.8.inst.cfg b/resources/variants/ultimaker_s5_aa0.8.inst.cfg index b482c418f0..04a3a97d11 100644 --- a/resources/variants/ultimaker_s5_aa0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_aa0.8.inst.cfg @@ -29,7 +29,6 @@ raft_surface_layers = 1 retraction_amount = 6.5 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = =line_width * 2 retraction_speed = 25 speed_print = 35 speed_topbottom = =math.ceil(speed_print * 25 / 35) diff --git a/resources/variants/ultimaker_s5_aa04.inst.cfg b/resources/variants/ultimaker_s5_aa04.inst.cfg index 09f528162d..fd4f1ff778 100644 --- a/resources/variants/ultimaker_s5_aa04.inst.cfg +++ b/resources/variants/ultimaker_s5_aa04.inst.cfg @@ -14,7 +14,6 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_id = AA 0.4 machine_nozzle_tip_outer_diameter = 1.0 retraction_amount = 6.5 -retraction_min_travel = =line_width * 2 speed_print = 70 speed_topbottom = =math.ceil(speed_print * 30 / 70) speed_wall = =math.ceil(speed_print * 30 / 70) diff --git a/resources/variants/ultimaker_s5_bb0.8.inst.cfg b/resources/variants/ultimaker_s5_bb0.8.inst.cfg index 660a6b10f4..07b556d206 100644 --- a/resources/variants/ultimaker_s5_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_bb0.8.inst.cfg @@ -30,7 +30,6 @@ prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = =line_width * 3 speed_prime_tower = =math.ceil(speed_print * 7 / 35) speed_print = 35 speed_support = =math.ceil(speed_print * 25 / 35) diff --git a/resources/variants/ultimaker_s5_bb04.inst.cfg b/resources/variants/ultimaker_s5_bb04.inst.cfg index 2058185bb8..7959fc75c2 100644 --- a/resources/variants/ultimaker_s5_bb04.inst.cfg +++ b/resources/variants/ultimaker_s5_bb04.inst.cfg @@ -16,7 +16,6 @@ acceleration_support_interface = =math.ceil(acceleration_support * 1500 / 2000) machine_nozzle_heat_up_speed = 1.5 machine_nozzle_id = BB 0.4 machine_nozzle_tip_outer_diameter = 1.0 -retraction_min_travel = =3 * line_width speed_prime_tower = =math.ceil(speed_print * 10 / 35) speed_support = =math.ceil(speed_print * 25 / 35) speed_support_interface = =math.ceil(speed_support * 20 / 25) diff --git a/resources/variants/ultimaker_s5_cc04.inst.cfg b/resources/variants/ultimaker_s5_cc04.inst.cfg index ef64dc0ae4..5510d0126f 100644 --- a/resources/variants/ultimaker_s5_cc04.inst.cfg +++ b/resources/variants/ultimaker_s5_cc04.inst.cfg @@ -13,7 +13,6 @@ brim_width = 7 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_id = CC 0.4 machine_nozzle_size = 0.4 -retraction_min_travel = =line_width * 2 retraction_prime_speed = =retraction_speed speed_infill = =speed_print speed_print = 45 diff --git a/resources/variants/ultimaker_s5_cc06.inst.cfg b/resources/variants/ultimaker_s5_cc06.inst.cfg index ba33bab17b..a49c790e4f 100644 --- a/resources/variants/ultimaker_s5_cc06.inst.cfg +++ b/resources/variants/ultimaker_s5_cc06.inst.cfg @@ -13,7 +13,6 @@ brim_width = 7 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_id = CC 0.6 machine_nozzle_size = 0.6 -retraction_min_travel = =line_width * 2 retraction_prime_speed = =retraction_speed speed_infill = =speed_print speed_print = 45 diff --git a/resources/variants/ultimaker_s7_aa0.25.inst.cfg b/resources/variants/ultimaker_s7_aa0.25.inst.cfg index 1495af6c48..fc1bdcfef2 100644 --- a/resources/variants/ultimaker_s7_aa0.25.inst.cfg +++ b/resources/variants/ultimaker_s7_aa0.25.inst.cfg @@ -16,7 +16,6 @@ machine_nozzle_heat_up_speed = 1.5 machine_nozzle_id = AA 0.25 machine_nozzle_size = 0.25 machine_nozzle_tip_outer_diameter = 0.65 -retraction_min_travel = 0.7 retraction_prime_speed = =retraction_speed speed_print = 55 speed_topbottom = 20 diff --git a/resources/variants/ultimaker_s7_aa0.8.inst.cfg b/resources/variants/ultimaker_s7_aa0.8.inst.cfg index a5b6a66516..b3253f7d25 100644 --- a/resources/variants/ultimaker_s7_aa0.8.inst.cfg +++ b/resources/variants/ultimaker_s7_aa0.8.inst.cfg @@ -29,7 +29,6 @@ raft_surface_layers = 1 retraction_amount = 6.5 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = =line_width * 2 retraction_speed = 25 speed_print = 35 speed_topbottom = =math.ceil(speed_print * 25 / 35) diff --git a/resources/variants/ultimaker_s7_aa04.inst.cfg b/resources/variants/ultimaker_s7_aa04.inst.cfg index a9079c975e..6aee6597e0 100644 --- a/resources/variants/ultimaker_s7_aa04.inst.cfg +++ b/resources/variants/ultimaker_s7_aa04.inst.cfg @@ -14,7 +14,6 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_id = AA 0.4 machine_nozzle_tip_outer_diameter = 1.0 retraction_amount = 6.5 -retraction_min_travel = =line_width * 2 speed_print = 70 speed_topbottom = =math.ceil(speed_print * 30 / 70) speed_wall = =math.ceil(speed_print * 30 / 70) diff --git a/resources/variants/ultimaker_s7_bb0.8.inst.cfg b/resources/variants/ultimaker_s7_bb0.8.inst.cfg index 6823fe18a4..010d5c7cf1 100644 --- a/resources/variants/ultimaker_s7_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s7_bb0.8.inst.cfg @@ -31,7 +31,6 @@ raft_surface_layers = 1 retraction_amount = 4.5 retraction_hop = 2 retraction_hop_only_when_collides = True -retraction_min_travel = =line_width * 3 speed_prime_tower = =math.ceil(speed_print * 7 / 35) speed_print = 35 speed_support = =math.ceil(speed_print * 25 / 35) diff --git a/resources/variants/ultimaker_s7_bb04.inst.cfg b/resources/variants/ultimaker_s7_bb04.inst.cfg index bead299de3..1ec0dfab98 100644 --- a/resources/variants/ultimaker_s7_bb04.inst.cfg +++ b/resources/variants/ultimaker_s7_bb04.inst.cfg @@ -17,7 +17,6 @@ machine_nozzle_heat_up_speed = 1.5 machine_nozzle_id = BB 0.4 machine_nozzle_tip_outer_diameter = 1.0 retraction_amount = 4.5 -retraction_min_travel = =3 * line_width speed_prime_tower = =math.ceil(speed_print * 10 / 35) speed_support = =math.ceil(speed_print * 25 / 35) speed_support_interface = =math.ceil(speed_support * 20 / 25) diff --git a/resources/variants/ultimaker_s7_cc04.inst.cfg b/resources/variants/ultimaker_s7_cc04.inst.cfg index d46d387330..6949c5be74 100644 --- a/resources/variants/ultimaker_s7_cc04.inst.cfg +++ b/resources/variants/ultimaker_s7_cc04.inst.cfg @@ -13,7 +13,6 @@ brim_width = 7 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_id = CC 0.4 machine_nozzle_size = 0.4 -retraction_min_travel = =line_width * 2 retraction_prime_speed = =retraction_speed speed_infill = =speed_print speed_print = 45 diff --git a/resources/variants/ultimaker_s7_cc06.inst.cfg b/resources/variants/ultimaker_s7_cc06.inst.cfg index d0c0d3670f..576701fc2b 100644 --- a/resources/variants/ultimaker_s7_cc06.inst.cfg +++ b/resources/variants/ultimaker_s7_cc06.inst.cfg @@ -13,7 +13,6 @@ brim_width = 7 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_id = CC 0.6 machine_nozzle_size = 0.6 -retraction_min_travel = =line_width * 2 retraction_prime_speed = =retraction_speed speed_infill = =speed_print speed_print = 45 From 578057f16a3985df356532d87f1dd9a1b3b1b269 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Thu, 8 Feb 2024 16:35:28 +0100 Subject: [PATCH 077/203] add file association for mac --- UltiMaker-Cura.spec.jinja | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UltiMaker-Cura.spec.jinja b/UltiMaker-Cura.spec.jinja index 99bfa80078..2dce96282e 100644 --- a/UltiMaker-Cura.spec.jinja +++ b/UltiMaker-Cura.spec.jinja @@ -92,7 +92,7 @@ app = BUNDLE( }], 'CFBundleDocumentTypes': [{ 'CFBundleTypeRole': 'Viewer', - 'CFBundleTypeExtensions': ['*'], + 'CFBundleTypeExtensions': ['stl', 'obj', '3mf', 'gcode', 'ufp'], 'CFBundleTypeName': 'Model Files', }] }, From 93cb35859959394ac67a2fd52c2c04825c8e5c8b Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 9 Feb 2024 07:43:48 +0100 Subject: [PATCH 078/203] Add FIXMEs where big changes are required CURA-11561 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 1 + plugins/3MFWriter/ThreeMFWorkspaceWriter.py | 2 ++ 2 files changed, 3 insertions(+) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index e3056065a8..92a62ddca2 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -235,6 +235,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): containers_found_dict = {k: False for k in resolve_strategy_keys} # Check whether the file is a UCP, which changes some import options + #FIXME Instead of this, we should just check for the presence of the user-settings file, whatever the extension is_ucp = file_name.endswith('.ucp') # diff --git a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py index 7cdf884709..d0a843af69 100644 --- a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py +++ b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py @@ -34,6 +34,7 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): self._mode = None self._config_dialog = None + #FIXME We should have proper preWrite/write methods like the readers have a preRead/read, and have them called by the global process def _preWrite(self): is_ucp = False if hasattr(self._stream, 'name'): @@ -150,6 +151,7 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): self._success = True + #FIXME We should somehow give the information of the file type so that we know what to write, like the mode but for other files types (give mimetype ?) def write(self, stream, nodes, mode=WorkspaceWriter.OutputMode.BinaryMode): self._success = False self._export_model = None From e8bdca3dd95a9ba3b1efacc224732b73e5d2d0e4 Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Fri, 9 Feb 2024 10:32:39 +0100 Subject: [PATCH 079/203] introducing drop to buildplate per model CURA-10542 --- cura/PlatformPhysics.py | 15 ++++-- resources/qml/Preferences/GeneralPage.qml | 66 +++++++++++++++++++++++ resources/qml/Toolbar.qml | 2 +- 3 files changed, 79 insertions(+), 4 deletions(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 1ef39de80d..98e9e823c6 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -38,7 +38,7 @@ class PlatformPhysics: self._minimum_gap = 2 # It is a minimum distance (in mm) between two models, applicable for small models Application.getInstance().getPreferences().addPreference("physics/automatic_push_free", False) - Application.getInstance().getPreferences().addPreference("physics/automatic_drop_down", True) + Application.getInstance().getPreferences().addPreference("physics/automatic_drop_down_per_model", "never") def _onSceneChanged(self, source): if not source.callDecoration("isSliceable"): @@ -71,6 +71,15 @@ class PlatformPhysics: # We try to shuffle all the nodes to prevent "locked" situations, where iteration B inverts iteration A. # By shuffling the order of the nodes, this might happen a few times, but at some point it will resolve. random.shuffle(nodes) + default_value = False + if app_automatic_drop_down == "always": + default_value = True + if app_automatic_drop_down == "never": + default_value = False + if app_automatic_drop_down == "always_ask": + # ask_during_loading_model + pass + for node in nodes: if node is root or not isinstance(node, SceneNode) or node.getBoundingBox() is None: continue @@ -80,10 +89,10 @@ class PlatformPhysics: # Move it downwards if bottom is above platform move_vector = Vector() - if node.getSetting(SceneNodeSettings.AutoDropDown, app_automatic_drop_down) and not (node.getParent() and node.getParent().callDecoration("isGroup") or node.getParent() != root) and node.isEnabled(): #If an object is grouped, don't move it down + + if node.getSetting(SceneNodeSettings.AutoDropDown, default_value) and not (node.getParent() and node.getParent().callDecoration("isGroup") or node.getParent() != root) and node.isEnabled(): #If an object is grouped, don't move it down z_offset = node.callDecoration("getZOffset") if node.getDecorator(ZOffsetDecorator.ZOffsetDecorator) else 0 move_vector = move_vector.set(y = -bbox.bottom + z_offset) - # If there is no convex hull for the node, start calculating it and continue. if not node.getDecorator(ConvexHullDecorator) and not node.callDecoration("isNonPrintingMesh") and node.callDecoration("getLayerData") is None: node.addDecorator(ConvexHullDecorator()) diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index c313ffbd94..963f95da4b 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -63,6 +63,18 @@ UM.PreferencesPage } } + function setDefaultDropDown(code) + { + for (var i = 0; i < choiceOnDropDown.model.count; ++i) + { + if (choiceOnDropDown.model.get(i).code == code) + { + choiceOnDropDown.currentIndex = i + break; + } + } + } + function reset() { UM.Preferences.resetPreference("general/language") @@ -513,6 +525,60 @@ UM.PreferencesPage } } + UM.TooltipArea + { + width: childrenRect.width + height: childrenRect.height + text: catalog.i18nc("@info:tooltip", "This setting will set a default (or not) for the Per Model Drop to buildplate feature (Either Always, Never, decide every time") + + Column + { + spacing: UM.Theme.getSize("narrow_margin").height + + UM.Label + { + text: catalog.i18nc("@window:text", " Default per model setting for drop to build plate when importing a model: ") + } + + Cura.ComboBox + { + id: choiceOnDropDown + width: UM.Theme.getSize("combobox").width + height: UM.Theme.getSize("combobox").height + + model: ListModel + { + id: dropDownOptions + + Component.onCompleted: + { + append({ text: catalog.i18nc("@option:openProject", "Always"), code: "always" }) + append({ text: catalog.i18nc("@option:openProject", "Never"), code: "never" }) + append({ text: catalog.i18nc("@option:openProject", "Always ask me this"), code: "always_ask" }) + } + } + textRole: "text" + + currentIndex: + { + var index = 0; + var currentChoice = UM.Preferences.getValue("physics/automatic_drop_down_per_model"); + for (var i = 0; i < model.count; ++i) + { + if (model.get(i).code == currentChoice) + { + index = i; + break; + } + } + return index; + } + + onActivated: UM.Preferences.setValue("physics/automatic_drop_down_per_model", model.get(index).code) + } + } + } + UM.TooltipArea { diff --git a/resources/qml/Toolbar.qml b/resources/qml/Toolbar.qml index 1af4e958f4..81f6c5d682 100644 --- a/resources/qml/Toolbar.qml +++ b/resources/qml/Toolbar.qml @@ -222,7 +222,7 @@ Item UM.Label { id: toolHint - text: UM.Controller.properties.getValue("ToolHint") != undefined ? UM.ActiveTool.properties.getValue("ToolHint") : "" + text: UM.Controller.properties.getValue("ToolHint") != undefined ? UM.Controller.properties.getValue("ToolHint") : "" color: UM.Theme.getColor("tooltip_text") anchors.horizontalCenter: parent.horizontalCenter } From a7292c7baf49539737136bdf6bc89b4617167c5c Mon Sep 17 00:00:00 2001 From: Saumya Jain <70144862+saumyaj3@users.noreply.github.com> Date: Fri, 9 Feb 2024 11:20:04 +0100 Subject: [PATCH 080/203] Update OneAtATimeIterator.py saving node_list after sorting --- cura/OneAtATimeIterator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/OneAtATimeIterator.py b/cura/OneAtATimeIterator.py index f92da3ec14..1017cfc79e 100644 --- a/cura/OneAtATimeIterator.py +++ b/cura/OneAtATimeIterator.py @@ -68,7 +68,7 @@ class OneAtATimeIterator(Iterator.Iterator): # Sort the original list so that items that block the most other objects are at the beginning. # This does not decrease the worst case running time, but should improve it in most cases. - sorted(node_list, key = cmp_to_key(hit_checker.calculateScore)) + node_list = sorted(node_list, key = cmp_to_key(hit_checker.calculateScore)) todo_node_list = [_ObjectOrder([], node_list)] while len(todo_node_list) > 0: From 345ddc40bb3dd32c2a88990e99073702c4e4e721 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 9 Feb 2024 11:54:49 +0100 Subject: [PATCH 081/203] Fix file opening failure CURA-11561 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 92a62ddca2..d96de5b324 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -613,10 +613,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader): try: self._user_settings = json.loads(archive.open("Cura/user-settings.json").read().decode("utf-8")) any_extruder_stack = ExtruderManager.getInstance().getExtruderStack(0) + actual_global_stack = CuraApplication.getInstance().getGlobalContainerStack() for stack_name, settings in self._user_settings.items(): if stack_name == 'global': - self._dialog.exportedSettingModel.addSettingsFromStack(global_stack, i18n_catalog.i18nc("@label", "Global"), settings) + self._dialog.exportedSettingModel.addSettingsFromStack(actual_global_stack, i18n_catalog.i18nc("@label", "Global"), settings) else: extruder_match = re.fullmatch('extruder_([0-9]+)', stack_name) if extruder_match is not None: From 91a84674f022b0baf0b1915fadef1d171c9cbddd Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Fri, 9 Feb 2024 15:11:56 +0100 Subject: [PATCH 082/203] Adding the preference drop to buildplate while opening Cura project CURA-10542 --- cura/PlatformPhysics.py | 14 +---- plugins/3MFReader/WorkspaceDialog.qml | 14 +++++ resources/qml/Preferences/GeneralPage.qml | 67 ----------------------- 3 files changed, 16 insertions(+), 79 deletions(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 98e9e823c6..7add1e24e7 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -38,7 +38,7 @@ class PlatformPhysics: self._minimum_gap = 2 # It is a minimum distance (in mm) between two models, applicable for small models Application.getInstance().getPreferences().addPreference("physics/automatic_push_free", False) - Application.getInstance().getPreferences().addPreference("physics/automatic_drop_down_per_model", "never") + Application.getInstance().getPreferences().addPreference("physics/automatic_drop_down", False) def _onSceneChanged(self, source): if not source.callDecoration("isSliceable"): @@ -71,14 +71,6 @@ class PlatformPhysics: # We try to shuffle all the nodes to prevent "locked" situations, where iteration B inverts iteration A. # By shuffling the order of the nodes, this might happen a few times, but at some point it will resolve. random.shuffle(nodes) - default_value = False - if app_automatic_drop_down == "always": - default_value = True - if app_automatic_drop_down == "never": - default_value = False - if app_automatic_drop_down == "always_ask": - # ask_during_loading_model - pass for node in nodes: if node is root or not isinstance(node, SceneNode) or node.getBoundingBox() is None: @@ -88,9 +80,7 @@ class PlatformPhysics: # Move it downwards if bottom is above platform move_vector = Vector() - - - if node.getSetting(SceneNodeSettings.AutoDropDown, default_value) and not (node.getParent() and node.getParent().callDecoration("isGroup") or node.getParent() != root) and node.isEnabled(): #If an object is grouped, don't move it down + if node.getSetting(SceneNodeSettings.AutoDropDown, app_automatic_drop_down) and not (node.getParent() and node.getParent().callDecoration("isGroup") or node.getParent() != root) and node.isEnabled(): #If an object is grouped, don't move it down z_offset = node.callDecoration("getZOffset") if node.getDecorator(ZOffsetDecorator.ZOffsetDecorator) else 0 move_vector = move_vector.set(y = -bbox.bottom + z_offset) # If there is no convex hull for the node, start calculating it and continue. diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index d5f9b1817d..874ca0aab8 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -299,6 +299,20 @@ UM.Dialog } } } + Row + { + id: dropToBuildPlate + width: parent.width + height: childrenRect.height + spacing: UM.Theme.getSize("default_margin").width + UM.CheckBox + { + id: rememberChoiceCheckBox + text: catalog.i18nc("@text:window", "Drop models to buildplate") + checked: UM.Preferences.getValue("physics/automatic_drop_down") == True + onCheckedChanged: UM.Preferences.setValue("physics/automatic_drop_down", checked) + } + } Row { diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 963f95da4b..af63743931 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -63,18 +63,6 @@ UM.PreferencesPage } } - function setDefaultDropDown(code) - { - for (var i = 0; i < choiceOnDropDown.model.count; ++i) - { - if (choiceOnDropDown.model.get(i).code == code) - { - choiceOnDropDown.currentIndex = i - break; - } - } - } - function reset() { UM.Preferences.resetPreference("general/language") @@ -525,61 +513,6 @@ UM.PreferencesPage } } - UM.TooltipArea - { - width: childrenRect.width - height: childrenRect.height - text: catalog.i18nc("@info:tooltip", "This setting will set a default (or not) for the Per Model Drop to buildplate feature (Either Always, Never, decide every time") - - Column - { - spacing: UM.Theme.getSize("narrow_margin").height - - UM.Label - { - text: catalog.i18nc("@window:text", " Default per model setting for drop to build plate when importing a model: ") - } - - Cura.ComboBox - { - id: choiceOnDropDown - width: UM.Theme.getSize("combobox").width - height: UM.Theme.getSize("combobox").height - - model: ListModel - { - id: dropDownOptions - - Component.onCompleted: - { - append({ text: catalog.i18nc("@option:openProject", "Always"), code: "always" }) - append({ text: catalog.i18nc("@option:openProject", "Never"), code: "never" }) - append({ text: catalog.i18nc("@option:openProject", "Always ask me this"), code: "always_ask" }) - } - } - textRole: "text" - - currentIndex: - { - var index = 0; - var currentChoice = UM.Preferences.getValue("physics/automatic_drop_down_per_model"); - for (var i = 0; i < model.count; ++i) - { - if (model.get(i).code == currentChoice) - { - index = i; - break; - } - } - return index; - } - - onActivated: UM.Preferences.setValue("physics/automatic_drop_down_per_model", model.get(index).code) - } - } - } - - UM.TooltipArea { width: childrenRect.width; From aa2abfbd2e1a86a5e10f6a3e3c56e0092d8cb589 Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Fri, 9 Feb 2024 15:15:44 +0100 Subject: [PATCH 083/203] removing id of checkbox CURA-10542 --- cura/PlatformPhysics.py | 2 ++ plugins/3MFReader/WorkspaceDialog.qml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 7add1e24e7..d204bee185 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -80,9 +80,11 @@ class PlatformPhysics: # Move it downwards if bottom is above platform move_vector = Vector() + if node.getSetting(SceneNodeSettings.AutoDropDown, app_automatic_drop_down) and not (node.getParent() and node.getParent().callDecoration("isGroup") or node.getParent() != root) and node.isEnabled(): #If an object is grouped, don't move it down z_offset = node.callDecoration("getZOffset") if node.getDecorator(ZOffsetDecorator.ZOffsetDecorator) else 0 move_vector = move_vector.set(y = -bbox.bottom + z_offset) + # If there is no convex hull for the node, start calculating it and continue. if not node.getDecorator(ConvexHullDecorator) and not node.callDecoration("isNonPrintingMesh") and node.callDecoration("getLayerData") is None: node.addDecorator(ConvexHullDecorator()) diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 874ca0aab8..8b4b2341d9 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -299,6 +299,7 @@ UM.Dialog } } } + Row { id: dropToBuildPlate @@ -307,7 +308,6 @@ UM.Dialog spacing: UM.Theme.getSize("default_margin").width UM.CheckBox { - id: rememberChoiceCheckBox text: catalog.i18nc("@text:window", "Drop models to buildplate") checked: UM.Preferences.getValue("physics/automatic_drop_down") == True onCheckedChanged: UM.Preferences.setValue("physics/automatic_drop_down", checked) From 860dbaa4fe450c06c4990182d0ea2e4ddfa0c59f Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Tue, 13 Feb 2024 11:32:58 +0100 Subject: [PATCH 084/203] Added experimental print profiles for the Method X and XL: ASA, Nylon12-CF and SR-30 support material. PP-393 --- .../definitions/ultimaker_methodx.def.json | 1 - ...methodx_1c_um-asa-175_0.2mm_solid.inst.cfg | 18 +++++++ ..._1c_um-nylon12-cf-175_0.2mm_solid.inst.cfg | 18 +++++++ ...ethodx_1xa_um-asa-175_0.2mm_solid.inst.cfg | 18 +++++++ ...thodx_2xa_um-sr30-175_0.2mm_solid.inst.cfg | 17 ++++++ ...thodx_labs_um-asa-175_0.2mm_solid.inst.cfg | 18 +++++++ ...abs_um-nylon12-cf-175_0.2mm_solid.inst.cfg | 18 +++++++ ...ethodxl_1c_um-asa-175_0.2mm_solid.inst.cfg | 18 +++++++ ..._1c_um-nylon12-cf-175_0.2mm_solid.inst.cfg | 18 +++++++ ...thodxl_1xa_um-asa-175_0.2mm_solid.inst.cfg | 18 +++++++ ...hodxl_2xa_um-sr30-175_0.2mm_solid.inst.cfg | 17 ++++++ ...hodxl_labs_um-asa-175_0.2mm_solid.inst.cfg | 18 +++++++ ...abs_um-nylon12-cf-175_0.2mm_solid.inst.cfg | 18 +++++++ .../um_methodx_1c_um-asa-175_0.2mm.inst.cfg | 50 +++++++++++++++++ ...ethodx_1c_um-nylon12-cf-175_0.2mm.inst.cfg | 53 +++++++++++++++++++ .../um_methodx_1xa_um-asa-175_0.2mm.inst.cfg | 50 +++++++++++++++++ .../um_methodx_2xa_um-sr30-175_0.2mm.inst.cfg | 41 ++++++++++++++ .../um_methodx_labs_um-asa-175_0.2mm.inst.cfg | 50 +++++++++++++++++ ...hodx_labs_um-nylon12-cf-175_0.2mm.inst.cfg | 53 +++++++++++++++++++ .../um_methodxl_1c_um-absr-175_0.2mm.inst.cfg | 2 - .../um_methodxl_1c_um-asa-175_0.2mm.inst.cfg | 51 ++++++++++++++++++ ...thodxl_1c_um-nylon12-cf-175_0.2mm.inst.cfg | 53 +++++++++++++++++++ ...um_methodxl_1xa_um-absr-175_0.2mm.inst.cfg | 2 - .../um_methodxl_1xa_um-asa-175_0.2mm.inst.cfg | 51 ++++++++++++++++++ ...um_methodxl_2xa_um-sr30-175_0.2mm.inst.cfg | 41 ++++++++++++++ ...m_methodxl_labs_um-absr-175_0.2mm.inst.cfg | 2 - ...um_methodxl_labs_um-asa-175_0.2mm.inst.cfg | 51 ++++++++++++++++++ ...odxl_labs_um-nylon12-cf-175_0.2mm.inst.cfg | 53 +++++++++++++++++++ .../um_s3_aa0.25_um-abs_0.1mm.inst.cfg | 1 + .../um_s5_aa0.25_um-abs_0.1mm.inst.cfg | 1 + 30 files changed, 813 insertions(+), 7 deletions(-) create mode 100644 resources/intent/ultimaker_methodx/um_methodx_1c_um-asa-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodx/um_methodx_1c_um-nylon12-cf-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodx/um_methodx_1xa_um-asa-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodx/um_methodx_2xa_um-sr30-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodx/um_methodx_labs_um-asa-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodx/um_methodx_labs_um-nylon12-cf-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodxl/um_methodxl_1c_um-asa-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodxl/um_methodxl_1c_um-nylon12-cf-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodxl/um_methodxl_1xa_um-asa-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodxl/um_methodxl_2xa_um-sr30-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodxl/um_methodxl_labs_um-asa-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodxl/um_methodxl_labs_um-nylon12-cf-175_0.2mm_solid.inst.cfg create mode 100644 resources/quality/ultimaker_methodx/um_methodx_1c_um-asa-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodx/um_methodx_1c_um-nylon12-cf-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodx/um_methodx_1xa_um-asa-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodx/um_methodx_2xa_um-sr30-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodx/um_methodx_labs_um-asa-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodx/um_methodx_labs_um-nylon12-cf-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodxl/um_methodxl_1c_um-asa-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodxl/um_methodxl_1c_um-nylon12-cf-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-asa-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodxl/um_methodxl_2xa_um-sr30-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodxl/um_methodxl_labs_um-asa-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodxl/um_methodxl_labs_um-nylon12-cf-175_0.2mm.inst.cfg diff --git a/resources/definitions/ultimaker_methodx.def.json b/resources/definitions/ultimaker_methodx.def.json index a6708a0421..9828ba96f2 100644 --- a/resources/definitions/ultimaker_methodx.def.json +++ b/resources/definitions/ultimaker_methodx.def.json @@ -35,7 +35,6 @@ "generic_nylon_175", "generic_hips_175", "generic_pc_175", - "ultimaker_sr30_175", "generic_tpu_175", "goofoo_", "ideagen3D_", diff --git a/resources/intent/ultimaker_methodx/um_methodx_1c_um-asa-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodx/um_methodx_1c_um-asa-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..23c8807afd --- /dev/null +++ b/resources/intent/ultimaker_methodx/um_methodx_1c_um-asa-175_0.2mm_solid.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_methodx +name = Solid +version = 4 + +[metadata] +intent_category = solid +is_experimental = True +material = ultimaker_asa_175 +quality_type = draft +setting_version = 22 +type = intent +variant = 1C + +[values] +infill_pattern = lines +infill_sparse_density = 100 + diff --git a/resources/intent/ultimaker_methodx/um_methodx_1c_um-nylon12-cf-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodx/um_methodx_1c_um-nylon12-cf-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..cdff2f30ce --- /dev/null +++ b/resources/intent/ultimaker_methodx/um_methodx_1c_um-nylon12-cf-175_0.2mm_solid.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_methodx +name = Solid +version = 4 + +[metadata] +intent_category = solid +is_experimental = True +material = ultimaker_nylon12-cf_175 +quality_type = draft +setting_version = 22 +type = intent +variant = 1C + +[values] +infill_pattern = lines +infill_sparse_density = 100 + diff --git a/resources/intent/ultimaker_methodx/um_methodx_1xa_um-asa-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodx/um_methodx_1xa_um-asa-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..3a781b61aa --- /dev/null +++ b/resources/intent/ultimaker_methodx/um_methodx_1xa_um-asa-175_0.2mm_solid.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_methodx +name = Solid +version = 4 + +[metadata] +intent_category = solid +is_experimental = True +material = ultimaker_asa_175 +quality_type = draft +setting_version = 22 +type = intent +variant = 1XA + +[values] +infill_pattern = lines +infill_sparse_density = 100 + diff --git a/resources/intent/ultimaker_methodx/um_methodx_2xa_um-sr30-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodx/um_methodx_2xa_um-sr30-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..a833556bd8 --- /dev/null +++ b/resources/intent/ultimaker_methodx/um_methodx_2xa_um-sr30-175_0.2mm_solid.inst.cfg @@ -0,0 +1,17 @@ +[general] +definition = ultimaker_methodx +name = Solid +version = 4 + +[metadata] +intent_category = solid +is_experimental = True +material = ultimaker_sr30_175 +quality_type = draft +setting_version = 22 +type = intent +variant = 2XA + +[values] +infill_sparse_density = 100 + diff --git a/resources/intent/ultimaker_methodx/um_methodx_labs_um-asa-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodx/um_methodx_labs_um-asa-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..87823a01a6 --- /dev/null +++ b/resources/intent/ultimaker_methodx/um_methodx_labs_um-asa-175_0.2mm_solid.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_methodx +name = Solid +version = 4 + +[metadata] +intent_category = solid +is_experimental = True +material = ultimaker_asa_175 +quality_type = draft +setting_version = 22 +type = intent +variant = LABS + +[values] +infill_pattern = lines +infill_sparse_density = 100 + diff --git a/resources/intent/ultimaker_methodx/um_methodx_labs_um-nylon12-cf-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodx/um_methodx_labs_um-nylon12-cf-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..bb76919888 --- /dev/null +++ b/resources/intent/ultimaker_methodx/um_methodx_labs_um-nylon12-cf-175_0.2mm_solid.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_methodx +name = Solid +version = 4 + +[metadata] +intent_category = solid +is_experimental = True +material = ultimaker_nylon12-cf_175 +quality_type = draft +setting_version = 22 +type = intent +variant = LABS + +[values] +infill_pattern = lines +infill_sparse_density = 100 + diff --git a/resources/intent/ultimaker_methodxl/um_methodxl_1c_um-asa-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodxl/um_methodxl_1c_um-asa-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..12bc3f2708 --- /dev/null +++ b/resources/intent/ultimaker_methodxl/um_methodxl_1c_um-asa-175_0.2mm_solid.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_methodxl +name = Solid +version = 4 + +[metadata] +intent_category = solid +is_experimental = True +material = ultimaker_asa_175 +quality_type = draft +setting_version = 22 +type = intent +variant = 1C + +[values] +infill_pattern = lines +infill_sparse_density = 100 + diff --git a/resources/intent/ultimaker_methodxl/um_methodxl_1c_um-nylon12-cf-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodxl/um_methodxl_1c_um-nylon12-cf-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..5533672636 --- /dev/null +++ b/resources/intent/ultimaker_methodxl/um_methodxl_1c_um-nylon12-cf-175_0.2mm_solid.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_methodxl +name = Solid +version = 4 + +[metadata] +intent_category = solid +is_experimental = True +material = ultimaker_nylon12-cf_175 +quality_type = draft +setting_version = 22 +type = intent +variant = 1C + +[values] +infill_pattern = lines +infill_sparse_density = 100 + diff --git a/resources/intent/ultimaker_methodxl/um_methodxl_1xa_um-asa-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodxl/um_methodxl_1xa_um-asa-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..82aa8e9bad --- /dev/null +++ b/resources/intent/ultimaker_methodxl/um_methodxl_1xa_um-asa-175_0.2mm_solid.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_methodxl +name = Solid +version = 4 + +[metadata] +intent_category = solid +is_experimental = True +material = ultimaker_asa_175 +quality_type = draft +setting_version = 22 +type = intent +variant = 1XA + +[values] +infill_pattern = lines +infill_sparse_density = 100 + diff --git a/resources/intent/ultimaker_methodxl/um_methodxl_2xa_um-sr30-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodxl/um_methodxl_2xa_um-sr30-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..01a55c85a4 --- /dev/null +++ b/resources/intent/ultimaker_methodxl/um_methodxl_2xa_um-sr30-175_0.2mm_solid.inst.cfg @@ -0,0 +1,17 @@ +[general] +definition = ultimaker_methodxl +name = Solid +version = 4 + +[metadata] +intent_category = solid +is_experimental = True +material = ultimaker_sr30_175 +quality_type = draft +setting_version = 22 +type = intent +variant = 2XA + +[values] +infill_sparse_density = 100 + diff --git a/resources/intent/ultimaker_methodxl/um_methodxl_labs_um-asa-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodxl/um_methodxl_labs_um-asa-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..ae7100bc86 --- /dev/null +++ b/resources/intent/ultimaker_methodxl/um_methodxl_labs_um-asa-175_0.2mm_solid.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_methodxl +name = Solid +version = 4 + +[metadata] +intent_category = solid +is_experimental = True +material = ultimaker_asa_175 +quality_type = draft +setting_version = 22 +type = intent +variant = LABS + +[values] +infill_pattern = lines +infill_sparse_density = 100 + diff --git a/resources/intent/ultimaker_methodxl/um_methodxl_labs_um-nylon12-cf-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodxl/um_methodxl_labs_um-nylon12-cf-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..af43c95cd2 --- /dev/null +++ b/resources/intent/ultimaker_methodxl/um_methodxl_labs_um-nylon12-cf-175_0.2mm_solid.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_methodxl +name = Solid +version = 4 + +[metadata] +intent_category = solid +is_experimental = True +material = ultimaker_nylon12-cf_175 +quality_type = draft +setting_version = 22 +type = intent +variant = LABS + +[values] +infill_pattern = lines +infill_sparse_density = 100 + diff --git a/resources/quality/ultimaker_methodx/um_methodx_1c_um-asa-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1c_um-asa-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..f0e0a4fded --- /dev/null +++ b/resources/quality/ultimaker_methodx/um_methodx_1c_um-asa-175_0.2mm.inst.cfg @@ -0,0 +1,50 @@ +[general] +definition = ultimaker_methodx +name = Fast - Experimental +version = 4 + +[metadata] +is_experimental = True +material = ultimaker_asa_175 +quality_type = draft +setting_version = 22 +type = quality +variant = 1C +weight = -2 + +[values] +cool_fan_enabled = False +material_print_temperature_layer_0 = =default_material_print_temperature+5 +raft_airgap = 0.3 +raft_base_speed = 10 +retract_at_layer_change = True +retraction_amount = 0.5 +retraction_min_travel = 3.2 +roofing_material_flow = 98.0 +small_skin_width = 3.6 +speed_prime_tower = 30.0 +speed_print = 120.0 +speed_roofing = 55 +speed_topbottom = 55 +speed_travel = 250.0 +speed_wall_0 = 45 +speed_wall_x = 65 +support_angle = 50 +support_bottom_density = 24 +support_bottom_enable = False +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_fan_enable = False +support_infill_rate = 12.0 +support_interface_enable = True +support_interface_pattern = lines +support_line_width = 0.3 +support_pattern = lines +support_roof_density = 97 +support_roof_height = 1.015 +support_roof_line_width = 0.25 +support_use_towers = False +support_xy_distance = 0.2 +support_xy_distance_overhang = 0.15 +support_z_distance = 0.25 + diff --git a/resources/quality/ultimaker_methodx/um_methodx_1c_um-nylon12-cf-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1c_um-nylon12-cf-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..32d64ed5b1 --- /dev/null +++ b/resources/quality/ultimaker_methodx/um_methodx_1c_um-nylon12-cf-175_0.2mm.inst.cfg @@ -0,0 +1,53 @@ +[general] +definition = ultimaker_methodx +name = Fast - Experimental +version = 4 + +[metadata] +is_experimental = True +material = ultimaker_nylon12-cf_175 +quality_type = draft +setting_version = 22 +type = quality +variant = 1C +weight = -2 + +[values] +cool_fan_enabled = False +material_final_print_temperature = =default_material_print_temperature-5 +material_initial_print_temperature = =default_material_print_temperature-5 +raft_airgap = 0.3 +raft_base_line_spacing = 3 +raft_base_line_width = 1.2 +raft_base_speed = 10 +retract_at_layer_change = True +retraction_amount = 0.5 +retraction_min_travel = 3.2 +roofing_material_flow = 100 +small_skin_width = 3.6 +speed_prime_tower = 30.0 +speed_print = 120.0 +speed_roofing = 55 +speed_topbottom = 55 +speed_travel = 250.0 +speed_wall_0 = 45 +speed_wall_x = 65 +support_angle = 50 +support_bottom_density = 24 +support_bottom_enable = False +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_fan_enable = False +support_infill_rate = 12.0 +support_interface_enable = True +support_interface_pattern = lines +support_line_width = 0.3 +support_pattern = lines +support_roof_density = 97 +support_roof_height = 1.015 +support_roof_line_width = 0.25 +support_use_towers = False +support_xy_distance = 0.2 +support_xy_distance_overhang = 0.15 +support_z_distance = 0.25 + diff --git a/resources/quality/ultimaker_methodx/um_methodx_1xa_um-asa-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-asa-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..e032e3a3b8 --- /dev/null +++ b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-asa-175_0.2mm.inst.cfg @@ -0,0 +1,50 @@ +[general] +definition = ultimaker_methodx +name = Fast - Experimental +version = 4 + +[metadata] +is_experimental = True +material = ultimaker_asa_175 +quality_type = draft +setting_version = 22 +type = quality +variant = 1XA +weight = -2 + +[values] +cool_fan_enabled = False +material_print_temperature_layer_0 = =default_material_print_temperature+5 +raft_airgap = 0.3 +raft_base_speed = 10 +retract_at_layer_change = True +retraction_amount = 0.5 +retraction_min_travel = 3.2 +roofing_material_flow = 98.0 +small_skin_width = 3.6 +speed_prime_tower = 30.0 +speed_print = 120.0 +speed_roofing = 55 +speed_topbottom = 55 +speed_travel = 250.0 +speed_wall_0 = 45 +speed_wall_x = 65 +support_angle = 50 +support_bottom_density = 24 +support_bottom_enable = False +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_fan_enable = False +support_infill_rate = 12.0 +support_interface_enable = True +support_interface_pattern = lines +support_line_width = 0.3 +support_pattern = lines +support_roof_density = 97 +support_roof_height = 1.015 +support_roof_line_width = 0.25 +support_use_towers = False +support_xy_distance = 0.2 +support_xy_distance_overhang = 0.15 +support_z_distance = 0.25 + diff --git a/resources/quality/ultimaker_methodx/um_methodx_2xa_um-sr30-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_2xa_um-sr30-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..5ebc2b4560 --- /dev/null +++ b/resources/quality/ultimaker_methodx/um_methodx_2xa_um-sr30-175_0.2mm.inst.cfg @@ -0,0 +1,41 @@ +[general] +definition = ultimaker_methodx +name = Fast - Experimental +version = 4 + +[metadata] +is_experimental = True +material = ultimaker_sr30_175 +quality_type = draft +setting_version = 22 +type = quality +variant = 2XA +weight = -2 + +[values] +brim_replaces_support = False +cool_fan_enabled = False +cool_min_temperature = =material_print_temperature +raft_airgap = 0.0 +raft_interface_line_width = 0.7 +raft_interface_speed = 70 +raft_surface_speed = 90 +retract_at_layer_change = True +retraction_amount = 0.5 +speed_prime_tower = 25.0 +speed_print = 50 +speed_roofing = 50 +speed_support = 50 +speed_support_bottom = 30 +speed_support_interface = 80 +speed_topbottom = 50 +speed_wall_0 = 50 +speed_wall_x = 50 +support_bottom_wall_count = 5 +support_fan_enable = False +support_infill_sparse_thickness = =min(layer_height * 2, machine_nozzle_size * 3 / 4) if layer_height <= 0.15 / 0.4 * machine_nozzle_size else layer_height +support_interface_enable = True +support_wall_count = 1 +support_xy_distance = 0.2 +support_z_distance = 0 + diff --git a/resources/quality/ultimaker_methodx/um_methodx_labs_um-asa-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_labs_um-asa-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..3c9f4500fc --- /dev/null +++ b/resources/quality/ultimaker_methodx/um_methodx_labs_um-asa-175_0.2mm.inst.cfg @@ -0,0 +1,50 @@ +[general] +definition = ultimaker_methodx +name = Fast - Experimental +version = 4 + +[metadata] +is_experimental = True +material = ultimaker_asa_175 +quality_type = draft +setting_version = 22 +type = quality +variant = LABS +weight = -2 + +[values] +cool_fan_enabled = False +material_print_temperature_layer_0 = =default_material_print_temperature+5 +raft_airgap = 0.3 +raft_base_speed = 10 +retract_at_layer_change = True +retraction_amount = 0.5 +retraction_min_travel = 3.2 +roofing_material_flow = 98.0 +small_skin_width = 3.6 +speed_prime_tower = 30.0 +speed_print = 120.0 +speed_roofing = 55 +speed_topbottom = 55 +speed_travel = 250.0 +speed_wall_0 = 45 +speed_wall_x = 65 +support_angle = 50 +support_bottom_density = 24 +support_bottom_enable = False +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_fan_enable = False +support_infill_rate = 12.0 +support_interface_enable = True +support_interface_pattern = lines +support_line_width = 0.3 +support_pattern = lines +support_roof_density = 97 +support_roof_height = 1.015 +support_roof_line_width = 0.25 +support_use_towers = False +support_xy_distance = 0.2 +support_xy_distance_overhang = 0.15 +support_z_distance = 0.25 + diff --git a/resources/quality/ultimaker_methodx/um_methodx_labs_um-nylon12-cf-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_labs_um-nylon12-cf-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..7bb14d9107 --- /dev/null +++ b/resources/quality/ultimaker_methodx/um_methodx_labs_um-nylon12-cf-175_0.2mm.inst.cfg @@ -0,0 +1,53 @@ +[general] +definition = ultimaker_methodx +name = Fast - Experimental +version = 4 + +[metadata] +is_experimental = True +material = ultimaker_nylon12-cf_175 +quality_type = draft +setting_version = 22 +type = quality +variant = LABS +weight = -2 + +[values] +cool_fan_enabled = False +material_final_print_temperature = =default_material_print_temperature-5 +material_initial_print_temperature = =default_material_print_temperature-5 +raft_airgap = 0.3 +raft_base_line_spacing = 3 +raft_base_line_width = 1.2 +raft_base_speed = 10 +retract_at_layer_change = True +retraction_amount = 0.5 +retraction_min_travel = 3.2 +roofing_material_flow = 100 +small_skin_width = 3.6 +speed_prime_tower = 30.0 +speed_print = 120.0 +speed_roofing = 55 +speed_topbottom = 55 +speed_travel = 250.0 +speed_wall_0 = 45 +speed_wall_x = 65 +support_angle = 50 +support_bottom_density = 24 +support_bottom_enable = False +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_fan_enable = False +support_infill_rate = 12.0 +support_interface_enable = True +support_interface_pattern = lines +support_line_width = 0.3 +support_pattern = lines +support_roof_density = 97 +support_roof_height = 1.015 +support_roof_line_width = 0.25 +support_use_towers = False +support_xy_distance = 0.2 +support_xy_distance_overhang = 0.15 +support_z_distance = 0.25 + diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-absr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-absr-175_0.2mm.inst.cfg index 7b5daf0d20..2688d88ad3 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-absr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-absr-175_0.2mm.inst.cfg @@ -12,9 +12,7 @@ variant = 1C weight = -2 [values] -build_volume_temperature = 85 cool_fan_enabled = False -default_material_bed_temperature = 95 raft_airgap = 0.3 speed_prime_tower = 30.0 speed_print = 120.0 diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-asa-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-asa-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..5aaee1f2c6 --- /dev/null +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-asa-175_0.2mm.inst.cfg @@ -0,0 +1,51 @@ +[general] +definition = ultimaker_methodxl +name = Fast - Experimental +version = 4 + +[metadata] +is_experimental = True +material = ultimaker_asa_175 +quality_type = draft +setting_version = 22 +type = quality +variant = 1C +weight = -2 + +[values] +cool_fan_enabled = False +material_print_temperature_layer_0 = =default_material_print_temperature+5 +raft_airgap = 0.3 +raft_base_speed = 10 +retract_at_layer_change = True +retraction_amount = 0.5 +retraction_min_travel = 3.2 +roofing_material_flow = 98.0 +small_skin_width = 3.6 +speed_prime_tower = 30.0 +speed_print = 120.0 +speed_roofing = 55 +speed_topbottom = 55 +speed_travel = 500 +speed_travel_layer_0 = 250 +speed_wall_0 = 45 +speed_wall_x = 65 +support_angle = 50 +support_bottom_density = 24 +support_bottom_enable = False +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_fan_enable = False +support_infill_rate = 12.0 +support_interface_enable = True +support_interface_pattern = lines +support_line_width = 0.3 +support_pattern = lines +support_roof_density = 97 +support_roof_height = 1.015 +support_roof_line_width = 0.25 +support_use_towers = False +support_xy_distance = 0.2 +support_xy_distance_overhang = 0.15 +support_z_distance = 0.25 + diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-nylon12-cf-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-nylon12-cf-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..575189deae --- /dev/null +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-nylon12-cf-175_0.2mm.inst.cfg @@ -0,0 +1,53 @@ +[general] +definition = ultimaker_methodxl +name = Fast - Experimental +version = 4 + +[metadata] +is_experimental = True +material = ultimaker_nylon12-cf_175 +quality_type = draft +setting_version = 22 +type = quality +variant = 1C +weight = -2 + +[values] +cool_fan_enabled = False +material_final_print_temperature = =default_material_print_temperature-5 +material_initial_print_temperature = =default_material_print_temperature-5 +raft_airgap = 0.3 +raft_base_line_spacing = 3 +raft_base_line_width = 1.2 +raft_base_speed = 10 +retract_at_layer_change = True +retraction_amount = 0.5 +retraction_min_travel = 3.2 +roofing_material_flow = 100 +small_skin_width = 3.6 +speed_prime_tower = 30.0 +speed_print = 120.0 +speed_roofing = 55 +speed_topbottom = 55 +speed_travel = 250.0 +speed_wall_0 = 45 +speed_wall_x = 65 +support_angle = 50 +support_bottom_density = 24 +support_bottom_enable = False +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_fan_enable = False +support_infill_rate = 12.0 +support_interface_enable = True +support_interface_pattern = lines +support_line_width = 0.3 +support_pattern = lines +support_roof_density = 97 +support_roof_height = 1.015 +support_roof_line_width = 0.25 +support_use_towers = False +support_xy_distance = 0.2 +support_xy_distance_overhang = 0.15 +support_z_distance = 0.25 + diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-absr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-absr-175_0.2mm.inst.cfg index 7445bd2d42..fd224e8798 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-absr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-absr-175_0.2mm.inst.cfg @@ -12,9 +12,7 @@ variant = 1XA weight = -2 [values] -build_volume_temperature = 85 cool_fan_enabled = False -default_material_bed_temperature = 95 raft_airgap = 0.3 speed_prime_tower = 30.0 speed_print = 120.0 diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-asa-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-asa-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..504ab8c10b --- /dev/null +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-asa-175_0.2mm.inst.cfg @@ -0,0 +1,51 @@ +[general] +definition = ultimaker_methodxl +name = Fast - Experimental +version = 4 + +[metadata] +is_experimental = True +material = ultimaker_asa_175 +quality_type = draft +setting_version = 22 +type = quality +variant = 1XA +weight = -2 + +[values] +cool_fan_enabled = False +material_print_temperature_layer_0 = =default_material_print_temperature+5 +raft_airgap = 0.3 +raft_base_speed = 10 +retract_at_layer_change = True +retraction_amount = 0.5 +retraction_min_travel = 3.2 +roofing_material_flow = 98.0 +small_skin_width = 3.6 +speed_prime_tower = 30.0 +speed_print = 120.0 +speed_roofing = 55 +speed_topbottom = 55 +speed_travel = 500 +speed_travel_layer_0 = 250 +speed_wall_0 = 45 +speed_wall_x = 65 +support_angle = 50 +support_bottom_density = 24 +support_bottom_enable = False +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_fan_enable = False +support_infill_rate = 12.0 +support_interface_enable = True +support_interface_pattern = lines +support_line_width = 0.3 +support_pattern = lines +support_roof_density = 97 +support_roof_height = 1.015 +support_roof_line_width = 0.25 +support_use_towers = False +support_xy_distance = 0.2 +support_xy_distance_overhang = 0.15 +support_z_distance = 0.25 + diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_2xa_um-sr30-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_2xa_um-sr30-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..ebc6ecfe98 --- /dev/null +++ b/resources/quality/ultimaker_methodxl/um_methodxl_2xa_um-sr30-175_0.2mm.inst.cfg @@ -0,0 +1,41 @@ +[general] +definition = ultimaker_methodxl +name = Fast - Experimental +version = 4 + +[metadata] +is_experimental = True +material = ultimaker_sr30_175 +quality_type = draft +setting_version = 22 +type = quality +variant = 2XA +weight = -2 + +[values] +brim_replaces_support = False +cool_fan_enabled = False +cool_min_temperature = =material_print_temperature +raft_airgap = 0.0 +raft_interface_line_width = 0.7 +raft_interface_speed = 70 +raft_surface_speed = 90 +retract_at_layer_change = True +retraction_amount = 0.5 +speed_prime_tower = 25.0 +speed_print = 50 +speed_roofing = 50 +speed_support = 50 +speed_support_bottom = 30 +speed_support_interface = 80 +speed_topbottom = 50 +speed_wall_0 = 50 +speed_wall_x = 50 +support_bottom_wall_count = 5 +support_fan_enable = False +support_infill_sparse_thickness = =min(layer_height * 2, machine_nozzle_size * 3 / 4) if layer_height <= 0.15 / 0.4 * machine_nozzle_size else layer_height +support_interface_enable = True +support_wall_count = 1 +support_xy_distance = 0.2 +support_z_distance = 0 + diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-absr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-absr-175_0.2mm.inst.cfg index 2114be0ff4..4af8230b24 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-absr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-absr-175_0.2mm.inst.cfg @@ -12,9 +12,7 @@ variant = LABS weight = -2 [values] -build_volume_temperature = 85 cool_fan_enabled = False -default_material_bed_temperature = 95 raft_airgap = 0.3 speed_prime_tower = 30.0 speed_print = 120.0 diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-asa-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-asa-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..14c15fd3c5 --- /dev/null +++ b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-asa-175_0.2mm.inst.cfg @@ -0,0 +1,51 @@ +[general] +definition = ultimaker_methodxl +name = Fast - Experimental +version = 4 + +[metadata] +is_experimental = True +material = ultimaker_asa_175 +quality_type = draft +setting_version = 22 +type = quality +variant = LABS +weight = -2 + +[values] +cool_fan_enabled = False +material_print_temperature_layer_0 = =default_material_print_temperature+5 +raft_airgap = 0.3 +raft_base_speed = 10 +retract_at_layer_change = True +retraction_amount = 0.5 +retraction_min_travel = 3.2 +roofing_material_flow = 98.0 +small_skin_width = 3.6 +speed_prime_tower = 30.0 +speed_print = 120.0 +speed_roofing = 55 +speed_topbottom = 55 +speed_travel = 500 +speed_travel_layer_0 = 250 +speed_wall_0 = 45 +speed_wall_x = 65 +support_angle = 50 +support_bottom_density = 24 +support_bottom_enable = False +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_fan_enable = False +support_infill_rate = 12.0 +support_interface_enable = True +support_interface_pattern = lines +support_line_width = 0.3 +support_pattern = lines +support_roof_density = 97 +support_roof_height = 1.015 +support_roof_line_width = 0.25 +support_use_towers = False +support_xy_distance = 0.2 +support_xy_distance_overhang = 0.15 +support_z_distance = 0.25 + diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-nylon12-cf-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-nylon12-cf-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..110fa5e4b5 --- /dev/null +++ b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-nylon12-cf-175_0.2mm.inst.cfg @@ -0,0 +1,53 @@ +[general] +definition = ultimaker_methodxl +name = Fast - Experimental +version = 4 + +[metadata] +is_experimental = True +material = ultimaker_nylon12-cf_175 +quality_type = draft +setting_version = 22 +type = quality +variant = LABS +weight = -2 + +[values] +cool_fan_enabled = False +material_final_print_temperature = =default_material_print_temperature-5 +material_initial_print_temperature = =default_material_print_temperature-5 +raft_airgap = 0.3 +raft_base_line_spacing = 3 +raft_base_line_width = 1.2 +raft_base_speed = 10 +retract_at_layer_change = True +retraction_amount = 0.5 +retraction_min_travel = 3.2 +roofing_material_flow = 100 +small_skin_width = 3.6 +speed_prime_tower = 30.0 +speed_print = 120.0 +speed_roofing = 55 +speed_topbottom = 55 +speed_travel = 250.0 +speed_wall_0 = 45 +speed_wall_x = 65 +support_angle = 50 +support_bottom_density = 24 +support_bottom_enable = False +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_fan_enable = False +support_infill_rate = 12.0 +support_interface_enable = True +support_interface_pattern = lines +support_line_width = 0.3 +support_pattern = lines +support_roof_density = 97 +support_roof_height = 1.015 +support_roof_line_width = 0.25 +support_use_towers = False +support_xy_distance = 0.2 +support_xy_distance_overhang = 0.15 +support_z_distance = 0.25 + diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_um-abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_um-abs_0.1mm.inst.cfg index 24c5a1d9e6..f989bcc3f6 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_um-abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_um-abs_0.1mm.inst.cfg @@ -27,6 +27,7 @@ acceleration_wall_x = =acceleration_wall bridge_skin_speed = =bridge_wall_speed bridge_sparse_infill_max_density = 50 bridge_wall_speed = 30 +cool_fan_speed_0 = 0 cool_min_layer_time = 4 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid' infill_sparse_density = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_um-abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_um-abs_0.1mm.inst.cfg index 7b14730a66..29057ff13b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_um-abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_um-abs_0.1mm.inst.cfg @@ -27,6 +27,7 @@ acceleration_wall_x = =acceleration_wall bridge_skin_speed = =bridge_wall_speed bridge_sparse_infill_max_density = 50 bridge_wall_speed = 30 +cool_fan_speed_0 = 0 cool_min_layer_time = 4 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid' infill_sparse_density = 15 From 7a72708217c79275cb97d9ed468976d82e6e77e9 Mon Sep 17 00:00:00 2001 From: HellAholic Date: Tue, 13 Feb 2024 16:04:20 +0100 Subject: [PATCH 085/203] Fix random crash on windows OS on boot up --- cura/PrintOrderManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/PrintOrderManager.py b/cura/PrintOrderManager.py index abfa5442a2..80fc1e99dc 100644 --- a/cura/PrintOrderManager.py +++ b/cura/PrintOrderManager.py @@ -61,7 +61,7 @@ class PrintOrderManager(QObject): is_enabled = stack and \ stack.getProperty("print_sequence", "value") == "one_at_a_time" and \ stack.getProperty("user_defined_print_order_enabled", "value") - return is_enabled + return bool(is_enabled) @staticmethod def initializePrintOrders(nodes: List[CuraSceneNode]) -> None: From 32d9e6b45c56f65beea413248849b8599e62c30a Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Wed, 14 Feb 2024 12:59:41 +0100 Subject: [PATCH 086/203] preference does not change after user changes drop to buildplate for a model CURA-10542 --- cura/PlatformPhysics.py | 12 +++++++++++- plugins/3MFReader/WorkspaceDialog.qml | 10 ++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index d204bee185..b7fe549601 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -39,6 +39,7 @@ class PlatformPhysics: Application.getInstance().getPreferences().addPreference("physics/automatic_push_free", False) Application.getInstance().getPreferences().addPreference("physics/automatic_drop_down", False) + Application.getInstance().getPreferences().addPreference("physics/per_model_drop", False) def _onSceneChanged(self, source): if not source.callDecoration("isSliceable"): @@ -54,6 +55,9 @@ class PlatformPhysics: app_preferences = app_instance.getPreferences() app_automatic_drop_down = app_preferences.getValue("physics/automatic_drop_down") app_automatic_push_free = app_preferences.getValue("physics/automatic_push_free") + # silent preference setting to mimic preference automatic_drop_down only different when user changes it explicitely while opening model + app_per_model_drop = app_preferences.getValue("physics/per_model_drop") + root = self._controller.getScene().getRoot() build_volume = app_instance.getBuildVolume() @@ -81,7 +85,11 @@ class PlatformPhysics: # Move it downwards if bottom is above platform move_vector = Vector() - if node.getSetting(SceneNodeSettings.AutoDropDown, app_automatic_drop_down) and not (node.getParent() and node.getParent().callDecoration("isGroup") or node.getParent() != root) and node.isEnabled(): #If an object is grouped, don't move it down + # if per model drop is different then app_automatic_drop + # in case of 3mf loading when user changes this setting for that model + if (app_per_model_drop != app_automatic_drop_down): + node.setSetting(SceneNodeSettings.AutoDropDown, app_per_model_drop) + if node.getSetting(SceneNodeSettings.AutoDropDown, app_per_model_drop) and not (node.getParent() and node.getParent().callDecoration("isGroup") or node.getParent() != root) and node.isEnabled(): #If an object is grouped, don't move it down z_offset = node.callDecoration("getZOffset") if node.getDecorator(ZOffsetDecorator.ZOffsetDecorator) else 0 move_vector = move_vector.set(y = -bbox.bottom + z_offset) @@ -169,6 +177,8 @@ class PlatformPhysics: op = PlatformPhysicsOperation.PlatformPhysicsOperation(node, move_vector) op.push() + # setting this silent preference same as app_automatic_drop_down + app_preferences.setValue("physics/per_model_drop", app_automatic_drop_down) # After moving, we have to evaluate the boundary checks for nodes build_volume.updateNodeBoundaryCheck() diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 8b4b2341d9..eefa0f713a 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -308,9 +308,14 @@ UM.Dialog spacing: UM.Theme.getSize("default_margin").width UM.CheckBox { + id: checkDropModels text: catalog.i18nc("@text:window", "Drop models to buildplate") - checked: UM.Preferences.getValue("physics/automatic_drop_down") == True - onCheckedChanged: UM.Preferences.setValue("physics/automatic_drop_down", checked) + checked: UM.Preferences.getValue("physics/automatic_drop_down") + onCheckedChanged: UM.Preferences.setValue("physics/per_model_drop", checked) + } + function reloadValue() + { + checkDropModels.checked = UM.Preferences.getValue("physics/automatic_drop_down") } } @@ -436,6 +441,7 @@ UM.Dialog materialSection.reloadValues() profileSection.reloadValues() printerSection.reloadValues() + dropToBuildPlate.reloadValue() } } } From 844f9b3ae81faf76387d6b757d475af4a9058b9a Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Wed, 14 Feb 2024 14:44:54 +0100 Subject: [PATCH 087/203] Changed max. value warning level z support distance to prevent warnings for AA0.25 nozzle using default profiles. PP-424 --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 20a8a698a2..2f63bf5798 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5135,7 +5135,7 @@ "unit": "mm", "type": "float", "minimum_value": "0", - "maximum_value_warning": "machine_nozzle_size", + "maximum_value_warning": "5*layer_height", "default_value": 0.1, "limit_to_extruder": "support_interface_extruder_nr if support_interface_enable else support_infill_extruder_nr", "enabled": "support_enable or support_meshes_present", From 831af362cb9acb61192f76421c33f884c88b2f2b Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Wed, 14 Feb 2024 15:46:40 +0100 Subject: [PATCH 088/203] Constantify magic values. part of CURA-11406 --- cura/OAuth2/AuthorizationService.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cura/OAuth2/AuthorizationService.py b/cura/OAuth2/AuthorizationService.py index 1832ff37c2..4e8d28173a 100644 --- a/cura/OAuth2/AuthorizationService.py +++ b/cura/OAuth2/AuthorizationService.py @@ -1,4 +1,4 @@ -# Copyright (c) 2021 Ultimaker B.V. +# Copyright (c) 2024 UltiMaker # Cura is released under the terms of the LGPLv3 or higher. import json @@ -26,6 +26,8 @@ if TYPE_CHECKING: MYCLOUD_LOGOFF_URL = "https://account.ultimaker.com/logoff?utm_source=cura&utm_medium=software&utm_campaign=change-account-before-adding-printers" +REFRESH_TOKEN_MAX_RETRIES = 15 +REFRESH_TOKEN_RETRY_INTERVAL = 1000 class AuthorizationService: """The authorization service is responsible for handling the login flow, storing user credentials and providing @@ -60,7 +62,7 @@ class AuthorizationService: self._refresh_token_retries = 0 self._refresh_token_retry_timer = QTimer() - self._refresh_token_retry_timer.setInterval(1000) + self._refresh_token_retry_timer.setInterval(REFRESH_TOKEN_RETRY_INTERVAL) self._refresh_token_retry_timer.setSingleShot(True) self._refresh_token_retry_timer.timeout.connect(self.refreshAccessToken) @@ -182,7 +184,7 @@ class AuthorizationService: HttpRequestManager.getInstance().setDelayRequests(False) self.onAuthStateChanged.emit(logged_in = True) else: - if self._refresh_token_retries >= 15: + if self._refresh_token_retries >= REFRESH_TOKEN_MAX_RETRIES: self._refresh_token_retries = 0 Logger.warning("Failed to get a new access token from the server, giving up.") HttpRequestManager.getInstance().setDelayRequests(False) From 6d5e5ae718748e89575d6714c0b6dbfe35ace7f4 Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Wed, 14 Feb 2024 17:15:27 +0100 Subject: [PATCH 089/203] setting up printorder in case nodes came from copy paste or multiply CURA-10542 --- cura/PrintOrderManager.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cura/PrintOrderManager.py b/cura/PrintOrderManager.py index 80fc1e99dc..59bbe684f4 100644 --- a/cura/PrintOrderManager.py +++ b/cura/PrintOrderManager.py @@ -116,6 +116,9 @@ class PrintOrderManager(QObject): ) -> (Optional[CuraSceneNode], Optional[CuraSceneNode], Optional[CuraSceneNode]): nodes = self._get_nodes() ordered_nodes = sorted(nodes, key=lambda n: n.printOrder) + for i, node in enumerate(ordered_nodes, 1): + node.printOrder = i + selected_node = PrintOrderManager._getSingleSelectedNode() if selected_node and selected_node in ordered_nodes: selected_node_index = ordered_nodes.index(selected_node) From f54d6099cd97c995b3a01beb177969a4a9a2a244 Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Thu, 15 Feb 2024 11:23:34 +0100 Subject: [PATCH 090/203] removed the preference made it a member of class platformphysics CURA-10542 --- cura/CuraApplication.py | 4 ++++ cura/PlatformPhysics.py | 24 ++++++++++++----------- plugins/3MFReader/WorkspaceDialog.py | 5 +++++ plugins/3MFReader/WorkspaceDialog.qml | 2 +- resources/qml/Preferences/GeneralPage.qml | 6 +++++- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 76e3e4b400..153788b867 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1082,6 +1082,10 @@ class CuraApplication(QtApplication): def getTextManager(self, *args) -> "TextManager": return self._text_manager + @pyqtSlot(bool) + def getLocalDropToBuildplate(self, drop_to_build_plate: bool) ->None: + return self._physics.setAppPerModelDropDown(drop_to_build_plate) + def getCuraFormulaFunctions(self, *args) -> "CuraFormulaFunctions": if self._cura_formula_functions is None: self._cura_formula_functions = CuraFormulaFunctions(self) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index b7fe549601..6a26190a56 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -39,7 +39,13 @@ class PlatformPhysics: Application.getInstance().getPreferences().addPreference("physics/automatic_push_free", False) Application.getInstance().getPreferences().addPreference("physics/automatic_drop_down", False) - Application.getInstance().getPreferences().addPreference("physics/per_model_drop", False) + self._app_per_model_drop = Application.getInstance().getPreferences().getValue("physics/automatic_drop_down") + + def getAppPerModelDropDown(self): + return self._app_per_model_drop + + def setAppPerModelDropDown(self, drop_to_buildplate): + self._app_per_model_drop = drop_to_buildplate def _onSceneChanged(self, source): if not source.callDecoration("isSliceable"): @@ -55,9 +61,6 @@ class PlatformPhysics: app_preferences = app_instance.getPreferences() app_automatic_drop_down = app_preferences.getValue("physics/automatic_drop_down") app_automatic_push_free = app_preferences.getValue("physics/automatic_push_free") - # silent preference setting to mimic preference automatic_drop_down only different when user changes it explicitely while opening model - app_per_model_drop = app_preferences.getValue("physics/per_model_drop") - root = self._controller.getScene().getRoot() build_volume = app_instance.getBuildVolume() @@ -85,11 +88,10 @@ class PlatformPhysics: # Move it downwards if bottom is above platform move_vector = Vector() - # if per model drop is different then app_automatic_drop - # in case of 3mf loading when user changes this setting for that model - if (app_per_model_drop != app_automatic_drop_down): - node.setSetting(SceneNodeSettings.AutoDropDown, app_per_model_drop) - if node.getSetting(SceneNodeSettings.AutoDropDown, app_per_model_drop) and not (node.getParent() and node.getParent().callDecoration("isGroup") or node.getParent() != root) and node.isEnabled(): #If an object is grouped, don't move it down + # if per model drop is different then app_automatic_drop, in case of 3mf loading when user changes this setting for that model + if (self._app_per_model_drop != app_automatic_drop_down): + node.setSetting(SceneNodeSettings.AutoDropDown, self._app_per_model_drop) + if node.getSetting(SceneNodeSettings.AutoDropDown, self._app_per_model_drop) and not (node.getParent() and node.getParent().callDecoration("isGroup") or node.getParent() != root) and node.isEnabled(): #If an object is grouped, don't move it down z_offset = node.callDecoration("getZOffset") if node.getDecorator(ZOffsetDecorator.ZOffsetDecorator) else 0 move_vector = move_vector.set(y = -bbox.bottom + z_offset) @@ -177,8 +179,8 @@ class PlatformPhysics: op = PlatformPhysicsOperation.PlatformPhysicsOperation(node, move_vector) op.push() - # setting this silent preference same as app_automatic_drop_down - app_preferences.setValue("physics/per_model_drop", app_automatic_drop_down) + # setting this drop to model same as app_automatic_drop_down + self._app_per_model_drop = app_automatic_drop_down # After moving, we have to evaluate the boundary checks for nodes build_volume.updateNodeBoundaryCheck() diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 0203fc92b5..5b8ddeb2f9 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -299,6 +299,11 @@ class WorkspaceDialog(QObject): Application.getInstance().getBackend().close() + @pyqtSlot(bool) + def setDropToBuildPlateForModel(self, drop_to_buildplate: bool) -> None: + CuraApplication.getInstance().getLocalDropToBuildplate(drop_to_buildplate) + + def setMaterialConflict(self, material_conflict: bool) -> None: if self._has_material_conflict != material_conflict: self._has_material_conflict = material_conflict diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index eefa0f713a..cb1664a2c0 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -311,7 +311,7 @@ UM.Dialog id: checkDropModels text: catalog.i18nc("@text:window", "Drop models to buildplate") checked: UM.Preferences.getValue("physics/automatic_drop_down") - onCheckedChanged: UM.Preferences.setValue("physics/per_model_drop", checked) + onCheckedChanged: manager.setDropToBuildPlateForModel(checked) } function reloadValue() { diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index af63743931..0fbc319fb9 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -509,7 +509,11 @@ UM.PreferencesPage id: dropDownCheckbox text: catalog.i18nc("@option:check", "Automatically drop models to the build plate") checked: boolCheck(UM.Preferences.getValue("physics/automatic_drop_down")) - onCheckedChanged: UM.Preferences.setValue("physics/automatic_drop_down", checked) + onCheckedChanged: + { + UM.Preferences.setValue("physics/automatic_drop_down", checked) + CuraApplication.getLocalDropToBuildplate(checked) + } } } From d68a454fa9170eea4659f4dee2fc84fc71d15d3d Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Thu, 15 Feb 2024 11:35:09 +0100 Subject: [PATCH 091/203] function name change to getWorkplaceDropToBuildplate CURA-10542 --- cura/CuraApplication.py | 2 +- plugins/3MFReader/WorkspaceDialog.py | 2 +- resources/qml/Preferences/GeneralPage.qml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 153788b867..20e54fa57c 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1083,7 +1083,7 @@ class CuraApplication(QtApplication): return self._text_manager @pyqtSlot(bool) - def getLocalDropToBuildplate(self, drop_to_build_plate: bool) ->None: + def getWorkplaceDropToBuildplate(self, drop_to_build_plate: bool) ->None: return self._physics.setAppPerModelDropDown(drop_to_build_plate) def getCuraFormulaFunctions(self, *args) -> "CuraFormulaFunctions": diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 5b8ddeb2f9..02e71f2185 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -301,7 +301,7 @@ class WorkspaceDialog(QObject): @pyqtSlot(bool) def setDropToBuildPlateForModel(self, drop_to_buildplate: bool) -> None: - CuraApplication.getInstance().getLocalDropToBuildplate(drop_to_buildplate) + CuraApplication.getInstance().getWorkplaceDropToBuildplate(drop_to_buildplate) def setMaterialConflict(self, material_conflict: bool) -> None: diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 0fbc319fb9..69607a3f6b 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -512,7 +512,7 @@ UM.PreferencesPage onCheckedChanged: { UM.Preferences.setValue("physics/automatic_drop_down", checked) - CuraApplication.getLocalDropToBuildplate(checked) + CuraApplication.getWorkplaceDropToBuildplate(checked) } } } From 831c72dbe5d64b468eb2089ecdd3cce24a584f59 Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Thu, 15 Feb 2024 15:03:13 +0100 Subject: [PATCH 092/203] Fix unit-tests. related to internal ticket CURA-11406 --- tests/TestOAuth2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/TestOAuth2.py b/tests/TestOAuth2.py index 09fa555af4..82d138a71e 100644 --- a/tests/TestOAuth2.py +++ b/tests/TestOAuth2.py @@ -97,7 +97,7 @@ def test__parseJWTNoRefreshToken(): mock_reply = Mock() # The user profile that the service should respond with. mock_reply.error = Mock(return_value = QNetworkReply.NetworkError.NoError) http_mock = Mock() - http_mock.get = lambda url, headers_dict, callback, error_callback: callback(mock_reply) + http_mock.get = lambda url, headers_dict, callback, error_callback, timeout: callback(mock_reply) http_mock.readJSON = Mock(return_value = {"data": {"user_id": "id_ego_or_superego", "username": "Ghostkeeper"}}) with patch("UM.TaskManagement.HttpRequestManager.HttpRequestManager.getInstance", MagicMock(return_value = http_mock)): From 58f8eae80cd84cf0112a4d851a842f3ff36cc430 Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Thu, 15 Feb 2024 15:45:49 +0100 Subject: [PATCH 093/203] Fix more unit-tests. related to internal ticket CURA-11406 --- tests/TestOAuth2.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/TestOAuth2.py b/tests/TestOAuth2.py index 82d138a71e..c7985e39f3 100644 --- a/tests/TestOAuth2.py +++ b/tests/TestOAuth2.py @@ -119,8 +119,8 @@ def test__parseJWTFailOnRefresh(): mock_reply = Mock() # The response that the request should give, containing an error about it failing to authenticate. mock_reply.error = Mock(return_value = QNetworkReply.NetworkError.AuthenticationRequiredError) # The reply is 403: Authentication required, meaning the server responded with a "Can't do that, Dave". http_mock = Mock() - http_mock.get = lambda url, headers_dict, callback, error_callback: callback(mock_reply) - http_mock.post = lambda url, data, headers_dict, callback, error_callback: callback(mock_reply) + http_mock.get = lambda url, headers_dict, callback, error_callback, timeout: callback(mock_reply) + http_mock.post = lambda url, data, headers_dict, callback, error_callback, timeout: callback(mock_reply) with patch("UM.TaskManagement.HttpRequestManager.HttpRequestManager.readJSON", Mock(return_value = {"error_description": "Mock a failed request!"})): with patch("UM.TaskManagement.HttpRequestManager.HttpRequestManager.getInstance", MagicMock(return_value = http_mock)): @@ -142,7 +142,7 @@ def test__parseJWTSucceedOnRefresh(): mock_reply_failure = Mock() mock_reply_failure.error = Mock(return_value = QNetworkReply.NetworkError.AuthenticationRequiredError) http_mock = Mock() - def mock_get(url, headers_dict, callback, error_callback): + def mock_get(url, headers_dict, callback, error_callback, timeout): if(headers_dict == {"Authorization": "Bearer beep"}): callback(mock_reply_success) else: @@ -181,8 +181,8 @@ def test_refreshAccessTokenFailed(): mock_reply = Mock() # The response that the request should give, containing an error about it failing to authenticate. mock_reply.error = Mock(return_value = QNetworkReply.NetworkError.AuthenticationRequiredError) # The reply is 403: Authentication required, meaning the server responded with a "Can't do that, Dave". http_mock = Mock() - http_mock.get = lambda url, headers_dict, callback, error_callback: callback(mock_reply) - http_mock.post = lambda url, data, headers_dict, callback, error_callback: callback(mock_reply) + http_mock.get = lambda url, headers_dict, callback, error_callback, timeout: callback(mock_reply) + http_mock.post = lambda url, data, headers_dict, callback, error_callback, timeout: callback(mock_reply) with patch("UM.TaskManagement.HttpRequestManager.HttpRequestManager.readJSON", Mock(return_value = {"error_description": "Mock a failed request!"})): with patch("UM.TaskManagement.HttpRequestManager.HttpRequestManager.getInstance", MagicMock(return_value = http_mock)): @@ -263,7 +263,7 @@ def test_loginAndLogout() -> None: mock_reply = Mock() # The user profile that the service should respond with. mock_reply.error = Mock(return_value = QNetworkReply.NetworkError.NoError) http_mock = Mock() - http_mock.get = lambda url, headers_dict, callback, error_callback: callback(mock_reply) + http_mock.get = lambda url, headers_dict, callback, error_callback, timeout: callback(mock_reply) http_mock.readJSON = Mock(return_value = {"data": {"user_id": "di_resu", "username": "Emanresu"}}) # Let the service think there was a successful response From 77823a9c122331e24496c75be34c6365b2bf37b0 Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Thu, 15 Feb 2024 16:01:32 +0100 Subject: [PATCH 094/203] Fix more unit-tests II. related to internal ticket CURA-11406 --- tests/TestOAuth2.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/TestOAuth2.py b/tests/TestOAuth2.py index c7985e39f3..41edaebbf7 100644 --- a/tests/TestOAuth2.py +++ b/tests/TestOAuth2.py @@ -120,7 +120,7 @@ def test__parseJWTFailOnRefresh(): mock_reply.error = Mock(return_value = QNetworkReply.NetworkError.AuthenticationRequiredError) # The reply is 403: Authentication required, meaning the server responded with a "Can't do that, Dave". http_mock = Mock() http_mock.get = lambda url, headers_dict, callback, error_callback, timeout: callback(mock_reply) - http_mock.post = lambda url, data, headers_dict, callback, error_callback, timeout: callback(mock_reply) + http_mock.post = lambda url, data, headers_dict, callback, error_callback, urgent, timeout: callback(mock_reply) with patch("UM.TaskManagement.HttpRequestManager.HttpRequestManager.readJSON", Mock(return_value = {"error_description": "Mock a failed request!"})): with patch("UM.TaskManagement.HttpRequestManager.HttpRequestManager.getInstance", MagicMock(return_value = http_mock)): @@ -182,7 +182,7 @@ def test_refreshAccessTokenFailed(): mock_reply.error = Mock(return_value = QNetworkReply.NetworkError.AuthenticationRequiredError) # The reply is 403: Authentication required, meaning the server responded with a "Can't do that, Dave". http_mock = Mock() http_mock.get = lambda url, headers_dict, callback, error_callback, timeout: callback(mock_reply) - http_mock.post = lambda url, data, headers_dict, callback, error_callback, timeout: callback(mock_reply) + http_mock.post = lambda url, data, headers_dict, callback, error_callback, urgent, timeout: callback(mock_reply) with patch("UM.TaskManagement.HttpRequestManager.HttpRequestManager.readJSON", Mock(return_value = {"error_description": "Mock a failed request!"})): with patch("UM.TaskManagement.HttpRequestManager.HttpRequestManager.getInstance", MagicMock(return_value = http_mock)): From 335a54c6d1c432e64784f95c69e77125bd0d57f1 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 9 Feb 2024 11:27:54 +0100 Subject: [PATCH 095/203] Enable prime tower mode according to materials types --- .../XmlMaterialProfile/XmlMaterialProfile.py | 9 ++++--- resources/definitions/fdmprinter.def.json | 26 +++++++++++++++---- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 490d704d19..0eede82d2f 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -579,8 +579,9 @@ class XmlMaterialProfile(InstanceContainer): meta_data[tag_name] = entry.text - if tag_name in self.__material_metadata_setting_map: - common_setting_values[self.__material_metadata_setting_map[tag_name]] = entry.text + for tag_name, value in meta_data.items(): + if tag_name in self.__material_metadata_setting_map: + common_setting_values[self.__material_metadata_setting_map[tag_name]] = value if "description" not in meta_data: meta_data["description"] = "" @@ -1222,7 +1223,9 @@ class XmlMaterialProfile(InstanceContainer): "diameter": "material_diameter" } __material_metadata_setting_map = { - "GUID": "material_guid" + "GUID": "material_guid", + "material": "material_type", + "brand": "material_brand", } # Map of recognised namespaces with a proper prefix. diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index a66c623826..b821f3d6c6 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -76,6 +76,22 @@ "type": "str", "enabled": false }, + "material_type": + { + "label": "Material Type", + "description": "The type of material used.", + "default_value": "", + "type": "str", + "enabled": false + }, + "material_brand": + { + "label": "Material Brand", + "description": "The brand of material used.", + "default_value": "", + "type": "str", + "enabled": false + }, "material_diameter": { "label": "Diameter", @@ -6769,14 +6785,14 @@ "prime_tower_mode": { "label": "Prime Tower", - "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.
  • None: do not generate a prime tower
  • Bucket: generate a bucket in which secondary materials are primed
  • Sparse: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", + "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.
  • None: do not generate a prime tower
  • Normal: generate a bucket in which secondary materials are primed
  • Interleaved: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", "type": "enum", - "value": "'optimized' if all(material_type == extruderValues('material_type')[0] for material_type in extruderValues('material_type')) else 'optimized_consistent'", + "value": "'none' if (extruders_enabled_count < 2) else ('interleaved' if (all(material_type_var == extruderValues('material_type')[0] for material_type_var in extruderValues('material_type')) and all(material_brand_var == extruderValues('material_brand')[0] for material_brand_var in extruderValues('material_brand'))) else 'normal')", "options": { "none": "None", - "bucket": "Bucket", - "sparse": "Sparse" + "normal": "Normal", + "interleaved": "Interleaved" }, "default_value": "none", "enabled": "extruders_enabled_count > 1", @@ -6821,7 +6837,7 @@ "default_value": 5, "minimum_value": "line_width", "maximum_value_warning": "10.0", - "enabled": "resolveOrValue('prime_tower_mode') == 'sparse' or resolveOrValue('prime_tower_mode') == 'bucket'", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", "settable_per_mesh": false, "settable_per_extruder": true }, From 5a291f9ba9e83c85d1bdfe1c0e907e0df8154f6f Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 16 Feb 2024 09:04:48 +0100 Subject: [PATCH 096/203] Change prime_tower_enable to prime_tower_mode in all defs/profiles --- plugins/LegacyProfileReader/DictionaryOfDoom.json | 2 +- resources/definitions/atmat_signal_pro_base.def.json | 2 +- resources/definitions/deltacomb_dc20flux.def.json | 2 +- resources/definitions/deltacomb_dc21flux.def.json | 2 +- resources/definitions/deltacomb_dc30flux.def.json | 2 +- resources/definitions/dxu_dual.def.json | 2 +- resources/definitions/elegoo_neptune_2D.def.json | 2 +- resources/definitions/leapfrog_bolt_pro.def.json | 2 +- resources/definitions/lotmaxx_sc60.def.json | 2 +- resources/definitions/strateo3d_IDEX420.def.json | 2 +- resources/definitions/ultimaker3.def.json | 2 +- resources/definitions/ultimaker_method_base.def.json | 2 +- resources/definitions/ultimaker_s3.def.json | 2 +- resources/definitions/ultimaker_s5.def.json | 2 +- .../Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg | 2 +- .../Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg | 2 +- .../Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg | 2 +- .../Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg | 2 +- .../Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg | 2 +- .../Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_A.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_B.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_C.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_D.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_E.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_C.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_D.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_E.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_F.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_A.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_B.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_C.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_D.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_E.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_C.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_D.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_E.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_F.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_D.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_E.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_F.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_G.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_D.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_E.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_F.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_G.inst.cfg | 2 +- .../pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.10.inst.cfg | 2 +- .../pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.15.inst.cfg | 2 +- .../pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.20.inst.cfg | 2 +- .../pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.30.inst.cfg | 2 +- .../pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.30.inst.cfg | 2 +- .../pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.40.inst.cfg | 2 +- .../pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.60.inst.cfg | 2 +- .../nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.10.inst.cfg | 2 +- .../nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.15.inst.cfg | 2 +- .../nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.20.inst.cfg | 2 +- .../nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.30.inst.cfg | 2 +- .../quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg | 2 +- .../quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg | 2 +- .../quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg | 2 +- .../gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_ABS_Draft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_ABS_Fast_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_ABS_High_Quality.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.4_ABS_Normal_Quality.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PC_Draft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PC_Fast_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PC_High_Quality.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.4_PC_Normal_Quality.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PETG_Draft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PETG_Fast_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.4_PETG_High_Quality.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.4_PETG_Normal_Quality.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PLA_Draft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PLA_Fast_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PLA_High_Quality.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.4_PLA_Normal_Quality.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PP_Draft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PP_Fast_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.4_PP_Normal_Quality.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.6_PETG_Draft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.6_PETG_Fast_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.6_PLA_Draft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.6_PLA_Fast_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.8_CPE_Draft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_CPE_Superdraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_CPE_Verydraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_Nylon_Draft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_Nylon_Superdraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_Nylon_Verydraft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.8_PETG_Draft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_PETG_Superdraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_PETG_Verydraft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.8_PLA_Draft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_PLA_Superdraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_PLA_Verydraft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.8_PP_Draft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_PP_Superdraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_PP_Verydraft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.8_TPU_Draft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_TPU_Superdraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_TPU_Verydraft_Print.inst.cfg | 2 +- resources/quality/nps/nps_ABS_B.inst.cfg | 2 +- resources/quality/nps/nps_ABS_C.inst.cfg | 2 +- resources/quality/nps/nps_PC_A.inst.cfg | 2 +- resources/quality/nps/nps_PC_B.inst.cfg | 2 +- resources/quality/nps/nps_PC_C.inst.cfg | 2 +- resources/quality/nps/nps_PETG_A.inst.cfg | 2 +- resources/quality/nps/nps_PETG_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PEKK_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_C.inst.cfg | 2 +- .../strateo3d/Standard_0_4/s3d_std0.4_ACETATE_A.inst.cfg | 2 +- .../strateo3d/Standard_0_4/s3d_std0.4_ACETATE_B.inst.cfg | 2 +- .../strateo3d/Standard_0_4/s3d_std0.4_ACETATE_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PC_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PC_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PC_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_D.inst.cfg | 2 +- .../strateo3d/Standard_0_6/s3d_std0.6_ACETATE_B.inst.cfg | 2 +- .../strateo3d/Standard_0_6/s3d_std0.6_ACETATE_C.inst.cfg | 2 +- .../strateo3d/Standard_0_6/s3d_std0.6_ACETATE_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_D.inst.cfg | 2 +- .../strateo3d/Standard_0_6/s3d_std0.6_Nylon-1030_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PC_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PC_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PC_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PC_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PC_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PC_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_ABS_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_ABS_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_ABS_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_ASA-X_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_ASA-X_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_ASA-X_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_BVOH_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_BVOH_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_BVOH_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_HIPS_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_HIPS_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_HIPS_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PA6CF_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PA6CF_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PA6CF_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PA6GF_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PA6GF_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PA6GF_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PETG_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PETG_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PETG_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PLA_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PLA_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PLA_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PVA-M_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PVA-M_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PVA-M_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PVA-S_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PVA-S_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PVA-S_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_TPU98A_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_TPU98A_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_TPU98A_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_ABS_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_ABS_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_ABS_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_ASA-X_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_ASA-X_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_ASA-X_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_BVOH_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_BVOH_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_BVOH_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_HIPS_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_HIPS_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_HIPS_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PA6CF_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PA6CF_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PA6CF_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PA6GF_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PA6GF_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PA6GF_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PETG_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PETG_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PETG_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PLA_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PLA_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PLA_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PVA-M_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PVA-M_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PVA-M_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PVA-S_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PVA-S_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PVA-S_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_TPU98A_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_TPU98A_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_TPU98A_H.inst.cfg | 2 +- .../tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg | 2 +- .../tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg | 2 +- .../tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg | 2 +- .../tizyx_evy_dual_global_Normal_Quality.inst.cfg | 2 +- .../tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PETG_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PETG_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PETG_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.3mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.06mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.15mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.1mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.4mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.3mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.3mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.06mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.15mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.1mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.4mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.3mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.2mm.inst.cfg | 2 +- resources/variants/liquid/liquid_vo08.inst.cfg | 2 +- resources/variants/strateo3d/strateo3d_high_temp_04.inst.cfg | 2 +- resources/variants/strateo3d/strateo3d_standard_04.inst.cfg | 2 +- resources/variants/strateo3d/strateo3d_standard_06.inst.cfg | 2 +- resources/variants/strateo3d/strateo3d_standard_08.inst.cfg | 2 +- resources/variants/strateo3d/strateo3d_standard_10.inst.cfg | 2 +- resources/variants/strateo3d/strateo3d_standard_12.inst.cfg | 2 +- resources/variants/ultimaker3_aa0.8.inst.cfg | 2 +- resources/variants/ultimaker3_bb0.8.inst.cfg | 2 +- resources/variants/ultimaker3_extended_aa0.8.inst.cfg | 2 +- resources/variants/ultimaker3_extended_bb0.8.inst.cfg | 2 +- resources/variants/ultimaker_s3_aa0.8.inst.cfg | 2 +- resources/variants/ultimaker_s3_bb0.8.inst.cfg | 2 +- resources/variants/ultimaker_s5_aa0.8.inst.cfg | 2 +- resources/variants/ultimaker_s5_bb0.8.inst.cfg | 2 +- resources/variants/ultimaker_s7_aa0.8.inst.cfg | 2 +- resources/variants/ultimaker_s7_bb0.8.inst.cfg | 2 +- 628 files changed, 628 insertions(+), 628 deletions(-) diff --git a/plugins/LegacyProfileReader/DictionaryOfDoom.json b/plugins/LegacyProfileReader/DictionaryOfDoom.json index f65cc271d1..90e973b779 100644 --- a/plugins/LegacyProfileReader/DictionaryOfDoom.json +++ b/plugins/LegacyProfileReader/DictionaryOfDoom.json @@ -68,7 +68,7 @@ "meshfix_keep_open_polygons": "fix_horrible_use_open_bits", "magic_mesh_surface_mode": "\"surface\" if simple_mode else \"normal\"", "magic_spiralize": "spiralize", - "prime_tower_enable": "wipe_tower", + "prime_tower_mode": "\"normal\" if wipe_tower else \"none\"", "prime_tower_size": "math.sqrt(float(wipe_tower_volume) / float(layer_height))", "ooze_shield_enabled": "ooze_shield", "skin_overlap": "fill_overlap" diff --git a/resources/definitions/atmat_signal_pro_base.def.json b/resources/definitions/atmat_signal_pro_base.def.json index cd59e1c169..83af53fb3c 100644 --- a/resources/definitions/atmat_signal_pro_base.def.json +++ b/resources/definitions/atmat_signal_pro_base.def.json @@ -110,7 +110,7 @@ "min_infill_area": { "value": "5.0" }, "minimum_polygon_circumference": { "value": "0.2" }, "optimize_wall_printing_order": { "value": "True" }, - "prime_tower_enable": { "value": "True" }, + "prime_tower_mode": { "value": "normal" }, "retraction_amount": { "value": "1" }, "retraction_combing": { "value": "'noskin'" }, "retraction_combing_max_distance": { "value": "10" }, diff --git a/resources/definitions/deltacomb_dc20flux.def.json b/resources/definitions/deltacomb_dc20flux.def.json index f81909dae5..cc4a38c4d5 100644 --- a/resources/definitions/deltacomb_dc20flux.def.json +++ b/resources/definitions/deltacomb_dc20flux.def.json @@ -31,7 +31,7 @@ "material_final_print_temperature": { "value": "material_print_temperature" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, - "prime_tower_enable": { "value": true }, + "prime_tower_mode": { "value": "normal" }, "prime_tower_min_volume": { "value": "50" }, "switch_extruder_retraction_amount": { "value": "0" } } diff --git a/resources/definitions/deltacomb_dc21flux.def.json b/resources/definitions/deltacomb_dc21flux.def.json index dbcdf3ad37..dd710af627 100644 --- a/resources/definitions/deltacomb_dc21flux.def.json +++ b/resources/definitions/deltacomb_dc21flux.def.json @@ -31,7 +31,7 @@ "material_final_print_temperature": { "value": "material_print_temperature" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, - "prime_tower_enable": { "value": true }, + "prime_tower_mode": { "value": "normal" }, "prime_tower_min_volume": { "value": "50" }, "switch_extruder_retraction_amount": { "value": "0" } } diff --git a/resources/definitions/deltacomb_dc30flux.def.json b/resources/definitions/deltacomb_dc30flux.def.json index 4a42ae4d63..789af29650 100644 --- a/resources/definitions/deltacomb_dc30flux.def.json +++ b/resources/definitions/deltacomb_dc30flux.def.json @@ -31,7 +31,7 @@ "material_final_print_temperature": { "value": "material_print_temperature" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, - "prime_tower_enable": { "value": "1" }, + "prime_tower_mode": { "value": "normal" }, "prime_tower_min_volume": { "value": "50" }, "switch_extruder_retraction_amount": { "value": "0" } } diff --git a/resources/definitions/dxu_dual.def.json b/resources/definitions/dxu_dual.def.json index 6d30af005f..8fb2092b65 100644 --- a/resources/definitions/dxu_dual.def.json +++ b/resources/definitions/dxu_dual.def.json @@ -6,6 +6,6 @@ { "machine_end_gcode": { "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \"G90 ;absolute positioning\\nM104 S0 T0 ;extruder heater off\\nM104 S0 T1\\nM140 S0 ;turn off bed\\nT0 ; move to the first head\\nM107 ;fan off\"" }, "machine_start_gcode": { "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \";material_bed_temperature={material_bed_temperature} material_print_temperature={material_print_temperature} material_print_temperature_layer_0={material_print_temperature_layer_0}\\nM190 S{material_bed_temperature_layer_0}\\nM104 T0 S{material_standby_temperature, 0}\\nM104 T0 S{material_print_temperature_layer_0, 0}\\nG21 ;metric values\\nG90 ;absolute positioning\\nM82 ;set extruder to absolute mode\\nM107 ;start with the fan off\\nM200 D0 T0 ;reset filament diameter\\nM200 D0 T1\\nG28 ;home all\\nT1 ; move to the nozzle 2\\nG0 Z20 F2400 ;move the platform to 30mm\\nM109 T1 S{material_print_temperature_layer_0, 1}\\nG0 X210 Y20 F7200\\nG92 E0\\nG92 E-7.0 ;prime distance\\nG1 E0 F45 ;purge nozzle\\nG1 E-6.5 F1500 ; retract\\nT0 ; move to the nozzle 1\\nM104 T1 S{material_standby_temperature, 1}\\nG0 Z20 F2400\\nM109 T0 S{material_print_temperature_layer_0, 0}\\nG0 X210 Y20 F7200\\nG92 E0\\nG92 E-7.0\\nG1 E0 F45 ;purge nozzle\\nG1 E-6.5 F1500\\nM104 T0 S{material_standby_temperature, 0}\\nT{initial_extruder_nr} ;switch to the first nozzle used for print\\nM109 T{initial_extruder_nr} S{material_print_temperature_layer_0, initial_extruder_nr}\\nM400 ;finish all moves\\nG1 E0 F1500\\nG92 E0\\n;end of startup sequence\\n\"" }, - "prime_tower_enable": { "default_value": true } + "prime_tower_mode": { "default_value": "normal" } } } \ No newline at end of file diff --git a/resources/definitions/elegoo_neptune_2D.def.json b/resources/definitions/elegoo_neptune_2D.def.json index c9aa5a0184..e564acc036 100644 --- a/resources/definitions/elegoo_neptune_2D.def.json +++ b/resources/definitions/elegoo_neptune_2D.def.json @@ -55,7 +55,7 @@ "settable_per_extruder": false }, "prime_blob_enable": { "default_value": false }, - "prime_tower_enable": { "default_value": true }, + "prime_tower_mode": { "default_value": "normal" }, "prime_tower_min_volume": { "default_value": 90 }, "prime_tower_size": { "default_value": 30 }, "raft_airgap": { "default_value": 0.25 }, diff --git a/resources/definitions/leapfrog_bolt_pro.def.json b/resources/definitions/leapfrog_bolt_pro.def.json index e4a13217e5..449967072f 100644 --- a/resources/definitions/leapfrog_bolt_pro.def.json +++ b/resources/definitions/leapfrog_bolt_pro.def.json @@ -80,7 +80,7 @@ "material_final_print_temperature": { "value": "default_material_print_temperature" }, "material_initial_print_temperature": { "value": "default_material_print_temperature" }, "material_standby_temperature": { "enabled": false }, - "prime_tower_enable": { "resolve": "extruders_enabled_count > 1" }, + "prime_tower_mode": { "resolve": "'normal' if extruders_enabled_count > 1 else 'none'" }, "retraction_amount": { "default_value": 2 }, "retraction_combing": { "value": "'all'" }, "skirt_line_count": { "default_value": 3 }, diff --git a/resources/definitions/lotmaxx_sc60.def.json b/resources/definitions/lotmaxx_sc60.def.json index f4ce358be1..697dd911b6 100644 --- a/resources/definitions/lotmaxx_sc60.def.json +++ b/resources/definitions/lotmaxx_sc60.def.json @@ -44,7 +44,7 @@ "machine_width": { "default_value": 235 }, "meshfix_maximum_resolution": { "value": 0.25 }, "optimize_wall_printing_order": { "value": true }, - "prime_tower_enable": { "value": true }, + "prime_tower_mode": { "value": "normal" }, "prime_tower_min_volume": { "value": 30 }, "retract_at_layer_change": { "value": false }, "retraction_amount": { "value": 4.5 }, diff --git a/resources/definitions/strateo3d_IDEX420.def.json b/resources/definitions/strateo3d_IDEX420.def.json index d4236c126e..66ecb9999c 100644 --- a/resources/definitions/strateo3d_IDEX420.def.json +++ b/resources/definitions/strateo3d_IDEX420.def.json @@ -112,7 +112,7 @@ "machine_use_extruder_offset_to_offset_coords": { "default_value": false }, "machine_width": { "default_value": 420 }, "material_diameter": { "default_value": 1.75 }, - "prime_tower_enable": { "default_value": true }, + "prime_tower_mode": { "default_value": "normal" }, "prime_tower_min_volume": { "default_value": 35.6 }, "raft_acceleration": { "value": "machine_acceleration" }, "raft_base_acceleration": { "value": "machine_acceleration" }, diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index 19df92c08d..0404e98b1d 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -149,7 +149,7 @@ "enabled": true, "value": "resolveOrValue('print_sequence') != 'one_at_a_time'" }, - "prime_tower_enable": { "default_value": true }, + "prime_tower_mode": { "default_value": "normal" }, "prime_tower_position_x": { "value": "185" }, "prime_tower_wipe_enabled": { "default_value": false }, "retraction_amount": { "value": "6.5" }, diff --git a/resources/definitions/ultimaker_method_base.def.json b/resources/definitions/ultimaker_method_base.def.json index 1ceb05a43a..89aaa1b170 100644 --- a/resources/definitions/ultimaker_method_base.def.json +++ b/resources/definitions/ultimaker_method_base.def.json @@ -346,7 +346,7 @@ "prime_tower_base_curve_magnitude": { "value": 2 }, "prime_tower_base_height": { "value": 6 }, "prime_tower_base_size": { "value": 10 }, - "prime_tower_enable": { "value": false }, + "prime_tower_mode": { "value": "none" }, "prime_tower_flow": { "value": "material_flow" }, "prime_tower_line_width": { "value": 1 }, "prime_tower_raft_base_line_spacing": { "value": "raft_base_line_width" }, diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json index add1782368..d893c16f4e 100644 --- a/resources/definitions/ultimaker_s3.def.json +++ b/resources/definitions/ultimaker_s3.def.json @@ -103,7 +103,7 @@ "default_value": false, "enabled": true }, - "prime_tower_enable": { "value": "True" }, + "prime_tower_mode": { "value": "normal" }, "retraction_amount": { "value": "6.5" }, "retraction_hop": { "value": "2" }, "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" }, diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index ec82e6b630..b9eba0952b 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -104,7 +104,7 @@ "default_value": false, "enabled": true }, - "prime_tower_enable": { "value": "True" }, + "prime_tower_mode": { "value": "normal" }, "retraction_amount": { "value": "6.5" }, "retraction_combing": { "value": "'no_outer_surfaces'" }, "retraction_hop": { "value": "2" }, diff --git a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg index f4da80ded9..bab34c73b6 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg @@ -38,7 +38,7 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True -prime_tower_enable = True +prime_tower_mode = normal prime_tower_min_volume = 6 prime_tower_size = 20 prime_tower_wipe_enabled = True diff --git a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg index a052562cd3..e0ef960b32 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg @@ -38,7 +38,7 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True -prime_tower_enable = True +prime_tower_mode = normal prime_tower_min_volume = 6 prime_tower_size = 20 prime_tower_wipe_enabled = True diff --git a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg index 145cd34ead..55c26edccb 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg @@ -36,7 +36,7 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True -prime_tower_enable = True +prime_tower_mode = normal prime_tower_min_volume = 6 prime_tower_size = 20 prime_tower_wipe_enabled = True diff --git a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg index e6e2cb78a0..b5fa497a33 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg @@ -36,7 +36,7 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True -prime_tower_enable = True +prime_tower_mode = normal prime_tower_min_volume = 6 prime_tower_size = 20 prime_tower_wipe_enabled = True diff --git a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg index 56587fe883..1bf050b6f2 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg @@ -35,7 +35,7 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True -prime_tower_enable = True +prime_tower_mode = normal prime_tower_min_volume = 6 prime_tower_size = 20 prime_tower_wipe_enabled = True diff --git a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg index 10353f6110..7cde446656 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg @@ -35,7 +35,7 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True -prime_tower_enable = True +prime_tower_mode = normal prime_tower_min_volume = 6 prime_tower_size = 20 prime_tower_wipe_enabled = True diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_A.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_A.inst.cfg index 33b5c2c111..2e0d11b6eb 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_A.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_A.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_B.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_B.inst.cfg index 5be0dc9527..fc487f97e4 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_B.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_B.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_C.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_C.inst.cfg index 76aa867f8f..3eef71ef41 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_C.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_C.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_D.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_D.inst.cfg index 20bb125cd9..35534c090e 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_D.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_D.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_E.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_E.inst.cfg index cc0224cf23..d61061ff55 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_E.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_E.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_C.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_C.inst.cfg index ec2ebdc647..df09da8d68 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_C.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_C.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_D.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_D.inst.cfg index 136ec93d16..be38167856 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_D.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_D.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_E.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_E.inst.cfg index 3a0a94782c..24299680ad 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_E.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_E.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_F.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_F.inst.cfg index 719a4bdcbd..2c89d60680 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_F.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_F.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_A.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_A.inst.cfg index 4486a1d3bc..c3cbb96ae7 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_A.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_A.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_B.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_B.inst.cfg index b938502e85..5e062678c3 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_B.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_B.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_C.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_C.inst.cfg index 3b88ca6b67..b9651ddf53 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_C.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_C.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_D.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_D.inst.cfg index 4134717770..3e36641037 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_D.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_D.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_E.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_E.inst.cfg index e267e7c6eb..bdb9ca3ce5 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_E.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_E.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_C.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_C.inst.cfg index 35e2e07b41..741e6c613a 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_C.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_C.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_D.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_D.inst.cfg index dd944cbfd1..c8421e34a5 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_D.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_D.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_E.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_E.inst.cfg index 8aa462e206..39bafd45c6 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_E.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_E.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_F.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_F.inst.cfg index 0691a01deb..c73c5baecd 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_F.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_F.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_D.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_D.inst.cfg index a4d0582c3a..b9f63dff35 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_D.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_D.inst.cfg @@ -13,7 +13,7 @@ variant = V-DBE 0.80mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_E.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_E.inst.cfg index 831e17c018..86e03b328c 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_E.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_E.inst.cfg @@ -13,7 +13,7 @@ variant = V-DBE 0.80mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_F.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_F.inst.cfg index d9a57d6012..b51b54cb62 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_F.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_F.inst.cfg @@ -13,7 +13,7 @@ variant = V-DBE 0.80mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_G.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_G.inst.cfg index 8408fbc014..82ad7d5d49 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_G.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_G.inst.cfg @@ -13,7 +13,7 @@ variant = V-DBE 0.80mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_D.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_D.inst.cfg index 18c813a79a..dcc7dfcd48 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_D.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_D.inst.cfg @@ -13,7 +13,7 @@ variant = V-FBE 0.80mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_E.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_E.inst.cfg index 660c536a5e..d0fb6ec6e2 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_E.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_E.inst.cfg @@ -13,7 +13,7 @@ variant = V-FBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_F.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_F.inst.cfg index 5dbea58c49..1817111e2a 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_F.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_F.inst.cfg @@ -13,7 +13,7 @@ variant = V-FBE 0.80mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_G.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_G.inst.cfg index 9bfd649e99..8ba8f905d6 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_G.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_G.inst.cfg @@ -13,7 +13,7 @@ variant = V-FBE 0.80mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.10.inst.cfg b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.10.inst.cfg index d5a2f73729..82cfb879dd 100644 --- a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.10.inst.cfg +++ b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.10.inst.cfg @@ -13,7 +13,7 @@ variant = 0.40mm_Elegoo_Nozzle [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed skin_overlap = 10 diff --git a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.15.inst.cfg b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.15.inst.cfg index e86f454664..3b8cc5bb5f 100644 --- a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.15.inst.cfg +++ b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.15.inst.cfg @@ -13,7 +13,7 @@ variant = 0.40mm_Elegoo_Nozzle [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 70 diff --git a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.20.inst.cfg b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.20.inst.cfg index db7e5a43c7..23e6730f11 100644 --- a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.20.inst.cfg +++ b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.20.inst.cfg @@ -17,7 +17,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed skin_overlap = 20 diff --git a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.30.inst.cfg b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.30.inst.cfg index d84cc9e656..f305930448 100644 --- a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.30.inst.cfg +++ b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.30.inst.cfg @@ -20,7 +20,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed skin_overlap = 20 diff --git a/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.30.inst.cfg b/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.30.inst.cfg index b6c63fad0f..cfc8fb9b32 100644 --- a/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.30.inst.cfg +++ b/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.30.inst.cfg @@ -15,7 +15,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.40.inst.cfg b/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.40.inst.cfg index 1e3eec080a..52ebc5566b 100644 --- a/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.40.inst.cfg +++ b/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.40.inst.cfg @@ -15,7 +15,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = True +prime_tower_mode = normal speed_infill = =math.ceil(speed_print * 35 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.60.inst.cfg b/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.60.inst.cfg index 09bc57ffea..683bfe317a 100644 --- a/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.60.inst.cfg +++ b/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.60.inst.cfg @@ -15,7 +15,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = True +prime_tower_mode = normal speed_infill = =math.ceil(speed_print * 35 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.10.inst.cfg b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.10.inst.cfg index 66eb9f49c0..40cc88859a 100644 --- a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.10.inst.cfg +++ b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.10.inst.cfg @@ -11,7 +11,7 @@ type = quality variant = 0.40mm_Elegoo_Nozzle [values] -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 skin_overlap = 10 speed_topbottom = =math.ceil(speed_print * 35 / 70) diff --git a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.15.inst.cfg b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.15.inst.cfg index 209ce52fa2..6043a569d0 100644 --- a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.15.inst.cfg +++ b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.15.inst.cfg @@ -11,7 +11,7 @@ type = quality variant = 0.40mm_Elegoo_Nozzle [values] -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 speed_topbottom = =math.ceil(speed_print * 35 / 70) speed_wall = =math.ceil(speed_print * 45 / 70) diff --git a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.20.inst.cfg b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.20.inst.cfg index 9805a1ae5a..3076011555 100644 --- a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.20.inst.cfg +++ b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.20.inst.cfg @@ -12,7 +12,7 @@ variant = 0.40mm_Elegoo_Nozzle [values] infill_sparse_density = 15 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 skin_overlap = 20 top_bottom_thickness = 0.8 diff --git a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.30.inst.cfg b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.30.inst.cfg index cb6ca323e6..562b84bf02 100644 --- a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.30.inst.cfg +++ b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.30.inst.cfg @@ -14,7 +14,7 @@ variant = 0.40mm_Elegoo_Nozzle infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_sparse_density = 15 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 skin_overlap = 20 top_bottom_thickness = 0.9 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg index d9f0a0aaea..7178468de7 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg @@ -30,7 +30,7 @@ material_standby_temperature = =material_print_temperature - 10 ooze_shield_angle = 20 ooze_shield_dist = 4 ooze_shield_enabled = True -prime_tower_enable = False +prime_tower_mode = none retraction_amount = 0.75 retraction_combing = off retraction_speed = 70 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg index 620622e555..cb966418ec 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg @@ -30,7 +30,7 @@ material_standby_temperature = =material_print_temperature - 10 ooze_shield_angle = 20 ooze_shield_dist = 4 ooze_shield_enabled = True -prime_tower_enable = False +prime_tower_mode = none retraction_amount = 0.75 retraction_combing = off retraction_speed = 70 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg index 05eeb68305..23733ea85e 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg @@ -30,7 +30,7 @@ material_standby_temperature = =material_print_temperature - 10 ooze_shield_angle = 20 ooze_shield_dist = 4 ooze_shield_enabled = True -prime_tower_enable = False +prime_tower_mode = none retraction_amount = 0.75 retraction_combing = off retraction_speed = 70 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg index b63ef09a6b..01577a46d0 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg @@ -29,7 +29,7 @@ material_standby_temperature = =material_print_temperature - 10 ooze_shield_angle = 20 ooze_shield_dist = 4 ooze_shield_enabled = True -prime_tower_enable = False +prime_tower_mode = none retraction_amount = 0.75 retraction_combing = off retraction_speed = 70 diff --git a/resources/quality/liquid/liquid_vo0.4_ABS_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_ABS_Draft_Print.inst.cfg index 038affd56f..dc279c6232 100644 --- a/resources/quality/liquid/liquid_vo0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_ABS_Draft_Print.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_initial_print_temperature = =material_print_temperature - 15 material_print_temperature = =default_material_print_temperature + 20 -prime_tower_enable = False +prime_tower_mode = none skin_overlap = 20 speed_infill = =math.ceil(speed_print * 50 / 60) speed_layer_0 = =math.ceil(speed_print * 20 / 60) diff --git a/resources/quality/liquid/liquid_vo0.4_ABS_Fast_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_ABS_Fast_Print.inst.cfg index 5091d36813..d5684e3ccb 100644 --- a/resources/quality/liquid/liquid_vo0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_ABS_Fast_Print.inst.cfg @@ -19,7 +19,7 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_initial_print_temperature = =material_print_temperature - 15 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = False +prime_tower_mode = none speed_infill = =math.ceil(speed_print * 45 / 60) speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_print = 60 diff --git a/resources/quality/liquid/liquid_vo0.4_ABS_High_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_ABS_High_Quality.inst.cfg index 0420284fa8..bd43496eb4 100644 --- a/resources/quality/liquid/liquid_vo0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_ABS_High_Quality.inst.cfg @@ -19,7 +19,7 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_initial_print_temperature = =material_print_temperature - 15 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = False +prime_tower_mode = none speed_infill = =math.ceil(speed_print * 40 / 50) speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_print = 50 diff --git a/resources/quality/liquid/liquid_vo0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_ABS_Normal_Quality.inst.cfg index 927bdbe7b9..420b8a9d9c 100644 --- a/resources/quality/liquid/liquid_vo0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_ABS_Normal_Quality.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_initial_print_temperature = =material_print_temperature - 15 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = False +prime_tower_mode = none speed_infill = =math.ceil(speed_print * 40 / 55) speed_layer_0 = =math.ceil(speed_print * 20 / 55) speed_print = 55 diff --git a/resources/quality/liquid/liquid_vo0.4_PC_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PC_Draft_Print.inst.cfg index 02d1292c17..ec682feabd 100644 --- a/resources/quality/liquid/liquid_vo0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PC_Draft_Print.inst.cfg @@ -36,7 +36,7 @@ material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) diff --git a/resources/quality/liquid/liquid_vo0.4_PC_Fast_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PC_Fast_Print.inst.cfg index b1c540d01e..591e6e2964 100644 --- a/resources/quality/liquid/liquid_vo0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PC_Fast_Print.inst.cfg @@ -35,7 +35,7 @@ material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) diff --git a/resources/quality/liquid/liquid_vo0.4_PC_High_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PC_High_Quality.inst.cfg index 6aac1f4972..604e491db3 100644 --- a/resources/quality/liquid/liquid_vo0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PC_High_Quality.inst.cfg @@ -36,7 +36,7 @@ material_print_temperature = =default_material_print_temperature - 10 material_standby_temperature = 100 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) diff --git a/resources/quality/liquid/liquid_vo0.4_PC_Normal_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PC_Normal_Quality.inst.cfg index e831dfb254..e610dcf495 100644 --- a/resources/quality/liquid/liquid_vo0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PC_Normal_Quality.inst.cfg @@ -34,7 +34,7 @@ material_initial_print_temperature = =material_print_temperature - 5 material_standby_temperature = 100 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) diff --git a/resources/quality/liquid/liquid_vo0.4_PETG_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PETG_Draft_Print.inst.cfg index 6e0ac10718..37d77be67c 100644 --- a/resources/quality/liquid/liquid_vo0.4_PETG_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PETG_Draft_Print.inst.cfg @@ -24,7 +24,7 @@ machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none skin_overlap = 20 speed_layer_0 = =math.ceil(speed_print * 20 / 70) speed_print = 70 diff --git a/resources/quality/liquid/liquid_vo0.4_PETG_Fast_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PETG_Fast_Print.inst.cfg index 5e84c3e1a1..f27381d0e3 100644 --- a/resources/quality/liquid/liquid_vo0.4_PETG_Fast_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PETG_Fast_Print.inst.cfg @@ -20,7 +20,7 @@ layer_height_0 = 0.2 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_print = 60 speed_topbottom = =math.ceil(speed_print * 35 / 60) diff --git a/resources/quality/liquid/liquid_vo0.4_PETG_High_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PETG_High_Quality.inst.cfg index 8974dcbb03..1c49689b2a 100644 --- a/resources/quality/liquid/liquid_vo0.4_PETG_High_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PETG_High_Quality.inst.cfg @@ -22,7 +22,7 @@ machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none skin_overlap = 10 speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_print = 50 diff --git a/resources/quality/liquid/liquid_vo0.4_PETG_Normal_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PETG_Normal_Quality.inst.cfg index cbada0be18..82b3f109f4 100644 --- a/resources/quality/liquid/liquid_vo0.4_PETG_Normal_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PETG_Normal_Quality.inst.cfg @@ -21,7 +21,7 @@ layer_height_0 = 0.2 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none skin_overlap = 10 speed_layer_0 = =math.ceil(speed_print * 20 / 70) top_bottom_thickness = 1 diff --git a/resources/quality/liquid/liquid_vo0.4_PLA_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PLA_Draft_Print.inst.cfg index 70817b06e3..e6e18da492 100644 --- a/resources/quality/liquid/liquid_vo0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PLA_Draft_Print.inst.cfg @@ -24,7 +24,7 @@ machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none skin_overlap = 20 speed_layer_0 = =math.ceil(speed_print * 20 / 70) speed_print = 70 diff --git a/resources/quality/liquid/liquid_vo0.4_PLA_Fast_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PLA_Fast_Print.inst.cfg index b6991202b2..50b8662604 100644 --- a/resources/quality/liquid/liquid_vo0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PLA_Fast_Print.inst.cfg @@ -20,7 +20,7 @@ layer_height_0 = 0.2 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_print = 60 speed_topbottom = =math.ceil(speed_print * 35 / 60) diff --git a/resources/quality/liquid/liquid_vo0.4_PLA_High_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PLA_High_Quality.inst.cfg index 930f5cf3fd..baf7af3fdc 100644 --- a/resources/quality/liquid/liquid_vo0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PLA_High_Quality.inst.cfg @@ -22,7 +22,7 @@ machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none skin_overlap = 10 speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_print = 50 diff --git a/resources/quality/liquid/liquid_vo0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PLA_Normal_Quality.inst.cfg index 6595446fee..bf5fb6b1c9 100644 --- a/resources/quality/liquid/liquid_vo0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PLA_Normal_Quality.inst.cfg @@ -21,7 +21,7 @@ layer_height_0 = 0.2 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_standby_temperature = 100 -prime_tower_enable = False +prime_tower_mode = none skin_overlap = 10 speed_layer_0 = =math.ceil(speed_print * 20 / 70) top_bottom_thickness = 1 diff --git a/resources/quality/liquid/liquid_vo0.4_PP_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PP_Draft_Print.inst.cfg index 1904758532..86216145d9 100644 --- a/resources/quality/liquid/liquid_vo0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PP_Draft_Print.inst.cfg @@ -36,7 +36,7 @@ material_print_temperature = =default_material_print_temperature - 5 material_print_temperature_layer_0 = =material_print_temperature + 5 material_standby_temperature = 100 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 12 diff --git a/resources/quality/liquid/liquid_vo0.4_PP_Fast_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PP_Fast_Print.inst.cfg index 2a0a5729ec..7d4abe2d3f 100644 --- a/resources/quality/liquid/liquid_vo0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PP_Fast_Print.inst.cfg @@ -36,7 +36,7 @@ material_print_temperature = =default_material_print_temperature - 13 material_print_temperature_layer_0 = =material_print_temperature + 3 material_standby_temperature = 100 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 12 diff --git a/resources/quality/liquid/liquid_vo0.4_PP_Normal_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PP_Normal_Quality.inst.cfg index 304c4f17f0..3aace2ea38 100644 --- a/resources/quality/liquid/liquid_vo0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PP_Normal_Quality.inst.cfg @@ -36,7 +36,7 @@ material_print_temperature = =default_material_print_temperature - 15 material_print_temperature_layer_0 = =material_print_temperature + 3 material_standby_temperature = 100 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 12 diff --git a/resources/quality/liquid/liquid_vo0.6_PETG_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.6_PETG_Draft_Print.inst.cfg index bc712bf999..04b769ec81 100644 --- a/resources/quality/liquid/liquid_vo0.6_PETG_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.6_PETG_Draft_Print.inst.cfg @@ -26,7 +26,7 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15 material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 -prime_tower_enable = True +prime_tower_mode = normal retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.6_PETG_Fast_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.6_PETG_Fast_Print.inst.cfg index c51c068ae2..5f7216e9b8 100644 --- a/resources/quality/liquid/liquid_vo0.6_PETG_Fast_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.6_PETG_Fast_Print.inst.cfg @@ -26,7 +26,7 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15 material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 -prime_tower_enable = True +prime_tower_mode = normal retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.6_PLA_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.6_PLA_Draft_Print.inst.cfg index 3b6749dfb9..0f4b43d1ad 100644 --- a/resources/quality/liquid/liquid_vo0.6_PLA_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.6_PLA_Draft_Print.inst.cfg @@ -26,7 +26,7 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15 material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 -prime_tower_enable = True +prime_tower_mode = normal retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.6_PLA_Fast_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.6_PLA_Fast_Print.inst.cfg index 45418e5994..bf262d9b0d 100644 --- a/resources/quality/liquid/liquid_vo0.6_PLA_Fast_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.6_PLA_Fast_Print.inst.cfg @@ -26,7 +26,7 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15 material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 -prime_tower_enable = True +prime_tower_mode = normal retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.8_CPE_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_CPE_Draft_Print.inst.cfg index 90424ee65e..6f15ddf686 100644 --- a/resources/quality/liquid/liquid_vo0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_CPE_Draft_Print.inst.cfg @@ -17,7 +17,7 @@ jerk_travel = 20 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 15 material_standby_temperature = 100 -prime_tower_enable = True +prime_tower_mode = normal retraction_combing_max_distance = 50 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) diff --git a/resources/quality/liquid/liquid_vo0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_CPE_Superdraft_Print.inst.cfg index 7857ed00e7..e56ee10a98 100644 --- a/resources/quality/liquid/liquid_vo0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_CPE_Superdraft_Print.inst.cfg @@ -17,7 +17,7 @@ jerk_travel = 20 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 20 material_standby_temperature = 100 -prime_tower_enable = True +prime_tower_mode = normal retraction_combing_max_distance = 50 speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/liquid/liquid_vo0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_CPE_Verydraft_Print.inst.cfg index 4194c6f3b7..c8c93a744f 100644 --- a/resources/quality/liquid/liquid_vo0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_CPE_Verydraft_Print.inst.cfg @@ -17,7 +17,7 @@ jerk_travel = 20 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 17 material_standby_temperature = 100 -prime_tower_enable = True +prime_tower_mode = normal retraction_combing_max_distance = 50 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) diff --git a/resources/quality/liquid/liquid_vo0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_Nylon_Draft_Print.inst.cfg index 87dd876588..70db87df10 100644 --- a/resources/quality/liquid/liquid_vo0.8_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_Nylon_Draft_Print.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_standby_temperature = 100 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal raft_acceleration = =acceleration_layer_0 raft_airgap = =round(layer_height_0 * 0.85, 2) raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) diff --git a/resources/quality/liquid/liquid_vo0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_Nylon_Superdraft_Print.inst.cfg index 891a20540d..a134533c46 100644 --- a/resources/quality/liquid/liquid_vo0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_Nylon_Superdraft_Print.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_standby_temperature = 100 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal raft_acceleration = =acceleration_layer_0 raft_airgap = =round(layer_height_0 * 0.85, 2) raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) diff --git a/resources/quality/liquid/liquid_vo0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_Nylon_Verydraft_Print.inst.cfg index e009094760..d8c5450478 100644 --- a/resources/quality/liquid/liquid_vo0.8_Nylon_Verydraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_Nylon_Verydraft_Print.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_standby_temperature = 100 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal raft_acceleration = =acceleration_layer_0 raft_airgap = =round(layer_height_0 * 0.85, 2) raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) diff --git a/resources/quality/liquid/liquid_vo0.8_PETG_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PETG_Draft_Print.inst.cfg index 947c042b8c..f941d5a55d 100644 --- a/resources/quality/liquid/liquid_vo0.8_PETG_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PETG_Draft_Print.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_heat_up_speed = 1.6 material_final_print_temperature = =max(-273.15, material_print_temperature - 15) material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.8_PETG_Superdraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PETG_Superdraft_Print.inst.cfg index 08cb14cb26..d96bf8d17e 100644 --- a/resources/quality/liquid/liquid_vo0.8_PETG_Superdraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PETG_Superdraft_Print.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_heat_up_speed = 1.6 material_final_print_temperature = =max(-273.15, material_print_temperature - 15) material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = True +prime_tower_mode = normal raft_margin = 10 retract_at_layer_change = False speed_print = 45 diff --git a/resources/quality/liquid/liquid_vo0.8_PETG_Verydraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PETG_Verydraft_Print.inst.cfg index 187ed1f212..53142e5348 100644 --- a/resources/quality/liquid/liquid_vo0.8_PETG_Verydraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PETG_Verydraft_Print.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_heat_up_speed = 1.6 material_final_print_temperature = =max(-273.15, material_print_temperature - 15) material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.8_PLA_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PLA_Draft_Print.inst.cfg index 10b6e8185a..5a4cb62ee2 100644 --- a/resources/quality/liquid/liquid_vo0.8_PLA_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PLA_Draft_Print.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_heat_up_speed = 1.6 material_final_print_temperature = =max(-273.15, material_print_temperature - 15) material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PLA_Superdraft_Print.inst.cfg index ed0fc7fd8a..4168b05c61 100644 --- a/resources/quality/liquid/liquid_vo0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PLA_Superdraft_Print.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_heat_up_speed = 1.6 material_final_print_temperature = =max(-273.15, material_print_temperature - 15) material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = True +prime_tower_mode = normal raft_margin = 10 retract_at_layer_change = False speed_print = 45 diff --git a/resources/quality/liquid/liquid_vo0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PLA_Verydraft_Print.inst.cfg index 9def9ecb97..af930c749a 100644 --- a/resources/quality/liquid/liquid_vo0.8_PLA_Verydraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PLA_Verydraft_Print.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_heat_up_speed = 1.6 material_final_print_temperature = =max(-273.15, material_print_temperature - 15) material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.8_PP_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PP_Draft_Print.inst.cfg index 4c3f60a240..d30007f18d 100644 --- a/resources/quality/liquid/liquid_vo0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PP_Draft_Print.inst.cfg @@ -26,7 +26,7 @@ material_print_temperature = =default_material_print_temperature - 2 material_print_temperature_layer_0 = =default_material_print_temperature + 2 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 10 retract_at_layer_change = False diff --git a/resources/quality/liquid/liquid_vo0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PP_Superdraft_Print.inst.cfg index 1b7c05ac3c..a0a1f806ab 100644 --- a/resources/quality/liquid/liquid_vo0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PP_Superdraft_Print.inst.cfg @@ -26,7 +26,7 @@ material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature + 2 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 20 retract_at_layer_change = False diff --git a/resources/quality/liquid/liquid_vo0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PP_Verydraft_Print.inst.cfg index 7cbb60c3aa..cdadd228be 100644 --- a/resources/quality/liquid/liquid_vo0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PP_Verydraft_Print.inst.cfg @@ -25,7 +25,7 @@ material_bed_temperature_layer_0 = =material_bed_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 2 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 15 retract_at_layer_change = False diff --git a/resources/quality/liquid/liquid_vo0.8_TPU_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_TPU_Draft_Print.inst.cfg index 4994e3f9f4..31baf4022c 100644 --- a/resources/quality/liquid/liquid_vo0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_TPU_Draft_Print.inst.cfg @@ -30,7 +30,7 @@ material_print_temperature = =default_material_print_temperature - 2 material_print_temperature_layer_0 = =material_print_temperature + 19 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 retract_at_layer_change = False retraction_count_max = 12 diff --git a/resources/quality/liquid/liquid_vo0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_TPU_Superdraft_Print.inst.cfg index fd15d041b8..408ad54518 100644 --- a/resources/quality/liquid/liquid_vo0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_TPU_Superdraft_Print.inst.cfg @@ -31,7 +31,7 @@ material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =material_print_temperature + 15 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 retract_at_layer_change = False retraction_count_max = 12 diff --git a/resources/quality/liquid/liquid_vo0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_TPU_Verydraft_Print.inst.cfg index 5c88fb165f..9fd95f5c32 100644 --- a/resources/quality/liquid/liquid_vo0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_TPU_Verydraft_Print.inst.cfg @@ -30,7 +30,7 @@ material_initial_print_temperature = =material_print_temperature material_print_temperature_layer_0 = =material_print_temperature + 17 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 retract_at_layer_change = False retraction_count_max = 12 diff --git a/resources/quality/nps/nps_ABS_B.inst.cfg b/resources/quality/nps/nps_ABS_B.inst.cfg index 3f700405bd..520bda4b05 100644 --- a/resources/quality/nps/nps_ABS_B.inst.cfg +++ b/resources/quality/nps/nps_ABS_B.inst.cfg @@ -22,7 +22,7 @@ material_bed_temperature = 100 material_flow = 96 material_print_temperature = =default_material_print_temperature + 13 material_print_temperature_layer_0 = =243 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/nps/nps_ABS_C.inst.cfg b/resources/quality/nps/nps_ABS_C.inst.cfg index 6138e4004c..1131f61d36 100644 --- a/resources/quality/nps/nps_ABS_C.inst.cfg +++ b/resources/quality/nps/nps_ABS_C.inst.cfg @@ -22,7 +22,7 @@ material_bed_temperature = 100 material_flow = 91 material_print_temperature = =default_material_print_temperature + 15 material_print_temperature_layer_0 = =245 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/nps/nps_PC_A.inst.cfg b/resources/quality/nps/nps_PC_A.inst.cfg index 8665f8ceae..90cc71d951 100644 --- a/resources/quality/nps/nps_PC_A.inst.cfg +++ b/resources/quality/nps/nps_PC_A.inst.cfg @@ -32,7 +32,7 @@ material_bed_temperature = 110 material_flow = 100 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =280 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/nps/nps_PC_B.inst.cfg b/resources/quality/nps/nps_PC_B.inst.cfg index 9ccb5cea53..3761d802d7 100644 --- a/resources/quality/nps/nps_PC_B.inst.cfg +++ b/resources/quality/nps/nps_PC_B.inst.cfg @@ -32,7 +32,7 @@ material_bed_temperature = 110 material_flow = 88 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = 275 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/nps/nps_PC_C.inst.cfg b/resources/quality/nps/nps_PC_C.inst.cfg index 30267d4237..85752e78c2 100644 --- a/resources/quality/nps/nps_PC_C.inst.cfg +++ b/resources/quality/nps/nps_PC_C.inst.cfg @@ -32,7 +32,7 @@ material_bed_temperature = 110 material_flow = 88 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = 275 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/nps/nps_PETG_A.inst.cfg b/resources/quality/nps/nps_PETG_A.inst.cfg index 3cae430f1c..0985dd1b3a 100644 --- a/resources/quality/nps/nps_PETG_A.inst.cfg +++ b/resources/quality/nps/nps_PETG_A.inst.cfg @@ -22,7 +22,7 @@ material_bed_temperature = 80 material_flow = 98 material_print_temperature = =default_material_print_temperature + 20 material_print_temperature_layer_0 = =230 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/nps/nps_PETG_B.inst.cfg b/resources/quality/nps/nps_PETG_B.inst.cfg index 5860f65414..e3a5f165ad 100644 --- a/resources/quality/nps/nps_PETG_B.inst.cfg +++ b/resources/quality/nps/nps_PETG_B.inst.cfg @@ -22,7 +22,7 @@ material_bed_temperature = 80 material_flow = 95 material_print_temperature = =default_material_print_temperature + 20 material_print_temperature_layer_0 = =230 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_A.inst.cfg index 39ba32a332..0569a356f3 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 100 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_B.inst.cfg index dd0d167e6b..e906508f7f 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 96 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_C.inst.cfg index f894a7dc13..a883aba2ec 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_A.inst.cfg index 7642489c2a..dc595e8c5d 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 100 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_B.inst.cfg index bf5c18405b..a84b12135f 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 96 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 1 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_C.inst.cfg index 6756384e4a..ef6358a6a0 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature +3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_A.inst.cfg index 978484d813..7a0cd7ee8d 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 98 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_B.inst.cfg index bcec4fe68f..4fa5d070aa 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 95 material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature + 0 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_C.inst.cfg index 85f79ebe7a..7944c44371 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 93 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_A.inst.cfg index 9b29e49624..fb2ee81c9f 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 100 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_B.inst.cfg index 07a46f0d05..4e63f1513d 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 96 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_C.inst.cfg index 60410d8d34..5e158007ab 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 7 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_A.inst.cfg index 9304630630..f73adbfa51 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_A.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_B.inst.cfg index d39d91c91a..da2aa05237 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_B.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_C.inst.cfg index e716824cf0..e636a5ebee 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_A.inst.cfg index bd964bed2a..a997ac74dd 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_B.inst.cfg index cd27f77737..7055e3dadd 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_C.inst.cfg index 78191af7be..6c66ffd76c 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_A.inst.cfg index f37a3b4d6d..f451618a28 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_A.inst.cfg @@ -34,7 +34,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 88 material_print_temperature = 260 material_print_temperature_layer_0 = 265 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_B.inst.cfg index 75fed99b1e..5866dad50b 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_B.inst.cfg @@ -34,7 +34,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 88 material_print_temperature = 270 material_print_temperature_layer_0 = 275 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_C.inst.cfg index 51911c3811..502dd8be07 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_C.inst.cfg @@ -34,7 +34,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 88 material_print_temperature = 270 material_print_temperature_layer_0 = 275 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PEKK_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PEKK_B.inst.cfg index e4596d9def..5279228105 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PEKK_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PEKK_B.inst.cfg @@ -33,7 +33,7 @@ material_flow = 105 material_flow_layer_0 = 120 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 15 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_A.inst.cfg index d0faf6eb66..92c62d2b43 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 98 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_B.inst.cfg index 3a64a52254..92811521ac 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_C.inst.cfg index debf74ed0d..234d33c2eb 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_A.inst.cfg index 990d5cf645..76ea2997ba 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 98 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_B.inst.cfg index 82f26cd66d..fc3d8e47ec 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_C.inst.cfg index a91b035e38..f4bfb4c698 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_A.inst.cfg index c7194e18d2..82715060a6 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_A.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 10 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_B.inst.cfg index 078e213a26..ca19b0ee14 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_B.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_C.inst.cfg index bfb4c46c46..f61b83ab7b 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_C.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_A.inst.cfg index 8dd1c17ea6..85097b4506 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.38 material_flow = 107 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature - 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_B.inst.cfg index cca98aa599..967f7c21a5 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.38 material_flow = 103 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_C.inst.cfg index 5a343d6893..9110650629 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.38 material_flow = 101 material_print_temperature = =default_material_print_temperature + 7 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_A.inst.cfg index e6be881341..de6356694f 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 100 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_B.inst.cfg index c4342c149a..ec119cba9f 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 96 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_C.inst.cfg index e3581e0823..0b4df9f3a3 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_A.inst.cfg index 4c451894bd..ad5d8c8586 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 100 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_B.inst.cfg index 65c2c9e81f..e0600e72d8 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 96 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 1 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_C.inst.cfg index 2f5cf9cfa3..5827b15cf9 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature +3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_A.inst.cfg index 36d6697edb..3ee7204b92 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 98 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_B.inst.cfg index e92561350a..4834ca9eef 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 95 material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature + 0 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_C.inst.cfg index e61775fde0..4850f68dc0 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 93 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_A.inst.cfg index 020b95dad2..ec7cbcc0fd 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 100 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_B.inst.cfg index 6688d82ec8..6f086f0605 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 96 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_C.inst.cfg index 2c8d6a82d3..ff5016d543 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 7 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_A.inst.cfg index fe012ff873..e324931269 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_B.inst.cfg index c0adce0f84..5aea3605f5 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_C.inst.cfg index 5b58c2f37b..24a1faed48 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_A.inst.cfg index f986831fd5..d73b6ac796 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_A.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_B.inst.cfg index 5d360b244b..14d3867950 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_B.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_C.inst.cfg index 3875e668f4..26e6ebc4df 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_A.inst.cfg index d4d0e1c17e..54954ff567 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_B.inst.cfg index f2bb237ea2..057fb1b8cc 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_C.inst.cfg index f6780fbded..63f71cff82 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_A.inst.cfg index 6e726932a6..afef00df11 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_A.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_B.inst.cfg index 7ef50ff5b1..7b81803b0c 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_B.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_C.inst.cfg index 4d4af1e0f7..c0ac99423d 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_A.inst.cfg index 0d88c99c85..bd0f177b1b 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_A.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_B.inst.cfg index de476e6e46..586d49b7db 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_B.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_C.inst.cfg index 3fe7ff347c..16c8c5e6aa 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_A.inst.cfg index 9dd3039b65..71a70f0849 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_A.inst.cfg @@ -34,7 +34,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 88 material_print_temperature = 260 material_print_temperature_layer_0 = 265 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_B.inst.cfg index 346f33bafb..ad26bba4cb 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_B.inst.cfg @@ -34,7 +34,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 88 material_print_temperature = 270 material_print_temperature_layer_0 = 275 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_C.inst.cfg index 8571e8c4b0..e4da72d39a 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_C.inst.cfg @@ -34,7 +34,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 88 material_print_temperature = 270 material_print_temperature_layer_0 = 275 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_A.inst.cfg index 4231e1b3a1..b7bebe13b7 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 98 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_B.inst.cfg index c141a0ab07..f3bc48c8c9 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_C.inst.cfg index 9cd4262c55..70c2d3044c 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_A.inst.cfg index 6f49ec9e3b..d52ceb51ea 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 98 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_B.inst.cfg index 415379417c..6124b1dfed 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_C.inst.cfg index c4ce86563f..b4a8bc21f4 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_A.inst.cfg index dc4505591f..a764026ca7 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_A.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 10 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_B.inst.cfg index 224fa18cd6..11b9d689c8 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_B.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_C.inst.cfg index 44737981b0..7521ef5d62 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_C.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_A.inst.cfg index 8bf71b5cf5..6de69d4eba 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_B.inst.cfg index 3102afdc2c..e2b282ab2a 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_C.inst.cfg index ad6e361582..60d02fac6d 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_A.inst.cfg index b7445aee86..4969aad456 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_B.inst.cfg index cc849df9ba..7bf8dc30d4 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_C.inst.cfg index 10cbd3a4cf..27cef2d7c9 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_A.inst.cfg index 055bbb7623..24e3a1f238 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.38 material_flow = 107 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature - 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_B.inst.cfg index 028586beb4..4211634c6d 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.38 material_flow = 103 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_C.inst.cfg index 8bc0b97bc5..bd2c12c3f1 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.38 material_flow = 101 material_print_temperature = =default_material_print_temperature + 7 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_B.inst.cfg index ec355cec15..589f27a221 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 100 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_C.inst.cfg index 3ab4df020c..bca586491d 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 98 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_D.inst.cfg index 455cb44a7b..2e90b6fd6f 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 96 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_B.inst.cfg index 3475c621c3..e2f63845ee 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 100 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_C.inst.cfg index d7d937fdef..bc9df5fa14 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 98 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 1 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_D.inst.cfg index e83067bdc8..7216eb093c 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 96 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_B.inst.cfg index 188cddf0d6..a90e755a49 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_C.inst.cfg index 6127c2ec43..1d54fd6b3c 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 93 material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature + 0 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_D.inst.cfg index ca38be0476..90d3d00507 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 91 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_B.inst.cfg index caa9003cb3..ca2b4a9c9e 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 101 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_C.inst.cfg index a10cbdac7d..b297719ba1 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 99 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_D.inst.cfg index 85fe174e95..34882ab1af 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 7 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_B.inst.cfg index 9b48be1b8b..07969b958a 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_C.inst.cfg index 0440a0a34a..ecd3384a5b 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_D.inst.cfg index 7f124ae4ec..a4a87bc3f3 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_B.inst.cfg index f662c41048..c0f93168da 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_B.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 3 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_C.inst.cfg index dae0dda098..4116205747 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 3 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_D.inst.cfg index 1079c746ec..df1fb6e2e7 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 3 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_B.inst.cfg index 04991249e9..aa5bfa30f2 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_C.inst.cfg index 685778f3f1..887a35f80e 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_D.inst.cfg index ab5eca1d47..a9a4bcb18f 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_Nylon-1030_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_Nylon-1030_C.inst.cfg index a5a2addbc6..d73114c313 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_Nylon-1030_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_Nylon-1030_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 93 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_B.inst.cfg index 6ecc9a3265..e3f0657f1f 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_B.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_C.inst.cfg index 9e060959dd..542f9405b1 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_D.inst.cfg index 322d30a975..43ff676c46 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_B.inst.cfg index 5ae6c32cb8..2cca8a5c45 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_B.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_C.inst.cfg index 3fbe1f6370..951e26d841 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_D.inst.cfg index 46aacdf22c..f408c5a293 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_B.inst.cfg index 6997dae536..8b72022a0d 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_B.inst.cfg @@ -33,7 +33,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 87 material_print_temperature = 270 material_print_temperature_layer_0 = 275 -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_C.inst.cfg index 70bb7206af..2540f2bea9 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_C.inst.cfg @@ -33,7 +33,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 87 material_print_temperature = 270 material_print_temperature_layer_0 = 275 -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_D.inst.cfg index eb89937ded..c6bd8cc70e 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_D.inst.cfg @@ -33,7 +33,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 87 material_print_temperature = 270 material_print_temperature_layer_0 = 275 -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_B.inst.cfg index 4bc567a2d9..02b8e45e22 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 93 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_C.inst.cfg index f08c2e68b7..26e2eb5029 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 92 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_D.inst.cfg index 4a9a1472b8..f97462d99c 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_B.inst.cfg index 41edbc8e32..540e14ba23 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 93 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_C.inst.cfg index 10356ad344..af851371a1 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 92 material_print_temperature = =default_material_print_temperature + 8 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_D.inst.cfg index 9f04791ac2..e2470b9ecf 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_B.inst.cfg index 56e09ac385..21c4f9eccc 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_B.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_C.inst.cfg index 6c8a5462aa..b210d0fd30 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_C.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_D.inst.cfg index be4a045e0d..6b6a5923ce 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_D.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_B.inst.cfg index 6b107e9c9b..f677ac9e32 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_C.inst.cfg index ca169572b9..9ed4c381c9 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_D.inst.cfg index 7e7a3ed9d1..3f928f436d 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_B.inst.cfg index a08e251fe0..d8e702dc7a 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_C.inst.cfg index 2bcf4d4b1d..53516d4617 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_D.inst.cfg index 1352a75a8a..e7298a71d3 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_B.inst.cfg index ad699959aa..cd9de526ec 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.55 material_flow = 105 material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature - 2 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_C.inst.cfg index 6fdabc1a83..4de06235da 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.55 material_flow = 103 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_D.inst.cfg index 1954931cc7..431623b7c6 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.55 material_flow = 101 material_print_temperature = =default_material_print_temperature + 7 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_C.inst.cfg index 913af1994b..e0c29062d7 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 1 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_D.inst.cfg index 573834fc79..9230df64e3 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 96 material_print_temperature = =default_material_print_temperature + 7 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_E.inst.cfg index 3d5d1781ae..7117a889ed 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 95 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_C.inst.cfg index 4910a69272..97d2209bda 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_D.inst.cfg index 28d395019a..111504ad7b 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 96 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 2 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_E.inst.cfg index b91ceb1f85..d5322c039a 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 95 material_print_temperature = =default_material_print_temperature + 7 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_C.inst.cfg index 4a32ddceaf..74d0fa3869 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_D.inst.cfg index e45a8970f7..80dfbe8dbc 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 96 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_E.inst.cfg index c0a9632b95..26decee7ba 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 7 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_C.inst.cfg index bce7e2891f..850458ed36 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_D.inst.cfg index 0a053f123e..06f9ed6686 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_E.inst.cfg index 4f167ecacc..36398c0cfc 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_C.inst.cfg index 8efea7e264..8dd9bc10fb 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop = 2 retraction_hop_enabled = True diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_D.inst.cfg index d2f6973da7..fb149908d1 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop = 2 retraction_hop_enabled = True diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_E.inst.cfg index 57e9fc27a4..47d9a50940 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_E.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop = 2 retraction_hop_enabled = True diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_C.inst.cfg index 2ef4a5b479..e57fefc2b9 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_D.inst.cfg index a7549a851c..0cbddce4c9 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_E.inst.cfg index 322f31e986..965c08e8f9 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_C.inst.cfg index 6f3fa578bf..4062997ba0 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_D.inst.cfg index ee3166e7da..e6acfe27b8 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_E.inst.cfg index 05eabcc6a3..602837f410 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_E.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_C.inst.cfg index d10b2df53b..d5bb0ac8ba 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_D.inst.cfg index 181d89f957..022a6f36bf 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_E.inst.cfg index 38bd72884b..35421e68d6 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_E.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_C.inst.cfg index d8b2e660fc..65217b7ff9 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_C.inst.cfg @@ -35,7 +35,7 @@ material_print_temperature = 280 material_print_temperature_layer_0 = 285 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_min_travel = =2*line_width retraction_speed = 35 diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_D.inst.cfg index c39338eeca..118acb433f 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_D.inst.cfg @@ -35,7 +35,7 @@ material_print_temperature = 280 material_print_temperature_layer_0 = 285 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_min_travel = =2*line_width retraction_speed = 35 diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_E.inst.cfg index f88eff1615..c8102ecdf9 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_E.inst.cfg @@ -35,7 +35,7 @@ material_print_temperature = 280 material_print_temperature_layer_0 = 285 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_min_travel = =2*line_width retraction_speed = 35 diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_C.inst.cfg index 59a6db473d..df178b1807 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.4 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_D.inst.cfg index 9a94498b12..95973a4428 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.4 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_E.inst.cfg index 2611e1deba..32073574ea 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 93 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.4 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_C.inst.cfg index 35644e47a8..4b306434b9 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 99 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_D.inst.cfg index a820dd8467..99a245dfb4 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 98 material_print_temperature = =default_material_print_temperature + 7 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_E.inst.cfg index a4f135a4fa..d7ecb95748 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_C.inst.cfg index ee58caf9e6..9a973d225d 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_C.inst.cfg @@ -27,7 +27,7 @@ material_flow = 93 material_initial_print_temperature = =default_material_print_temperature material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_D.inst.cfg index 6399e7fd1f..6ff6a8dd0e 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_D.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_E.inst.cfg index e034d49e6e..5f19e2ab77 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_E.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_C.inst.cfg index 632c45a51f..5ea81eab76 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_D.inst.cfg index e882d42015..cc5ecebffe 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_E.inst.cfg index 7b52c7bb2d..d133a60b41 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_C.inst.cfg index a0fcdc4a52..1e243bbea4 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_D.inst.cfg index 496e5fe215..54889f9923 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_E.inst.cfg index 9c676c934b..8f484b0616 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_C.inst.cfg index 0b4c3c0281..f328b88645 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.7 material_flow = 105 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_D.inst.cfg index ffbb925a22..9d11111b78 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.7 material_flow = 103 material_print_temperature = =default_material_print_temperature + 6 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_E.inst.cfg index 60af5617e3..ed25c0fb46 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.7 material_flow = 101 material_print_temperature = =default_material_print_temperature + 9 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_C.inst.cfg index 71581b46ad..0b70ff0384 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.7 material_flow = 100 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_D.inst.cfg index bcbb45062a..f519ec66d5 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.7 material_flow = 100 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_E.inst.cfg index 827ae4a7ba..83c109070a 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.7 material_flow = 100 material_print_temperature = =default_material_print_temperature + 7 material_print_temperature_layer_0 = =default_material_print_temperature +3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_D.inst.cfg index 29f88f6e15..09ffbaed98 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_E.inst.cfg index 316e5d4447..ff50fd3deb 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_F.inst.cfg index 44203ad144..fbbc7a0187 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_D.inst.cfg index e322951476..95a6d4e732 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 100 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.4 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_E.inst.cfg index b4ee9ea985..2c0caa6a06 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 100 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.4 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_F.inst.cfg index 708896fdb7..c896adef1b 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 100 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 7 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.4 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_D.inst.cfg index 63ca3d88ff..0dcc4405d7 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_E.inst.cfg index 62ed1914db..73dce76c2e 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_F.inst.cfg index ac9ec6324e..36902a619f 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_D.inst.cfg index b225d8a911..b0bc012110 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_E.inst.cfg index 6e859c8dd0..baf4211645 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_F.inst.cfg index 6b8ebd9d20..754d20c802 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_D.inst.cfg index f168d4cf46..717aed8e49 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_E.inst.cfg index 652876d6b2..d41dea9d7b 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_E.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_F.inst.cfg index 482b99c2f6..b708481aeb 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_F.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_D.inst.cfg index 551e79a8e4..5e604e6f65 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_E.inst.cfg index 5709736147..31f7a30f3f 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_E.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_F.inst.cfg index 38f3b2b2ef..f35389424c 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_F.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_D.inst.cfg index 54a6d54cc0..902e42aef1 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 95 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_E.inst.cfg index abdd37d98d..f1fc4dd877 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_F.inst.cfg index 50f3b04e16..03c73269f8 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 95 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_D.inst.cfg index 35e9d19957..ddf8abc4c1 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_E.inst.cfg index 6e59384a4d..77eb559e6e 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 100 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_F.inst.cfg index 9df5f69d75..5053e91cbb 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 100 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_D.inst.cfg index 45b5a9e415..0e658a7bd2 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_E.inst.cfg index 70ec1234ff..f30a55729c 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_F.inst.cfg index 6327502027..eca2362651 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_D.inst.cfg index d7056a3f11..ec460ac49e 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_E.inst.cfg index a5ec67621f..1e85473f67 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_F.inst.cfg index 4ddc98ddd2..9650dac1c0 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_D.inst.cfg index 1b3a77ab8b..38cf5927f0 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.9 material_flow = 107 material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_E.inst.cfg index be45c084a5..60baaa1038 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.9 material_flow = 107 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_F.inst.cfg index c02401c4d5..385d21e44d 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.9 material_flow = 107 material_print_temperature = =default_material_print_temperature + 8 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_F.inst.cfg index ba91c749d5..ef7573779d 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 103 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_G.inst.cfg index b1d4c72a34..86e4022a27 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 102 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_H.inst.cfg index 4fac7e687d..aa2af46845 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 101 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_F.inst.cfg index 91b4699598..915523eadf 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_G.inst.cfg index 8d84bc4fd5..d258496552 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_H.inst.cfg index eafe3eef80..93420a5103 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 7 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_F.inst.cfg index 3286e7fb08..41764726df 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_G.inst.cfg index bb164bcd99..2e4bb516b0 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_H.inst.cfg index 82ad174a95..700c0102c2 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_F.inst.cfg index f33abf1ec3..941f0a6c81 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 103 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_G.inst.cfg index 2edb0e32f8..4cd7728a69 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 102 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_H.inst.cfg index 30d7139eb9..01b584afcd 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 101 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_F.inst.cfg index 1bf36453d1..a4c6fd4046 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_F.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_G.inst.cfg index f413dd3e17..376c9b1d51 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_G.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_H.inst.cfg index 9b228f7b05..5e27fec150 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_H.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_F.inst.cfg index 68c8604a95..5ca32bd655 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_F.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_G.inst.cfg index 66fc7c2f92..bdebb9a0ac 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_G.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_H.inst.cfg index aceba867c2..01c65f4586 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_H.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_F.inst.cfg index a34c3a4d45..9a8aaeb18e 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_G.inst.cfg index bd41a808d0..ba4d2b22ec 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_H.inst.cfg index 6036150353..2b1b5fb2f9 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 95 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_F.inst.cfg index c150380c74..6e05ba15a6 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 107 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_G.inst.cfg index 74ce8559d2..56765cb156 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 105 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_H.inst.cfg index f59b68f675..36d6248682 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 103 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_F.inst.cfg index 689c1fe076..d88ff841d0 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_G.inst.cfg index 514cdcbfde..9bb1258fc8 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_H.inst.cfg index 123dc9a953..7a662ec6d1 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_F.inst.cfg index 9c3f620a2d..767b72a566 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_G.inst.cfg index 0b841dfb09..da088dc345 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_H.inst.cfg index adfe816125..1ae6c25ebb 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_F.inst.cfg index 4b6108e51d..a9eb8331c8 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.1 material_flow = 111 material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_G.inst.cfg index 99af35534f..03cb145944 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.1 material_flow = 111 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_H.inst.cfg index 21043cae58..ac77c87265 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.1 material_flow = 111 material_print_temperature = =default_material_print_temperature + 8 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg index ac5f3e5bee..a033f60186 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg @@ -22,7 +22,7 @@ material_final_print_temperature = =material_print_temperature material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature optimize_wall_printing_order = True -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 110 prime_tower_size = 35 retraction_min_travel = 2 diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg index eca85becc6..a8da0b4092 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg @@ -19,7 +19,7 @@ material_final_print_temperature = =material_print_temperature material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature optimize_wall_printing_order = True -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 110 prime_tower_size = 35 retraction_hop_enabled = False diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg index 8071d7193e..d807f97293 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg @@ -30,7 +30,7 @@ material_flow_layer_0 = 93 material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature optimize_wall_printing_order = True -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 110 prime_tower_size = 35 retraction_amount = 5 diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Normal_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Normal_Quality.inst.cfg index 8354fba5e0..51329150b7 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Normal_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Normal_Quality.inst.cfg @@ -30,7 +30,7 @@ material_flow_layer_0 = 93 material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature optimize_wall_printing_order = True -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 110 prime_tower_size = 35 retraction_amount = 5 diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg index 074632abda..f201d4c632 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg @@ -19,7 +19,7 @@ material_final_print_temperature = =material_print_temperature material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature optimize_wall_printing_order = True -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 110 prime_tower_size = 35 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg index eeb924906f..632a1fb46d 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg @@ -21,7 +21,7 @@ machine_min_cool_heat_time_window = 15 material_print_temperature = =default_material_print_temperature - 10 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg index a64c8298a2..0667ef961d 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg @@ -21,7 +21,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg index 16be0db845..d93ba61d9d 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -2 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none skin_overlap = 20 speed_print = 60 speed_topbottom = =math.ceil(speed_print * 35 / 60) diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg index 916b283c9c..b92a826f5a 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -1 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 10 -prime_tower_enable = False +prime_tower_mode = none speed_print = 60 speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 40 / 60) diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg index 5dcbe80bbb..2fe35f1a2e 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.8 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 20 -prime_tower_enable = False +prime_tower_mode = none speed_print = 50 speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg index 1420880995..fcecc2701b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg @@ -15,7 +15,7 @@ weight = 0 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 15 -prime_tower_enable = False +prime_tower_mode = none speed_print = 55 speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg index e0dd43cc28..cf417a84b6 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg @@ -16,7 +16,7 @@ brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' skin_overlap = 20 speed_topbottom = =math.ceil(speed_print * 35 / 70) speed_wall = =math.ceil(speed_print * 50 / 70) diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg index 16ece7c2dd..363a43975e 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -1 brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' speed_print = 80 speed_topbottom = =math.ceil(speed_print * 30 / 80) speed_wall = =math.ceil(speed_print * 40 / 80) diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg index ca7fd8cbf3..92dae4a19f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg @@ -15,7 +15,7 @@ weight = 0 brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' skin_overlap = 10 support_angle = 45 support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg index 5de59e58c9..2540a78b21 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -18,7 +18,7 @@ infill_wipe_dist = 0 layer_height = 0.2 machine_min_cool_heat_time_window = 15 multiple_mesh_overlap = 0 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg index b2020831d7..37e8df992d 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -18,7 +18,7 @@ infill_wipe_dist = 0 layer_height = 0.15 machine_min_cool_heat_time_window = 15 multiple_mesh_overlap = 0 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg index 4be3a9c13a..5ba84b0564 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 8 multiple_mesh_overlap = 0 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg index 2e24f485d0..0fb115b548 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -20,7 +20,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 5 multiple_mesh_overlap = 0 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg index 28e8ccbf75..d0d447acdf 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg @@ -24,7 +24,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg index 5113277ab2..e55a49baba 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg index 636ce41e71..ee55427cf7 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 20 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg index a7c533bfea..15410514cd 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 10 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg index 1d44e48193..a79b715ee0 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -2 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = False +prime_tower_mode = none skin_overlap = 20 speed_topbottom = =math.ceil(speed_print * 40 / 70) speed_wall = =math.ceil(speed_print * 55 / 70) diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg index 6b99ed5a70..a838352f48 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none speed_print = 80 speed_topbottom = =math.ceil(speed_print * 30 / 80) speed_wall = =math.ceil(speed_print * 40 / 80) diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg index 97be45babc..e5a10d9222 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none skin_overlap = 10 speed_print = 60 speed_topbottom = =math.ceil(speed_print * 30 / 60) diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg index f305caa82d..486b74c1b2 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg @@ -14,7 +14,7 @@ weight = 0 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none skin_overlap = 10 top_bottom_thickness = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg index c82043d3af..4293ca81f1 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg @@ -24,7 +24,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 8 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_amount = 6.5 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg index 74a628f7cb..1b396f5417 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg index fa9b4c54ea..6c4ee71b82 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg @@ -23,7 +23,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg index cffd1e6075..d8fca155d3 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg @@ -14,7 +14,7 @@ weight = -2 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none skin_overlap = 20 speed_print = 50 speed_roofing = =math.ceil(speed_wall * 20 / 24) diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg index 94fe824f5e..5ea9fe9336 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg index 05a6896646..4e03569ca6 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg @@ -15,7 +15,7 @@ weight = 0 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none skin_overlap = 10 speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg index dcca81f3ef..0443afa3f6 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg @@ -17,7 +17,7 @@ brim_width = 14 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 20 -prime_tower_enable = True +prime_tower_mode = normal retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg index 585ae8eefe..ccae2cc5d8 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -18,7 +18,7 @@ layer_height = 0.4 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 15 -prime_tower_enable = True +prime_tower_mode = normal retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg index 2280a837ae..9596b00d33 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -18,7 +18,7 @@ layer_height = 0.3 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 17 -prime_tower_enable = True +prime_tower_mode = normal retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg index b1f867807b..4a7e29ec36 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg @@ -14,7 +14,7 @@ weight = -2 [values] brim_width = 15 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg index a75ae74ada..5c5b732990 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -4 brim_width = 15 layer_height = 0.4 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = True +prime_tower_mode = normal speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg index c1544a00e2..9a48e11a7b 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -3 brim_width = 15 layer_height = 0.3 material_print_temperature = =default_material_print_temperature + 12 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg index a0fc036566..747730c0a7 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg @@ -17,7 +17,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg index 547ab013fb..40f0779369 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg index b17789ad0f..03116ec10d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PETG_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PETG_Draft_Print.inst.cfg index 3eafff9a07..aab2e25ac2 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PETG_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PETG_Draft_Print.inst.cfg @@ -14,7 +14,7 @@ weight = -2 [values] brim_width = 7 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_combing = all speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PETG_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PETG_Superdraft_Print.inst.cfg index fe36a86948..45ec96e089 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PETG_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PETG_Superdraft_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -4 brim_width = 7 layer_height = 0.4 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_combing = all speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PETG_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PETG_Verydraft_Print.inst.cfg index 2bba762e2d..ee92c6add7 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PETG_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PETG_Verydraft_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -3 brim_width = 7 layer_height = 0.3 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = True +prime_tower_mode = normal retraction_combing = all speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg index 57a830402a..84a9b9a5fb 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg index 40f710327f..ae59471ff3 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg @@ -18,7 +18,7 @@ layer_height = 0.4 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = True +prime_tower_mode = normal speed_infill = =math.ceil(speed_print * 35 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg index 702c64bb78..2a4c093dca 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg @@ -18,7 +18,7 @@ layer_height = 0.3 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg index 145389fbe4..144a47769b 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg @@ -16,7 +16,7 @@ brim_width = 25 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' material_print_temperature = =default_material_print_temperature + 11 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 10 retraction_count_max = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg index 68d54bd406..cedba132eb 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -16,7 +16,7 @@ brim_width = 25 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' material_print_temperature = =default_material_print_temperature + 15 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 20 retraction_count_max = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg index 2aa79cad79..32f623e432 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' layer_height = 0.3 material_print_temperature = =default_material_print_temperature + 13 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 15 retraction_count_max = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg index a9b7a92918..5e0816ef9a 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = False +prime_tower_mode = none speed_print = 45 support_angle = 70 top_bottom_thickness = =layer_height * 6 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg index 16e17c500e..36e25d258a 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = False +prime_tower_mode = none speed_infill = =math.ceil(speed_print * 30 / 30) speed_print = 30 speed_topbottom = =math.ceil(speed_print * 20 / 30) diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg index 96dec4f1c5..ffbc413b6e 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = False +prime_tower_mode = none speed_infill = =math.ceil(speed_print * 30 / 35) speed_topbottom = =math.ceil(speed_print * 20 / 35) speed_wall = =math.ceil(speed_print * 25/ 35) diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg index 859eb3b33a..63dd03590c 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg @@ -23,7 +23,7 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 4 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 retraction_count_max = 15 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg index 61ace7da80..a81683200f 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -23,7 +23,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 retraction_count_max = 15 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg index e45b8f2d1d..cb0e4358d6 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -24,7 +24,7 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 retraction_count_max = 15 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg index eab1a39931..64ad8ff7f3 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -2 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = False +prime_tower_mode = none retraction_count_max = 5 skin_overlap = 20 skirt_brim_minimal_length = =min(2000, 175/(layer_height*line_width)) diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg index ad1e26c7da..2cdc81a5d9 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) -prime_tower_enable = False +prime_tower_mode = none retraction_count_max = 5 skin_overlap = 15 skirt_brim_minimal_length = =min(2000, 175/(layer_height*line_width)) diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg index e5ae49b17d..fa2b7026a1 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg @@ -15,7 +15,7 @@ weight = 1 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175/(layer_height*line_width)) support_infill_sparse_thickness = =3*layer_height diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg index 38334b4358..d16740c8ef 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg @@ -15,7 +15,7 @@ weight = 0 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175/(layer_height*line_width)) support_infill_sparse_thickness = =2*layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg index ec86494397..644f302cde 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg @@ -20,7 +20,7 @@ machine_min_cool_heat_time_window = 15 material_print_temperature = =default_material_print_temperature - 10 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg index 77082932a5..3fb19b43a2 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg @@ -21,7 +21,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg index 6877d9b6a2..ad25724904 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.8 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature - 10 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg index de1905e410..c0890c9740 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg @@ -15,7 +15,7 @@ weight = -1 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 45 / 60) speed_print = 60 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg index ae5c9bcbc1..fbe263ab43 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 40 / 55) speed_print = 55 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg index 701a2db84d..059d39f6c1 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 50 / 60) speed_print = 60 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.3mm.inst.cfg index 684336d1eb..cb741764d6 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.3mm.inst.cfg @@ -16,7 +16,7 @@ weight = -3 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature + 7 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 support_bottom_distance = =support_z_distance support_interface_enable = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.15mm.inst.cfg index a7a17e5f69..3af6b9a69d 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.15mm.inst.cfg @@ -15,7 +15,7 @@ weight = -1 brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' speed_print = 80 speed_topbottom = =math.ceil(speed_print * 30 / 80) speed_wall = =math.ceil(speed_print * 40 / 80) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.1mm.inst.cfg index a3b8129ed7..1526b46ba5 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.1mm.inst.cfg @@ -15,7 +15,7 @@ weight = 0 brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' support_angle = 45 support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height support_infill_sparse_thickness = =2 * layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.2mm.inst.cfg index 5c051039d0..999e2ce9c9 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.2mm.inst.cfg @@ -16,7 +16,7 @@ brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' speed_topbottom = =math.ceil(speed_print * 35 / 70) speed_wall = =math.ceil(speed_print * 50 / 70) speed_wall_0 = =math.ceil(speed_wall * 35 / 50) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.3mm.inst.cfg index 61073067fc..42b98f5be7 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.3mm.inst.cfg @@ -17,7 +17,7 @@ brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' speed_topbottom = =math.ceil(speed_print * 35 / 70) speed_wall = =math.ceil(speed_print * 50 / 70) speed_wall_0 = =math.ceil(speed_wall * 35 / 50) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg index 880461bccf..864421ed78 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 8 multiple_mesh_overlap = 0 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg index 5dd5e61f82..2591f15abb 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg @@ -15,7 +15,7 @@ weight = -1 infill_wipe_dist = 0 machine_min_cool_heat_time_window = 15 multiple_mesh_overlap = 0 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg index 7617b35b3b..ab0354f9ea 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 5 multiple_mesh_overlap = 0 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg index 7ed1fcd298..7ac2d06998 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg @@ -15,7 +15,7 @@ weight = -2 infill_wipe_dist = 0 machine_min_cool_heat_time_window = 15 multiple_mesh_overlap = 0 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg index f46f816cfb..1366b0700b 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 20 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg index 2c23449373..3dd4cc8cd8 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg @@ -20,7 +20,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg index e0899c8dc2..074a3b66dd 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 10 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg index 329bd095d5..cc9c42e572 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg @@ -20,7 +20,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg index 4b8f9f433b..d313f08887 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg index 5581284de4..73105ed512 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 70 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg index 30af138465..b6eac28eb9 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg @@ -14,7 +14,7 @@ weight = 0 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed support_bottom_distance = =support_z_distance diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg index e5dc960d98..7ee4df3cac 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_topbottom = =math.ceil(speed_print * 40 / 70) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg index 719adc820b..80a564e05a 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg @@ -22,7 +22,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg index eee8fc31b6..f1c188d7d9 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg index fa87825718..93ce7ac9b1 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg @@ -22,7 +22,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg index 6c90ec685f..84dcf31f04 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg @@ -22,7 +22,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 8 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg index b5253cb077..26cce4fcad 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg index 69cf85f349..86d98cfd6c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg index 397992c551..2715630b07 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg @@ -15,7 +15,7 @@ weight = 0 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg index 773da6d3ac..8446a7957f 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg @@ -14,7 +14,7 @@ weight = -2 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none retraction_prime_speed = =retraction_speed speed_print = 50 speed_roofing = =math.ceil(speed_wall * 20 / 24) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg index 10e43b5699..8e4d4596af 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg @@ -22,7 +22,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.06mm.inst.cfg index 312afa0421..4f8a58c974 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.06mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.8 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature - 10 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.15mm.inst.cfg index ee0525c13e..f854ea8815 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.8 material_max_flowrate = 20 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.1mm.inst.cfg index b53e8275a2..d854b78f65 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.1mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 40 / 55) speed_print = 55 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg index 57413c4b30..9ac0fa149f 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.3mm.inst.cfg index 0052ce90cd..2d2c5a2b58 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 7 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.15mm.inst.cfg index 8732c3ad63..efec8a9215 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 20 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none retraction_amount = 8 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg index e7e50350c0..4de8ea6aa4 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none retraction_amount = 8 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.3mm.inst.cfg index 5ecaa739db..da3e1d0469 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none retraction_amount = 8 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.06mm.inst.cfg index 2939389a3c..ddc0bd768a 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.15mm.inst.cfg index 136a3bed42..cd4fc7c176 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 12 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.1mm.inst.cfg index 2b430c1afb..d5a719e023 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.1mm.inst.cfg @@ -14,7 +14,7 @@ weight = 0 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed support_bottom_distance = =support_z_distance diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg index dcbb580edb..71f1169b40 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 12 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.3mm.inst.cfg index fc2a185be4..d7abde7dff 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 12 material_print_temperature = =default_material_print_temperature + 10 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.06mm.inst.cfg index c84c2fb66e..0fd04cc7ac 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.15mm.inst.cfg index 2aa24f805d..8ec8119ef6 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 14 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.1mm.inst.cfg index 47687fb5be..22e6f06262 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.1mm.inst.cfg @@ -15,7 +15,7 @@ weight = 0 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg index 151af3ed50..090d3a4839 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 14 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.3mm.inst.cfg index 56c097d890..18434874c1 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 14 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.2mm.inst.cfg index c2d04c9bad..ff96a0df68 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.2mm.inst.cfg @@ -17,7 +17,7 @@ brim_width = 14 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 20 -prime_tower_enable = True +prime_tower_mode = normal retraction_hop = 0.1 retraction_hop_enabled = False speed_print = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.3mm.inst.cfg index caf16e5f94..a3d9b394b9 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.3mm.inst.cfg @@ -17,7 +17,7 @@ brim_width = 14 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 17 -prime_tower_enable = True +prime_tower_mode = normal retraction_hop = 0.1 retraction_hop_enabled = False speed_print = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.4mm.inst.cfg index 1cd46fab48..dc46682c39 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.4mm.inst.cfg @@ -17,7 +17,7 @@ brim_width = 14 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 15 -prime_tower_enable = True +prime_tower_mode = normal retraction_hop = 0.1 retraction_hop_enabled = False speed_infill = =math.ceil(speed_print * 40 / 50) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.2mm.inst.cfg index f9ee324f33..f2ea43800e 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.2mm.inst.cfg @@ -14,7 +14,7 @@ weight = -2 [values] brim_width = 15 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.3mm.inst.cfg index f883fe1998..58193faaaf 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.3mm.inst.cfg @@ -14,7 +14,7 @@ weight = -3 [values] brim_width = 15 material_print_temperature = =default_material_print_temperature + 12 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.4mm.inst.cfg index a5c059c5e6..7e58326c02 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.4mm.inst.cfg @@ -14,7 +14,7 @@ weight = -4 [values] brim_width = 15 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = True +prime_tower_mode = normal speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.2mm.inst.cfg index e7d656dcc4..5b33c9854f 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.2mm.inst.cfg @@ -17,7 +17,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.3mm.inst.cfg index 08c1f4933b..6ac1edf4e9 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.3mm.inst.cfg @@ -17,7 +17,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.4mm.inst.cfg index c4d2894885..536a00cc00 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.4mm.inst.cfg @@ -17,7 +17,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.2mm.inst.cfg index d901c6c0dd..539a8c5a7c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.2mm.inst.cfg @@ -15,7 +15,7 @@ weight = -2 brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.3mm.inst.cfg index 0279882346..bf92354310 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.3mm.inst.cfg @@ -15,7 +15,7 @@ weight = -3 brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.4mm.inst.cfg index 373d6a0b78..138369ef63 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.4mm.inst.cfg @@ -15,7 +15,7 @@ weight = -4 brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = True +prime_tower_mode = normal speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.2mm.inst.cfg index 1feae070fc..a3935c55f7 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.2mm.inst.cfg @@ -16,7 +16,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.3mm.inst.cfg index f93f0848db..9f7162abe0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.3mm.inst.cfg @@ -16,7 +16,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.4mm.inst.cfg index 67f9cdfcf0..997095fcbf 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.4mm.inst.cfg @@ -16,7 +16,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = True +prime_tower_mode = normal speed_infill = =math.ceil(speed_print * 35 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg index 163f32a36d..1c681aaeb2 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg @@ -18,7 +18,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 11 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 10 retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg index 3f75c3366e..e054336e24 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg @@ -18,7 +18,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 13 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 15 retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg index b2c5dab3c4..3afea841d3 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg @@ -18,7 +18,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 15 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 20 retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.2mm.inst.cfg index 1f706632ce..a59a80d04a 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.2mm.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = False +prime_tower_mode = none speed_print = 45 speed_topbottom = =round(speed_print * 35 / 45) speed_wall = =round(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.3mm.inst.cfg index b1437e9160..c840722681 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.3mm.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = False +prime_tower_mode = none speed_infill = =math.ceil(speed_print * 30 / 35) speed_print = 35 speed_topbottom = =math.ceil(speed_print * 20 / 35) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.4mm.inst.cfg index 7c3c4ff6e9..1865589991 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.4mm.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = False +prime_tower_mode = none speed_infill = =math.ceil(speed_print * 30 / 30) speed_print = 30 speed_topbottom = =math.ceil(speed_print * 20 / 30) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg index 75949f45aa..709e798502 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg @@ -21,7 +21,7 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 4 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 retraction_count_max = 15 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg index 034bda5d09..12aac8dcd5 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg @@ -22,7 +22,7 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 retraction_count_max = 15 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg index e7189d5467..8958aa30c0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg @@ -21,7 +21,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 retraction_count_max = 15 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.2mm.inst.cfg index 9d7b4455d6..79f23f9c2c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 22 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.15 retraction_amount = 4 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.3mm.inst.cfg index e2a5c54c66..a187dc3179 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 22 material_print_temperature = =default_material_print_temperature + 7 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.15 retraction_amount = 4 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.4mm.inst.cfg index 26d3dc7fb8..cc2c57bcff 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.4mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 22 material_print_temperature = =default_material_print_temperature + 10 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.15 retraction_amount = 4 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.2mm.inst.cfg index b1dae1cb7a..9649f71775 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 23 material_print_temperature = =default_material_print_temperature - 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 3.5 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.3mm.inst.cfg index 4d4ffa0059..a0d9dbdee7 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.3mm.inst.cfg @@ -46,7 +46,7 @@ material_flow = 93 material_max_flowrate = 23 material_print_temperature = =default_material_print_temperature - 5 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 3.5 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.4mm.inst.cfg index 5cc6a43e13..840008f60d 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.4mm.inst.cfg @@ -46,7 +46,7 @@ material_flow = 93 material_max_flowrate = 23 material_print_temperature = =default_material_print_temperature - 5 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 3.5 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.2mm.inst.cfg index 59f8409483..c0719e38b3 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 15 material_print_temperature = =default_material_print_temperature + 10 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.3mm.inst.cfg index a4cdd898f1..8f045a1238 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 15 material_print_temperature = =default_material_print_temperature + 10 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.4mm.inst.cfg index 79dc105f86..b1e8b913fd 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.4mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 15 material_print_temperature = =default_material_print_temperature + 15 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg index a76864a1a3..176cfb2cb2 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 17 material_print_temperature = =default_material_print_temperature + 10 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.3mm.inst.cfg index d364232726..404435e21b 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 17 material_print_temperature = =default_material_print_temperature + 15 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.4mm.inst.cfg index 02a71fa9b7..76724ad958 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.4mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 17 material_print_temperature = =default_material_print_temperature + 15 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.06mm.inst.cfg index 12b815d5ab..b69ddd1011 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_infill_sparse_thickness = =3 * layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.15mm.inst.cfg index 5390b3ecb7..67a101d2bc 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.15mm.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) -prime_tower_enable = False +prime_tower_mode = none retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_infill_sparse_thickness = =2 * layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.1mm.inst.cfg index b15b5958a7..66c0486b0f 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.1mm.inst.cfg @@ -15,7 +15,7 @@ weight = 0 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_infill_sparse_thickness = =2 * layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.2mm.inst.cfg index e273e85eb5..6e36d9578f 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.2mm.inst.cfg @@ -15,7 +15,7 @@ weight = -2 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = False +prime_tower_mode = none retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_interface_enable = True diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.15mm.inst.cfg index ea2902cd6c..9b81b09599 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.2mm.inst.cfg index bbbad9be1f..e596c6fcd0 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.15mm.inst.cfg index 300e2ebaed..5c9671c99e 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.2mm.inst.cfg index 84040ede4e..872368142c 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.15mm.inst.cfg index 402ae15eba..2b76474e5f 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.2mm.inst.cfg index 0c9154a233..dc84108298 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.15mm.inst.cfg index e7b72d6cd0..3706d83424 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.2mm.inst.cfg index 38c857de5e..6e03ebd7e5 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg index 5779142162..dd81027cfb 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg @@ -20,7 +20,7 @@ machine_min_cool_heat_time_window = 15 material_print_temperature = =default_material_print_temperature - 10 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg index 64b1be79aa..82df5e1ad8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg @@ -21,7 +21,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg index 573b758705..f96f28e71f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.8 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature - 10 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg index 926ef49922..9cc0a12b5a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg @@ -15,7 +15,7 @@ weight = -1 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 45 / 60) speed_print = 60 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg index 598e83d922..651c780d32 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 40 / 55) speed_print = 55 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg index 5f5e9e2fd3..28bd4cddff 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 50 / 60) speed_print = 60 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.3mm.inst.cfg index 8656a28067..49e70ecb1c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.3mm.inst.cfg @@ -16,7 +16,7 @@ weight = -3 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature + 7 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 support_bottom_distance = =support_z_distance support_interface_enable = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.15mm.inst.cfg index a4381e0e3b..b2dd10f321 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.15mm.inst.cfg @@ -15,7 +15,7 @@ weight = -1 brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' speed_print = 80 speed_topbottom = =math.ceil(speed_print * 30 / 80) speed_wall = =math.ceil(speed_print * 40 / 80) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.1mm.inst.cfg index 5f4c480fa4..ba704aa34b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.1mm.inst.cfg @@ -15,7 +15,7 @@ weight = 0 brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' support_angle = 45 support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height support_infill_sparse_thickness = =2 * layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.2mm.inst.cfg index 9e3c0153b1..ccccb2d3e8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.2mm.inst.cfg @@ -16,7 +16,7 @@ brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' speed_topbottom = =math.ceil(speed_print * 35 / 70) speed_wall = =math.ceil(speed_print * 50 / 70) speed_wall_0 = =math.ceil(speed_wall * 35 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.3mm.inst.cfg index bd4e13ebaf..cc6e8f9453 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.3mm.inst.cfg @@ -17,7 +17,7 @@ brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' speed_topbottom = =math.ceil(speed_print * 35 / 70) speed_wall = =math.ceil(speed_print * 50 / 70) speed_wall_0 = =math.ceil(speed_wall * 35 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg index a77d1b4233..0b11bc463b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 8 multiple_mesh_overlap = 0 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg index 805fb08ead..476cdad5ce 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg @@ -15,7 +15,7 @@ weight = -1 infill_wipe_dist = 0 machine_min_cool_heat_time_window = 15 multiple_mesh_overlap = 0 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg index 77f775d672..6a18d6a859 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 5 multiple_mesh_overlap = 0 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg index 877c48c42d..dcd01b1084 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg @@ -15,7 +15,7 @@ weight = -2 infill_wipe_dist = 0 machine_min_cool_heat_time_window = 15 multiple_mesh_overlap = 0 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg index 0b471a8c75..a28ac8382e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 20 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg index 6c9710e436..1ed3ad4ab3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg @@ -20,7 +20,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg index 945b77e699..bfc007fd85 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 10 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg index b523e3c646..b8ad1d3747 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg @@ -20,7 +20,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg index f34549bc78..e724f809d5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg index 4a9e914b99..2cce79480c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 70 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg index dc73f13bb5..5a730aba3a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg @@ -14,7 +14,7 @@ weight = 0 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed support_bottom_distance = =support_z_distance diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg index ead512bb50..a1bde9d68d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_topbottom = =math.ceil(speed_print * 40 / 70) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg index c6641e7a08..e0070ff73b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg @@ -22,7 +22,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg index 85e892628d..a392918738 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg index 531f946ba8..8e59e505fd 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg @@ -22,7 +22,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg index a7f63a76b1..263cee30dd 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg @@ -22,7 +22,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 8 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg index cf7a8335b8..2bf08e3489 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg index a7dcb61128..3b44a9eb37 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg index f053b33478..3167f39563 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg @@ -15,7 +15,7 @@ weight = 0 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg index 4e98b6005a..238468f784 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg @@ -14,7 +14,7 @@ weight = -2 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none retraction_prime_speed = =retraction_speed speed_print = 50 speed_roofing = =math.ceil(speed_wall * 20 / 24) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg index 5c6ed28548..208277dc9b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg @@ -22,7 +22,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.06mm.inst.cfg index a69ff33f76..3f8300e24b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.06mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.8 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature - 10 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.15mm.inst.cfg index 9c7ceca13b..cf2437cc2a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.8 material_max_flowrate = 20 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.1mm.inst.cfg index ca659622cb..a0c9d24dab 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.1mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 40 / 55) speed_print = 55 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg index f430e6bc16..7ae2965c0f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.3mm.inst.cfg index 98ca8927b6..769405708d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 7 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.15mm.inst.cfg index 201c663d5c..5eb8c228c6 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 20 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none retraction_amount = 8 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg index 55696eccb4..125ceab2d7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none retraction_amount = 8 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.3mm.inst.cfg index fe3eeb67ad..dda28b98dd 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none retraction_amount = 8 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.06mm.inst.cfg index c2bb123d04..fc03e3f464 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.15mm.inst.cfg index 713f94219f..8e77d8d49f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 12 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.1mm.inst.cfg index 1e2820f565..1459cec327 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.1mm.inst.cfg @@ -14,7 +14,7 @@ weight = 0 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_prime_speed = =retraction_speed support_bottom_distance = =support_z_distance diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg index 02d22b06b8..d2a1d5a176 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 12 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.3mm.inst.cfg index b0d5d41d0f..7cffc4b104 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 12 material_print_temperature = =default_material_print_temperature + 10 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.06mm.inst.cfg index 595de835ba..e4ab6230a7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.15mm.inst.cfg index 55e724da9d..f4f251df8c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 14 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.1mm.inst.cfg index 07c97a632f..902e921ce3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.1mm.inst.cfg @@ -15,7 +15,7 @@ weight = 0 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg index ee0ee279e6..cc3bdb2234 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 14 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.3mm.inst.cfg index 875bd5a669..9e10ff65b0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 14 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = False +prime_tower_mode = none raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.2mm.inst.cfg index 0dd369e4dd..a7877d90e1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.2mm.inst.cfg @@ -17,7 +17,7 @@ brim_width = 14 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 20 -prime_tower_enable = True +prime_tower_mode = normal retraction_hop = 0.1 retraction_hop_enabled = False speed_print = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.3mm.inst.cfg index e6ce183f4a..2b5b521f02 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.3mm.inst.cfg @@ -17,7 +17,7 @@ brim_width = 14 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 17 -prime_tower_enable = True +prime_tower_mode = normal retraction_hop = 0.1 retraction_hop_enabled = False speed_print = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.4mm.inst.cfg index 0c3abc6e3f..ff9a049f7e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.4mm.inst.cfg @@ -17,7 +17,7 @@ brim_width = 14 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 15 -prime_tower_enable = True +prime_tower_mode = normal retraction_hop = 0.1 retraction_hop_enabled = False speed_infill = =math.ceil(speed_print * 40 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.2mm.inst.cfg index eb6e07e080..a3340f81a8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.2mm.inst.cfg @@ -14,7 +14,7 @@ weight = -2 [values] brim_width = 15 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.3mm.inst.cfg index e7958d9841..7c80d16f24 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.3mm.inst.cfg @@ -14,7 +14,7 @@ weight = -3 [values] brim_width = 15 material_print_temperature = =default_material_print_temperature + 12 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.4mm.inst.cfg index 0683b2959b..18ec3e9dbe 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.4mm.inst.cfg @@ -14,7 +14,7 @@ weight = -4 [values] brim_width = 15 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = True +prime_tower_mode = normal speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.2mm.inst.cfg index 5a774e0750..798db0dfc8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.2mm.inst.cfg @@ -17,7 +17,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.3mm.inst.cfg index bed4ac46d7..86d6130a70 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.3mm.inst.cfg @@ -17,7 +17,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.4mm.inst.cfg index a0d58757da..2d9c3ebabe 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.4mm.inst.cfg @@ -17,7 +17,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.2mm.inst.cfg index 6208ad9bec..7f51af7154 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.2mm.inst.cfg @@ -15,7 +15,7 @@ weight = -2 brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.3mm.inst.cfg index 98b0d3f5f8..81d08397f3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.3mm.inst.cfg @@ -15,7 +15,7 @@ weight = -3 brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.4mm.inst.cfg index 156113b809..689455183f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.4mm.inst.cfg @@ -15,7 +15,7 @@ weight = -4 brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = True +prime_tower_mode = normal speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.2mm.inst.cfg index 10bf06fbb5..d00e5235ba 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.2mm.inst.cfg @@ -16,7 +16,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.3mm.inst.cfg index 1a63005ced..a22439011e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.3mm.inst.cfg @@ -16,7 +16,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.4mm.inst.cfg index 5e22cee246..7a97620cb4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.4mm.inst.cfg @@ -16,7 +16,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = True +prime_tower_mode = normal speed_infill = =math.ceil(speed_print * 35 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg index 149104700e..addcc8e504 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg @@ -18,7 +18,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 11 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 10 retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg index 670ec78d51..dde38061ca 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg @@ -18,7 +18,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 13 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 15 retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg index c9b5c26d64..bab23c5ee1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg @@ -18,7 +18,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 15 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 20 retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.2mm.inst.cfg index 26c20268ea..1c5161a635 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.2mm.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = False +prime_tower_mode = none speed_print = 45 speed_topbottom = =round(speed_print * 35 / 45) speed_wall = =round(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.3mm.inst.cfg index cc28dc5150..0a4c4ad2c7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.3mm.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = False +prime_tower_mode = none speed_infill = =math.ceil(speed_print * 30 / 35) speed_print = 35 speed_topbottom = =math.ceil(speed_print * 20 / 35) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.4mm.inst.cfg index eb338d1e1d..2fc8aaf746 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.4mm.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_enable = False +prime_tower_mode = none speed_infill = =math.ceil(speed_print * 30 / 30) speed_print = 30 speed_topbottom = =math.ceil(speed_print * 20 / 30) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg index 43436cd4c7..132a0e0760 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg @@ -21,7 +21,7 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 4 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 retraction_count_max = 15 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg index 58b524dd2a..c0b54402f2 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg @@ -22,7 +22,7 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 retraction_count_max = 15 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg index d17ec5486a..076f3df437 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg @@ -21,7 +21,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 multiple_mesh_overlap = 0.2 -prime_tower_enable = True +prime_tower_mode = normal prime_tower_flow = 100 retraction_count_max = 15 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.2mm.inst.cfg index 9ba4a38c6e..e308015dd8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 22 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.15 retraction_amount = 4 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.3mm.inst.cfg index 4ab74980ef..3d7cabe23d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 22 material_print_temperature = =default_material_print_temperature + 7 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.15 retraction_amount = 4 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.4mm.inst.cfg index 269d51dd4b..f7ab03fac0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.4mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 22 material_print_temperature = =default_material_print_temperature + 10 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.15 retraction_amount = 4 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.2mm.inst.cfg index 4f56167ffd..692f4f8aa7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 23 material_print_temperature = =default_material_print_temperature - 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 3.5 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.3mm.inst.cfg index 9fdf9a665b..93e4e071f5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.3mm.inst.cfg @@ -46,7 +46,7 @@ material_flow = 93 material_max_flowrate = 23 material_print_temperature = =default_material_print_temperature - 5 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 3.5 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.4mm.inst.cfg index 3368ae6e2d..592c835689 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.4mm.inst.cfg @@ -46,7 +46,7 @@ material_flow = 93 material_max_flowrate = 23 material_print_temperature = =default_material_print_temperature - 5 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal retraction_amount = 3.5 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.2mm.inst.cfg index ca93df9dc1..fd0b6da130 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 15 material_print_temperature = =default_material_print_temperature + 10 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.3mm.inst.cfg index 4461ae0772..a6b7ac0439 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 15 material_print_temperature = =default_material_print_temperature + 10 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.4mm.inst.cfg index 1acdad53a0..c873edfacb 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.4mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 15 material_print_temperature = =default_material_print_temperature + 15 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg index 4973ec35bb..413903a8e8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 17 material_print_temperature = =default_material_print_temperature + 10 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.3mm.inst.cfg index 2bcf3fa82d..f0c5169389 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 17 material_print_temperature = =default_material_print_temperature + 15 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.4mm.inst.cfg index 3e4693c115..cb12b8740c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.4mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 17 material_print_temperature = =default_material_print_temperature + 15 optimize_wall_printing_order = False -prime_tower_enable = True +prime_tower_mode = normal raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.06mm.inst.cfg index 2bc28f4c1a..022e91ed9f 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_infill_sparse_thickness = =3 * layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.15mm.inst.cfg index f5b8c35298..40cf72eff4 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.15mm.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) -prime_tower_enable = False +prime_tower_mode = none retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_infill_sparse_thickness = =2 * layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.1mm.inst.cfg index 6457f97c9c..8b5a3e9f67 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.1mm.inst.cfg @@ -15,7 +15,7 @@ weight = 0 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_infill_sparse_thickness = =2 * layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.2mm.inst.cfg index eef90f5f17..1ff95a0e3b 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.2mm.inst.cfg @@ -15,7 +15,7 @@ weight = -2 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature + 5 -prime_tower_enable = False +prime_tower_mode = none retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_interface_enable = True diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.3mm.inst.cfg index e1862ce3c4..58796a07a4 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.3mm.inst.cfg @@ -16,7 +16,7 @@ weight = -3 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature - 5 -prime_tower_enable = False +prime_tower_mode = none retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_infill_sparse_thickness = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.15mm.inst.cfg index 8b807c1eb5..b7d9b2a05f 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.2mm.inst.cfg index ebc58413e2..e3e8d486b0 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.15mm.inst.cfg index 1204be4c15..f01921353b 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.2mm.inst.cfg index 6a7d52af4b..0a1cc1204d 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.15mm.inst.cfg index 40d414cbcb..4437f2c531 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.2mm.inst.cfg index 6144a2c3f0..3796177bc5 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.15mm.inst.cfg index 5bf5d910e8..1ec4911676 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.2mm.inst.cfg index 21407b6e66..36b56b6513 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_enable = True +prime_tower_mode = normal speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/variants/liquid/liquid_vo08.inst.cfg b/resources/variants/liquid/liquid_vo08.inst.cfg index 58cbea1b9d..a69a0f806e 100644 --- a/resources/variants/liquid/liquid_vo08.inst.cfg +++ b/resources/variants/liquid/liquid_vo08.inst.cfg @@ -37,7 +37,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 material_standby_temperature = 100 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_wipe_enabled = True retract_at_layer_change = =not magic_spiralize retraction_amount = 3 diff --git a/resources/variants/strateo3d/strateo3d_high_temp_04.inst.cfg b/resources/variants/strateo3d/strateo3d_high_temp_04.inst.cfg index 4bf51a967a..b66b984346 100644 --- a/resources/variants/strateo3d/strateo3d_high_temp_04.inst.cfg +++ b/resources/variants/strateo3d/strateo3d_high_temp_04.inst.cfg @@ -14,7 +14,7 @@ layer_height_0 = 0.3 machine_nozzle_id = HT0.4 machine_nozzle_size = 0.4 machine_nozzle_tip_outer_diameter = 1.0 -prime_tower_enable = True +prime_tower_mode = normal retract_at_layer_change = False support_angle = 45 support_use_towers = True diff --git a/resources/variants/strateo3d/strateo3d_standard_04.inst.cfg b/resources/variants/strateo3d/strateo3d_standard_04.inst.cfg index 3d705453d8..968c7c7262 100644 --- a/resources/variants/strateo3d/strateo3d_standard_04.inst.cfg +++ b/resources/variants/strateo3d/strateo3d_standard_04.inst.cfg @@ -14,7 +14,7 @@ layer_height_0 = 0.3 machine_nozzle_id = Standard 0.4 machine_nozzle_size = 0.4 machine_nozzle_tip_outer_diameter = 1.0 -prime_tower_enable = True +prime_tower_mode = normal retract_at_layer_change = False support_angle = 60 support_use_towers = True diff --git a/resources/variants/strateo3d/strateo3d_standard_06.inst.cfg b/resources/variants/strateo3d/strateo3d_standard_06.inst.cfg index 3443f64531..9b6d921d70 100644 --- a/resources/variants/strateo3d/strateo3d_standard_06.inst.cfg +++ b/resources/variants/strateo3d/strateo3d_standard_06.inst.cfg @@ -14,7 +14,7 @@ layer_height_0 = 0.4 machine_nozzle_id = Standard 0.6 machine_nozzle_size = 0.6 machine_nozzle_tip_outer_diameter = 1.5 -prime_tower_enable = True +prime_tower_mode = normal retract_at_layer_change = False support_angle = 55 support_use_towers = True diff --git a/resources/variants/strateo3d/strateo3d_standard_08.inst.cfg b/resources/variants/strateo3d/strateo3d_standard_08.inst.cfg index f436ce1fe7..11ff582ef1 100644 --- a/resources/variants/strateo3d/strateo3d_standard_08.inst.cfg +++ b/resources/variants/strateo3d/strateo3d_standard_08.inst.cfg @@ -14,7 +14,7 @@ layer_height_0 = 0.5 machine_nozzle_id = Standard 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 -prime_tower_enable = True +prime_tower_mode = normal retract_at_layer_change = True support_angle = 50 support_use_towers = True diff --git a/resources/variants/strateo3d/strateo3d_standard_10.inst.cfg b/resources/variants/strateo3d/strateo3d_standard_10.inst.cfg index b957d58d9f..c9d50d91c3 100644 --- a/resources/variants/strateo3d/strateo3d_standard_10.inst.cfg +++ b/resources/variants/strateo3d/strateo3d_standard_10.inst.cfg @@ -14,7 +14,7 @@ layer_height_0 = 0.6 machine_nozzle_id = Standard 1.0 Experimental machine_nozzle_size = 1.0 machine_nozzle_tip_outer_diameter = 2.5 -prime_tower_enable = True +prime_tower_mode = normal retract_at_layer_change = True support_angle = 50 support_use_towers = True diff --git a/resources/variants/strateo3d/strateo3d_standard_12.inst.cfg b/resources/variants/strateo3d/strateo3d_standard_12.inst.cfg index 3a35f9c4a2..f1f03bfcb4 100644 --- a/resources/variants/strateo3d/strateo3d_standard_12.inst.cfg +++ b/resources/variants/strateo3d/strateo3d_standard_12.inst.cfg @@ -14,7 +14,7 @@ layer_height_0 = 0.7 machine_nozzle_id = Standard 1.2 Experimental machine_nozzle_size = 1.2 machine_nozzle_tip_outer_diameter = 3.0 -prime_tower_enable = True +prime_tower_mode = normal retract_at_layer_change = True support_angle = 50 support_use_towers = True diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg index 4190aab0cd..baf5f4043a 100644 --- a/resources/variants/ultimaker3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_aa0.8.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_id = AA 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_amount = 6.5 diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index 62227f50f6..5250dff5e9 100644 --- a/resources/variants/ultimaker3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_bb0.8.inst.cfg @@ -26,7 +26,7 @@ machine_nozzle_id = BB 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_hop = 2 diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg index 941634e3a6..109cd55a9d 100644 --- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_id = AA 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_amount = 6.5 diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg index 2a88f165e6..c40c69ff62 100644 --- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg @@ -26,7 +26,7 @@ machine_nozzle_id = BB 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_hop = 2 diff --git a/resources/variants/ultimaker_s3_aa0.8.inst.cfg b/resources/variants/ultimaker_s3_aa0.8.inst.cfg index c30365897b..e8ac3c5714 100644 --- a/resources/variants/ultimaker_s3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker_s3_aa0.8.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_id = AA 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_amount = 6.5 diff --git a/resources/variants/ultimaker_s3_bb0.8.inst.cfg b/resources/variants/ultimaker_s3_bb0.8.inst.cfg index 34e1b6d308..ef97986a94 100644 --- a/resources/variants/ultimaker_s3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s3_bb0.8.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_id = BB 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_hop = 2 diff --git a/resources/variants/ultimaker_s5_aa0.8.inst.cfg b/resources/variants/ultimaker_s5_aa0.8.inst.cfg index b482c418f0..522723db86 100644 --- a/resources/variants/ultimaker_s5_aa0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_aa0.8.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_id = AA 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_amount = 6.5 diff --git a/resources/variants/ultimaker_s5_bb0.8.inst.cfg b/resources/variants/ultimaker_s5_bb0.8.inst.cfg index 660a6b10f4..3cdaa70171 100644 --- a/resources/variants/ultimaker_s5_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_bb0.8.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_id = BB 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_hop = 2 diff --git a/resources/variants/ultimaker_s7_aa0.8.inst.cfg b/resources/variants/ultimaker_s7_aa0.8.inst.cfg index a5b6a66516..ca6079aeb9 100644 --- a/resources/variants/ultimaker_s7_aa0.8.inst.cfg +++ b/resources/variants/ultimaker_s7_aa0.8.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_id = AA 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_amount = 6.5 diff --git a/resources/variants/ultimaker_s7_bb0.8.inst.cfg b/resources/variants/ultimaker_s7_bb0.8.inst.cfg index 6823fe18a4..06eb01ee0f 100644 --- a/resources/variants/ultimaker_s7_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s7_bb0.8.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_id = BB 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_enable = False +prime_tower_mode = none prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_amount = 4.5 From 6c8ee8d98ac82d5e5b0f822f7756e226466a5065 Mon Sep 17 00:00:00 2001 From: wawanbreton Date: Fri, 16 Feb 2024 08:05:52 +0000 Subject: [PATCH 097/203] Applied printer-linter format --- resources/definitions/deltacomb_dc20flux.def.json | 2 +- resources/definitions/deltacomb_dc21flux.def.json | 2 +- resources/definitions/deltacomb_dc30flux.def.json | 2 +- resources/definitions/elegoo_neptune_2D.def.json | 2 +- resources/definitions/lotmaxx_sc60.def.json | 2 +- resources/definitions/strateo3d_IDEX420.def.json | 2 +- resources/definitions/ultimaker_method_base.def.json | 2 +- .../Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg | 2 +- .../Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg | 2 +- .../Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg | 2 +- .../Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg | 2 +- .../Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg | 2 +- .../Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.8_PP_Draft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_PP_Superdraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_PP_Verydraft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.8_TPU_Draft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_TPU_Superdraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_TPU_Verydraft_Print.inst.cfg | 2 +- .../tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg | 2 +- .../tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg | 2 +- .../tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg | 2 +- .../tizyx_evy_dual_global_Normal_Quality.inst.cfg | 2 +- .../tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg | 2 +- 42 files changed, 42 insertions(+), 42 deletions(-) diff --git a/resources/definitions/deltacomb_dc20flux.def.json b/resources/definitions/deltacomb_dc20flux.def.json index cc4a38c4d5..50f69636bd 100644 --- a/resources/definitions/deltacomb_dc20flux.def.json +++ b/resources/definitions/deltacomb_dc20flux.def.json @@ -31,8 +31,8 @@ "material_final_print_temperature": { "value": "material_print_temperature" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, - "prime_tower_mode": { "value": "normal" }, "prime_tower_min_volume": { "value": "50" }, + "prime_tower_mode": { "value": "normal" }, "switch_extruder_retraction_amount": { "value": "0" } } } \ No newline at end of file diff --git a/resources/definitions/deltacomb_dc21flux.def.json b/resources/definitions/deltacomb_dc21flux.def.json index dd710af627..e09fbeca63 100644 --- a/resources/definitions/deltacomb_dc21flux.def.json +++ b/resources/definitions/deltacomb_dc21flux.def.json @@ -31,8 +31,8 @@ "material_final_print_temperature": { "value": "material_print_temperature" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, - "prime_tower_mode": { "value": "normal" }, "prime_tower_min_volume": { "value": "50" }, + "prime_tower_mode": { "value": "normal" }, "switch_extruder_retraction_amount": { "value": "0" } } } \ No newline at end of file diff --git a/resources/definitions/deltacomb_dc30flux.def.json b/resources/definitions/deltacomb_dc30flux.def.json index 789af29650..f59bf53a9a 100644 --- a/resources/definitions/deltacomb_dc30flux.def.json +++ b/resources/definitions/deltacomb_dc30flux.def.json @@ -31,8 +31,8 @@ "material_final_print_temperature": { "value": "material_print_temperature" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, - "prime_tower_mode": { "value": "normal" }, "prime_tower_min_volume": { "value": "50" }, + "prime_tower_mode": { "value": "normal" }, "switch_extruder_retraction_amount": { "value": "0" } } } \ No newline at end of file diff --git a/resources/definitions/elegoo_neptune_2D.def.json b/resources/definitions/elegoo_neptune_2D.def.json index e564acc036..2d5ef0024e 100644 --- a/resources/definitions/elegoo_neptune_2D.def.json +++ b/resources/definitions/elegoo_neptune_2D.def.json @@ -55,8 +55,8 @@ "settable_per_extruder": false }, "prime_blob_enable": { "default_value": false }, - "prime_tower_mode": { "default_value": "normal" }, "prime_tower_min_volume": { "default_value": 90 }, + "prime_tower_mode": { "default_value": "normal" }, "prime_tower_size": { "default_value": 30 }, "raft_airgap": { "default_value": 0.25 }, "raft_margin": { "default_value": 5 }, diff --git a/resources/definitions/lotmaxx_sc60.def.json b/resources/definitions/lotmaxx_sc60.def.json index 697dd911b6..89eeac9b75 100644 --- a/resources/definitions/lotmaxx_sc60.def.json +++ b/resources/definitions/lotmaxx_sc60.def.json @@ -44,8 +44,8 @@ "machine_width": { "default_value": 235 }, "meshfix_maximum_resolution": { "value": 0.25 }, "optimize_wall_printing_order": { "value": true }, - "prime_tower_mode": { "value": "normal" }, "prime_tower_min_volume": { "value": 30 }, + "prime_tower_mode": { "value": "normal" }, "retract_at_layer_change": { "value": false }, "retraction_amount": { "value": 4.5 }, "roofing_layer_count": { "value": 1 }, diff --git a/resources/definitions/strateo3d_IDEX420.def.json b/resources/definitions/strateo3d_IDEX420.def.json index 66ecb9999c..785301c51e 100644 --- a/resources/definitions/strateo3d_IDEX420.def.json +++ b/resources/definitions/strateo3d_IDEX420.def.json @@ -112,8 +112,8 @@ "machine_use_extruder_offset_to_offset_coords": { "default_value": false }, "machine_width": { "default_value": 420 }, "material_diameter": { "default_value": 1.75 }, - "prime_tower_mode": { "default_value": "normal" }, "prime_tower_min_volume": { "default_value": 35.6 }, + "prime_tower_mode": { "default_value": "normal" }, "raft_acceleration": { "value": "machine_acceleration" }, "raft_base_acceleration": { "value": "machine_acceleration" }, "raft_interface_acceleration": { "value": "machine_acceleration" }, diff --git a/resources/definitions/ultimaker_method_base.def.json b/resources/definitions/ultimaker_method_base.def.json index 89aaa1b170..911de6d1b1 100644 --- a/resources/definitions/ultimaker_method_base.def.json +++ b/resources/definitions/ultimaker_method_base.def.json @@ -346,9 +346,9 @@ "prime_tower_base_curve_magnitude": { "value": 2 }, "prime_tower_base_height": { "value": 6 }, "prime_tower_base_size": { "value": 10 }, - "prime_tower_mode": { "value": "none" }, "prime_tower_flow": { "value": "material_flow" }, "prime_tower_line_width": { "value": 1 }, + "prime_tower_mode": { "value": "none" }, "prime_tower_raft_base_line_spacing": { "value": "raft_base_line_width" }, "prime_tower_wipe_enabled": { "value": true }, "print_sequence": { "enabled": false }, diff --git a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg index bab34c73b6..54807c88b3 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg @@ -38,8 +38,8 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True -prime_tower_mode = normal prime_tower_min_volume = 6 +prime_tower_mode = normal prime_tower_size = 20 prime_tower_wipe_enabled = True retract_at_layer_change = False diff --git a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg index e0ef960b32..312313c9c5 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg @@ -38,8 +38,8 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True -prime_tower_mode = normal prime_tower_min_volume = 6 +prime_tower_mode = normal prime_tower_size = 20 prime_tower_wipe_enabled = True retract_at_layer_change = False diff --git a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg index 55c26edccb..485e82345a 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg @@ -36,8 +36,8 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True -prime_tower_mode = normal prime_tower_min_volume = 6 +prime_tower_mode = normal prime_tower_size = 20 prime_tower_wipe_enabled = True retract_at_layer_change = False diff --git a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg index b5fa497a33..7fb90fd093 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg @@ -36,8 +36,8 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True -prime_tower_mode = normal prime_tower_min_volume = 6 +prime_tower_mode = normal prime_tower_size = 20 prime_tower_wipe_enabled = True retract_at_layer_change = False diff --git a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg index 1bf050b6f2..ce3fe8c60b 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg @@ -35,8 +35,8 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True -prime_tower_mode = normal prime_tower_min_volume = 6 +prime_tower_mode = normal prime_tower_size = 20 prime_tower_wipe_enabled = True retract_at_layer_change = False diff --git a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg index 7cde446656..a95c6ce5d3 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg @@ -35,8 +35,8 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True -prime_tower_mode = normal prime_tower_min_volume = 6 +prime_tower_mode = normal prime_tower_size = 20 prime_tower_wipe_enabled = True retract_at_layer_change = False diff --git a/resources/quality/liquid/liquid_vo0.8_PP_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PP_Draft_Print.inst.cfg index d30007f18d..dab7612a6c 100644 --- a/resources/quality/liquid/liquid_vo0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PP_Draft_Print.inst.cfg @@ -26,9 +26,9 @@ material_print_temperature = =default_material_print_temperature - 2 material_print_temperature_layer_0 = =default_material_print_temperature + 2 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 10 +prime_tower_mode = normal retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/liquid/liquid_vo0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PP_Superdraft_Print.inst.cfg index a0a1f806ab..7ec446e803 100644 --- a/resources/quality/liquid/liquid_vo0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PP_Superdraft_Print.inst.cfg @@ -26,9 +26,9 @@ material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature + 2 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 20 +prime_tower_mode = normal retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/liquid/liquid_vo0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PP_Verydraft_Print.inst.cfg index cdadd228be..9913ea3779 100644 --- a/resources/quality/liquid/liquid_vo0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PP_Verydraft_Print.inst.cfg @@ -25,9 +25,9 @@ material_bed_temperature_layer_0 = =material_bed_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 2 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 15 +prime_tower_mode = normal retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/liquid/liquid_vo0.8_TPU_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_TPU_Draft_Print.inst.cfg index 31baf4022c..54d9c23b98 100644 --- a/resources/quality/liquid/liquid_vo0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_TPU_Draft_Print.inst.cfg @@ -30,8 +30,8 @@ material_print_temperature = =default_material_print_temperature - 2 material_print_temperature_layer_0 = =material_print_temperature + 19 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 +prime_tower_mode = normal retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/liquid/liquid_vo0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_TPU_Superdraft_Print.inst.cfg index 408ad54518..289e9d48b7 100644 --- a/resources/quality/liquid/liquid_vo0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_TPU_Superdraft_Print.inst.cfg @@ -31,8 +31,8 @@ material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =material_print_temperature + 15 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 +prime_tower_mode = normal retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/liquid/liquid_vo0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_TPU_Verydraft_Print.inst.cfg index 9fd95f5c32..c8cad9bb3f 100644 --- a/resources/quality/liquid/liquid_vo0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_TPU_Verydraft_Print.inst.cfg @@ -30,8 +30,8 @@ material_initial_print_temperature = =material_print_temperature material_print_temperature_layer_0 = =material_print_temperature + 17 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 +prime_tower_mode = normal retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg index a033f60186..538bcfedb9 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg @@ -22,8 +22,8 @@ material_final_print_temperature = =material_print_temperature material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature optimize_wall_printing_order = True -prime_tower_mode = normal prime_tower_flow = 110 +prime_tower_mode = normal prime_tower_size = 35 retraction_min_travel = 2 skirt_gap = 2 diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg index a8da0b4092..86c4cd1894 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg @@ -19,8 +19,8 @@ material_final_print_temperature = =material_print_temperature material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature optimize_wall_printing_order = True -prime_tower_mode = normal prime_tower_flow = 110 +prime_tower_mode = normal prime_tower_size = 35 retraction_hop_enabled = False support_enable = True diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg index d807f97293..83ec574663 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg @@ -30,8 +30,8 @@ material_flow_layer_0 = 93 material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature optimize_wall_printing_order = True -prime_tower_mode = normal prime_tower_flow = 110 +prime_tower_mode = normal prime_tower_size = 35 retraction_amount = 5 retraction_hop_enabled = False diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Normal_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Normal_Quality.inst.cfg index 51329150b7..2269a480a5 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Normal_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Normal_Quality.inst.cfg @@ -30,8 +30,8 @@ material_flow_layer_0 = 93 material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature optimize_wall_printing_order = True -prime_tower_mode = normal prime_tower_flow = 110 +prime_tower_mode = normal prime_tower_size = 35 retraction_amount = 5 retraction_hop_enabled = False diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg index f201d4c632..4fed169568 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg @@ -19,8 +19,8 @@ material_final_print_temperature = =material_print_temperature material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature optimize_wall_printing_order = True -prime_tower_mode = normal prime_tower_flow = 110 +prime_tower_mode = normal prime_tower_size = 35 retraction_hop_enabled = False support_enable = True diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg index 144a47769b..c9e31486c0 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg @@ -16,9 +16,9 @@ brim_width = 25 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' material_print_temperature = =default_material_print_temperature + 11 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 10 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg index cedba132eb..e821581360 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -16,9 +16,9 @@ brim_width = 25 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' material_print_temperature = =default_material_print_temperature + 15 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 20 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg index 32f623e432..a5817651d8 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -17,9 +17,9 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' layer_height = 0.3 material_print_temperature = =default_material_print_temperature + 13 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 15 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg index 63dd03590c..d8f7812d75 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg @@ -23,8 +23,8 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 4 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg index a81683200f..a689035132 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -23,8 +23,8 @@ material_final_print_temperature = =material_print_temperature - 10 material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg index cb0e4358d6..f4b61cac5d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -24,8 +24,8 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg index 1c681aaeb2..61ce2bd96c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg @@ -18,9 +18,9 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 11 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 10 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg index e054336e24..6b91c97bda 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg @@ -18,9 +18,9 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 13 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 15 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg index 3afea841d3..abbfb2ce02 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg @@ -18,9 +18,9 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 15 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 20 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg index 709e798502..96b82799f0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg @@ -21,8 +21,8 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 4 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg index 12aac8dcd5..d53c79de87 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg @@ -22,8 +22,8 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg index 8958aa30c0..f9c4e17e91 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg @@ -21,8 +21,8 @@ material_final_print_temperature = =material_print_temperature - 10 material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg index addcc8e504..1c7b79f8e0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg @@ -18,9 +18,9 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 11 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 10 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg index dde38061ca..67e35f3eca 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg @@ -18,9 +18,9 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 13 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 15 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg index bab23c5ee1..53b8786303 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg @@ -18,9 +18,9 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 15 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 prime_tower_min_volume = 20 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg index 132a0e0760..9451394fb3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg @@ -21,8 +21,8 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 4 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg index c0b54402f2..4b498104e0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg @@ -22,8 +22,8 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg index 076f3df437..48977f6a86 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg @@ -21,8 +21,8 @@ material_final_print_temperature = =material_print_temperature - 10 material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 multiple_mesh_overlap = 0.2 -prime_tower_mode = normal prime_tower_flow = 100 +prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 From b641741e49a72dc39110dc8cf4dacf6b315fe62f Mon Sep 17 00:00:00 2001 From: "saumya.jain" Date: Fri, 16 Feb 2024 14:11:07 +0100 Subject: [PATCH 098/203] Added preference to show UFP saving dialog Changes saving to .ucp to .3mf --- cura/CuraApplication.py | 2 ++ plugins/3MFReader/ThreeMFReader.py | 4 ++-- plugins/3MFReader/ThreeMFWorkspaceReader.py | 4 ++-- plugins/3MFReader/plugin.json | 2 +- plugins/3MFWriter/ThreeMFWorkspaceWriter.py | 2 +- plugins/3MFWriter/UCPDialog.qml | 25 ++++++++++++++++++++- plugins/3MFWriter/__init__.py | 4 ++-- resources/qml/Preferences/GeneralPage.qml | 14 ++++++++++++ 8 files changed, 48 insertions(+), 9 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 20e54fa57c..7b588c836a 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -601,7 +601,9 @@ class CuraApplication(QtApplication): preferences.addPreference("mesh/scale_to_fit", False) preferences.addPreference("mesh/scale_tiny_meshes", True) preferences.addPreference("cura/dialog_on_project_save", True) + preferences.addPreference("cura/dialog_on_ucp_project_save", True) preferences.addPreference("cura/asked_dialog_on_project_save", False) + preferences.addPreference("cura/asked_dialog_on_ucp_project_save", False) preferences.addPreference("cura/choice_on_profile_override", "always_ask") preferences.addPreference("cura/choice_on_open_project", "always_ask") preferences.addPreference("cura/use_multi_build_plate", False) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index a715d990eb..c7a15e043e 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -50,11 +50,11 @@ class ThreeMFReader(MeshReader): MimeType( name="application/x-ucp", comment="UCP", - suffixes=["ucp"] + suffixes=["3mf"] ) ) - self._supported_extensions = [".3mf", ".ucp"] + self._supported_extensions = [".3mf"] self._root = None self._base_name = "" self._unit = None diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index d96de5b324..c9692599e5 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -113,7 +113,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): def __init__(self) -> None: super().__init__() - self._supported_extensions = [".3mf", ".ucp"] + self._supported_extensions = [".3mf"] self._dialog = WorkspaceDialog() self._3mf_mesh_reader = None self._container_registry = ContainerRegistry.getInstance() @@ -236,7 +236,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Check whether the file is a UCP, which changes some import options #FIXME Instead of this, we should just check for the presence of the user-settings file, whatever the extension - is_ucp = file_name.endswith('.ucp') + is_ucp = file_name.endswith('.3mf') # # Read definition containers diff --git a/plugins/3MFReader/plugin.json b/plugins/3MFReader/plugin.json index 010adbb501..bf0bc05364 100644 --- a/plugins/3MFReader/plugin.json +++ b/plugins/3MFReader/plugin.json @@ -2,7 +2,7 @@ "name": "3MF Reader", "author": "Ultimaker B.V.", "version": "1.0.1", - "description": "Provides support for reading 3MF and UCP files.", + "description": "Provides support for reading 3MF files.", "api": 8, "i18n-catalog": "cura" } diff --git a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py index d0a843af69..c67da24569 100644 --- a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py +++ b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py @@ -39,7 +39,7 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): is_ucp = False if hasattr(self._stream, 'name'): # This only works with local file, but we don't want remote UCP files yet - is_ucp = self._stream.name.endswith('.ucp') + is_ucp = self._stream.name.endswith('.3mf') if is_ucp: self._config_dialog = UCPDialog() diff --git a/plugins/3MFWriter/UCPDialog.qml b/plugins/3MFWriter/UCPDialog.qml index 88552cc292..7eaf57c96b 100644 --- a/plugins/3MFWriter/UCPDialog.qml +++ b/plugins/3MFWriter/UCPDialog.qml @@ -19,6 +19,21 @@ UM.Dialog minimumHeight: UM.Theme.getSize("modal_window_minimum").height backgroundColor: UM.Theme.getColor("detail_background") + property bool dontShowAgain: true + + function storeDontShowAgain() + { + UM.Preferences.setValue("cura/dialog_on_ucp_project_save", !dontShowAgainCheckbox.checked) + UM.Preferences.setValue("asked_dialog_on_ucp_project_save", true) + } + + onVisibleChanged: + { + if(visible && UM.Preferences.getValue("cura/asked_dialog_on_ucp_project_save")) + { + dontShowAgain = !UM.Preferences.getValue("cura/dialog_on_ucp_project_save") + } + } headerComponent: Rectangle { @@ -75,7 +90,15 @@ UM.Dialog delegate: SettingsSelectionGroup { Layout.margins: 0 } } } - + leftButtons: + [ + UM.CheckBox + { + id: dontShowAgainCheckbox + text: catalog.i18nc("@action:label", "Don't show project summary on save again") + checked: dontShowAgain + } + ] rightButtons: [ Cura.TertiaryButton diff --git a/plugins/3MFWriter/__init__.py b/plugins/3MFWriter/__init__.py index 40fd42b199..1cecf4c3f8 100644 --- a/plugins/3MFWriter/__init__.py +++ b/plugins/3MFWriter/__init__.py @@ -34,7 +34,7 @@ def getMetaData(): "mode": ThreeMFWriter.ThreeMFWriter.OutputMode.BinaryMode }, { - "extension": "ucp", + "extension": "3mf", "description": i18n_catalog.i18nc("@item:inlistbox", "Universal Cura Project"), "mime_type": "application/x-ucp", "mode": ThreeMFWriter.ThreeMFWriter.OutputMode.BinaryMode @@ -50,7 +50,7 @@ def getMetaData(): "mode": ThreeMFWorkspaceWriter.ThreeMFWorkspaceWriter.OutputMode.BinaryMode }, { - "extension": "ucp", + "extension": "3mf", "description": i18n_catalog.i18nc("@item:inlistbox", "Universal Cura Project"), "mime_type": "application/x-ucp", "mode": ThreeMFWorkspaceWriter.ThreeMFWorkspaceWriter.OutputMode.BinaryMode diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 69607a3f6b..0ca905cf85 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -735,6 +735,20 @@ UM.PreferencesPage } } + UM.TooltipArea + { + width: childrenRect.width + height: childrenRect.height + text: catalog.i18nc("@info:tooltip", "Should a summary be shown when saving a UCP project file?") + + UM.CheckBox + { + text: catalog.i18nc("@option:check", "Show summary dialog when saving a UCP project") + checked: boolCheck(UM.Preferences.getValue("cura/dialog_on_ucp_project_save")) + onCheckedChanged: UM.Preferences.setValue("cura/dialog_on_ucp_project_save", checked) + } + } + UM.TooltipArea { width: childrenRect.width From bb8dd309879b52f9040b0630619e56cf642e1623 Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Sat, 17 Feb 2024 12:05:03 +0100 Subject: [PATCH 099/203] Don't run Sentry for UT --- .github/workflows/unit-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 9a42f4f85d..2f9e9a08e7 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -55,7 +55,7 @@ jobs: needs: [ conan-recipe-version ] with: recipe_id_full: ${{ needs.conan-recipe-version.outputs.recipe_id_full }} - conan_extra_args: '-g VirtualPythonEnv -o cura:devtools=True -c tools.build:skip_test=False' + conan_extra_args: '-g VirtualPythonEnv -o cura:devtools=True -c tools.build:skip_test=False -o *:enable_sentry=False' unit_test_cmd: 'pytest --junitxml=junit_cura.xml' unit_test_dir: 'tests' conan_generator_dir: './venv/bin' From 9b7bdfc9dd9110f9a79378134d334060e05f37fc Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Sat, 17 Feb 2024 12:10:32 +0100 Subject: [PATCH 100/203] Don't run Sentry for UT --- .github/workflows/unit-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 2f9e9a08e7..56d7a7a071 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -55,7 +55,7 @@ jobs: needs: [ conan-recipe-version ] with: recipe_id_full: ${{ needs.conan-recipe-version.outputs.recipe_id_full }} - conan_extra_args: '-g VirtualPythonEnv -o cura:devtools=True -c tools.build:skip_test=False -o *:enable_sentry=False' + conan_extra_args: '-g VirtualPythonEnv -o cura:devtools=True -c tools.build:skip_test=False -o clipper:enable_sentry=False -o curaengine:enable_sentry=False -o arcus:enable_sentry=False' unit_test_cmd: 'pytest --junitxml=junit_cura.xml' unit_test_dir: 'tests' conan_generator_dir: './venv/bin' From 08c24b05ecb081d2d7d4a21728c949fedbcd9d88 Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Sat, 17 Feb 2024 12:55:10 +0100 Subject: [PATCH 101/203] Write out options --- .github/workflows/unit-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 56d7a7a071..2165540889 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -55,7 +55,7 @@ jobs: needs: [ conan-recipe-version ] with: recipe_id_full: ${{ needs.conan-recipe-version.outputs.recipe_id_full }} - conan_extra_args: '-g VirtualPythonEnv -o cura:devtools=True -c tools.build:skip_test=False -o clipper:enable_sentry=False -o curaengine:enable_sentry=False -o arcus:enable_sentry=False' + conan_extra_args: '-g VirtualPythonEnv -o cura:devtools=True -c tools.build:skip_test=False --options "*:enable_sentry=False"' unit_test_cmd: 'pytest --junitxml=junit_cura.xml' unit_test_dir: 'tests' conan_generator_dir: './venv/bin' From 87d6c4092f3807721677c697a399be3e1f3b14d0 Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Sat, 17 Feb 2024 13:48:51 +0100 Subject: [PATCH 102/203] Remove redundant default_mode `prime_tower` --- resources/definitions/dxu_dual.def.json | 1 - resources/definitions/elegoo_neptune_2D.def.json | 1 - resources/definitions/strateo3d_IDEX420.def.json | 1 - resources/definitions/ultimaker3.def.json | 1 - 4 files changed, 4 deletions(-) diff --git a/resources/definitions/dxu_dual.def.json b/resources/definitions/dxu_dual.def.json index 8fb2092b65..ba37882d40 100644 --- a/resources/definitions/dxu_dual.def.json +++ b/resources/definitions/dxu_dual.def.json @@ -6,6 +6,5 @@ { "machine_end_gcode": { "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \"G90 ;absolute positioning\\nM104 S0 T0 ;extruder heater off\\nM104 S0 T1\\nM140 S0 ;turn off bed\\nT0 ; move to the first head\\nM107 ;fan off\"" }, "machine_start_gcode": { "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \";material_bed_temperature={material_bed_temperature} material_print_temperature={material_print_temperature} material_print_temperature_layer_0={material_print_temperature_layer_0}\\nM190 S{material_bed_temperature_layer_0}\\nM104 T0 S{material_standby_temperature, 0}\\nM104 T0 S{material_print_temperature_layer_0, 0}\\nG21 ;metric values\\nG90 ;absolute positioning\\nM82 ;set extruder to absolute mode\\nM107 ;start with the fan off\\nM200 D0 T0 ;reset filament diameter\\nM200 D0 T1\\nG28 ;home all\\nT1 ; move to the nozzle 2\\nG0 Z20 F2400 ;move the platform to 30mm\\nM109 T1 S{material_print_temperature_layer_0, 1}\\nG0 X210 Y20 F7200\\nG92 E0\\nG92 E-7.0 ;prime distance\\nG1 E0 F45 ;purge nozzle\\nG1 E-6.5 F1500 ; retract\\nT0 ; move to the nozzle 1\\nM104 T1 S{material_standby_temperature, 1}\\nG0 Z20 F2400\\nM109 T0 S{material_print_temperature_layer_0, 0}\\nG0 X210 Y20 F7200\\nG92 E0\\nG92 E-7.0\\nG1 E0 F45 ;purge nozzle\\nG1 E-6.5 F1500\\nM104 T0 S{material_standby_temperature, 0}\\nT{initial_extruder_nr} ;switch to the first nozzle used for print\\nM109 T{initial_extruder_nr} S{material_print_temperature_layer_0, initial_extruder_nr}\\nM400 ;finish all moves\\nG1 E0 F1500\\nG92 E0\\n;end of startup sequence\\n\"" }, - "prime_tower_mode": { "default_value": "normal" } } } \ No newline at end of file diff --git a/resources/definitions/elegoo_neptune_2D.def.json b/resources/definitions/elegoo_neptune_2D.def.json index 2d5ef0024e..dbdf066b21 100644 --- a/resources/definitions/elegoo_neptune_2D.def.json +++ b/resources/definitions/elegoo_neptune_2D.def.json @@ -56,7 +56,6 @@ }, "prime_blob_enable": { "default_value": false }, "prime_tower_min_volume": { "default_value": 90 }, - "prime_tower_mode": { "default_value": "normal" }, "prime_tower_size": { "default_value": 30 }, "raft_airgap": { "default_value": 0.25 }, "raft_margin": { "default_value": 5 }, diff --git a/resources/definitions/strateo3d_IDEX420.def.json b/resources/definitions/strateo3d_IDEX420.def.json index 785301c51e..47a3af714b 100644 --- a/resources/definitions/strateo3d_IDEX420.def.json +++ b/resources/definitions/strateo3d_IDEX420.def.json @@ -113,7 +113,6 @@ "machine_width": { "default_value": 420 }, "material_diameter": { "default_value": 1.75 }, "prime_tower_min_volume": { "default_value": 35.6 }, - "prime_tower_mode": { "default_value": "normal" }, "raft_acceleration": { "value": "machine_acceleration" }, "raft_base_acceleration": { "value": "machine_acceleration" }, "raft_interface_acceleration": { "value": "machine_acceleration" }, diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index 9e4c9310c8..43f718e2db 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -149,7 +149,6 @@ "enabled": true, "value": "resolveOrValue('print_sequence') != 'one_at_a_time'" }, - "prime_tower_mode": { "default_value": "normal" }, "prime_tower_position_x": { "value": "185" }, "prime_tower_wipe_enabled": { "default_value": false }, "retraction_amount": { "value": "6.5" }, From 546d82a9327e5c8b2b3d358c33667c7f3d089f6f Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Sat, 17 Feb 2024 14:53:35 +0100 Subject: [PATCH 103/203] fix trailing comma --- resources/definitions/dxu_dual.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/dxu_dual.def.json b/resources/definitions/dxu_dual.def.json index ba37882d40..b81d148f80 100644 --- a/resources/definitions/dxu_dual.def.json +++ b/resources/definitions/dxu_dual.def.json @@ -5,6 +5,6 @@ "overrides": { "machine_end_gcode": { "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \"G90 ;absolute positioning\\nM104 S0 T0 ;extruder heater off\\nM104 S0 T1\\nM140 S0 ;turn off bed\\nT0 ; move to the first head\\nM107 ;fan off\"" }, - "machine_start_gcode": { "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \";material_bed_temperature={material_bed_temperature} material_print_temperature={material_print_temperature} material_print_temperature_layer_0={material_print_temperature_layer_0}\\nM190 S{material_bed_temperature_layer_0}\\nM104 T0 S{material_standby_temperature, 0}\\nM104 T0 S{material_print_temperature_layer_0, 0}\\nG21 ;metric values\\nG90 ;absolute positioning\\nM82 ;set extruder to absolute mode\\nM107 ;start with the fan off\\nM200 D0 T0 ;reset filament diameter\\nM200 D0 T1\\nG28 ;home all\\nT1 ; move to the nozzle 2\\nG0 Z20 F2400 ;move the platform to 30mm\\nM109 T1 S{material_print_temperature_layer_0, 1}\\nG0 X210 Y20 F7200\\nG92 E0\\nG92 E-7.0 ;prime distance\\nG1 E0 F45 ;purge nozzle\\nG1 E-6.5 F1500 ; retract\\nT0 ; move to the nozzle 1\\nM104 T1 S{material_standby_temperature, 1}\\nG0 Z20 F2400\\nM109 T0 S{material_print_temperature_layer_0, 0}\\nG0 X210 Y20 F7200\\nG92 E0\\nG92 E-7.0\\nG1 E0 F45 ;purge nozzle\\nG1 E-6.5 F1500\\nM104 T0 S{material_standby_temperature, 0}\\nT{initial_extruder_nr} ;switch to the first nozzle used for print\\nM109 T{initial_extruder_nr} S{material_print_temperature_layer_0, initial_extruder_nr}\\nM400 ;finish all moves\\nG1 E0 F1500\\nG92 E0\\n;end of startup sequence\\n\"" }, + "machine_start_gcode": { "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \";material_bed_temperature={material_bed_temperature} material_print_temperature={material_print_temperature} material_print_temperature_layer_0={material_print_temperature_layer_0}\\nM190 S{material_bed_temperature_layer_0}\\nM104 T0 S{material_standby_temperature, 0}\\nM104 T0 S{material_print_temperature_layer_0, 0}\\nG21 ;metric values\\nG90 ;absolute positioning\\nM82 ;set extruder to absolute mode\\nM107 ;start with the fan off\\nM200 D0 T0 ;reset filament diameter\\nM200 D0 T1\\nG28 ;home all\\nT1 ; move to the nozzle 2\\nG0 Z20 F2400 ;move the platform to 30mm\\nM109 T1 S{material_print_temperature_layer_0, 1}\\nG0 X210 Y20 F7200\\nG92 E0\\nG92 E-7.0 ;prime distance\\nG1 E0 F45 ;purge nozzle\\nG1 E-6.5 F1500 ; retract\\nT0 ; move to the nozzle 1\\nM104 T1 S{material_standby_temperature, 1}\\nG0 Z20 F2400\\nM109 T0 S{material_print_temperature_layer_0, 0}\\nG0 X210 Y20 F7200\\nG92 E0\\nG92 E-7.0\\nG1 E0 F45 ;purge nozzle\\nG1 E-6.5 F1500\\nM104 T0 S{material_standby_temperature, 0}\\nT{initial_extruder_nr} ;switch to the first nozzle used for print\\nM109 T{initial_extruder_nr} S{material_print_temperature_layer_0, initial_extruder_nr}\\nM400 ;finish all moves\\nG1 E0 F1500\\nG92 E0\\n;end of startup sequence\\n\"" } } } \ No newline at end of file From ca94e0e3559248f8e03b270d59efee93165b1403 Mon Sep 17 00:00:00 2001 From: HellAholic Date: Mon, 19 Feb 2024 11:38:30 +0100 Subject: [PATCH 104/203] restore extruder definition --- resources/extruders/geeetech_A20_1.def.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 resources/extruders/geeetech_A20_1.def.json diff --git a/resources/extruders/geeetech_A20_1.def.json b/resources/extruders/geeetech_A20_1.def.json new file mode 100644 index 0000000000..0eba9c3ea9 --- /dev/null +++ b/resources/extruders/geeetech_A20_1.def.json @@ -0,0 +1,16 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "geeetech_A20", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + + } +} From d458437d5010f9f0785c5e9fa070d9d5f765730b Mon Sep 17 00:00:00 2001 From: Jacob Pedersen Date: Mon, 19 Feb 2024 11:16:01 +0100 Subject: [PATCH 105/203] Add definition and variants for creality ender3 v2 neo --- .../definitions/creality_ender3v2neo.def.json | 34 +++++++++++++++++++ .../creality_ender3v2neo_0.2.inst.cfg | 13 +++++++ .../creality_ender3v2neo_0.3.inst.cfg | 12 +++++++ .../creality_ender3v2neo_0.4.inst.cfg | 12 +++++++ .../creality_ender3v2neo_0.5.inst.cfg | 13 +++++++ .../creality_ender3v2neo_0.6.inst.cfg | 12 +++++++ .../creality_ender3v2neo_0.8.inst.cfg | 12 +++++++ .../creality_ender3v2neo_1.0.inst.cfg | 12 +++++++ 8 files changed, 120 insertions(+) create mode 100644 resources/definitions/creality_ender3v2neo.def.json create mode 100644 resources/variants/creality/creality_ender3v2neo_0.2.inst.cfg create mode 100644 resources/variants/creality/creality_ender3v2neo_0.3.inst.cfg create mode 100644 resources/variants/creality/creality_ender3v2neo_0.4.inst.cfg create mode 100644 resources/variants/creality/creality_ender3v2neo_0.5.inst.cfg create mode 100644 resources/variants/creality/creality_ender3v2neo_0.6.inst.cfg create mode 100644 resources/variants/creality/creality_ender3v2neo_0.8.inst.cfg create mode 100644 resources/variants/creality/creality_ender3v2neo_1.0.inst.cfg diff --git a/resources/definitions/creality_ender3v2neo.def.json b/resources/definitions/creality_ender3v2neo.def.json new file mode 100644 index 0000000000..05998865e2 --- /dev/null +++ b/resources/definitions/creality_ender3v2neo.def.json @@ -0,0 +1,34 @@ +{ + "name": "Creality Ender-3 v2 Neo", + "version": 2, + "inherits": "creality_base", + "metadata": { + "quality_definition": "creality_base", + "visible": true, + "platform": "creality_ender3.3mf" + }, + "overrides": { + "machine_name": { "default_value": "Creality Ender-3 v2 Neo" }, + "machine_width": { "default_value": 230 }, + "machine_depth": { "default_value": 230 }, + "machine_height": { "default_value": 250 }, + "machine_head_polygon": { "default_value": [ + [-1, 1], + [-1, -1], + [1, -1], + [1, 1] + ] + }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + "machine_start_gcode": { "default_value": "G92 E0 ;Reset Extruder\nG28 ;Home\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up" }, + "retraction_amount": { "value": 4}, + "retraction_speed": { "value": 25}, + "gantry_height": { "value": 25 } + } +} diff --git a/resources/variants/creality/creality_ender3v2neo_0.2.inst.cfg b/resources/variants/creality/creality_ender3v2neo_0.2.inst.cfg new file mode 100644 index 0000000000..0dda448bef --- /dev/null +++ b/resources/variants/creality/creality_ender3v2neo_0.2.inst.cfg @@ -0,0 +1,13 @@ +[general] +definition = creality_ender3v2neo +name = 0.2mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 22 +type = variant + + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality/creality_ender3v2neo_0.3.inst.cfg b/resources/variants/creality/creality_ender3v2neo_0.3.inst.cfg new file mode 100644 index 0000000000..fcb0dac3f3 --- /dev/null +++ b/resources/variants/creality/creality_ender3v2neo_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +definition = creality_ender3v2neo +name = 0.3mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 22 +type = variant + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality/creality_ender3v2neo_0.4.inst.cfg b/resources/variants/creality/creality_ender3v2neo_0.4.inst.cfg new file mode 100644 index 0000000000..aeeba41ff6 --- /dev/null +++ b/resources/variants/creality/creality_ender3v2neo_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +definition = creality_ender3v2neo +name = 0.4mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 22 +type = variant + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality/creality_ender3v2neo_0.5.inst.cfg b/resources/variants/creality/creality_ender3v2neo_0.5.inst.cfg new file mode 100644 index 0000000000..810acc8e74 --- /dev/null +++ b/resources/variants/creality/creality_ender3v2neo_0.5.inst.cfg @@ -0,0 +1,13 @@ +[general] +definition = creality_ender3v2neo +name = 0.5mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 22 +type = variant + + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality/creality_ender3v2neo_0.6.inst.cfg b/resources/variants/creality/creality_ender3v2neo_0.6.inst.cfg new file mode 100644 index 0000000000..ad49249db3 --- /dev/null +++ b/resources/variants/creality/creality_ender3v2neo_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +definition = creality_ender3v2neo +name = 0.6mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 22 +type = variant + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality/creality_ender3v2neo_0.8.inst.cfg b/resources/variants/creality/creality_ender3v2neo_0.8.inst.cfg new file mode 100644 index 0000000000..bfb1bdf0fb --- /dev/null +++ b/resources/variants/creality/creality_ender3v2neo_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +definition = creality_ender3v2neo +name = 0.8mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 22 +type = variant + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality/creality_ender3v2neo_1.0.inst.cfg b/resources/variants/creality/creality_ender3v2neo_1.0.inst.cfg new file mode 100644 index 0000000000..eeb644d0f5 --- /dev/null +++ b/resources/variants/creality/creality_ender3v2neo_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +definition = creality_ender3v2neo +name = 1.0mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 22 +type = variant + +[values] +machine_nozzle_size = 1.0 From e8e0bd97820ac4189c5fe287e27bb676d7943d41 Mon Sep 17 00:00:00 2001 From: HellAholic Date: Mon, 19 Feb 2024 10:39:20 +0000 Subject: [PATCH 106/203] Applied printer-linter format --- resources/extruders/geeetech_A20_1.def.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/extruders/geeetech_A20_1.def.json b/resources/extruders/geeetech_A20_1.def.json index 0eba9c3ea9..96e94fe2f6 100644 --- a/resources/extruders/geeetech_A20_1.def.json +++ b/resources/extruders/geeetech_A20_1.def.json @@ -2,15 +2,15 @@ "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", - "metadata": { + "metadata": + { "machine": "geeetech_A20", "position": "0" }, - - "overrides": { + "overrides": + { "extruder_nr": { "default_value": 0 }, "machine_nozzle_size": { "default_value": 0.4 }, "material_diameter": { "default_value": 1.75 } - } -} +} \ No newline at end of file From a4ec177cd34ab3f6d4def25e86d4757138e1452f Mon Sep 17 00:00:00 2001 From: Mariska <40423138+MariMakes@users.noreply.github.com> Date: Mon, 19 Feb 2024 13:08:27 +0100 Subject: [PATCH 107/203] Remove the link to the nightly build The nightly was broken so the download links were removed, this is to remove them from the slicing crash form. --- .github/ISSUE_TEMPLATE/SlicingCrash.yaml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/SlicingCrash.yaml b/.github/ISSUE_TEMPLATE/SlicingCrash.yaml index 37a70354c6..899bfef927 100644 --- a/.github/ISSUE_TEMPLATE/SlicingCrash.yaml +++ b/.github/ISSUE_TEMPLATE/SlicingCrash.yaml @@ -4,14 +4,7 @@ labels: ["Type: Bug", "Status: Triage", "Slicing Error :collision:"] body: - type: markdown attributes: - value: | - ### 💥 Slicing Crash Analysis Tool 💥 - We are taking steps to analyze an increase in reported crashes more systematically. We'll need some help with that. 😇 - Before filling out the report below, we want you to try a special Cura 5.7 Alpha. - This version of Cura has an updated slicing engine that will automatically send a report to the Cura Team for analysis. - #### [You can find the downloads here](https://github.com/Ultimaker/Cura/discussions/18080) #### - If you still encounter a crash you are still welcome to report the issue so we can use your model as a test case, you can find instructions on how to do that below. - + value: | ### Project File **⚠️ Before you continue, we need your project file to troubleshoot a slicing crash.** It contains the printer and settings we need for troubleshooting. From 8109230e99a6df9eea537807a56aa52c215d4784 Mon Sep 17 00:00:00 2001 From: Mariska <40423138+MariMakes@users.noreply.github.com> Date: Tue, 20 Feb 2024 10:43:59 +0100 Subject: [PATCH 108/203] Update Slicing Crash Template with 5.7 alpha It now refers to the 5.7 Alpha that has Sentry to analyze slicing crashes --- .github/ISSUE_TEMPLATE/SlicingCrash.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/SlicingCrash.yaml b/.github/ISSUE_TEMPLATE/SlicingCrash.yaml index 899bfef927..f4e082e00a 100644 --- a/.github/ISSUE_TEMPLATE/SlicingCrash.yaml +++ b/.github/ISSUE_TEMPLATE/SlicingCrash.yaml @@ -5,6 +5,13 @@ body: - type: markdown attributes: value: | + ### 💥 Slicing Crash Analysis Tool 💥 + We are taking steps to analyze an increase in reported crashes more systematically. We'll need some help with that. 😇 + Before filling out the report below, we want you to try a special Cura 5.7 Alpha. + This version of Cura has an updated slicing engine that will automatically send a report to the Cura Team for analysis. + #### [You can find the downloads here](https://github.com/Ultimaker/Cura/discussions/18080) #### + If you still encounter a crash you are still welcome to report the issue so we can use your model as a test case, you can find instructions on how to do that below. + ### Project File **⚠️ Before you continue, we need your project file to troubleshoot a slicing crash.** It contains the printer and settings we need for troubleshooting. From ec871782c77b73ca53c30daa0fd6174311bc4cc4 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Tue, 20 Feb 2024 10:47:27 +0100 Subject: [PATCH 109/203] PAP adding save dialog before filesave window CURA-11403 --- cura/CuraApplication.py | 10 +++++ plugins/3MFReader/ThreeMFWorkspaceReader.py | 4 +- plugins/3MFReader/__init__.py | 8 ---- plugins/3MFWriter/ThreeMFWorkspaceWriter.py | 45 ++++++--------------- plugins/3MFWriter/ThreeMFWriter.py | 8 +++- plugins/3MFWriter/UCPDialog.py | 12 ++++++ resources/qml/Menus/FileMenu.qml | 8 +--- 7 files changed, 46 insertions(+), 49 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 7b588c836a..1af8380fd6 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1143,6 +1143,16 @@ class CuraApplication(QtApplication): self._build_plate_model = BuildPlateModel(self) return self._build_plate_model + @pyqtSlot() + def exportUcp(self): + writer = self.getMeshFileHandler().getWriter("3MFWriter") + + if writer is None: + Logger.warning("3mf writer is not enabled") + return + + writer.exportUcp() + def getCuraSceneController(self, *args) -> CuraSceneController: if self._cura_scene_controller is None: self._cura_scene_controller = CuraSceneController.createCuraSceneController() diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index c9692599e5..04885a961b 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -236,8 +236,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Check whether the file is a UCP, which changes some import options #FIXME Instead of this, we should just check for the presence of the user-settings file, whatever the extension - is_ucp = file_name.endswith('.3mf') - + if file_name.endswith('.3mf'): + is_ucp = True # # Read definition containers # diff --git a/plugins/3MFReader/__init__.py b/plugins/3MFReader/__init__.py index 101337f05f..5e2b68fce0 100644 --- a/plugins/3MFReader/__init__.py +++ b/plugins/3MFReader/__init__.py @@ -25,20 +25,12 @@ def getMetaData() -> Dict: { "extension": "3mf", "description": catalog.i18nc("@item:inlistbox", "3MF File") - }, - { - "extension": "ucp", - "description": catalog.i18nc("@item:inlistbox", "UCP File") } ] metaData["workspace_reader"] = [ { "extension": workspace_extension, "description": catalog.i18nc("@item:inlistbox", "3MF File") - }, - { - "extension": "ucp", - "description": catalog.i18nc("@item:inlistbox", "UCP File") } ] diff --git a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py index c67da24569..745627ed93 100644 --- a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py +++ b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py @@ -15,7 +15,6 @@ from UM.Workspace.WorkspaceWriter import WorkspaceWriter from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") -from .UCPDialog import UCPDialog from .ThreeMFWriter import ThreeMFWriter from .SettingsExportModel import SettingsExportModel from .SettingsExportGroup import SettingsExportGroup @@ -32,32 +31,12 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): self._stream = None self._nodes = None self._mode = None - self._config_dialog = None + self._is_ucp = False - #FIXME We should have proper preWrite/write methods like the readers have a preRead/read, and have them called by the global process - def _preWrite(self): - is_ucp = False - if hasattr(self._stream, 'name'): - # This only works with local file, but we don't want remote UCP files yet - is_ucp = self._stream.name.endswith('.3mf') - if is_ucp: - self._config_dialog = UCPDialog() - self._config_dialog.finished.connect(self._onUCPConfigFinished) - self._config_dialog.show() - else: - self._doWrite() - - def _onUCPConfigFinished(self, accepted: bool): - if accepted: - self._export_model = self._config_dialog.getModel() - self._doWrite() - else: - self._main_thread_lock.release() - - def _doWrite(self): - self._write() - self._main_thread_lock.release() + def setExportModel(self, model): + if self._export_model != model: + self._export_model = model def _write(self): application = Application.getInstance() @@ -153,19 +132,21 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): #FIXME We should somehow give the information of the file type so that we know what to write, like the mode but for other files types (give mimetype ?) def write(self, stream, nodes, mode=WorkspaceWriter.OutputMode.BinaryMode): + print("Application.getInstance().getPreferences().getValue(\"local_file/last_used_type\")", Application.getInstance().getPreferences().getValue("local_file/last_used_type")) + self._success = False self._export_model = None self._stream = stream self._nodes = nodes self._mode = mode self._config_dialog = None - - self._main_thread_lock.acquire() - # Export is done in main thread because it may require a few asynchronous configuration steps - Application.getInstance().callLater(self._preWrite) - self._main_thread_lock.acquire() # Block until lock has been released, meaning the config+write is over - - self._main_thread_lock.release() + # + # self._main_thread_lock.acquire() + # # Export is done in main thread because it may require a few asynchronous configuration steps + Application.getInstance().callLater(self._write()) + # self._main_thread_lock.acquire() # Block until lock has been released, meaning the config+write is over + # + # self._main_thread_lock.release() self._export_model = None self._stream = None diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index 2caa71353c..e60aae8dd9 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -23,7 +23,7 @@ from cura.Snapshot import Snapshot from PyQt6.QtCore import QBuffer import pySavitar as Savitar - +from .UCPDialog import UCPDialog import numpy import datetime @@ -61,6 +61,7 @@ class ThreeMFWriter(MeshWriter): self._unit_matrix_string = ThreeMFWriter._convertMatrixToString(Matrix()) self._archive: Optional[zipfile.ZipFile] = None self._store_archive = False + self._is_ucp = False @staticmethod def _convertMatrixToString(matrix): @@ -433,3 +434,8 @@ class ThreeMFWriter(MeshWriter): extra_settings[group.category_details] = exported_model_settings return extra_settings + + def exportUcp(self): + self._is_ucp = True + self._config_dialog = UCPDialog() + self._config_dialog.show() diff --git a/plugins/3MFWriter/UCPDialog.py b/plugins/3MFWriter/UCPDialog.py index fb214aded0..ecffb64338 100644 --- a/plugins/3MFWriter/UCPDialog.py +++ b/plugins/3MFWriter/UCPDialog.py @@ -4,6 +4,8 @@ import os from PyQt6.QtCore import pyqtSignal, QObject + +import UM from UM.FlameProfiler import pyqtSlot from UM.i18n import i18nCatalog @@ -44,6 +46,16 @@ class UCPDialog(QObject): @pyqtSlot() def _onAccepted(self): self._accepted = True + mesh_writer = CuraApplication.getInstance().getMeshFileHandler().getWriter("3MFWriter") + mesh_writer.custom_data = "My custom data" + + device = CuraApplication.getInstance().getOutputDeviceManager().getOutputDevice("local_file") + file_handler = UM.Qt.QtApplication.QtApplication.getInstance().getWorkspaceFileHandler() + nodes = [CuraApplication.getInstance().getController().getScene().getRoot()] + device.requestWrite(nodes, "test.3mf", ["application/x-ucp"], file_handler, + preferred_mimetype_list="application/x-ucp") + #TODO: update _export_model in threeMFWorkspacewriter and set is_ucp is true + # = self._config_dialog.getModel() self._onFinished() @pyqtSlot() diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml index 4f7734cb11..bc0d1e6aef 100644 --- a/resources/qml/Menus/FileMenu.qml +++ b/resources/qml/Menus/FileMenu.qml @@ -74,14 +74,10 @@ Cura.Menu { id: saveUCPMenu text: catalog.i18nc("@title:menu menubar:file", "&Save Universal Cura Project...") - enabled: UM.WorkspaceFileHandler.enabled + enabled: UM.WorkspaceFileHandler.enabled && CuraApplication.getPackageManager().allEnabledPackages.includes("3MFWriter") onTriggered: { - var args = { "filter_by_machine": false, - "file_type": "workspace", - "preferred_mimetypes": "application/x-ucp", - "limit_mimetypes": "application/x-ucp"}; - UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args) + CuraApplication.exportUcp() } } From efd6284f6e591564f1bc2a5e0e0cc5457730d51f Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Tue, 20 Feb 2024 13:47:51 +0100 Subject: [PATCH 110/203] Make ucp model available in workspace writer CURA-11403 --- plugins/3MFWriter/ThreeMFWorkspaceWriter.py | 6 ++-- plugins/3MFWriter/UCPDialog.py | 35 +++++++++++++++------ 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py index 745627ed93..16b05b30ec 100644 --- a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py +++ b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py @@ -27,7 +27,7 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): super().__init__() self._main_thread_lock = Lock() self._success = False - self._export_model = None + self._ucp_model = None self._stream = None self._nodes = None self._mode = None @@ -35,8 +35,8 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): def setExportModel(self, model): - if self._export_model != model: - self._export_model = model + if self._ucp_model != model: + self._ucp_model = model def _write(self): application = Application.getInstance() diff --git a/plugins/3MFWriter/UCPDialog.py b/plugins/3MFWriter/UCPDialog.py index ecffb64338..1100ddc7a9 100644 --- a/plugins/3MFWriter/UCPDialog.py +++ b/plugins/3MFWriter/UCPDialog.py @@ -7,6 +7,7 @@ from PyQt6.QtCore import pyqtSignal, QObject import UM from UM.FlameProfiler import pyqtSlot +from UM.Workspace.WorkspaceWriter import WorkspaceWriter from UM.i18n import i18nCatalog from cura.CuraApplication import CuraApplication @@ -45,24 +46,38 @@ class UCPDialog(QObject): @pyqtSlot() def _onAccepted(self): - self._accepted = True - mesh_writer = CuraApplication.getInstance().getMeshFileHandler().getWriter("3MFWriter") - mesh_writer.custom_data = "My custom data" + application = CuraApplication.getInstance() + workspace_handler = application.getInstance().getWorkspaceFileHandler() - device = CuraApplication.getInstance().getOutputDeviceManager().getOutputDevice("local_file") - file_handler = UM.Qt.QtApplication.QtApplication.getInstance().getWorkspaceFileHandler() - nodes = [CuraApplication.getInstance().getController().getScene().getRoot()] - device.requestWrite(nodes, "test.3mf", ["application/x-ucp"], file_handler, + # Set the model to the workspace writer + mesh_writer = workspace_handler.getWriter("3MFWriter") + mesh_writer.setExportModel(self._model) + + # Open file dialog and write the file + device = application.getOutputDeviceManager().getOutputDevice("local_file") + nodes = [application.getController().getScene().getRoot()] + + device.writeError.connect(self._onRejected) + device.writeSuccess.connect(self._onSuccess) + device.writeFinished.connect(self._onFinished) + + device.requestWrite(nodes, application.getPrintInformation().jobName, ["application/x-ucp"], workspace_handler, preferred_mimetype_list="application/x-ucp") - #TODO: update _export_model in threeMFWorkspacewriter and set is_ucp is true - # = self._config_dialog.getModel() - self._onFinished() @pyqtSlot() def _onRejected(self): self._onFinished() + def _onSuccess(self): + self._accepted = True + self._onFinished() + def _onFinished(self): if not self._finished: # Make sure we don't send the finished signal twice, whatever happens self._finished = True + + # Reset the model to the workspace writer + mesh_writer = CuraApplication.getInstance().getInstance().getWorkspaceFileHandler().getWriter("3MFWriter") + mesh_writer.setExportModel(None) + self.finished.emit(self._accepted) From bd52c91c94fbe58056be8f7923912d76b6ba7690 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Tue, 20 Feb 2024 14:41:48 +0100 Subject: [PATCH 111/203] adding lambda for number of args CURA-11403 --- plugins/3MFWriter/UCPDialog.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/3MFWriter/UCPDialog.py b/plugins/3MFWriter/UCPDialog.py index 1100ddc7a9..1ac435c809 100644 --- a/plugins/3MFWriter/UCPDialog.py +++ b/plugins/3MFWriter/UCPDialog.py @@ -57,9 +57,9 @@ class UCPDialog(QObject): device = application.getOutputDeviceManager().getOutputDevice("local_file") nodes = [application.getController().getScene().getRoot()] - device.writeError.connect(self._onRejected) - device.writeSuccess.connect(self._onSuccess) - device.writeFinished.connect(self._onFinished) + device.writeError.connect(lambda: self._onRejected()) + device.writeSuccess.connect(lambda: self._onSuccess()) + device.writeFinished.connect(lambda: self._onFinished()) device.requestWrite(nodes, application.getPrintInformation().jobName, ["application/x-ucp"], workspace_handler, preferred_mimetype_list="application/x-ucp") From f61991e261d963b1d688c3d9c908e165c0136ec7 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Tue, 20 Feb 2024 15:04:44 +0100 Subject: [PATCH 112/203] Untangle write function CURA-11403 --- plugins/3MFWriter/ThreeMFWorkspaceWriter.py | 50 +++++---------------- 1 file changed, 10 insertions(+), 40 deletions(-) diff --git a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py index 16b05b30ec..8e20bdb411 100644 --- a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py +++ b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py @@ -26,11 +26,7 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): def __init__(self): super().__init__() self._main_thread_lock = Lock() - self._success = False self._ucp_model = None - self._stream = None - self._nodes = None - self._mode = None self._is_ucp = False @@ -38,7 +34,7 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): if self._ucp_model != model: self._ucp_model = model - def _write(self): + def write(self, stream, nodes, mode=WorkspaceWriter.OutputMode.BinaryMode): application = Application.getInstance() machine_manager = application.getMachineManager() @@ -47,24 +43,24 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): if not mesh_writer: # We need to have the 3mf mesh writer, otherwise we can't save the entire workspace self.setInformation(catalog.i18nc("@error:zip", "3MF Writer plug-in is corrupt.")) Logger.error("3MF Writer class is unavailable. Can't write workspace.") - return + return False global_stack = machine_manager.activeMachine if global_stack is None: self.setInformation( catalog.i18nc("@error", "There is no workspace yet to write. Please add a printer first.")) Logger.error("Tried to write a 3MF workspace before there was a global stack.") - return + return False # Indicate that the 3mf mesh writer should not close the archive just yet (we still need to add stuff to it). mesh_writer.setStoreArchive(True) - if not mesh_writer.write(self._stream, self._nodes, self._mode, self._export_model): + if not mesh_writer.write(stream, nodes, mode, self._ucp_model): self.setInformation(mesh_writer.getInformation()) - return + return False archive = mesh_writer.getArchive() if archive is None: # This happens if there was no mesh data to write. - archive = zipfile.ZipFile(self._stream, "w", compression=zipfile.ZIP_DEFLATED) + archive = zipfile.ZipFile(stream, "w", compression=zipfile.ZIP_DEFLATED) try: # Add global container stack data to the archive. @@ -81,13 +77,13 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): self._writeContainerToArchive(container, archive) # Write user settings data - if self._export_model is not None: - user_settings_data = self._getUserSettings(self._export_model) + if self._ucp_model is not None: + user_settings_data = self._getUserSettings(self._ucp_model) ThreeMFWriter._storeMetadataJson(user_settings_data, archive, USER_SETTINGS_PATH) except PermissionError: self.setInformation(catalog.i18nc("@error:zip", "No permission to write the workspace here.")) Logger.error("No permission to write workspace to this stream.") - return + return False # Write preferences to archive original_preferences = Application.getInstance().getPreferences() # Copy only the preferences that we use to the workspace. @@ -128,33 +124,7 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): return mesh_writer.setStoreArchive(False) - self._success = True - - #FIXME We should somehow give the information of the file type so that we know what to write, like the mode but for other files types (give mimetype ?) - def write(self, stream, nodes, mode=WorkspaceWriter.OutputMode.BinaryMode): - print("Application.getInstance().getPreferences().getValue(\"local_file/last_used_type\")", Application.getInstance().getPreferences().getValue("local_file/last_used_type")) - - self._success = False - self._export_model = None - self._stream = stream - self._nodes = nodes - self._mode = mode - self._config_dialog = None - # - # self._main_thread_lock.acquire() - # # Export is done in main thread because it may require a few asynchronous configuration steps - Application.getInstance().callLater(self._write()) - # self._main_thread_lock.acquire() # Block until lock has been released, meaning the config+write is over - # - # self._main_thread_lock.release() - - self._export_model = None - self._stream = None - self._nodes = None - self._mode = None - self._config_dialog = None - - return self._success + return True @staticmethod def _writePluginMetadataToArchive(archive: zipfile.ZipFile) -> None: From a463e5178838cfd92855c33334f4a80244bc5e70 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Tue, 20 Feb 2024 15:07:34 +0100 Subject: [PATCH 113/203] Remove unneeded thread lock CURA-11403 --- plugins/3MFWriter/ThreeMFWorkspaceWriter.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py index 8e20bdb411..ddff454516 100644 --- a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py +++ b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py @@ -25,11 +25,9 @@ USER_SETTINGS_PATH = "Cura/user-settings.json" class ThreeMFWorkspaceWriter(WorkspaceWriter): def __init__(self): super().__init__() - self._main_thread_lock = Lock() self._ucp_model = None self._is_ucp = False - def setExportModel(self, model): if self._ucp_model != model: self._ucp_model = model From e0754092437f0ed78c86633cbeeeac630db48ac0 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Tue, 20 Feb 2024 15:07:48 +0100 Subject: [PATCH 114/203] Return `False` in case of exception CURA-11403 --- plugins/3MFWriter/ThreeMFWorkspaceWriter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py index ddff454516..eb0ecf5ed5 100644 --- a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py +++ b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py @@ -115,11 +115,11 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): except PermissionError: self.setInformation(catalog.i18nc("@error:zip", "No permission to write the workspace here.")) Logger.error("No permission to write workspace to this stream.") - return + return False except EnvironmentError as e: self.setInformation(catalog.i18nc("@error:zip", str(e))) Logger.error("EnvironmentError when writing workspace to this stream: {err}".format(err=str(e))) - return + return False mesh_writer.setStoreArchive(False) return True From 6bbdd543426b9a80c14dc2d6cb67b7fed9a8b594 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Tue, 20 Feb 2024 16:17:39 +0100 Subject: [PATCH 115/203] Remove unused `_is_ucp` CURA-11403 --- plugins/3MFWriter/ThreeMFWorkspaceWriter.py | 7 ++++--- plugins/3MFWriter/ThreeMFWriter.py | 2 -- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py index eb0ecf5ed5..cff938788b 100644 --- a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py +++ b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py @@ -1,6 +1,8 @@ # Copyright (c) 2020 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Optional + import configparser from io import StringIO from threading import Lock @@ -25,10 +27,9 @@ USER_SETTINGS_PATH = "Cura/user-settings.json" class ThreeMFWorkspaceWriter(WorkspaceWriter): def __init__(self): super().__init__() - self._ucp_model = None - self._is_ucp = False + self._ucp_model: Optional[SettingsExportModel] = None - def setExportModel(self, model): + def setExportModel(self, model: SettingsExportModel) -> None: if self._ucp_model != model: self._ucp_model = model diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index e60aae8dd9..6e3dc86890 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -61,7 +61,6 @@ class ThreeMFWriter(MeshWriter): self._unit_matrix_string = ThreeMFWriter._convertMatrixToString(Matrix()) self._archive: Optional[zipfile.ZipFile] = None self._store_archive = False - self._is_ucp = False @staticmethod def _convertMatrixToString(matrix): @@ -436,6 +435,5 @@ class ThreeMFWriter(MeshWriter): return extra_settings def exportUcp(self): - self._is_ucp = True self._config_dialog = UCPDialog() self._config_dialog.show() From 11a4588546c05209e407c89a684bc118ed015a59 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Tue, 20 Feb 2024 16:27:47 +0100 Subject: [PATCH 116/203] Properly handle exceptions CURA-11403 --- plugins/3MFWriter/UCPDialog.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/plugins/3MFWriter/UCPDialog.py b/plugins/3MFWriter/UCPDialog.py index 1ac435c809..355c70602c 100644 --- a/plugins/3MFWriter/UCPDialog.py +++ b/plugins/3MFWriter/UCPDialog.py @@ -7,8 +7,11 @@ from PyQt6.QtCore import pyqtSignal, QObject import UM from UM.FlameProfiler import pyqtSlot +from UM.OutputDevice import OutputDeviceError from UM.Workspace.WorkspaceWriter import WorkspaceWriter from UM.i18n import i18nCatalog +from UM.Logger import Logger +from UM.Message import Message from cura.CuraApplication import CuraApplication @@ -61,8 +64,22 @@ class UCPDialog(QObject): device.writeSuccess.connect(lambda: self._onSuccess()) device.writeFinished.connect(lambda: self._onFinished()) - device.requestWrite(nodes, application.getPrintInformation().jobName, ["application/x-ucp"], workspace_handler, + file_name = application.getPrintInformation().jobName + + try: + device.requestWrite(nodes, file_name, ["application/x-ucp"], workspace_handler, preferred_mimetype_list="application/x-ucp") + except OutputDeviceError.UserCanceledError: + self._onRejected() + except Exception as e: + message = Message( + i18n_catalog.i18nc("@info:error", "Unable to write to file: {0}", file_name), + title=i18n_catalog.i18nc("@info:title", "Error"), + message_type=Message.MessageType.ERROR + ) + message.show() + Logger.logException("e", "Unable to write to file %s: %s", file_name, e) + self._onRejected() @pyqtSlot() def _onRejected(self): From bc41b8f801e7f905b6d480674ea55c1639297d01 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Tue, 20 Feb 2024 16:48:38 +0100 Subject: [PATCH 117/203] Use string for prime tower enum value --- resources/definitions/atmat_signal_pro_base.def.json | 4 +++- resources/definitions/deltacomb_dc20flux.def.json | 4 +++- resources/definitions/deltacomb_dc21flux.def.json | 4 +++- resources/definitions/deltacomb_dc30flux.def.json | 4 +++- resources/definitions/lotmaxx_sc60.def.json | 4 +++- resources/definitions/ultimaker_s3.def.json | 4 +++- resources/definitions/ultimaker_s5.def.json | 4 +++- 7 files changed, 21 insertions(+), 7 deletions(-) diff --git a/resources/definitions/atmat_signal_pro_base.def.json b/resources/definitions/atmat_signal_pro_base.def.json index 83af53fb3c..f6cf00b644 100644 --- a/resources/definitions/atmat_signal_pro_base.def.json +++ b/resources/definitions/atmat_signal_pro_base.def.json @@ -110,7 +110,9 @@ "min_infill_area": { "value": "5.0" }, "minimum_polygon_circumference": { "value": "0.2" }, "optimize_wall_printing_order": { "value": "True" }, - "prime_tower_mode": { "value": "normal" }, + "prime_tower_mode": { + "value": "'normal'" + }, "retraction_amount": { "value": "1" }, "retraction_combing": { "value": "'noskin'" }, "retraction_combing_max_distance": { "value": "10" }, diff --git a/resources/definitions/deltacomb_dc20flux.def.json b/resources/definitions/deltacomb_dc20flux.def.json index 50f69636bd..fd67f9da72 100644 --- a/resources/definitions/deltacomb_dc20flux.def.json +++ b/resources/definitions/deltacomb_dc20flux.def.json @@ -32,7 +32,9 @@ "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, "prime_tower_min_volume": { "value": "50" }, - "prime_tower_mode": { "value": "normal" }, + "prime_tower_mode": { + "value": "'normal'" + }, "switch_extruder_retraction_amount": { "value": "0" } } } \ No newline at end of file diff --git a/resources/definitions/deltacomb_dc21flux.def.json b/resources/definitions/deltacomb_dc21flux.def.json index e09fbeca63..c218f085b9 100644 --- a/resources/definitions/deltacomb_dc21flux.def.json +++ b/resources/definitions/deltacomb_dc21flux.def.json @@ -32,7 +32,9 @@ "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, "prime_tower_min_volume": { "value": "50" }, - "prime_tower_mode": { "value": "normal" }, + "prime_tower_mode": { + "value": "'normal'" + }, "switch_extruder_retraction_amount": { "value": "0" } } } \ No newline at end of file diff --git a/resources/definitions/deltacomb_dc30flux.def.json b/resources/definitions/deltacomb_dc30flux.def.json index f59bf53a9a..b877e4979d 100644 --- a/resources/definitions/deltacomb_dc30flux.def.json +++ b/resources/definitions/deltacomb_dc30flux.def.json @@ -32,7 +32,9 @@ "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, "prime_tower_min_volume": { "value": "50" }, - "prime_tower_mode": { "value": "normal" }, + "prime_tower_mode": { + "value": "'normal'" + }, "switch_extruder_retraction_amount": { "value": "0" } } } \ No newline at end of file diff --git a/resources/definitions/lotmaxx_sc60.def.json b/resources/definitions/lotmaxx_sc60.def.json index 89eeac9b75..39513ebc3b 100644 --- a/resources/definitions/lotmaxx_sc60.def.json +++ b/resources/definitions/lotmaxx_sc60.def.json @@ -45,7 +45,9 @@ "meshfix_maximum_resolution": { "value": 0.25 }, "optimize_wall_printing_order": { "value": true }, "prime_tower_min_volume": { "value": 30 }, - "prime_tower_mode": { "value": "normal" }, + "prime_tower_mode": { + "value": "'normal'" + }, "retract_at_layer_change": { "value": false }, "retraction_amount": { "value": 4.5 }, "roofing_layer_count": { "value": 1 }, diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json index 47a81035c9..7a0ab6f42f 100644 --- a/resources/definitions/ultimaker_s3.def.json +++ b/resources/definitions/ultimaker_s3.def.json @@ -103,7 +103,9 @@ "default_value": false, "enabled": true }, - "prime_tower_mode": { "value": "normal" }, + "prime_tower_mode": { + "value": "'normal'" + }, "retraction_amount": { "value": "6.5" }, "retraction_hop": { "value": "2" }, "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" }, diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index 30ad07dd2c..346693bf53 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -104,7 +104,9 @@ "default_value": false, "enabled": true }, - "prime_tower_mode": { "value": "normal" }, + "prime_tower_mode": { + "value": "'normal'" + }, "retraction_amount": { "value": "6.5" }, "retraction_combing": { "value": "'no_outer_surfaces'" }, "retraction_hop": { "value": "2" }, From 8fcdd09b7bbe7ac5557b4d1b1bb59645036e2c91 Mon Sep 17 00:00:00 2001 From: casperlamboo Date: Tue, 20 Feb 2024 15:49:37 +0000 Subject: [PATCH 118/203] Applied printer-linter format --- resources/definitions/atmat_signal_pro_base.def.json | 4 +--- resources/definitions/deltacomb_dc20flux.def.json | 4 +--- resources/definitions/deltacomb_dc21flux.def.json | 4 +--- resources/definitions/deltacomb_dc30flux.def.json | 4 +--- resources/definitions/lotmaxx_sc60.def.json | 4 +--- resources/definitions/ultimaker_s3.def.json | 4 +--- resources/definitions/ultimaker_s5.def.json | 4 +--- 7 files changed, 7 insertions(+), 21 deletions(-) diff --git a/resources/definitions/atmat_signal_pro_base.def.json b/resources/definitions/atmat_signal_pro_base.def.json index f6cf00b644..0b8761a62c 100644 --- a/resources/definitions/atmat_signal_pro_base.def.json +++ b/resources/definitions/atmat_signal_pro_base.def.json @@ -110,9 +110,7 @@ "min_infill_area": { "value": "5.0" }, "minimum_polygon_circumference": { "value": "0.2" }, "optimize_wall_printing_order": { "value": "True" }, - "prime_tower_mode": { - "value": "'normal'" - }, + "prime_tower_mode": { "value": "'normal'" }, "retraction_amount": { "value": "1" }, "retraction_combing": { "value": "'noskin'" }, "retraction_combing_max_distance": { "value": "10" }, diff --git a/resources/definitions/deltacomb_dc20flux.def.json b/resources/definitions/deltacomb_dc20flux.def.json index fd67f9da72..f76ba3e4cd 100644 --- a/resources/definitions/deltacomb_dc20flux.def.json +++ b/resources/definitions/deltacomb_dc20flux.def.json @@ -32,9 +32,7 @@ "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, "prime_tower_min_volume": { "value": "50" }, - "prime_tower_mode": { - "value": "'normal'" - }, + "prime_tower_mode": { "value": "'normal'" }, "switch_extruder_retraction_amount": { "value": "0" } } } \ No newline at end of file diff --git a/resources/definitions/deltacomb_dc21flux.def.json b/resources/definitions/deltacomb_dc21flux.def.json index c218f085b9..3c2080a87b 100644 --- a/resources/definitions/deltacomb_dc21flux.def.json +++ b/resources/definitions/deltacomb_dc21flux.def.json @@ -32,9 +32,7 @@ "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, "prime_tower_min_volume": { "value": "50" }, - "prime_tower_mode": { - "value": "'normal'" - }, + "prime_tower_mode": { "value": "'normal'" }, "switch_extruder_retraction_amount": { "value": "0" } } } \ No newline at end of file diff --git a/resources/definitions/deltacomb_dc30flux.def.json b/resources/definitions/deltacomb_dc30flux.def.json index b877e4979d..69249e42fd 100644 --- a/resources/definitions/deltacomb_dc30flux.def.json +++ b/resources/definitions/deltacomb_dc30flux.def.json @@ -32,9 +32,7 @@ "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, "prime_tower_min_volume": { "value": "50" }, - "prime_tower_mode": { - "value": "'normal'" - }, + "prime_tower_mode": { "value": "'normal'" }, "switch_extruder_retraction_amount": { "value": "0" } } } \ No newline at end of file diff --git a/resources/definitions/lotmaxx_sc60.def.json b/resources/definitions/lotmaxx_sc60.def.json index 39513ebc3b..64220c372e 100644 --- a/resources/definitions/lotmaxx_sc60.def.json +++ b/resources/definitions/lotmaxx_sc60.def.json @@ -45,9 +45,7 @@ "meshfix_maximum_resolution": { "value": 0.25 }, "optimize_wall_printing_order": { "value": true }, "prime_tower_min_volume": { "value": 30 }, - "prime_tower_mode": { - "value": "'normal'" - }, + "prime_tower_mode": { "value": "'normal'" }, "retract_at_layer_change": { "value": false }, "retraction_amount": { "value": 4.5 }, "roofing_layer_count": { "value": 1 }, diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json index 7a0ab6f42f..ca40788581 100644 --- a/resources/definitions/ultimaker_s3.def.json +++ b/resources/definitions/ultimaker_s3.def.json @@ -103,9 +103,7 @@ "default_value": false, "enabled": true }, - "prime_tower_mode": { - "value": "'normal'" - }, + "prime_tower_mode": { "value": "'normal'" }, "retraction_amount": { "value": "6.5" }, "retraction_hop": { "value": "2" }, "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" }, diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index 346693bf53..73854f2890 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -104,9 +104,7 @@ "default_value": false, "enabled": true }, - "prime_tower_mode": { - "value": "'normal'" - }, + "prime_tower_mode": { "value": "'normal'" }, "retraction_amount": { "value": "6.5" }, "retraction_combing": { "value": "'no_outer_surfaces'" }, "retraction_hop": { "value": "2" }, From ce3baa15e2b196fdaeb223a434c6fa6fc395d8cb Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Tue, 20 Feb 2024 16:56:05 +0100 Subject: [PATCH 119/203] file name is coming from CuraApplication Instance CURA-11403 --- plugins/3MFWriter/UCPDialog.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/3MFWriter/UCPDialog.py b/plugins/3MFWriter/UCPDialog.py index 355c70602c..20b3a37909 100644 --- a/plugins/3MFWriter/UCPDialog.py +++ b/plugins/3MFWriter/UCPDialog.py @@ -64,7 +64,7 @@ class UCPDialog(QObject): device.writeSuccess.connect(lambda: self._onSuccess()) device.writeFinished.connect(lambda: self._onFinished()) - file_name = application.getPrintInformation().jobName + file_name = CuraApplication.getInstance().getPrintInformation().jobName try: device.requestWrite(nodes, file_name, ["application/x-ucp"], workspace_handler, From d2566d72ff3d4db3270246c9a2c04c6dd383ce73 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Tue, 20 Feb 2024 16:56:34 +0100 Subject: [PATCH 120/203] for preference to open dialo while saving ucp CURA-11403 --- plugins/3MFWriter/UCPDialog.qml | 12 +++++++++--- resources/qml/Dialogs/WorkspaceSummaryDialog.qml | 2 +- resources/qml/Menus/FileMenu.qml | 13 ++++++++++++- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/plugins/3MFWriter/UCPDialog.qml b/plugins/3MFWriter/UCPDialog.qml index 7eaf57c96b..3a0e6bf842 100644 --- a/plugins/3MFWriter/UCPDialog.qml +++ b/plugins/3MFWriter/UCPDialog.qml @@ -19,12 +19,12 @@ UM.Dialog minimumHeight: UM.Theme.getSize("modal_window_minimum").height backgroundColor: UM.Theme.getColor("detail_background") - property bool dontShowAgain: true + property bool dontShowAgain: false function storeDontShowAgain() { UM.Preferences.setValue("cura/dialog_on_ucp_project_save", !dontShowAgainCheckbox.checked) - UM.Preferences.setValue("asked_dialog_on_ucp_project_save", true) + UM.Preferences.setValue("cura/asked_dialog_on_ucp_project_save", false) } onVisibleChanged: @@ -115,5 +115,11 @@ UM.Dialog buttonSpacing: UM.Theme.getSize("wide_margin").width - onClosing: manager.notifyClosed() + onClosing: + { + storeDontShowAgain() + manager.notifyClosed() + } + onRejected: storeDontShowAgain() + onAccepted: storeDontShowAgain() } diff --git a/resources/qml/Dialogs/WorkspaceSummaryDialog.qml b/resources/qml/Dialogs/WorkspaceSummaryDialog.qml index a174959807..1eca2f395c 100644 --- a/resources/qml/Dialogs/WorkspaceSummaryDialog.qml +++ b/resources/qml/Dialogs/WorkspaceSummaryDialog.qml @@ -25,7 +25,7 @@ UM.Dialog function storeDontShowAgain() { UM.Preferences.setValue("cura/dialog_on_project_save", !dontShowAgainCheckbox.checked) - UM.Preferences.setValue("asked_dialog_on_project_save", true) + UM.Preferences.setValue("cura/asked_dialog_on_project_save", true) } onClosing: storeDontShowAgain() diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml index bc0d1e6aef..3f8c0daac0 100644 --- a/resources/qml/Menus/FileMenu.qml +++ b/resources/qml/Menus/FileMenu.qml @@ -77,7 +77,18 @@ Cura.Menu enabled: UM.WorkspaceFileHandler.enabled && CuraApplication.getPackageManager().allEnabledPackages.includes("3MFWriter") onTriggered: { - CuraApplication.exportUcp() + if(UM.Preferences.getValue("cura/dialog_on_ucp_project_save")) + { + CuraApplication.exportUcp() + } + else + { + var args = { "filter_by_machine": false, + "file_type": "workspace", + "preferred_mimetypes": "application/x-ucp", + "limit_mimetypes": ["application/x-ucp"]}; + UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args) + } } } From 942589d3a21ee7677ef9062b26ea9500bf73a798 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Tue, 20 Feb 2024 17:05:23 +0100 Subject: [PATCH 121/203] filename is basename without the printer info CURA-11403 --- plugins/3MFWriter/UCPDialog.py | 2 +- resources/qml/Menus/FileMenu.qml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/3MFWriter/UCPDialog.py b/plugins/3MFWriter/UCPDialog.py index 20b3a37909..8e62666818 100644 --- a/plugins/3MFWriter/UCPDialog.py +++ b/plugins/3MFWriter/UCPDialog.py @@ -64,7 +64,7 @@ class UCPDialog(QObject): device.writeSuccess.connect(lambda: self._onSuccess()) device.writeFinished.connect(lambda: self._onFinished()) - file_name = CuraApplication.getInstance().getPrintInformation().jobName + file_name = CuraApplication.getInstance().getPrintInformation().baseName try: device.requestWrite(nodes, file_name, ["application/x-ucp"], workspace_handler, diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml index 3f8c0daac0..7af21182cd 100644 --- a/resources/qml/Menus/FileMenu.qml +++ b/resources/qml/Menus/FileMenu.qml @@ -87,7 +87,7 @@ Cura.Menu "file_type": "workspace", "preferred_mimetypes": "application/x-ucp", "limit_mimetypes": ["application/x-ucp"]}; - UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args) + UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.baseName, args) } } } From f6c9936d1e4575749f1dcaa5913587baf37fe0d0 Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Tue, 20 Feb 2024 19:49:49 +0100 Subject: [PATCH 122/203] Remove SR-30 from exclude list PP-393 --- resources/definitions/ultimaker_method_base.def.json | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/definitions/ultimaker_method_base.def.json b/resources/definitions/ultimaker_method_base.def.json index 6e40f0bbf1..983af7ea27 100644 --- a/resources/definitions/ultimaker_method_base.def.json +++ b/resources/definitions/ultimaker_method_base.def.json @@ -28,7 +28,6 @@ "generic_hips_175", "generic_pc_175", "ultimaker_rapidrinse_175", - "ultimaker_sr30_175", "generic_tpu_175", "goofoo_", "ideagen3D_", From 59a23231ccb518b0c12aed273a27e9871d0548ef Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Tue, 20 Feb 2024 20:13:27 +0100 Subject: [PATCH 123/203] Include prime tower mode PP-393 --- resources/definitions/fdmprinter.def.json | 77 ++++++++++++++++------- 1 file changed, 56 insertions(+), 21 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 20a8a698a2..1d453456a8 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -76,6 +76,22 @@ "type": "str", "enabled": false }, + "material_type": + { + "label": "Material Type", + "description": "The type of material used.", + "default_value": "", + "type": "str", + "enabled": false + }, + "material_brand": + { + "label": "Material Brand", + "description": "The brand of material used.", + "default_value": "", + "type": "str", + "enabled": false + }, "material_diameter": { "label": "Diameter", @@ -963,7 +979,7 @@ "description": "Width of a single prime tower line.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_enable')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", "default_value": 0.4, "value": "line_width", "minimum_value": "0.001", @@ -3347,7 +3363,7 @@ "description": "The speed at which the prime tower is printed. Printing the prime tower slower can make it more stable when the adhesion between the different filaments is suboptimal.", "type": "float", "unit": "mm/s", - "enabled": "resolveOrValue('prime_tower_enable')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", "default_value": 60, "value": "speed_print", "minimum_value": "0.1", @@ -3725,7 +3741,7 @@ "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_print", - "enabled": "resolveOrValue('prime_tower_enable') and resolveOrValue('acceleration_enabled')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none' and resolveOrValue('acceleration_enabled')", "settable_per_mesh": false } } @@ -4044,7 +4060,7 @@ "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", - "enabled": "resolveOrValue('prime_tower_enable') and resolveOrValue('jerk_enabled')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none' and resolveOrValue('jerk_enabled')", "settable_per_mesh": false } } @@ -5135,7 +5151,7 @@ "unit": "mm", "type": "float", "minimum_value": "0", - "maximum_value_warning": "machine_nozzle_size", + "maximum_value_warning": "5*layer_height", "default_value": 0.1, "limit_to_extruder": "support_interface_extruder_nr if support_interface_enable else support_infill_extruder_nr", "enabled": "support_enable or support_meshes_present", @@ -6778,14 +6794,20 @@ "description": "Settings used for printing with multiple extruders.", "children": { - "prime_tower_enable": + "prime_tower_mode": { - "label": "Enable Prime Tower", - "description": "Print a tower next to the print which serves to prime the material after each nozzle switch.", - "type": "bool", + "label": "Prime Tower", + "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.
  • None: do not generate a prime tower
  • Normal: generate a bucket in which secondary materials are primed
  • Interleaved: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", + "type": "enum", + "value": "'none' if (extruders_enabled_count < 2) else ('interleaved' if (all(material_type_var == extruderValues('material_type')[0] for material_type_var in extruderValues('material_type')) and all(material_brand_var == extruderValues('material_brand')[0] for material_brand_var in extruderValues('material_brand'))) else 'normal')", + "options": + { + "none": "None", + "normal": "Normal", + "interleaved": "Interleaved" + }, + "default_value": "none", "enabled": "extruders_enabled_count > 1", - "default_value": false, - "resolve": "(extruders_enabled_count > 1) and any(extruderValues('prime_tower_enable'))", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -6795,7 +6817,7 @@ "description": "The width of the prime tower.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_enable')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", "default_value": 20, "resolve": "max(extruderValues('prime_tower_size'))", "minimum_value": "0", @@ -6814,7 +6836,20 @@ "default_value": 6, "minimum_value": "0", "maximum_value_warning": "(resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height') - sum(extruderValues('prime_tower_min_volume')) + prime_tower_min_volume", - "enabled": "resolveOrValue('prime_tower_enable')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "prime_tower_max_bridging_distance": + { + "label": "Prime Tower Maximum Bridging Distance", + "description": "The maximum length of the branches which may be printed over the air.", + "unit": "mm", + "type": "float", + "default_value": 5, + "minimum_value": "line_width", + "maximum_value_warning": "10.0", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -6824,7 +6859,7 @@ "description": "The x coordinate of the position of the prime tower.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_enable')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", "default_value": 200, "value": "(resolveOrValue('machine_width') / 2 + resolveOrValue('prime_tower_size') / 2) if resolveOrValue('machine_shape') == 'elliptic' else (resolveOrValue('machine_width') - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('machine_nozzle_offset_x')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_x'))), 1)) - (resolveOrValue('machine_width') / 2 if resolveOrValue('machine_center_is_zero') else 0)", "maximum_value": "(machine_width / 2 if machine_center_is_zero else machine_width) - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0)", @@ -6838,7 +6873,7 @@ "description": "The y coordinate of the position of the prime tower.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_enable')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", "default_value": 200, "value": "machine_depth - prime_tower_size - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('machine_nozzle_offset_y')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_y'))), 1) - (resolveOrValue('machine_depth') / 2 if resolveOrValue('machine_center_is_zero') else 0)", "maximum_value": "(machine_depth / 2 - resolveOrValue('prime_tower_size') if machine_center_is_zero else machine_depth - resolveOrValue('prime_tower_size')) - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0)", @@ -6851,7 +6886,7 @@ "label": "Wipe Inactive Nozzle on Prime Tower", "description": "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower.", "type": "bool", - "enabled": "resolveOrValue('prime_tower_enable')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", "default_value": true, "settable_per_mesh": false, "settable_per_extruder": true @@ -6862,7 +6897,7 @@ "label": "Prime Tower Base", "description": "By enabling this setting, your prime-tower will get a brim, even if the model doesn't. If you want a sturdier base for a high tower, you can increase the base height.", "type": "bool", - "enabled": "resolveOrValue('prime_tower_enable') and resolveOrValue('adhesion_type') != 'raft'", + "enabled": "resolveOrValue('prime_tower_mode') != 'none' and resolveOrValue('adhesion_type') != 'raft'", "default_value": false, "settable_per_mesh": false, "settable_per_extruder": false @@ -6874,7 +6909,7 @@ "description": "The width of the prime tower brim/base. A larger base enhances adhesion to the build plate, but also reduces the effective print area.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_enable') and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none' and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", "default_value": 1.2, "minimum_value": "0", "maximum_value": "min(0.5 * machine_width, 0.5 * machine_depth)", @@ -6888,7 +6923,7 @@ "description": "The height of the prime tower base. Increasing this value will result in a more sturdy prime tower because the base will be wider. If this setting is too low, the prime tower will not have a sturdy base.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_enable') and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none' and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", "default_value": 0, "minimum_value": "0", "maximum_value": "machine_height", @@ -6900,7 +6935,7 @@ "label": "Prime Tower Base Slope", "description": "The magnitude factor used for the slope of the prime tower base. If you increase this value, the base will become slimmer. If you decrease it, the base will become thicker.", "type": "float", - "enabled": "resolveOrValue('prime_tower_enable') and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", + "enabled": "resolveOrValue('prime_tower_mode') != 'none' and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", "default_value": 4, "minimum_value": "0", "maximum_value": "10", @@ -6918,7 +6953,7 @@ "minimum_value": "0", "minimum_value_warning": "raft_base_line_width", "maximum_value_warning": "100", - "enabled": "resolveOrValue('prime_tower_enable') and resolveOrValue('adhesion_type') == 'raft'", + "enabled": "resolveOrValue('prime_tower_mode') != 'none' and resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "raft_base_extruder_nr" From 08b70252a4ad3fb8af11d9d70d037fc2a990b5a2 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Wed, 21 Feb 2024 11:23:05 +0100 Subject: [PATCH 124/203] Remove duplicated mime type CURA-11403 --- plugins/3MFReader/ThreeMFReader.py | 9 +------- plugins/3MFWriter/UCPDialog.py | 35 ++++++++++++++++++++---------- plugins/3MFWriter/__init__.py | 12 ---------- 3 files changed, 25 insertions(+), 31 deletions(-) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index c7a15e043e..ac94282136 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -41,18 +41,11 @@ class ThreeMFReader(MeshReader): MimeTypeDatabase.addMimeType( MimeType( - name = "application/vnd.ms-package.3dmanufacturing-3dmodel+xml", + name="application/vnd.ms-package.3dmanufacturing-3dmodel+xml", comment="3MF", suffixes=["3mf"] ) ) - MimeTypeDatabase.addMimeType( - MimeType( - name="application/x-ucp", - comment="UCP", - suffixes=["3mf"] - ) - ) self._supported_extensions = [".3mf"] self._root = None diff --git a/plugins/3MFWriter/UCPDialog.py b/plugins/3MFWriter/UCPDialog.py index 8e62666818..b2ad5834eb 100644 --- a/plugins/3MFWriter/UCPDialog.py +++ b/plugins/3MFWriter/UCPDialog.py @@ -29,15 +29,21 @@ class UCPDialog(QObject): plugin_path = os.path.dirname(__file__) dialog_path = os.path.join(plugin_path, 'UCPDialog.qml') self._model = SettingsExportModel() - self._view = CuraApplication.getInstance().createQmlComponent(dialog_path, - {"manager": self, - "settingsExportModel": self._model}) + self._view = CuraApplication.getInstance().createQmlComponent( + dialog_path, + { + "manager": self, + "settingsExportModel": self._model + } + ) self._view.accepted.connect(self._onAccepted) self._view.rejected.connect(self._onRejected) self._finished = False self._accepted = False def show(self) -> None: + self._finished = False + self._accepted = False self._view.show() def getModel(self) -> SettingsExportModel: @@ -67,8 +73,13 @@ class UCPDialog(QObject): file_name = CuraApplication.getInstance().getPrintInformation().baseName try: - device.requestWrite(nodes, file_name, ["application/x-ucp"], workspace_handler, - preferred_mimetype_list="application/x-ucp") + device.requestWrite( + nodes, + file_name, + ["application/vnd.ms-package.3dmanufacturing-3dmodel+xml"], + workspace_handler, + preferred_mimetype_list="application/vnd.ms-package.3dmanufacturing-3dmodel+xml" + ) except OutputDeviceError.UserCanceledError: self._onRejected() except Exception as e: @@ -90,11 +101,13 @@ class UCPDialog(QObject): self._onFinished() def _onFinished(self): - if not self._finished: # Make sure we don't send the finished signal twice, whatever happens - self._finished = True + # Make sure we don't send the finished signal twice, whatever happens + if self._finished: + return + self._finished = True - # Reset the model to the workspace writer - mesh_writer = CuraApplication.getInstance().getInstance().getWorkspaceFileHandler().getWriter("3MFWriter") - mesh_writer.setExportModel(None) + # Reset the model to the workspace writer + mesh_writer = CuraApplication.getInstance().getInstance().getWorkspaceFileHandler().getWriter("3MFWriter") + mesh_writer.setExportModel(None) - self.finished.emit(self._accepted) + self.finished.emit(self._accepted) diff --git a/plugins/3MFWriter/__init__.py b/plugins/3MFWriter/__init__.py index 1cecf4c3f8..0b2976c386 100644 --- a/plugins/3MFWriter/__init__.py +++ b/plugins/3MFWriter/__init__.py @@ -32,12 +32,6 @@ def getMetaData(): "description": i18n_catalog.i18nc("@item:inlistbox", "3MF file"), "mime_type": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml", "mode": ThreeMFWriter.ThreeMFWriter.OutputMode.BinaryMode - }, - { - "extension": "3mf", - "description": i18n_catalog.i18nc("@item:inlistbox", "Universal Cura Project"), - "mime_type": "application/x-ucp", - "mode": ThreeMFWriter.ThreeMFWriter.OutputMode.BinaryMode } ] } @@ -48,12 +42,6 @@ def getMetaData(): "description": i18n_catalog.i18nc("@item:inlistbox", "Cura Project 3MF file"), "mime_type": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml", "mode": ThreeMFWorkspaceWriter.ThreeMFWorkspaceWriter.OutputMode.BinaryMode - }, - { - "extension": "3mf", - "description": i18n_catalog.i18nc("@item:inlistbox", "Universal Cura Project"), - "mime_type": "application/x-ucp", - "mode": ThreeMFWorkspaceWriter.ThreeMFWorkspaceWriter.OutputMode.BinaryMode } ] } From 62aff0be12396b934c0ca74b6f712d814c90cac4 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Wed, 21 Feb 2024 11:40:51 +0100 Subject: [PATCH 125/203] Determine `ucp` based on included file CURA-11403 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 04885a961b..25e2afa8bd 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -58,6 +58,7 @@ _ignored_machine_network_metadata: Set[str] = { "is_abstract_machine" } +USER_SETTINGS_PATH = "Cura/user-settings.json" class ContainerInfo: def __init__(self, file_name: Optional[str], serialized: Optional[str], parser: Optional[ConfigParser]) -> None: @@ -235,9 +236,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): containers_found_dict = {k: False for k in resolve_strategy_keys} # Check whether the file is a UCP, which changes some import options - #FIXME Instead of this, we should just check for the presence of the user-settings file, whatever the extension - if file_name.endswith('.3mf'): - is_ucp = True + is_ucp = USER_SETTINGS_PATH in cura_file_names + # # Read definition containers # From 909a4156f3ccc64b86a3b0c4864b8c20fd5105e8 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Wed, 21 Feb 2024 15:13:27 +0100 Subject: [PATCH 126/203] Updating _ucp_model to None everytime a write is done CURA-11403 --- plugins/3MFWriter/ThreeMFWorkspaceWriter.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py index cff938788b..2536f5dacb 100644 --- a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py +++ b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py @@ -33,7 +33,7 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): if self._ucp_model != model: self._ucp_model = model - def write(self, stream, nodes, mode=WorkspaceWriter.OutputMode.BinaryMode): + def _write(self, stream, nodes, mode=WorkspaceWriter.OutputMode.BinaryMode): application = Application.getInstance() machine_manager = application.getMachineManager() @@ -125,6 +125,11 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): return True + def write(self, stream, nodes, mode=WorkspaceWriter.OutputMode.BinaryMode): + success = self._write(stream, nodes, mode=WorkspaceWriter.OutputMode.BinaryMode) + self._ucp_model = None + return success + @staticmethod def _writePluginMetadataToArchive(archive: zipfile.ZipFile) -> None: file_name_template = "%s/plugin_metadata.json" From 2681932fec55545c4ae4c9b07d52bf30568b29a6 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Wed, 21 Feb 2024 15:20:38 +0100 Subject: [PATCH 127/203] Adding cura share icon to thumbnail CURA-11624 --- plugins/3MFWriter/ThreeMFWriter.py | 24 +++++++++++++++++++++++- resources/images/cura-share.png | Bin 0 -> 8108 bytes 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 resources/images/cura-share.png diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index 6e3dc86890..9e519e255d 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -10,6 +10,7 @@ from UM.Math.Vector import Vector from UM.Logger import Logger from UM.Math.Matrix import Matrix from UM.Application import Application +from UM.Resources import Resources from UM.Scene.SceneNode import SceneNode from UM.Settings.ContainerRegistry import ContainerRegistry @@ -20,7 +21,8 @@ from cura.Utils.Threading import call_on_qt_thread from cura.Scene.CuraSceneNode import CuraSceneNode from cura.Snapshot import Snapshot -from PyQt6.QtCore import QBuffer +from PyQt6.QtCore import Qt, QBuffer +from PyQt6.QtGui import QImage, QPainter import pySavitar as Savitar from .UCPDialog import UCPDialog @@ -170,6 +172,24 @@ class ThreeMFWriter(MeshWriter): def getArchive(self): return self._archive + def _addShareLogoToThumbnail(self, primary_image): + # Load the icon png image + icon_image = QImage(Resources.getPath(Resources.Images, "cura-share.png")) + + # Resize icon_image to be 1/3 of primary_image size + new_width = int(primary_image.width() / 4) + new_height = int(primary_image.height() / 4) + icon_image = icon_image.scaled(new_width, new_height, Qt.AspectRatioMode.KeepAspectRatio) + # Create a QPainter to draw on the image + painter = QPainter(primary_image) + + # Draw the icon in the top-left corner (adjust coordinates as needed) + icon_position = (10, 10) + painter.drawImage(icon_position[0], icon_position[1], icon_image) + + painter.end() + primary_image.save("test.png", "PNG") + def write(self, stream, nodes, mode = MeshWriter.OutputMode.BinaryMode, export_settings_model = None) -> bool: self._archive = None # Reset archive archive = zipfile.ZipFile(stream, "w", compression = zipfile.ZIP_DEFLATED) @@ -194,6 +214,8 @@ class ThreeMFWriter(MeshWriter): # Attempt to add a thumbnail snapshot = self._createSnapshot() if snapshot: + if export_settings_model != None: + self._addShareLogoToThumbnail(snapshot) thumbnail_buffer = QBuffer() thumbnail_buffer.open(QBuffer.OpenModeFlag.ReadWrite) snapshot.save(thumbnail_buffer, "PNG") diff --git a/resources/images/cura-share.png b/resources/images/cura-share.png new file mode 100644 index 0000000000000000000000000000000000000000..60de85194c7a9c71f93ddd90f2f885d18d49c11e GIT binary patch literal 8108 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 qWvu{Yyxl$m0<@dkS8ngj zyn*4U>}7f6Rh?B~oyO#B6<9q-FJ8w-+9~ zyT7o>?r_K@aqval5TmSsN>qjF%K3Q-qx60#U&H4lyw0!7?%hyZn1Q0eU`ffOWTnm8 z4x0`cg~~?V6@@t% zDoo+UP4cMXy6osUw{cCrzaU+qfvH3Y0050qKV?JQF*iM;D}_E=FdVh3ELtch3W7({ z15WCNq@oEYp(#Y}w9R@yS5N7m6-cE3O8bqn4=v}Y7$uE$@@sOBt0^5IV;V>{!woK7 zb;iJO)B;GXMn{&6npBgYDMi!DbUNI`&loj}9iY&gP1cj4pk5Sni`NwHk1f}=*pH~z zFi~A`6p(XM3+%A#x-$xfZ)rXr;>gW{m6wvvZlL>aL!S44hOk}jWi;ULT+JI8j*5Vs zrJ-qF!EiJWm5cvxY2LwbbQX}=(HQ~5(OE!7r!xkIqyGgV=nSNJP7uHV0000 Date: Wed, 21 Feb 2024 15:22:20 +0100 Subject: [PATCH 128/203] Removing debug statement CURA-11624 --- plugins/3MFWriter/ThreeMFWriter.py | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index 9e519e255d..ce9ea33fbd 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -188,7 +188,6 @@ class ThreeMFWriter(MeshWriter): painter.drawImage(icon_position[0], icon_position[1], icon_image) painter.end() - primary_image.save("test.png", "PNG") def write(self, stream, nodes, mode = MeshWriter.OutputMode.BinaryMode, export_settings_model = None) -> bool: self._archive = None # Reset archive From 5f884c737b4d331627ee53b074419263b5a848e1 Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Wed, 21 Feb 2024 16:39:50 +0100 Subject: [PATCH 129/203] Fix build, prevent protobuf version mismatch. --- conanfile.py | 1 + 1 file changed, 1 insertion(+) diff --git a/conanfile.py b/conanfile.py index 3b48442fa0..ca6b4eabd0 100644 --- a/conanfile.py +++ b/conanfile.py @@ -350,6 +350,7 @@ class CuraConan(ConanFile): self.requires("cpython/3.10.4@ultimaker/stable") self.requires("clipper/6.4.2@ultimaker/stable") self.requires("openssl/3.2.0") + self.requires("protobuf/3.21.12") self.requires("boost/1.82.0") self.requires("spdlog/1.12.0") self.requires("fmt/10.1.1") From 5f7a1c7b7bdcc8307b4969d1fc0d4d8c24782073 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Wed, 21 Feb 2024 16:50:46 +0100 Subject: [PATCH 130/203] Use correct mime-type CURA-11403m --- resources/qml/Menus/FileMenu.qml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml index 7af21182cd..76d4997c3c 100644 --- a/resources/qml/Menus/FileMenu.qml +++ b/resources/qml/Menus/FileMenu.qml @@ -77,16 +77,18 @@ Cura.Menu enabled: UM.WorkspaceFileHandler.enabled && CuraApplication.getPackageManager().allEnabledPackages.includes("3MFWriter") onTriggered: { - if(UM.Preferences.getValue("cura/dialog_on_ucp_project_save")) + if (UM.Preferences.getValue("cura/dialog_on_ucp_project_save")) { CuraApplication.exportUcp() } else { - var args = { "filter_by_machine": false, - "file_type": "workspace", - "preferred_mimetypes": "application/x-ucp", - "limit_mimetypes": ["application/x-ucp"]}; + const args = { + "filter_by_machine": false, + "file_type": "workspace", + "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml", + "limit_mimetypes": ["application/vnd.ms-package.3dmanufacturing-3dmodel+xml"], + }; UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.baseName, args) } } From 53b3eadb3c3ea71cd73c89a2f0ce15e2684a1439 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Wed, 21 Feb 2024 18:20:19 +0100 Subject: [PATCH 131/203] Adding printOrder to pasted elements CURA-11617 CURA-11624 --- cura/CuraActions.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cura/CuraActions.py b/cura/CuraActions.py index 36c69618dd..e33ce8123d 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -273,7 +273,11 @@ class CuraActions(QObject): # deselect currently selected nodes, and select the new nodes for node in Selection.getAllSelectedObjects(): Selection.remove(node) + + numberOfFixedNodes = len(fixed_nodes) for node in nodes: + numberOfFixedNodes += 1 + node.printOrder = numberOfFixedNodes Selection.add(node) def _openUrl(self, url: QUrl) -> None: From 3c305bb289658dab6a7c7121313c17ec6b6cd48c Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Wed, 21 Feb 2024 19:30:36 +0100 Subject: [PATCH 132/203] Fix `dialog_on_ucp_project_save` preference CURA-11403 --- plugins/3MFWriter/ThreeMFWriter.py | 41 ++++++++++++++++++++++++++++-- plugins/3MFWriter/UCPDialog.py | 7 ++--- resources/qml/Menus/FileMenu.qml | 41 ++++++++++++++---------------- 3 files changed, 62 insertions(+), 27 deletions(-) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index ce9ea33fbd..34ab4b5f58 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -10,6 +10,8 @@ from UM.Math.Vector import Vector from UM.Logger import Logger from UM.Math.Matrix import Matrix from UM.Application import Application +from UM.OutputDevice import OutputDeviceError +from UM.Message import Message from UM.Resources import Resources from UM.Scene.SceneNode import SceneNode from UM.Settings.ContainerRegistry import ContainerRegistry @@ -456,5 +458,40 @@ class ThreeMFWriter(MeshWriter): return extra_settings def exportUcp(self): - self._config_dialog = UCPDialog() - self._config_dialog.show() + preferences = CuraApplication.getInstance().getPreferences() + if preferences.getValue("cura/dialog_on_ucp_project_save"): + self._config_dialog = UCPDialog() + self._config_dialog.show() + else: + application = CuraApplication.getInstance() + workspace_handler = application.getInstance().getWorkspaceFileHandler() + + # Set the model to the workspace writer + mesh_writer = workspace_handler.getWriter("3MFWriter") + mesh_writer.setExportModel(SettingsExportModel()) + + # Open file dialog and write the file + device = application.getOutputDeviceManager().getOutputDevice("local_file") + nodes = [application.getController().getScene().getRoot()] + + file_name = CuraApplication.getInstance().getPrintInformation().baseName + + try: + device.requestWrite( + nodes, + file_name, + ["application/vnd.ms-package.3dmanufacturing-3dmodel+xml"], + workspace_handler, + preferred_mimetype_list="application/vnd.ms-package.3dmanufacturing-3dmodel+xml" + ) + except OutputDeviceError.UserCanceledError: + self._onRejected() + except Exception as e: + message = Message( + catalog.i18nc("@info:error", "Unable to write to file: {0}", file_name), + title=catalog.i18nc("@info:title", "Error"), + message_type=Message.MessageType.ERROR + ) + message.show() + Logger.logException("e", "Unable to write to file %s: %s", file_name, e) + self._onRejected() diff --git a/plugins/3MFWriter/UCPDialog.py b/plugins/3MFWriter/UCPDialog.py index b2ad5834eb..bedfb4d0da 100644 --- a/plugins/3MFWriter/UCPDialog.py +++ b/plugins/3MFWriter/UCPDialog.py @@ -53,8 +53,7 @@ class UCPDialog(QObject): def notifyClosed(self): self._onFinished() - @pyqtSlot() - def _onAccepted(self): + def save3mf(self): application = CuraApplication.getInstance() workspace_handler = application.getInstance().getWorkspaceFileHandler() @@ -92,7 +91,9 @@ class UCPDialog(QObject): Logger.logException("e", "Unable to write to file %s: %s", file_name, e) self._onRejected() - @pyqtSlot() + def _onAccepted(self): + self.save3mf() + def _onRejected(self): self._onFinished() diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml index 76d4997c3c..4ca09cc9f1 100644 --- a/resources/qml/Menus/FileMenu.qml +++ b/resources/qml/Menus/FileMenu.qml @@ -47,14 +47,18 @@ Cura.Menu enabled: UM.WorkspaceFileHandler.enabled && saveProjectMenu.model.count == 1 onTriggered: { - var args = { "filter_by_machine": false, "file_type": "workspace", "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml" }; - if(UM.Preferences.getValue("cura/dialog_on_project_save")) + if (UM.Preferences.getValue("cura/dialog_on_project_save")) { saveWorkspaceDialog.args = args saveWorkspaceDialog.open() } else { + const args = { + "filter_by_machine": false, + "file_type": "workspace", + "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml", + }; UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args) } } @@ -75,23 +79,7 @@ Cura.Menu id: saveUCPMenu text: catalog.i18nc("@title:menu menubar:file", "&Save Universal Cura Project...") enabled: UM.WorkspaceFileHandler.enabled && CuraApplication.getPackageManager().allEnabledPackages.includes("3MFWriter") - onTriggered: - { - if (UM.Preferences.getValue("cura/dialog_on_ucp_project_save")) - { - CuraApplication.exportUcp() - } - else - { - const args = { - "filter_by_machine": false, - "file_type": "workspace", - "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml", - "limit_mimetypes": ["application/vnd.ms-package.3dmanufacturing-3dmodel+xml"], - }; - UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.baseName, args) - } - } + onTriggered: CuraApplication.exportUcp() } Cura.MenuSeparator { } @@ -102,8 +90,11 @@ Cura.Menu text: catalog.i18nc("@title:menu menubar:file", "&Export...") onTriggered: { - var localDeviceId = "local_file" - UM.OutputDeviceManager.requestWriteToDevice(localDeviceId, PrintInformation.jobName, { "filter_by_machine": false, "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"}) + const args = { + "filter_by_machine": false, + "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml", + }; + UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args); } } @@ -113,7 +104,13 @@ Cura.Menu text: catalog.i18nc("@action:inmenu menubar:file", "Export Selection...") enabled: UM.Selection.hasSelection icon.name: "document-save-as" - onTriggered: UM.OutputDeviceManager.requestWriteSelectionToDevice("local_file", PrintInformation.jobName, { "filter_by_machine": false, "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"}) + onTriggered: { + const args = { + "filter_by_machine": false, + "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml", + }; + UM.OutputDeviceManager.requestWriteSelectionToDevice("local_file", PrintInformation.jobName, args); + } } Cura.MenuSeparator { } From e99d5eb906c508b6cbfb4bf066c1843ffd0395a1 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Thu, 22 Feb 2024 09:59:31 +0100 Subject: [PATCH 133/203] fixing comment CURA-11617 CURA-11624 --- plugins/3MFWriter/ThreeMFWriter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index 34ab4b5f58..6fda1742f8 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -178,7 +178,7 @@ class ThreeMFWriter(MeshWriter): # Load the icon png image icon_image = QImage(Resources.getPath(Resources.Images, "cura-share.png")) - # Resize icon_image to be 1/3 of primary_image size + # Resize icon_image to be 1/4 of primary_image size new_width = int(primary_image.width() / 4) new_height = int(primary_image.height() / 4) icon_image = icon_image.scaled(new_width, new_height, Qt.AspectRatioMode.KeepAspectRatio) From b99762776ee6ce3fe0e8bba8724eba9ca68ec4c7 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Thu, 22 Feb 2024 10:47:04 +0100 Subject: [PATCH 134/203] Revert "Enable prime tower mode according to materials types" This reverts commit 335a54c6d1c432e64784f95c69e77125bd0d57f1. --- .../XmlMaterialProfile/XmlMaterialProfile.py | 9 +++---- resources/definitions/fdmprinter.def.json | 26 ++++--------------- 2 files changed, 8 insertions(+), 27 deletions(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 98c0f95e10..41beb88419 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -579,9 +579,8 @@ class XmlMaterialProfile(InstanceContainer): meta_data[tag_name] = entry.text - for tag_name, value in meta_data.items(): - if tag_name in self.__material_metadata_setting_map: - common_setting_values[self.__material_metadata_setting_map[tag_name]] = value + if tag_name in self.__material_metadata_setting_map: + common_setting_values[self.__material_metadata_setting_map[tag_name]] = entry.text if "description" not in meta_data: meta_data["description"] = "" @@ -1223,9 +1222,7 @@ class XmlMaterialProfile(InstanceContainer): "diameter": "material_diameter" } __material_metadata_setting_map = { - "GUID": "material_guid", - "material": "material_type", - "brand": "material_brand", + "GUID": "material_guid" } # Map of recognised namespaces with a proper prefix. diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 1d453456a8..b532402993 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -76,22 +76,6 @@ "type": "str", "enabled": false }, - "material_type": - { - "label": "Material Type", - "description": "The type of material used.", - "default_value": "", - "type": "str", - "enabled": false - }, - "material_brand": - { - "label": "Material Brand", - "description": "The brand of material used.", - "default_value": "", - "type": "str", - "enabled": false - }, "material_diameter": { "label": "Diameter", @@ -6797,14 +6781,14 @@ "prime_tower_mode": { "label": "Prime Tower", - "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.

  • None: do not generate a prime tower
  • Normal: generate a bucket in which secondary materials are primed
  • Interleaved: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", + "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.
  • None: do not generate a prime tower
  • Bucket: generate a bucket in which secondary materials are primed
  • Sparse: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", "type": "enum", - "value": "'none' if (extruders_enabled_count < 2) else ('interleaved' if (all(material_type_var == extruderValues('material_type')[0] for material_type_var in extruderValues('material_type')) and all(material_brand_var == extruderValues('material_brand')[0] for material_brand_var in extruderValues('material_brand'))) else 'normal')", + "value": "'optimized' if all(material_type == extruderValues('material_type')[0] for material_type in extruderValues('material_type')) else 'optimized_consistent'", "options": { "none": "None", - "normal": "Normal", - "interleaved": "Interleaved" + "bucket": "Bucket", + "sparse": "Sparse" }, "default_value": "none", "enabled": "extruders_enabled_count > 1", @@ -6849,7 +6833,7 @@ "default_value": 5, "minimum_value": "line_width", "maximum_value_warning": "10.0", - "enabled": "resolveOrValue('prime_tower_mode') != 'none'", + "enabled": "resolveOrValue('prime_tower_mode') == 'sparse' or resolveOrValue('prime_tower_mode') == 'bucket'", "settable_per_mesh": false, "settable_per_extruder": true }, From 60c3f6f2cbf4751960726eacfbc0d766ed4f16c7 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Thu, 22 Feb 2024 11:00:56 +0100 Subject: [PATCH 135/203] Restore prime tower options --- resources/definitions/fdmprinter.def.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index b532402993..a176fe1004 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6781,14 +6781,14 @@ "prime_tower_mode": { "label": "Prime Tower", - "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.
  • None: do not generate a prime tower
  • Bucket: generate a bucket in which secondary materials are primed
  • Sparse: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", + "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.
  • None: do not generate a prime tower
  • Normal: generate a bucket in which secondary materials are primed
  • Interleaved: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", "type": "enum", - "value": "'optimized' if all(material_type == extruderValues('material_type')[0] for material_type in extruderValues('material_type')) else 'optimized_consistent'", + "value": "'none' if (extruders_enabled_count < 2) else 'normal'", "options": { "none": "None", - "bucket": "Bucket", - "sparse": "Sparse" + "normal": "Normal", + "interleaved": "Interleaved" }, "default_value": "none", "enabled": "extruders_enabled_count > 1", From d009839f9e96f697ead3cb76678c3d8ad7379a3a Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Thu, 22 Feb 2024 12:50:50 +0100 Subject: [PATCH 136/203] Revert "Restore prime tower options" This reverts commit 60c3f6f2cbf4751960726eacfbc0d766ed4f16c7. --- resources/definitions/fdmprinter.def.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index a176fe1004..b532402993 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6781,14 +6781,14 @@ "prime_tower_mode": { "label": "Prime Tower", - "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.
  • None: do not generate a prime tower
  • Normal: generate a bucket in which secondary materials are primed
  • Interleaved: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", + "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.
  • None: do not generate a prime tower
  • Bucket: generate a bucket in which secondary materials are primed
  • Sparse: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", "type": "enum", - "value": "'none' if (extruders_enabled_count < 2) else 'normal'", + "value": "'optimized' if all(material_type == extruderValues('material_type')[0] for material_type in extruderValues('material_type')) else 'optimized_consistent'", "options": { "none": "None", - "normal": "Normal", - "interleaved": "Interleaved" + "bucket": "Bucket", + "sparse": "Sparse" }, "default_value": "none", "enabled": "extruders_enabled_count > 1", From c8f9f179d9809641ee48a36d5cd4b26bd006f84d Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Thu, 22 Feb 2024 12:50:53 +0100 Subject: [PATCH 137/203] Revert "Revert "Enable prime tower mode according to materials types"" This reverts commit b99762776ee6ce3fe0e8bba8724eba9ca68ec4c7. --- .../XmlMaterialProfile/XmlMaterialProfile.py | 9 ++++--- resources/definitions/fdmprinter.def.json | 26 +++++++++++++++---- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 41beb88419..98c0f95e10 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -579,8 +579,9 @@ class XmlMaterialProfile(InstanceContainer): meta_data[tag_name] = entry.text - if tag_name in self.__material_metadata_setting_map: - common_setting_values[self.__material_metadata_setting_map[tag_name]] = entry.text + for tag_name, value in meta_data.items(): + if tag_name in self.__material_metadata_setting_map: + common_setting_values[self.__material_metadata_setting_map[tag_name]] = value if "description" not in meta_data: meta_data["description"] = "" @@ -1222,7 +1223,9 @@ class XmlMaterialProfile(InstanceContainer): "diameter": "material_diameter" } __material_metadata_setting_map = { - "GUID": "material_guid" + "GUID": "material_guid", + "material": "material_type", + "brand": "material_brand", } # Map of recognised namespaces with a proper prefix. diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index b532402993..1d453456a8 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -76,6 +76,22 @@ "type": "str", "enabled": false }, + "material_type": + { + "label": "Material Type", + "description": "The type of material used.", + "default_value": "", + "type": "str", + "enabled": false + }, + "material_brand": + { + "label": "Material Brand", + "description": "The brand of material used.", + "default_value": "", + "type": "str", + "enabled": false + }, "material_diameter": { "label": "Diameter", @@ -6781,14 +6797,14 @@ "prime_tower_mode": { "label": "Prime Tower", - "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.
  • None: do not generate a prime tower
  • Bucket: generate a bucket in which secondary materials are primed
  • Sparse: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", + "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.
  • None: do not generate a prime tower
  • Normal: generate a bucket in which secondary materials are primed
  • Interleaved: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", "type": "enum", - "value": "'optimized' if all(material_type == extruderValues('material_type')[0] for material_type in extruderValues('material_type')) else 'optimized_consistent'", + "value": "'none' if (extruders_enabled_count < 2) else ('interleaved' if (all(material_type_var == extruderValues('material_type')[0] for material_type_var in extruderValues('material_type')) and all(material_brand_var == extruderValues('material_brand')[0] for material_brand_var in extruderValues('material_brand'))) else 'normal')", "options": { "none": "None", - "bucket": "Bucket", - "sparse": "Sparse" + "normal": "Normal", + "interleaved": "Interleaved" }, "default_value": "none", "enabled": "extruders_enabled_count > 1", @@ -6833,7 +6849,7 @@ "default_value": 5, "minimum_value": "line_width", "maximum_value_warning": "10.0", - "enabled": "resolveOrValue('prime_tower_mode') == 'sparse' or resolveOrValue('prime_tower_mode') == 'bucket'", + "enabled": "resolveOrValue('prime_tower_mode') != 'none'", "settable_per_mesh": false, "settable_per_extruder": true }, From 501b15753d1ef931fea1e79183844ccd6d326598 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Thu, 22 Feb 2024 16:20:39 +0100 Subject: [PATCH 138/203] Revert "Change prime_tower_enable to prime_tower_mode in all defs/profiles" This reverts commit 5a291f9ba9e83c85d1bdfe1c0e907e0df8154f6f. --- plugins/LegacyProfileReader/DictionaryOfDoom.json | 2 +- resources/definitions/atmat_signal_pro_base.def.json | 2 +- resources/definitions/deltacomb_dc20flux.def.json | 2 +- resources/definitions/deltacomb_dc21flux.def.json | 2 +- resources/definitions/deltacomb_dc30flux.def.json | 2 +- resources/definitions/dxu_dual.def.json | 3 ++- resources/definitions/elegoo_neptune_2D.def.json | 1 + resources/definitions/leapfrog_bolt_pro.def.json | 2 +- resources/definitions/lotmaxx_sc60.def.json | 2 +- resources/definitions/strateo3d_IDEX420.def.json | 1 + resources/definitions/ultimaker3.def.json | 1 + resources/definitions/ultimaker_method_base.def.json | 2 +- resources/definitions/ultimaker_s3.def.json | 2 +- resources/definitions/ultimaker_s5.def.json | 2 +- .../Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg | 2 +- .../Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg | 2 +- .../Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg | 2 +- ...Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg | 2 +- .../Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg | 2 +- .../Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_A.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_B.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_C.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_D.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_E.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_C.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_D.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_E.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_F.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_A.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_B.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_C.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_D.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_E.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_C.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_D.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_E.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_F.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_D.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_E.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_F.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_G.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_D.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_E.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_F.inst.cfg | 2 +- .../quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_G.inst.cfg | 2 +- .../pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.10.inst.cfg | 2 +- .../pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.15.inst.cfg | 2 +- .../pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.20.inst.cfg | 2 +- .../pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.30.inst.cfg | 2 +- .../pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.30.inst.cfg | 2 +- .../pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.40.inst.cfg | 2 +- .../pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.60.inst.cfg | 2 +- .../nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.10.inst.cfg | 2 +- .../nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.15.inst.cfg | 2 +- .../nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.20.inst.cfg | 2 +- .../nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.30.inst.cfg | 2 +- .../quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg | 2 +- .../quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg | 2 +- .../quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg | 2 +- .../gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_ABS_Draft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_ABS_Fast_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.4_ABS_High_Quality.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.4_ABS_Normal_Quality.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PC_Draft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PC_Fast_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PC_High_Quality.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.4_PC_Normal_Quality.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.4_PETG_Draft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PETG_Fast_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.4_PETG_High_Quality.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.4_PETG_Normal_Quality.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PLA_Draft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PLA_Fast_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.4_PLA_High_Quality.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.4_PLA_Normal_Quality.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PP_Draft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.4_PP_Fast_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.4_PP_Normal_Quality.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.6_PETG_Draft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.6_PETG_Fast_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.6_PLA_Draft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.6_PLA_Fast_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.8_CPE_Draft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_CPE_Superdraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_CPE_Verydraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_Nylon_Draft_Print.inst.cfg | 2 +- .../liquid/liquid_vo0.8_Nylon_Superdraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_Nylon_Verydraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_PETG_Draft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_PETG_Superdraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_PETG_Verydraft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.8_PLA_Draft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_PLA_Superdraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_PLA_Verydraft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.8_PP_Draft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_PP_Superdraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_PP_Verydraft_Print.inst.cfg | 2 +- resources/quality/liquid/liquid_vo0.8_TPU_Draft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_TPU_Superdraft_Print.inst.cfg | 2 +- .../quality/liquid/liquid_vo0.8_TPU_Verydraft_Print.inst.cfg | 2 +- resources/quality/nps/nps_ABS_B.inst.cfg | 2 +- resources/quality/nps/nps_ABS_C.inst.cfg | 2 +- resources/quality/nps/nps_PC_A.inst.cfg | 2 +- resources/quality/nps/nps_PC_B.inst.cfg | 2 +- resources/quality/nps/nps_PC_C.inst.cfg | 2 +- resources/quality/nps/nps_PETG_A.inst.cfg | 2 +- resources/quality/nps/nps_PETG_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PEKK_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_C.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_A.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_B.inst.cfg | 2 +- resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_C.inst.cfg | 2 +- .../strateo3d/Standard_0_4/s3d_std0.4_ACETATE_A.inst.cfg | 2 +- .../strateo3d/Standard_0_4/s3d_std0.4_ACETATE_B.inst.cfg | 2 +- .../strateo3d/Standard_0_4/s3d_std0.4_ACETATE_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PC_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PC_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PC_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_C.inst.cfg | 2 +- .../strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_A.inst.cfg | 2 +- .../strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_B.inst.cfg | 2 +- .../strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_A.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_C.inst.cfg | 2 +- .../strateo3d/Standard_0_4/s3d_std0.4_TPU98A_A.inst.cfg | 2 +- .../strateo3d/Standard_0_4/s3d_std0.4_TPU98A_B.inst.cfg | 2 +- .../strateo3d/Standard_0_4/s3d_std0.4_TPU98A_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_D.inst.cfg | 2 +- .../strateo3d/Standard_0_6/s3d_std0.6_ACETATE_B.inst.cfg | 2 +- .../strateo3d/Standard_0_6/s3d_std0.6_ACETATE_C.inst.cfg | 2 +- .../strateo3d/Standard_0_6/s3d_std0.6_ACETATE_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_D.inst.cfg | 2 +- .../strateo3d/Standard_0_6/s3d_std0.6_Nylon-1030_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PC_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PC_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PC_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_D.inst.cfg | 2 +- .../strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_B.inst.cfg | 2 +- .../strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_C.inst.cfg | 2 +- .../strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_B.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_D.inst.cfg | 2 +- .../strateo3d/Standard_0_6/s3d_std0.6_TPU98A_B.inst.cfg | 2 +- .../strateo3d/Standard_0_6/s3d_std0.6_TPU98A_C.inst.cfg | 2 +- .../strateo3d/Standard_0_6/s3d_std0.6_TPU98A_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PC_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PC_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PC_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_E.inst.cfg | 2 +- .../strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_C.inst.cfg | 2 +- .../strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_D.inst.cfg | 2 +- .../strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_E.inst.cfg | 2 +- .../strateo3d/Standard_0_8/s3d_std0.8_TPU98A_C.inst.cfg | 2 +- .../strateo3d/Standard_0_8/s3d_std0.8_TPU98A_D.inst.cfg | 2 +- .../strateo3d/Standard_0_8/s3d_std0.8_TPU98A_E.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_C.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_D.inst.cfg | 2 +- .../quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_ABS_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_ABS_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_ABS_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_ASA-X_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_ASA-X_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_ASA-X_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_BVOH_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_BVOH_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_BVOH_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_HIPS_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_HIPS_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_HIPS_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PA6CF_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PA6CF_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PA6CF_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PA6GF_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PA6GF_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PA6GF_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PETG_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PETG_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PETG_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PLA_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PLA_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PLA_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PVA-M_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PVA-M_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PVA-M_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PVA-S_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PVA-S_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_PVA-S_F.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_TPU98A_D.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_TPU98A_E.inst.cfg | 2 +- .../Standard_1_0_Experimental/s3d_std1.0_TPU98A_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_ABS_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_ABS_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_ABS_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_ASA-X_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_ASA-X_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_ASA-X_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_BVOH_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_BVOH_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_BVOH_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_HIPS_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_HIPS_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_HIPS_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PA6CF_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PA6CF_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PA6CF_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PA6GF_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PA6GF_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PA6GF_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PETG_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PETG_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PETG_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PLA_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PLA_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PLA_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PVA-M_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PVA-M_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PVA-M_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PVA-S_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PVA-S_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_PVA-S_H.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_TPU98A_F.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_TPU98A_G.inst.cfg | 2 +- .../Standard_1_2_Experimental/s3d_std1.2_TPU98A_H.inst.cfg | 2 +- .../tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg | 2 +- .../tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg | 2 +- .../tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg | 2 +- .../tizyx_evy_dual_global_Normal_Quality.inst.cfg | 2 +- .../tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PETG_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.8_PETG_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PETG_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.3mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.06mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.15mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.1mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_nylon_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_nylon_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_nylon_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.4mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.3mm.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.1mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.06mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.3mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.06mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.15mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.1mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_nylon_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_nylon_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_nylon_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.4mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.3mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.4mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.3mm.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.4mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.06mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.1mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.3mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.2mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.15mm.inst.cfg | 2 +- resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.2mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.15mm.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.2mm.inst.cfg | 2 +- resources/variants/liquid/liquid_vo08.inst.cfg | 2 +- resources/variants/strateo3d/strateo3d_high_temp_04.inst.cfg | 2 +- resources/variants/strateo3d/strateo3d_standard_04.inst.cfg | 2 +- resources/variants/strateo3d/strateo3d_standard_06.inst.cfg | 2 +- resources/variants/strateo3d/strateo3d_standard_08.inst.cfg | 2 +- resources/variants/strateo3d/strateo3d_standard_10.inst.cfg | 2 +- resources/variants/strateo3d/strateo3d_standard_12.inst.cfg | 2 +- resources/variants/ultimaker3_aa0.8.inst.cfg | 2 +- resources/variants/ultimaker3_bb0.8.inst.cfg | 2 +- resources/variants/ultimaker3_extended_aa0.8.inst.cfg | 2 +- resources/variants/ultimaker3_extended_bb0.8.inst.cfg | 2 +- resources/variants/ultimaker_s3_aa0.8.inst.cfg | 2 +- resources/variants/ultimaker_s3_bb0.8.inst.cfg | 2 +- resources/variants/ultimaker_s5_aa0.8.inst.cfg | 2 +- resources/variants/ultimaker_s5_bb0.8.inst.cfg | 2 +- resources/variants/ultimaker_s7_aa0.8.inst.cfg | 2 +- resources/variants/ultimaker_s7_bb0.8.inst.cfg | 2 +- 627 files changed, 628 insertions(+), 624 deletions(-) diff --git a/plugins/LegacyProfileReader/DictionaryOfDoom.json b/plugins/LegacyProfileReader/DictionaryOfDoom.json index 90e973b779..f65cc271d1 100644 --- a/plugins/LegacyProfileReader/DictionaryOfDoom.json +++ b/plugins/LegacyProfileReader/DictionaryOfDoom.json @@ -68,7 +68,7 @@ "meshfix_keep_open_polygons": "fix_horrible_use_open_bits", "magic_mesh_surface_mode": "\"surface\" if simple_mode else \"normal\"", "magic_spiralize": "spiralize", - "prime_tower_mode": "\"normal\" if wipe_tower else \"none\"", + "prime_tower_enable": "wipe_tower", "prime_tower_size": "math.sqrt(float(wipe_tower_volume) / float(layer_height))", "ooze_shield_enabled": "ooze_shield", "skin_overlap": "fill_overlap" diff --git a/resources/definitions/atmat_signal_pro_base.def.json b/resources/definitions/atmat_signal_pro_base.def.json index 0b8761a62c..cd59e1c169 100644 --- a/resources/definitions/atmat_signal_pro_base.def.json +++ b/resources/definitions/atmat_signal_pro_base.def.json @@ -110,7 +110,7 @@ "min_infill_area": { "value": "5.0" }, "minimum_polygon_circumference": { "value": "0.2" }, "optimize_wall_printing_order": { "value": "True" }, - "prime_tower_mode": { "value": "'normal'" }, + "prime_tower_enable": { "value": "True" }, "retraction_amount": { "value": "1" }, "retraction_combing": { "value": "'noskin'" }, "retraction_combing_max_distance": { "value": "10" }, diff --git a/resources/definitions/deltacomb_dc20flux.def.json b/resources/definitions/deltacomb_dc20flux.def.json index f76ba3e4cd..f81909dae5 100644 --- a/resources/definitions/deltacomb_dc20flux.def.json +++ b/resources/definitions/deltacomb_dc20flux.def.json @@ -31,8 +31,8 @@ "material_final_print_temperature": { "value": "material_print_temperature" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, + "prime_tower_enable": { "value": true }, "prime_tower_min_volume": { "value": "50" }, - "prime_tower_mode": { "value": "'normal'" }, "switch_extruder_retraction_amount": { "value": "0" } } } \ No newline at end of file diff --git a/resources/definitions/deltacomb_dc21flux.def.json b/resources/definitions/deltacomb_dc21flux.def.json index 3c2080a87b..dbcdf3ad37 100644 --- a/resources/definitions/deltacomb_dc21flux.def.json +++ b/resources/definitions/deltacomb_dc21flux.def.json @@ -31,8 +31,8 @@ "material_final_print_temperature": { "value": "material_print_temperature" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, + "prime_tower_enable": { "value": true }, "prime_tower_min_volume": { "value": "50" }, - "prime_tower_mode": { "value": "'normal'" }, "switch_extruder_retraction_amount": { "value": "0" } } } \ No newline at end of file diff --git a/resources/definitions/deltacomb_dc30flux.def.json b/resources/definitions/deltacomb_dc30flux.def.json index 69249e42fd..7ba4f4252d 100644 --- a/resources/definitions/deltacomb_dc30flux.def.json +++ b/resources/definitions/deltacomb_dc30flux.def.json @@ -31,8 +31,8 @@ "material_final_print_temperature": { "value": "material_print_temperature" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, + "prime_tower_enable": { "value": "True" }, "prime_tower_min_volume": { "value": "50" }, - "prime_tower_mode": { "value": "'normal'" }, "switch_extruder_retraction_amount": { "value": "0" } } } \ No newline at end of file diff --git a/resources/definitions/dxu_dual.def.json b/resources/definitions/dxu_dual.def.json index b81d148f80..6d30af005f 100644 --- a/resources/definitions/dxu_dual.def.json +++ b/resources/definitions/dxu_dual.def.json @@ -5,6 +5,7 @@ "overrides": { "machine_end_gcode": { "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \"G90 ;absolute positioning\\nM104 S0 T0 ;extruder heater off\\nM104 S0 T1\\nM140 S0 ;turn off bed\\nT0 ; move to the first head\\nM107 ;fan off\"" }, - "machine_start_gcode": { "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \";material_bed_temperature={material_bed_temperature} material_print_temperature={material_print_temperature} material_print_temperature_layer_0={material_print_temperature_layer_0}\\nM190 S{material_bed_temperature_layer_0}\\nM104 T0 S{material_standby_temperature, 0}\\nM104 T0 S{material_print_temperature_layer_0, 0}\\nG21 ;metric values\\nG90 ;absolute positioning\\nM82 ;set extruder to absolute mode\\nM107 ;start with the fan off\\nM200 D0 T0 ;reset filament diameter\\nM200 D0 T1\\nG28 ;home all\\nT1 ; move to the nozzle 2\\nG0 Z20 F2400 ;move the platform to 30mm\\nM109 T1 S{material_print_temperature_layer_0, 1}\\nG0 X210 Y20 F7200\\nG92 E0\\nG92 E-7.0 ;prime distance\\nG1 E0 F45 ;purge nozzle\\nG1 E-6.5 F1500 ; retract\\nT0 ; move to the nozzle 1\\nM104 T1 S{material_standby_temperature, 1}\\nG0 Z20 F2400\\nM109 T0 S{material_print_temperature_layer_0, 0}\\nG0 X210 Y20 F7200\\nG92 E0\\nG92 E-7.0\\nG1 E0 F45 ;purge nozzle\\nG1 E-6.5 F1500\\nM104 T0 S{material_standby_temperature, 0}\\nT{initial_extruder_nr} ;switch to the first nozzle used for print\\nM109 T{initial_extruder_nr} S{material_print_temperature_layer_0, initial_extruder_nr}\\nM400 ;finish all moves\\nG1 E0 F1500\\nG92 E0\\n;end of startup sequence\\n\"" } + "machine_start_gcode": { "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \";material_bed_temperature={material_bed_temperature} material_print_temperature={material_print_temperature} material_print_temperature_layer_0={material_print_temperature_layer_0}\\nM190 S{material_bed_temperature_layer_0}\\nM104 T0 S{material_standby_temperature, 0}\\nM104 T0 S{material_print_temperature_layer_0, 0}\\nG21 ;metric values\\nG90 ;absolute positioning\\nM82 ;set extruder to absolute mode\\nM107 ;start with the fan off\\nM200 D0 T0 ;reset filament diameter\\nM200 D0 T1\\nG28 ;home all\\nT1 ; move to the nozzle 2\\nG0 Z20 F2400 ;move the platform to 30mm\\nM109 T1 S{material_print_temperature_layer_0, 1}\\nG0 X210 Y20 F7200\\nG92 E0\\nG92 E-7.0 ;prime distance\\nG1 E0 F45 ;purge nozzle\\nG1 E-6.5 F1500 ; retract\\nT0 ; move to the nozzle 1\\nM104 T1 S{material_standby_temperature, 1}\\nG0 Z20 F2400\\nM109 T0 S{material_print_temperature_layer_0, 0}\\nG0 X210 Y20 F7200\\nG92 E0\\nG92 E-7.0\\nG1 E0 F45 ;purge nozzle\\nG1 E-6.5 F1500\\nM104 T0 S{material_standby_temperature, 0}\\nT{initial_extruder_nr} ;switch to the first nozzle used for print\\nM109 T{initial_extruder_nr} S{material_print_temperature_layer_0, initial_extruder_nr}\\nM400 ;finish all moves\\nG1 E0 F1500\\nG92 E0\\n;end of startup sequence\\n\"" }, + "prime_tower_enable": { "default_value": true } } } \ No newline at end of file diff --git a/resources/definitions/elegoo_neptune_2D.def.json b/resources/definitions/elegoo_neptune_2D.def.json index dbdf066b21..c9aa5a0184 100644 --- a/resources/definitions/elegoo_neptune_2D.def.json +++ b/resources/definitions/elegoo_neptune_2D.def.json @@ -55,6 +55,7 @@ "settable_per_extruder": false }, "prime_blob_enable": { "default_value": false }, + "prime_tower_enable": { "default_value": true }, "prime_tower_min_volume": { "default_value": 90 }, "prime_tower_size": { "default_value": 30 }, "raft_airgap": { "default_value": 0.25 }, diff --git a/resources/definitions/leapfrog_bolt_pro.def.json b/resources/definitions/leapfrog_bolt_pro.def.json index 449967072f..e4a13217e5 100644 --- a/resources/definitions/leapfrog_bolt_pro.def.json +++ b/resources/definitions/leapfrog_bolt_pro.def.json @@ -80,7 +80,7 @@ "material_final_print_temperature": { "value": "default_material_print_temperature" }, "material_initial_print_temperature": { "value": "default_material_print_temperature" }, "material_standby_temperature": { "enabled": false }, - "prime_tower_mode": { "resolve": "'normal' if extruders_enabled_count > 1 else 'none'" }, + "prime_tower_enable": { "resolve": "extruders_enabled_count > 1" }, "retraction_amount": { "default_value": 2 }, "retraction_combing": { "value": "'all'" }, "skirt_line_count": { "default_value": 3 }, diff --git a/resources/definitions/lotmaxx_sc60.def.json b/resources/definitions/lotmaxx_sc60.def.json index 64220c372e..f4ce358be1 100644 --- a/resources/definitions/lotmaxx_sc60.def.json +++ b/resources/definitions/lotmaxx_sc60.def.json @@ -44,8 +44,8 @@ "machine_width": { "default_value": 235 }, "meshfix_maximum_resolution": { "value": 0.25 }, "optimize_wall_printing_order": { "value": true }, + "prime_tower_enable": { "value": true }, "prime_tower_min_volume": { "value": 30 }, - "prime_tower_mode": { "value": "'normal'" }, "retract_at_layer_change": { "value": false }, "retraction_amount": { "value": 4.5 }, "roofing_layer_count": { "value": 1 }, diff --git a/resources/definitions/strateo3d_IDEX420.def.json b/resources/definitions/strateo3d_IDEX420.def.json index 47a3af714b..d4236c126e 100644 --- a/resources/definitions/strateo3d_IDEX420.def.json +++ b/resources/definitions/strateo3d_IDEX420.def.json @@ -112,6 +112,7 @@ "machine_use_extruder_offset_to_offset_coords": { "default_value": false }, "machine_width": { "default_value": 420 }, "material_diameter": { "default_value": 1.75 }, + "prime_tower_enable": { "default_value": true }, "prime_tower_min_volume": { "default_value": 35.6 }, "raft_acceleration": { "value": "machine_acceleration" }, "raft_base_acceleration": { "value": "machine_acceleration" }, diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index 43f718e2db..17a4b6045e 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -149,6 +149,7 @@ "enabled": true, "value": "resolveOrValue('print_sequence') != 'one_at_a_time'" }, + "prime_tower_enable": { "default_value": true }, "prime_tower_position_x": { "value": "185" }, "prime_tower_wipe_enabled": { "default_value": false }, "retraction_amount": { "value": "6.5" }, diff --git a/resources/definitions/ultimaker_method_base.def.json b/resources/definitions/ultimaker_method_base.def.json index 2c417913d5..983af7ea27 100644 --- a/resources/definitions/ultimaker_method_base.def.json +++ b/resources/definitions/ultimaker_method_base.def.json @@ -345,9 +345,9 @@ "prime_tower_base_curve_magnitude": { "value": 2 }, "prime_tower_base_height": { "value": 6 }, "prime_tower_base_size": { "value": 10 }, + "prime_tower_enable": { "value": false }, "prime_tower_flow": { "value": "material_flow" }, "prime_tower_line_width": { "value": 1 }, - "prime_tower_mode": { "value": "none" }, "prime_tower_raft_base_line_spacing": { "value": "raft_base_line_width" }, "prime_tower_wipe_enabled": { "value": true }, "print_sequence": { "enabled": false }, diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json index ca40788581..483825df5a 100644 --- a/resources/definitions/ultimaker_s3.def.json +++ b/resources/definitions/ultimaker_s3.def.json @@ -103,7 +103,7 @@ "default_value": false, "enabled": true }, - "prime_tower_mode": { "value": "'normal'" }, + "prime_tower_enable": { "value": "True" }, "retraction_amount": { "value": "6.5" }, "retraction_hop": { "value": "2" }, "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" }, diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index 73854f2890..cd48c4fd38 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -104,7 +104,7 @@ "default_value": false, "enabled": true }, - "prime_tower_mode": { "value": "'normal'" }, + "prime_tower_enable": { "value": "True" }, "retraction_amount": { "value": "6.5" }, "retraction_combing": { "value": "'no_outer_surfaces'" }, "retraction_hop": { "value": "2" }, diff --git a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg index 54807c88b3..f4da80ded9 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg @@ -38,8 +38,8 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True +prime_tower_enable = True prime_tower_min_volume = 6 -prime_tower_mode = normal prime_tower_size = 20 prime_tower_wipe_enabled = True retract_at_layer_change = False diff --git a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg index 312313c9c5..a052562cd3 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg @@ -38,8 +38,8 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True +prime_tower_enable = True prime_tower_min_volume = 6 -prime_tower_mode = normal prime_tower_size = 20 prime_tower_wipe_enabled = True retract_at_layer_change = False diff --git a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg index 485e82345a..145cd34ead 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg @@ -36,8 +36,8 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True +prime_tower_enable = True prime_tower_min_volume = 6 -prime_tower_mode = normal prime_tower_size = 20 prime_tower_wipe_enabled = True retract_at_layer_change = False diff --git a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg index 7fb90fd093..e6e2cb78a0 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg @@ -36,8 +36,8 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True +prime_tower_enable = True prime_tower_min_volume = 6 -prime_tower_mode = normal prime_tower_size = 20 prime_tower_wipe_enabled = True retract_at_layer_change = False diff --git a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg index ce3fe8c60b..56587fe883 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg @@ -35,8 +35,8 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True +prime_tower_enable = True prime_tower_min_volume = 6 -prime_tower_mode = normal prime_tower_size = 20 prime_tower_wipe_enabled = True retract_at_layer_change = False diff --git a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg index a95c6ce5d3..10353f6110 100644 --- a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg +++ b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg @@ -35,8 +35,8 @@ line_width = 0.4 min_infill_area = 0 optimize_wall_printing_order = True prime_tower_brim_enable = True +prime_tower_enable = True prime_tower_min_volume = 6 -prime_tower_mode = normal prime_tower_size = 20 prime_tower_wipe_enabled = True retract_at_layer_change = False diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_A.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_A.inst.cfg index 2e0d11b6eb..33b5c2c111 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_A.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_A.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_B.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_B.inst.cfg index fc487f97e4..5be0dc9527 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_B.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_B.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_C.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_C.inst.cfg index 3eef71ef41..76aa867f8f 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_C.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_C.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_D.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_D.inst.cfg index 35534c090e..20bb125cd9 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_D.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_D.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_E.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_E.inst.cfg index d61061ff55..cc0224cf23 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_E.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.40_PVA_E.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_C.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_C.inst.cfg index df09da8d68..ec2ebdc647 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_C.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_C.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_D.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_D.inst.cfg index be38167856..136ec93d16 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_D.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_D.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_E.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_E.inst.cfg index 24299680ad..3a0a94782c 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_E.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_E.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_F.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_F.inst.cfg index 2c89d60680..719a4bdcbd 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_F.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_DBE0.60_PVA_F.inst.cfg @@ -13,7 +13,7 @@ variant = DBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_A.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_A.inst.cfg index c3cbb96ae7..4486a1d3bc 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_A.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_A.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_B.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_B.inst.cfg index 5e062678c3..b938502e85 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_B.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_B.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_C.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_C.inst.cfg index b9651ddf53..3b88ca6b67 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_C.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_C.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_D.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_D.inst.cfg index 3e36641037..4134717770 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_D.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_D.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_E.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_E.inst.cfg index bdb9ca3ce5..e267e7c6eb 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_E.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.40_PVA_E.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.40mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_C.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_C.inst.cfg index 741e6c613a..35e2e07b41 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_C.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_C.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_D.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_D.inst.cfg index c8421e34a5..dd944cbfd1 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_D.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_D.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_E.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_E.inst.cfg index 39bafd45c6..8aa462e206 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_E.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_E.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_F.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_F.inst.cfg index c73c5baecd..0691a01deb 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_F.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_FBE0.60_PVA_F.inst.cfg @@ -13,7 +13,7 @@ variant = FBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_D.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_D.inst.cfg index b9f63dff35..a4d0582c3a 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_D.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_D.inst.cfg @@ -13,7 +13,7 @@ variant = V-DBE 0.80mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_E.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_E.inst.cfg index 86e03b328c..831e17c018 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_E.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_E.inst.cfg @@ -13,7 +13,7 @@ variant = V-DBE 0.80mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_F.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_F.inst.cfg index b51b54cb62..d9a57d6012 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_F.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_F.inst.cfg @@ -13,7 +13,7 @@ variant = V-DBE 0.80mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_G.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_G.inst.cfg index 82ad7d5d49..8408fbc014 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_G.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VDBE0.80_PVA_G.inst.cfg @@ -13,7 +13,7 @@ variant = V-DBE 0.80mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_D.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_D.inst.cfg index dcc7dfcd48..18c813a79a 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_D.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_D.inst.cfg @@ -13,7 +13,7 @@ variant = V-FBE 0.80mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_E.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_E.inst.cfg index d0fb6ec6e2..660c536a5e 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_E.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_E.inst.cfg @@ -13,7 +13,7 @@ variant = V-FBE 0.60mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_F.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_F.inst.cfg index 1817111e2a..5dbea58c49 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_F.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_F.inst.cfg @@ -13,7 +13,7 @@ variant = V-FBE 0.80mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_G.inst.cfg b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_G.inst.cfg index 8ba8f905d6..9bfd649e99 100644 --- a/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_G.inst.cfg +++ b/resources/quality/deltacomb/PVA/deltacomb_VFBE0.80_PVA_G.inst.cfg @@ -13,7 +13,7 @@ variant = V-FBE 0.80mm [values] brim_replaces_support = False material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False support_bottom_distance = =support_z_distance support_bottom_stair_step_height = 0 support_bottom_stair_step_width = 0 diff --git a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.10.inst.cfg b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.10.inst.cfg index 82cfb879dd..d5a2f73729 100644 --- a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.10.inst.cfg +++ b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.10.inst.cfg @@ -13,7 +13,7 @@ variant = 0.40mm_Elegoo_Nozzle [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed skin_overlap = 10 diff --git a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.15.inst.cfg b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.15.inst.cfg index 3b8cc5bb5f..e86f454664 100644 --- a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.15.inst.cfg +++ b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.15.inst.cfg @@ -13,7 +13,7 @@ variant = 0.40mm_Elegoo_Nozzle [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 70 diff --git a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.20.inst.cfg b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.20.inst.cfg index 23e6730f11..db7e5a43c7 100644 --- a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.20.inst.cfg +++ b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.20.inst.cfg @@ -17,7 +17,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed skin_overlap = 20 diff --git a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.30.inst.cfg b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.30.inst.cfg index f305930448..d84cc9e656 100644 --- a/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.30.inst.cfg +++ b/resources/quality/elegoo/base/pla/nozzle_0_40/elegoo_pla_nozzle_0.40_layer_0.30.inst.cfg @@ -20,7 +20,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed skin_overlap = 20 diff --git a/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.30.inst.cfg b/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.30.inst.cfg index cfc8fb9b32..b6c63fad0f 100644 --- a/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.30.inst.cfg +++ b/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.30.inst.cfg @@ -15,7 +15,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.40.inst.cfg b/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.40.inst.cfg index 52ebc5566b..1e3eec080a 100644 --- a/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.40.inst.cfg +++ b/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.40.inst.cfg @@ -15,7 +15,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = normal +prime_tower_enable = True speed_infill = =math.ceil(speed_print * 35 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.60.inst.cfg b/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.60.inst.cfg index 683bfe317a..09bc57ffea 100644 --- a/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.60.inst.cfg +++ b/resources/quality/elegoo/base/pla/nozzle_0_80/elegoo_pla_nozzle_0.80_layer_0.60.inst.cfg @@ -15,7 +15,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = normal +prime_tower_enable = True speed_infill = =math.ceil(speed_print * 35 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.10.inst.cfg b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.10.inst.cfg index 40cc88859a..66eb9f49c0 100644 --- a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.10.inst.cfg +++ b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.10.inst.cfg @@ -11,7 +11,7 @@ type = quality variant = 0.40mm_Elegoo_Nozzle [values] -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 skin_overlap = 10 speed_topbottom = =math.ceil(speed_print * 35 / 70) diff --git a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.15.inst.cfg b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.15.inst.cfg index 6043a569d0..209ce52fa2 100644 --- a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.15.inst.cfg +++ b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.15.inst.cfg @@ -11,7 +11,7 @@ type = quality variant = 0.40mm_Elegoo_Nozzle [values] -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 speed_topbottom = =math.ceil(speed_print * 35 / 70) speed_wall = =math.ceil(speed_print * 45 / 70) diff --git a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.20.inst.cfg b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.20.inst.cfg index 3076011555..9805a1ae5a 100644 --- a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.20.inst.cfg +++ b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.20.inst.cfg @@ -12,7 +12,7 @@ variant = 0.40mm_Elegoo_Nozzle [values] infill_sparse_density = 15 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 skin_overlap = 20 top_bottom_thickness = 0.8 diff --git a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.30.inst.cfg b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.30.inst.cfg index 562b84bf02..cb6ca323e6 100644 --- a/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.30.inst.cfg +++ b/resources/quality/elegoo/neptune_4/pla/nozzle_0_40/elegoo_n4_pla_nozzle_0.40_layer_0.30.inst.cfg @@ -14,7 +14,7 @@ variant = 0.40mm_Elegoo_Nozzle infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_sparse_density = 15 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 skin_overlap = 20 top_bottom_thickness = 0.9 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg index 7178468de7..d9f0a0aaea 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg @@ -30,7 +30,7 @@ material_standby_temperature = =material_print_temperature - 10 ooze_shield_angle = 20 ooze_shield_dist = 4 ooze_shield_enabled = True -prime_tower_mode = none +prime_tower_enable = False retraction_amount = 0.75 retraction_combing = off retraction_speed = 70 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg index cb966418ec..620622e555 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg @@ -30,7 +30,7 @@ material_standby_temperature = =material_print_temperature - 10 ooze_shield_angle = 20 ooze_shield_dist = 4 ooze_shield_enabled = True -prime_tower_mode = none +prime_tower_enable = False retraction_amount = 0.75 retraction_combing = off retraction_speed = 70 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg index 23733ea85e..05eeb68305 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg @@ -30,7 +30,7 @@ material_standby_temperature = =material_print_temperature - 10 ooze_shield_angle = 20 ooze_shield_dist = 4 ooze_shield_enabled = True -prime_tower_mode = none +prime_tower_enable = False retraction_amount = 0.75 retraction_combing = off retraction_speed = 70 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg index 01577a46d0..b63ef09a6b 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg @@ -29,7 +29,7 @@ material_standby_temperature = =material_print_temperature - 10 ooze_shield_angle = 20 ooze_shield_dist = 4 ooze_shield_enabled = True -prime_tower_mode = none +prime_tower_enable = False retraction_amount = 0.75 retraction_combing = off retraction_speed = 70 diff --git a/resources/quality/liquid/liquid_vo0.4_ABS_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_ABS_Draft_Print.inst.cfg index dc279c6232..038affd56f 100644 --- a/resources/quality/liquid/liquid_vo0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_ABS_Draft_Print.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_initial_print_temperature = =material_print_temperature - 15 material_print_temperature = =default_material_print_temperature + 20 -prime_tower_mode = none +prime_tower_enable = False skin_overlap = 20 speed_infill = =math.ceil(speed_print * 50 / 60) speed_layer_0 = =math.ceil(speed_print * 20 / 60) diff --git a/resources/quality/liquid/liquid_vo0.4_ABS_Fast_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_ABS_Fast_Print.inst.cfg index d5684e3ccb..5091d36813 100644 --- a/resources/quality/liquid/liquid_vo0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_ABS_Fast_Print.inst.cfg @@ -19,7 +19,7 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_initial_print_temperature = =material_print_temperature - 15 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = none +prime_tower_enable = False speed_infill = =math.ceil(speed_print * 45 / 60) speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_print = 60 diff --git a/resources/quality/liquid/liquid_vo0.4_ABS_High_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_ABS_High_Quality.inst.cfg index bd43496eb4..0420284fa8 100644 --- a/resources/quality/liquid/liquid_vo0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_ABS_High_Quality.inst.cfg @@ -19,7 +19,7 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_initial_print_temperature = =material_print_temperature - 15 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = none +prime_tower_enable = False speed_infill = =math.ceil(speed_print * 40 / 50) speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_print = 50 diff --git a/resources/quality/liquid/liquid_vo0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_ABS_Normal_Quality.inst.cfg index 420b8a9d9c..927bdbe7b9 100644 --- a/resources/quality/liquid/liquid_vo0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_ABS_Normal_Quality.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_initial_print_temperature = =material_print_temperature - 15 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = none +prime_tower_enable = False speed_infill = =math.ceil(speed_print * 40 / 55) speed_layer_0 = =math.ceil(speed_print * 20 / 55) speed_print = 55 diff --git a/resources/quality/liquid/liquid_vo0.4_PC_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PC_Draft_Print.inst.cfg index ec682feabd..02d1292c17 100644 --- a/resources/quality/liquid/liquid_vo0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PC_Draft_Print.inst.cfg @@ -36,7 +36,7 @@ material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) diff --git a/resources/quality/liquid/liquid_vo0.4_PC_Fast_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PC_Fast_Print.inst.cfg index 591e6e2964..b1c540d01e 100644 --- a/resources/quality/liquid/liquid_vo0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PC_Fast_Print.inst.cfg @@ -35,7 +35,7 @@ material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) diff --git a/resources/quality/liquid/liquid_vo0.4_PC_High_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PC_High_Quality.inst.cfg index 604e491db3..6aac1f4972 100644 --- a/resources/quality/liquid/liquid_vo0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PC_High_Quality.inst.cfg @@ -36,7 +36,7 @@ material_print_temperature = =default_material_print_temperature - 10 material_standby_temperature = 100 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) diff --git a/resources/quality/liquid/liquid_vo0.4_PC_Normal_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PC_Normal_Quality.inst.cfg index e610dcf495..e831dfb254 100644 --- a/resources/quality/liquid/liquid_vo0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PC_Normal_Quality.inst.cfg @@ -34,7 +34,7 @@ material_initial_print_temperature = =material_print_temperature - 5 material_standby_temperature = 100 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) diff --git a/resources/quality/liquid/liquid_vo0.4_PETG_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PETG_Draft_Print.inst.cfg index 37d77be67c..6e0ac10718 100644 --- a/resources/quality/liquid/liquid_vo0.4_PETG_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PETG_Draft_Print.inst.cfg @@ -24,7 +24,7 @@ machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False skin_overlap = 20 speed_layer_0 = =math.ceil(speed_print * 20 / 70) speed_print = 70 diff --git a/resources/quality/liquid/liquid_vo0.4_PETG_Fast_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PETG_Fast_Print.inst.cfg index f27381d0e3..5e84c3e1a1 100644 --- a/resources/quality/liquid/liquid_vo0.4_PETG_Fast_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PETG_Fast_Print.inst.cfg @@ -20,7 +20,7 @@ layer_height_0 = 0.2 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_print = 60 speed_topbottom = =math.ceil(speed_print * 35 / 60) diff --git a/resources/quality/liquid/liquid_vo0.4_PETG_High_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PETG_High_Quality.inst.cfg index 1c49689b2a..8974dcbb03 100644 --- a/resources/quality/liquid/liquid_vo0.4_PETG_High_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PETG_High_Quality.inst.cfg @@ -22,7 +22,7 @@ machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False skin_overlap = 10 speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_print = 50 diff --git a/resources/quality/liquid/liquid_vo0.4_PETG_Normal_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PETG_Normal_Quality.inst.cfg index 82b3f109f4..cbada0be18 100644 --- a/resources/quality/liquid/liquid_vo0.4_PETG_Normal_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PETG_Normal_Quality.inst.cfg @@ -21,7 +21,7 @@ layer_height_0 = 0.2 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False skin_overlap = 10 speed_layer_0 = =math.ceil(speed_print * 20 / 70) top_bottom_thickness = 1 diff --git a/resources/quality/liquid/liquid_vo0.4_PLA_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PLA_Draft_Print.inst.cfg index e6e18da492..70817b06e3 100644 --- a/resources/quality/liquid/liquid_vo0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PLA_Draft_Print.inst.cfg @@ -24,7 +24,7 @@ machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False skin_overlap = 20 speed_layer_0 = =math.ceil(speed_print * 20 / 70) speed_print = 70 diff --git a/resources/quality/liquid/liquid_vo0.4_PLA_Fast_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PLA_Fast_Print.inst.cfg index 50b8662604..b6991202b2 100644 --- a/resources/quality/liquid/liquid_vo0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PLA_Fast_Print.inst.cfg @@ -20,7 +20,7 @@ layer_height_0 = 0.2 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_print = 60 speed_topbottom = =math.ceil(speed_print * 35 / 60) diff --git a/resources/quality/liquid/liquid_vo0.4_PLA_High_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PLA_High_Quality.inst.cfg index baf7af3fdc..930f5cf3fd 100644 --- a/resources/quality/liquid/liquid_vo0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PLA_High_Quality.inst.cfg @@ -22,7 +22,7 @@ machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False skin_overlap = 10 speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_print = 50 diff --git a/resources/quality/liquid/liquid_vo0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PLA_Normal_Quality.inst.cfg index bf5fb6b1c9..6595446fee 100644 --- a/resources/quality/liquid/liquid_vo0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PLA_Normal_Quality.inst.cfg @@ -21,7 +21,7 @@ layer_height_0 = 0.2 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_standby_temperature = 100 -prime_tower_mode = none +prime_tower_enable = False skin_overlap = 10 speed_layer_0 = =math.ceil(speed_print * 20 / 70) top_bottom_thickness = 1 diff --git a/resources/quality/liquid/liquid_vo0.4_PP_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PP_Draft_Print.inst.cfg index 86216145d9..1904758532 100644 --- a/resources/quality/liquid/liquid_vo0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PP_Draft_Print.inst.cfg @@ -36,7 +36,7 @@ material_print_temperature = =default_material_print_temperature - 5 material_print_temperature_layer_0 = =material_print_temperature + 5 material_standby_temperature = 100 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 12 diff --git a/resources/quality/liquid/liquid_vo0.4_PP_Fast_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PP_Fast_Print.inst.cfg index 7d4abe2d3f..2a0a5729ec 100644 --- a/resources/quality/liquid/liquid_vo0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PP_Fast_Print.inst.cfg @@ -36,7 +36,7 @@ material_print_temperature = =default_material_print_temperature - 13 material_print_temperature_layer_0 = =material_print_temperature + 3 material_standby_temperature = 100 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 12 diff --git a/resources/quality/liquid/liquid_vo0.4_PP_Normal_Quality.inst.cfg b/resources/quality/liquid/liquid_vo0.4_PP_Normal_Quality.inst.cfg index 3aace2ea38..304c4f17f0 100644 --- a/resources/quality/liquid/liquid_vo0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.4_PP_Normal_Quality.inst.cfg @@ -36,7 +36,7 @@ material_print_temperature = =default_material_print_temperature - 15 material_print_temperature_layer_0 = =material_print_temperature + 3 material_standby_temperature = 100 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 12 diff --git a/resources/quality/liquid/liquid_vo0.6_PETG_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.6_PETG_Draft_Print.inst.cfg index 04b769ec81..bc712bf999 100644 --- a/resources/quality/liquid/liquid_vo0.6_PETG_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.6_PETG_Draft_Print.inst.cfg @@ -26,7 +26,7 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15 material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 -prime_tower_mode = normal +prime_tower_enable = True retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.6_PETG_Fast_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.6_PETG_Fast_Print.inst.cfg index 5f7216e9b8..c51c068ae2 100644 --- a/resources/quality/liquid/liquid_vo0.6_PETG_Fast_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.6_PETG_Fast_Print.inst.cfg @@ -26,7 +26,7 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15 material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 -prime_tower_mode = normal +prime_tower_enable = True retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.6_PLA_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.6_PLA_Draft_Print.inst.cfg index 0f4b43d1ad..3b6749dfb9 100644 --- a/resources/quality/liquid/liquid_vo0.6_PLA_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.6_PLA_Draft_Print.inst.cfg @@ -26,7 +26,7 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15 material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 -prime_tower_mode = normal +prime_tower_enable = True retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.6_PLA_Fast_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.6_PLA_Fast_Print.inst.cfg index bf262d9b0d..45418e5994 100644 --- a/resources/quality/liquid/liquid_vo0.6_PLA_Fast_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.6_PLA_Fast_Print.inst.cfg @@ -26,7 +26,7 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15 material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 -prime_tower_mode = normal +prime_tower_enable = True retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.8_CPE_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_CPE_Draft_Print.inst.cfg index 6f15ddf686..90424ee65e 100644 --- a/resources/quality/liquid/liquid_vo0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_CPE_Draft_Print.inst.cfg @@ -17,7 +17,7 @@ jerk_travel = 20 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 15 material_standby_temperature = 100 -prime_tower_mode = normal +prime_tower_enable = True retraction_combing_max_distance = 50 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) diff --git a/resources/quality/liquid/liquid_vo0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_CPE_Superdraft_Print.inst.cfg index e56ee10a98..7857ed00e7 100644 --- a/resources/quality/liquid/liquid_vo0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_CPE_Superdraft_Print.inst.cfg @@ -17,7 +17,7 @@ jerk_travel = 20 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 20 material_standby_temperature = 100 -prime_tower_mode = normal +prime_tower_enable = True retraction_combing_max_distance = 50 speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/liquid/liquid_vo0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_CPE_Verydraft_Print.inst.cfg index c8c93a744f..4194c6f3b7 100644 --- a/resources/quality/liquid/liquid_vo0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_CPE_Verydraft_Print.inst.cfg @@ -17,7 +17,7 @@ jerk_travel = 20 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 17 material_standby_temperature = 100 -prime_tower_mode = normal +prime_tower_enable = True retraction_combing_max_distance = 50 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) diff --git a/resources/quality/liquid/liquid_vo0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_Nylon_Draft_Print.inst.cfg index 70db87df10..87dd876588 100644 --- a/resources/quality/liquid/liquid_vo0.8_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_Nylon_Draft_Print.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_standby_temperature = 100 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True raft_acceleration = =acceleration_layer_0 raft_airgap = =round(layer_height_0 * 0.85, 2) raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) diff --git a/resources/quality/liquid/liquid_vo0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_Nylon_Superdraft_Print.inst.cfg index a134533c46..891a20540d 100644 --- a/resources/quality/liquid/liquid_vo0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_Nylon_Superdraft_Print.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_standby_temperature = 100 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True raft_acceleration = =acceleration_layer_0 raft_airgap = =round(layer_height_0 * 0.85, 2) raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) diff --git a/resources/quality/liquid/liquid_vo0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_Nylon_Verydraft_Print.inst.cfg index d8c5450478..e009094760 100644 --- a/resources/quality/liquid/liquid_vo0.8_Nylon_Verydraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_Nylon_Verydraft_Print.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_standby_temperature = 100 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True raft_acceleration = =acceleration_layer_0 raft_airgap = =round(layer_height_0 * 0.85, 2) raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) diff --git a/resources/quality/liquid/liquid_vo0.8_PETG_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PETG_Draft_Print.inst.cfg index f941d5a55d..947c042b8c 100644 --- a/resources/quality/liquid/liquid_vo0.8_PETG_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PETG_Draft_Print.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_heat_up_speed = 1.6 material_final_print_temperature = =max(-273.15, material_print_temperature - 15) material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.8_PETG_Superdraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PETG_Superdraft_Print.inst.cfg index d96bf8d17e..08cb14cb26 100644 --- a/resources/quality/liquid/liquid_vo0.8_PETG_Superdraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PETG_Superdraft_Print.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_heat_up_speed = 1.6 material_final_print_temperature = =max(-273.15, material_print_temperature - 15) material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = normal +prime_tower_enable = True raft_margin = 10 retract_at_layer_change = False speed_print = 45 diff --git a/resources/quality/liquid/liquid_vo0.8_PETG_Verydraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PETG_Verydraft_Print.inst.cfg index 53142e5348..187ed1f212 100644 --- a/resources/quality/liquid/liquid_vo0.8_PETG_Verydraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PETG_Verydraft_Print.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_heat_up_speed = 1.6 material_final_print_temperature = =max(-273.15, material_print_temperature - 15) material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.8_PLA_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PLA_Draft_Print.inst.cfg index 5a4cb62ee2..10b6e8185a 100644 --- a/resources/quality/liquid/liquid_vo0.8_PLA_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PLA_Draft_Print.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_heat_up_speed = 1.6 material_final_print_temperature = =max(-273.15, material_print_temperature - 15) material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PLA_Superdraft_Print.inst.cfg index 4168b05c61..ed0fc7fd8a 100644 --- a/resources/quality/liquid/liquid_vo0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PLA_Superdraft_Print.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_heat_up_speed = 1.6 material_final_print_temperature = =max(-273.15, material_print_temperature - 15) material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = normal +prime_tower_enable = True raft_margin = 10 retract_at_layer_change = False speed_print = 45 diff --git a/resources/quality/liquid/liquid_vo0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PLA_Verydraft_Print.inst.cfg index af930c749a..9def9ecb97 100644 --- a/resources/quality/liquid/liquid_vo0.8_PLA_Verydraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PLA_Verydraft_Print.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_heat_up_speed = 1.6 material_final_print_temperature = =max(-273.15, material_print_temperature - 15) material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True retract_at_layer_change = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/liquid/liquid_vo0.8_PP_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PP_Draft_Print.inst.cfg index dab7612a6c..4c3f60a240 100644 --- a/resources/quality/liquid/liquid_vo0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PP_Draft_Print.inst.cfg @@ -26,9 +26,9 @@ material_print_temperature = =default_material_print_temperature - 2 material_print_temperature_layer_0 = =default_material_print_temperature + 2 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 10 -prime_tower_mode = normal retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/liquid/liquid_vo0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PP_Superdraft_Print.inst.cfg index 7ec446e803..1b7c05ac3c 100644 --- a/resources/quality/liquid/liquid_vo0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PP_Superdraft_Print.inst.cfg @@ -26,9 +26,9 @@ material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature + 2 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 20 -prime_tower_mode = normal retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/liquid/liquid_vo0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_PP_Verydraft_Print.inst.cfg index 9913ea3779..7cbb60c3aa 100644 --- a/resources/quality/liquid/liquid_vo0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_PP_Verydraft_Print.inst.cfg @@ -25,9 +25,9 @@ material_bed_temperature_layer_0 = =material_bed_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 2 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 15 -prime_tower_mode = normal retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/liquid/liquid_vo0.8_TPU_Draft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_TPU_Draft_Print.inst.cfg index 54d9c23b98..4994e3f9f4 100644 --- a/resources/quality/liquid/liquid_vo0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_TPU_Draft_Print.inst.cfg @@ -30,8 +30,8 @@ material_print_temperature = =default_material_print_temperature - 2 material_print_temperature_layer_0 = =material_print_temperature + 19 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 -prime_tower_mode = normal retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/liquid/liquid_vo0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_TPU_Superdraft_Print.inst.cfg index 289e9d48b7..fd15d041b8 100644 --- a/resources/quality/liquid/liquid_vo0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_TPU_Superdraft_Print.inst.cfg @@ -31,8 +31,8 @@ material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =material_print_temperature + 15 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 -prime_tower_mode = normal retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/liquid/liquid_vo0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/liquid/liquid_vo0.8_TPU_Verydraft_Print.inst.cfg index c8cad9bb3f..5c88fb165f 100644 --- a/resources/quality/liquid/liquid_vo0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/liquid/liquid_vo0.8_TPU_Verydraft_Print.inst.cfg @@ -30,8 +30,8 @@ material_initial_print_temperature = =material_print_temperature material_print_temperature_layer_0 = =material_print_temperature + 17 material_standby_temperature = 100 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 -prime_tower_mode = normal retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/nps/nps_ABS_B.inst.cfg b/resources/quality/nps/nps_ABS_B.inst.cfg index 520bda4b05..3f700405bd 100644 --- a/resources/quality/nps/nps_ABS_B.inst.cfg +++ b/resources/quality/nps/nps_ABS_B.inst.cfg @@ -22,7 +22,7 @@ material_bed_temperature = 100 material_flow = 96 material_print_temperature = =default_material_print_temperature + 13 material_print_temperature_layer_0 = =243 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/nps/nps_ABS_C.inst.cfg b/resources/quality/nps/nps_ABS_C.inst.cfg index 1131f61d36..6138e4004c 100644 --- a/resources/quality/nps/nps_ABS_C.inst.cfg +++ b/resources/quality/nps/nps_ABS_C.inst.cfg @@ -22,7 +22,7 @@ material_bed_temperature = 100 material_flow = 91 material_print_temperature = =default_material_print_temperature + 15 material_print_temperature_layer_0 = =245 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/nps/nps_PC_A.inst.cfg b/resources/quality/nps/nps_PC_A.inst.cfg index 90cc71d951..8665f8ceae 100644 --- a/resources/quality/nps/nps_PC_A.inst.cfg +++ b/resources/quality/nps/nps_PC_A.inst.cfg @@ -32,7 +32,7 @@ material_bed_temperature = 110 material_flow = 100 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =280 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/nps/nps_PC_B.inst.cfg b/resources/quality/nps/nps_PC_B.inst.cfg index 3761d802d7..9ccb5cea53 100644 --- a/resources/quality/nps/nps_PC_B.inst.cfg +++ b/resources/quality/nps/nps_PC_B.inst.cfg @@ -32,7 +32,7 @@ material_bed_temperature = 110 material_flow = 88 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = 275 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/nps/nps_PC_C.inst.cfg b/resources/quality/nps/nps_PC_C.inst.cfg index 85752e78c2..30267d4237 100644 --- a/resources/quality/nps/nps_PC_C.inst.cfg +++ b/resources/quality/nps/nps_PC_C.inst.cfg @@ -32,7 +32,7 @@ material_bed_temperature = 110 material_flow = 88 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = 275 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/nps/nps_PETG_A.inst.cfg b/resources/quality/nps/nps_PETG_A.inst.cfg index 0985dd1b3a..3cae430f1c 100644 --- a/resources/quality/nps/nps_PETG_A.inst.cfg +++ b/resources/quality/nps/nps_PETG_A.inst.cfg @@ -22,7 +22,7 @@ material_bed_temperature = 80 material_flow = 98 material_print_temperature = =default_material_print_temperature + 20 material_print_temperature_layer_0 = =230 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/nps/nps_PETG_B.inst.cfg b/resources/quality/nps/nps_PETG_B.inst.cfg index e3a5f165ad..5860f65414 100644 --- a/resources/quality/nps/nps_PETG_B.inst.cfg +++ b/resources/quality/nps/nps_PETG_B.inst.cfg @@ -22,7 +22,7 @@ material_bed_temperature = 80 material_flow = 95 material_print_temperature = =default_material_print_temperature + 20 material_print_temperature_layer_0 = =230 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_A.inst.cfg index 0569a356f3..39ba32a332 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 100 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_B.inst.cfg index e906508f7f..dd0d167e6b 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 96 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_C.inst.cfg index a883aba2ec..f894a7dc13 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_A.inst.cfg index dc595e8c5d..7642489c2a 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 100 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_B.inst.cfg index a84b12135f..bf5c18405b 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 96 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 1 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_C.inst.cfg index ef6358a6a0..6756384e4a 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ABS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature +3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_A.inst.cfg index 7a0cd7ee8d..978484d813 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 98 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_B.inst.cfg index 4fa5d070aa..bcec4fe68f 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 95 material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature + 0 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_C.inst.cfg index 7944c44371..85f79ebe7a 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ACETATE_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 93 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_A.inst.cfg index fb2ee81c9f..9b29e49624 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 100 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_B.inst.cfg index 4e63f1513d..07a46f0d05 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 96 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_C.inst.cfg index 5e158007ab..60410d8d34 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_ASA-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 7 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_A.inst.cfg index f73adbfa51..9304630630 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_A.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_B.inst.cfg index da2aa05237..d39d91c91a 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_B.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_C.inst.cfg index e636a5ebee..e716824cf0 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_COPA_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_A.inst.cfg index a997ac74dd..bd964bed2a 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_B.inst.cfg index 7055e3dadd..cd27f77737 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_C.inst.cfg index 6c66ffd76c..78191af7be 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_HIPS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_A.inst.cfg index f451618a28..f37a3b4d6d 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_A.inst.cfg @@ -34,7 +34,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 88 material_print_temperature = 260 material_print_temperature_layer_0 = 265 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_B.inst.cfg index 5866dad50b..75fed99b1e 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_B.inst.cfg @@ -34,7 +34,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 88 material_print_temperature = 270 material_print_temperature_layer_0 = 275 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_C.inst.cfg index 502dd8be07..51911c3811 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PC_C.inst.cfg @@ -34,7 +34,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 88 material_print_temperature = 270 material_print_temperature_layer_0 = 275 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PEKK_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PEKK_B.inst.cfg index 5279228105..e4596d9def 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PEKK_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PEKK_B.inst.cfg @@ -33,7 +33,7 @@ material_flow = 105 material_flow_layer_0 = 120 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 15 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_A.inst.cfg index 92c62d2b43..d0faf6eb66 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 98 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_B.inst.cfg index 92811521ac..3a64a52254 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_C.inst.cfg index 234d33c2eb..debf74ed0d 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PETG_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_A.inst.cfg index 76ea2997ba..990d5cf645 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 98 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_B.inst.cfg index fc3d8e47ec..82f26cd66d 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_C.inst.cfg index f4bfb4c698..a91b035e38 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_A.inst.cfg index 82715060a6..c7194e18d2 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_A.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 10 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_B.inst.cfg index ca19b0ee14..078e213a26 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_B.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_C.inst.cfg index f61b83ab7b..bfb4c46c46 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_PLA_HT_C.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_A.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_A.inst.cfg index 85097b4506..8dd1c17ea6 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_A.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.38 material_flow = 107 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature - 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_B.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_B.inst.cfg index 967f7c21a5..cca98aa599 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_B.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.38 material_flow = 103 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_C.inst.cfg b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_C.inst.cfg index 9110650629..5a343d6893 100644 --- a/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_C.inst.cfg +++ b/resources/quality/strateo3d/HT0_4/s3d_ht0.4_TPU98A_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.38 material_flow = 101 material_print_temperature = =default_material_print_temperature + 7 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_A.inst.cfg index de6356694f..e6be881341 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 100 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_B.inst.cfg index ec119cba9f..c4342c149a 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 96 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_C.inst.cfg index 0b4df9f3a3..e3581e0823 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_A.inst.cfg index ad5d8c8586..4c451894bd 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 100 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_B.inst.cfg index e0600e72d8..65c2c9e81f 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 96 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 1 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_C.inst.cfg index 5827b15cf9..2f5cf9cfa3 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ABS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature +3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_A.inst.cfg index 3ee7204b92..36d6697edb 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 98 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_B.inst.cfg index 4834ca9eef..e92561350a 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 95 material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature + 0 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_C.inst.cfg index 4850f68dc0..e61775fde0 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ACETATE_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 93 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_A.inst.cfg index ec7cbcc0fd..020b95dad2 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 100 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_B.inst.cfg index 6f086f0605..6688d82ec8 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 96 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_C.inst.cfg index ff5016d543..2c8d6a82d3 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_ASA-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 7 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_A.inst.cfg index e324931269..fe012ff873 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_B.inst.cfg index 5aea3605f5..c0adce0f84 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_C.inst.cfg index 24a1faed48..5b58c2f37b 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_BVOH_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_A.inst.cfg index d73b6ac796..f986831fd5 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_A.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_B.inst.cfg index 14d3867950..5d360b244b 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_B.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_C.inst.cfg index 26e6ebc4df..3875e668f4 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_COPA_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_A.inst.cfg index 54954ff567..d4d0e1c17e 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_B.inst.cfg index 057fb1b8cc..f2bb237ea2 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_C.inst.cfg index 63f71cff82..f6780fbded 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_HIPS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_A.inst.cfg index afef00df11..6e726932a6 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_A.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_B.inst.cfg index 7b81803b0c..7ef50ff5b1 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_B.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_C.inst.cfg index c0ac99423d..4d4af1e0f7 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6CF_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_A.inst.cfg index bd0f177b1b..0d88c99c85 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_A.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_B.inst.cfg index 586d49b7db..de476e6e46 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_B.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_C.inst.cfg index 16c8c5e6aa..3fe7ff347c 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PA6GF_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_A.inst.cfg index 71a70f0849..9dd3039b65 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_A.inst.cfg @@ -34,7 +34,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 88 material_print_temperature = 260 material_print_temperature_layer_0 = 265 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_B.inst.cfg index ad26bba4cb..346f33bafb 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_B.inst.cfg @@ -34,7 +34,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 88 material_print_temperature = 270 material_print_temperature_layer_0 = 275 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_C.inst.cfg index e4da72d39a..8571e8c4b0 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PC_C.inst.cfg @@ -34,7 +34,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 88 material_print_temperature = 270 material_print_temperature_layer_0 = 275 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_A.inst.cfg index b7bebe13b7..4231e1b3a1 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 98 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_B.inst.cfg index f3bc48c8c9..c141a0ab07 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_C.inst.cfg index 70c2d3044c..9cd4262c55 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PETG_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_A.inst.cfg index d52ceb51ea..6f49ec9e3b 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 98 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_B.inst.cfg index 6124b1dfed..415379417c 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_C.inst.cfg index b4a8bc21f4..c4ce86563f 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_A.inst.cfg index a764026ca7..dc4505591f 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_A.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 10 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_B.inst.cfg index 11b9d689c8..224fa18cd6 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_B.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_C.inst.cfg index 7521ef5d62..44737981b0 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PLA_HT_C.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_A.inst.cfg index 6de69d4eba..8bf71b5cf5 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_B.inst.cfg index e2b282ab2a..3102afdc2c 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_C.inst.cfg index 60d02fac6d..ad6e361582 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-M_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_A.inst.cfg index 4969aad456..b7445aee86 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_B.inst.cfg index 7bf8dc30d4..cc849df9ba 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_C.inst.cfg index 27cef2d7c9..10cbd3a4cf 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_PVA-S_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.4 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_A.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_A.inst.cfg index 24e3a1f238..055bbb7623 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_A.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_A.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.38 material_flow = 107 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature - 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_B.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_B.inst.cfg index 4211634c6d..028586beb4 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.38 material_flow = 103 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_C.inst.cfg b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_C.inst.cfg index bd2c12c3f1..8bc0b97bc5 100644 --- a/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_4/s3d_std0.4_TPU98A_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.38 material_flow = 101 material_print_temperature = =default_material_print_temperature + 7 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_B.inst.cfg index 589f27a221..ec355cec15 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 100 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_C.inst.cfg index bca586491d..3ab4df020c 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 98 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_D.inst.cfg index 2e90b6fd6f..455cb44a7b 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS-X_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 96 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_B.inst.cfg index e2f63845ee..3475c621c3 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 100 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_C.inst.cfg index bc9df5fa14..d7d937fdef 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 98 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 1 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_D.inst.cfg index 7216eb093c..e83067bdc8 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ABS_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 96 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_B.inst.cfg index a90e755a49..188cddf0d6 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_C.inst.cfg index 1d54fd6b3c..6127c2ec43 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 93 material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature + 0 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_D.inst.cfg index 90d3d00507..ca38be0476 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ACETATE_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 91 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_B.inst.cfg index ca2b4a9c9e..caa9003cb3 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 101 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_C.inst.cfg index b297719ba1..a10cbdac7d 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 99 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_D.inst.cfg index 34882ab1af..85fe174e95 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_ASA-X_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 7 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_B.inst.cfg index 07969b958a..9b48be1b8b 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_C.inst.cfg index ecd3384a5b..0440a0a34a 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_D.inst.cfg index a4a87bc3f3..7f124ae4ec 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_BVOH_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_B.inst.cfg index c0f93168da..f662c41048 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_B.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 3 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_C.inst.cfg index 4116205747..dae0dda098 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 3 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_D.inst.cfg index df1fb6e2e7..1079c746ec 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_COPA_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 3 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_B.inst.cfg index aa5bfa30f2..04991249e9 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_C.inst.cfg index 887a35f80e..685778f3f1 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_D.inst.cfg index a9a4bcb18f..ab5eca1d47 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_HIPS_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_Nylon-1030_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_Nylon-1030_C.inst.cfg index d73114c313..a5a2addbc6 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_Nylon-1030_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_Nylon-1030_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 93 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_B.inst.cfg index e3f0657f1f..6ecc9a3265 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_B.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_C.inst.cfg index 542f9405b1..9e060959dd 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_D.inst.cfg index 43ff676c46..322d30a975 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6CF_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_B.inst.cfg index 2cca8a5c45..5ae6c32cb8 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_B.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_C.inst.cfg index 951e26d841..3fbe1f6370 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_D.inst.cfg index f408c5a293..46aacdf22c 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PA6GF_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_B.inst.cfg index 8b72022a0d..6997dae536 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_B.inst.cfg @@ -33,7 +33,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 87 material_print_temperature = 270 material_print_temperature_layer_0 = 275 -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_C.inst.cfg index 2540f2bea9..70bb7206af 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_C.inst.cfg @@ -33,7 +33,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 87 material_print_temperature = 270 material_print_temperature_layer_0 = 275 -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_D.inst.cfg index c6bd8cc70e..eb89937ded 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PC_D.inst.cfg @@ -33,7 +33,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 87 material_print_temperature = 270 material_print_temperature_layer_0 = 275 -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 2 retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_B.inst.cfg index 02b8e45e22..4bc567a2d9 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 93 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_C.inst.cfg index 26e2eb5029..f08c2e68b7 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 92 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_D.inst.cfg index f97462d99c..4a9a1472b8 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PETG_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_B.inst.cfg index 540e14ba23..41edbc8e32 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 93 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_C.inst.cfg index af851371a1..10356ad344 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 92 material_print_temperature = =default_material_print_temperature + 8 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_D.inst.cfg index e2470b9ecf..9f04791ac2 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 91 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_B.inst.cfg index 21c4f9eccc..56e09ac385 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_B.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_C.inst.cfg index b210d0fd30..6c8a5462aa 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_C.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_D.inst.cfg index 6b6a5923ce..be4a045e0d 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PLA_HT_D.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_B.inst.cfg index f677ac9e32..6b107e9c9b 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_C.inst.cfg index 9ed4c381c9..ca169572b9 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_D.inst.cfg index 3f928f436d..7e7a3ed9d1 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-M_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_B.inst.cfg index d8e702dc7a..a08e251fe0 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_C.inst.cfg index 53516d4617..2bcf4d4b1d 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_D.inst.cfg index e7298a71d3..1352a75a8a 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_PVA-S_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.6 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_B.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_B.inst.cfg index cd9de526ec..ad699959aa 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_B.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_B.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.55 material_flow = 105 material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature - 2 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_C.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_C.inst.cfg index 4de06235da..6fdabc1a83 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.55 material_flow = 103 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_D.inst.cfg b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_D.inst.cfg index 431623b7c6..1954931cc7 100644 --- a/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_6/s3d_std0.6_TPU98A_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.55 material_flow = 101 material_print_temperature = =default_material_print_temperature + 7 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.2 retraction_hop_only_when_collides = False retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_C.inst.cfg index e0c29062d7..913af1994b 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 1 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_D.inst.cfg index 9230df64e3..573834fc79 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 96 material_print_temperature = =default_material_print_temperature + 7 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_E.inst.cfg index 7117a889ed..3d5d1781ae 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS-X_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 95 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_C.inst.cfg index 97d2209bda..4910a69272 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_D.inst.cfg index 111504ad7b..28d395019a 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 96 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 2 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_E.inst.cfg index d5322c039a..b91ceb1f85 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ABS_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 95 material_print_temperature = =default_material_print_temperature + 7 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_C.inst.cfg index 74d0fa3869..4a32ddceaf 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_D.inst.cfg index 80dfbe8dbc..e45a8970f7 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 96 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_E.inst.cfg index 26decee7ba..c0a9632b95 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_ASA-X_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 7 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_C.inst.cfg index 850458ed36..bce7e2891f 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_D.inst.cfg index 06f9ed6686..0a053f123e 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_E.inst.cfg index 36398c0cfc..4f167ecacc 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_BVOH_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_C.inst.cfg index 8dd9bc10fb..8efea7e264 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop = 2 retraction_hop_enabled = True diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_D.inst.cfg index fb149908d1..d2f6973da7 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop = 2 retraction_hop_enabled = True diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_E.inst.cfg index 47d9a50940..57e9fc27a4 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_COPA_E.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop = 2 retraction_hop_enabled = True diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_C.inst.cfg index e57fefc2b9..2ef4a5b479 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_D.inst.cfg index 0cbddce4c9..a7549a851c 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_E.inst.cfg index 965c08e8f9..322f31e986 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_HIPS_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_C.inst.cfg index 4062997ba0..6f3fa578bf 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_D.inst.cfg index e6acfe27b8..ee3166e7da 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_E.inst.cfg index 602837f410..05eabcc6a3 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6CF_E.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_C.inst.cfg index d5bb0ac8ba..d10b2df53b 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_C.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_D.inst.cfg index 022a6f36bf..181d89f957 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_E.inst.cfg index 35421e68d6..38bd72884b 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PA6GF_E.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_C.inst.cfg index 65217b7ff9..d8b2e660fc 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_C.inst.cfg @@ -35,7 +35,7 @@ material_print_temperature = 280 material_print_temperature_layer_0 = 285 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_min_travel = =2*line_width retraction_speed = 35 diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_D.inst.cfg index 118acb433f..c39338eeca 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_D.inst.cfg @@ -35,7 +35,7 @@ material_print_temperature = 280 material_print_temperature_layer_0 = 285 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_min_travel = =2*line_width retraction_speed = 35 diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_E.inst.cfg index c8102ecdf9..f88eff1615 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PC_E.inst.cfg @@ -35,7 +35,7 @@ material_print_temperature = 280 material_print_temperature_layer_0 = 285 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_min_travel = =2*line_width retraction_speed = 35 diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_C.inst.cfg index df178b1807..59a6db473d 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.4 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_D.inst.cfg index 95973a4428..9a94498b12 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.4 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_E.inst.cfg index 32073574ea..2611e1deba 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PETG_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 93 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.4 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_C.inst.cfg index 4b306434b9..35644e47a8 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 99 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_D.inst.cfg index 99a245dfb4..a820dd8467 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 98 material_print_temperature = =default_material_print_temperature + 7 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_E.inst.cfg index d7ecb95748..a4f135a4fa 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_C.inst.cfg index 9a973d225d..ee58caf9e6 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_C.inst.cfg @@ -27,7 +27,7 @@ material_flow = 93 material_initial_print_temperature = =default_material_print_temperature material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_D.inst.cfg index 6ff6a8dd0e..6399e7fd1f 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_D.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_E.inst.cfg index 5f19e2ab77..e034d49e6e 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PLA_HT_E.inst.cfg @@ -29,7 +29,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_C.inst.cfg index 5ea81eab76..632c45a51f 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_D.inst.cfg index cc5ecebffe..e882d42015 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_E.inst.cfg index d133a60b41..7b52c7bb2d 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-M_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_C.inst.cfg index 1e243bbea4..a0fcdc4a52 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_D.inst.cfg index 54889f9923..496e5fe215 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_E.inst.cfg index 8f484b0616..9c676c934b 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_PVA-S_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.8 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_C.inst.cfg index f328b88645..0b4c3c0281 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.7 material_flow = 105 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_D.inst.cfg index 9d11111b78..ffbb925a22 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.7 material_flow = 103 material_print_temperature = =default_material_print_temperature + 6 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_E.inst.cfg index ed25c0fb46..60af5617e3 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU98A_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.7 material_flow = 101 material_print_temperature = =default_material_print_temperature + 9 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_C.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_C.inst.cfg index 0b70ff0384..71581b46ad 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_C.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_C.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.7 material_flow = 100 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_D.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_D.inst.cfg index f519ec66d5..bcbb45062a 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.7 material_flow = 100 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_E.inst.cfg b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_E.inst.cfg index 83c109070a..827ae4a7ba 100644 --- a/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_0_8/s3d_std0.8_TPU_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.7 material_flow = 100 material_print_temperature = =default_material_print_temperature + 7 material_print_temperature_layer_0 = =default_material_print_temperature +3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_D.inst.cfg index 09ffbaed98..29f88f6e15 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_E.inst.cfg index ff50fd3deb..316e5d4447 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_F.inst.cfg index fbbc7a0187..44203ad144 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ABS_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_D.inst.cfg index 95a6d4e732..e322951476 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 100 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.4 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_E.inst.cfg index 2c0caa6a06..b4ee9ea985 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 100 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.4 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_F.inst.cfg index c896adef1b..708896fdb7 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_ASA-X_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 100 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 7 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.4 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_D.inst.cfg index 0dcc4405d7..63ca3d88ff 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_E.inst.cfg index 73dce76c2e..62ed1914db 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_F.inst.cfg index 36902a619f..ac9ec6324e 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_BVOH_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_D.inst.cfg index b0bc012110..b225d8a911 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_E.inst.cfg index baf4211645..6e859c8dd0 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_F.inst.cfg index 754d20c802..6b8ebd9d20 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_HIPS_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_D.inst.cfg index 717aed8e49..f168d4cf46 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_E.inst.cfg index d41dea9d7b..652876d6b2 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_E.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_F.inst.cfg index b708481aeb..482b99c2f6 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6CF_F.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_D.inst.cfg index 5e604e6f65..551e79a8e4 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_D.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_E.inst.cfg index 31f7a30f3f..5709736147 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_E.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_F.inst.cfg index f35389424c..38f3b2b2ef 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PA6GF_F.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_D.inst.cfg index 902e42aef1..54a6d54cc0 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 95 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_E.inst.cfg index f1fc4dd877..abdd37d98d 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 95 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_F.inst.cfg index 03c73269f8..50f3b04e16 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PETG_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 95 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_D.inst.cfg index ddf8abc4c1..35e9d19957 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_E.inst.cfg index 77eb559e6e..6e59384a4d 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 100 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_F.inst.cfg index 5053e91cbb..9df5f69d75 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PLA_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 100 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_D.inst.cfg index 0e658a7bd2..45b5a9e415 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_E.inst.cfg index f30a55729c..70ec1234ff 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_F.inst.cfg index eca2362651..6327502027 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-M_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_D.inst.cfg index ec460ac49e..d7056a3f11 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_E.inst.cfg index 1e85473f67..a5ec67621f 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_F.inst.cfg index 9650dac1c0..4ddc98ddd2 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_PVA-S_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.0 material_flow = 97 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_D.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_D.inst.cfg index 38cf5927f0..1b3a77ab8b 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_D.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_D.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.9 material_flow = 107 material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_E.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_E.inst.cfg index 60baaa1038..be45c084a5 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_E.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_E.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.9 material_flow = 107 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_F.inst.cfg b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_F.inst.cfg index 385d21e44d..c02401c4d5 100644 --- a/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_0_Experimental/s3d_std1.0_TPU98A_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*0.9 material_flow = 107 material_print_temperature = =default_material_print_temperature + 8 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_F.inst.cfg index ef7573779d..ba91c749d5 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 103 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_G.inst.cfg index 86e4022a27..b1d4c72a34 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 102 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_H.inst.cfg index aa2af46845..4fac7e687d 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ABS_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 101 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature +5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_F.inst.cfg index 915523eadf..91b4699598 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature + 1 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_G.inst.cfg index d258496552..8d84bc4fd5 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_H.inst.cfg index 93420a5103..eafe3eef80 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_ASA-X_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 7 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_F.inst.cfg index 41764726df..3286e7fb08 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_G.inst.cfg index 2e4bb516b0..bb164bcd99 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_H.inst.cfg index 700c0102c2..82ad174a95 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_BVOH_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_F.inst.cfg index 941f0a6c81..f33abf1ec3 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 103 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_G.inst.cfg index 4cd7728a69..2edb0e32f8 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 102 material_print_temperature = =default_material_print_temperature + 3 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_H.inst.cfg index 01b584afcd..30d7139eb9 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_HIPS_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 101 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_F.inst.cfg index a4c6fd4046..1bf36453d1 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_F.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_G.inst.cfg index 376c9b1d51..f413dd3e17 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_G.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_H.inst.cfg index 5e27fec150..9b228f7b05 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6CF_H.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_F.inst.cfg index 5ca32bd655..68c8604a95 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_F.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_G.inst.cfg index bdebb9a0ac..66fc7c2f92 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_G.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_H.inst.cfg index 01c65f4586..aceba867c2 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PA6GF_H.inst.cfg @@ -37,7 +37,7 @@ material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature + 5 meshfix_maximum_deviation = 0.04 meshfix_maximum_resolution = 0.5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.1 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_F.inst.cfg index 9a8aaeb18e..a34c3a4d45 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_G.inst.cfg index ba4d2b22ec..bd41a808d0 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_H.inst.cfg index 2b1b5fb2f9..6036150353 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PETG_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 95 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_F.inst.cfg index 6e05ba15a6..c150380c74 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 107 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_G.inst.cfg index 56765cb156..74ce8559d2 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 105 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_H.inst.cfg index 36d6248682..f59b68f675 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PLA_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 103 material_print_temperature = =default_material_print_temperature + 10 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.5 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_F.inst.cfg index d88ff841d0..689c1fe076 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_G.inst.cfg index 9bb1258fc8..514cdcbfde 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_H.inst.cfg index 7a662ec6d1..123dc9a953 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-M_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_F.inst.cfg index 767b72a566..9c3f620a2d 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_G.inst.cfg index da088dc345..0b841dfb09 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_H.inst.cfg index 1ae6c25ebb..adfe816125 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_PVA-S_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.2 material_flow = 100 material_print_temperature = =default_material_print_temperature material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = True retraction_min_travel = =3*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_F.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_F.inst.cfg index a9eb8331c8..4b6108e51d 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_F.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_F.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.1 material_flow = 111 material_print_temperature = =default_material_print_temperature + 2 material_print_temperature_layer_0 = =default_material_print_temperature -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_G.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_G.inst.cfg index 03cb145944..99af35534f 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_G.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_G.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.1 material_flow = 111 material_print_temperature = =default_material_print_temperature + 5 material_print_temperature_layer_0 = =default_material_print_temperature + 3 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_H.inst.cfg b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_H.inst.cfg index ac77c87265..21043cae58 100644 --- a/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_H.inst.cfg +++ b/resources/quality/strateo3d/Standard_1_2_Experimental/s3d_std1.2_TPU98A_H.inst.cfg @@ -24,7 +24,7 @@ line_width = =machine_nozzle_size/machine_nozzle_size*1.1 material_flow = 111 material_print_temperature = =default_material_print_temperature + 8 material_print_temperature_layer_0 = =default_material_print_temperature + 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_extra_prime_amount = 0.3 retraction_hop_only_when_collides = False retraction_min_travel = =2*line_width diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg index 538bcfedb9..ac5f3e5bee 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg @@ -22,8 +22,8 @@ material_final_print_temperature = =material_print_temperature material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature optimize_wall_printing_order = True +prime_tower_enable = True prime_tower_flow = 110 -prime_tower_mode = normal prime_tower_size = 35 retraction_min_travel = 2 skirt_gap = 2 diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg index 86c4cd1894..eca85becc6 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg @@ -19,8 +19,8 @@ material_final_print_temperature = =material_print_temperature material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature optimize_wall_printing_order = True +prime_tower_enable = True prime_tower_flow = 110 -prime_tower_mode = normal prime_tower_size = 35 retraction_hop_enabled = False support_enable = True diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg index 83ec574663..8071d7193e 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg @@ -30,8 +30,8 @@ material_flow_layer_0 = 93 material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature optimize_wall_printing_order = True +prime_tower_enable = True prime_tower_flow = 110 -prime_tower_mode = normal prime_tower_size = 35 retraction_amount = 5 retraction_hop_enabled = False diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Normal_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Normal_Quality.inst.cfg index 2269a480a5..8354fba5e0 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Normal_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Normal_Quality.inst.cfg @@ -30,8 +30,8 @@ material_flow_layer_0 = 93 material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature optimize_wall_printing_order = True +prime_tower_enable = True prime_tower_flow = 110 -prime_tower_mode = normal prime_tower_size = 35 retraction_amount = 5 retraction_hop_enabled = False diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg index 4fed169568..074632abda 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg @@ -19,8 +19,8 @@ material_final_print_temperature = =material_print_temperature material_initial_print_temperature = =material_print_temperature material_print_temperature = =default_material_print_temperature optimize_wall_printing_order = True +prime_tower_enable = True prime_tower_flow = 110 -prime_tower_mode = normal prime_tower_size = 35 retraction_hop_enabled = False support_enable = True diff --git a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg index 632a1fb46d..eeb924906f 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg @@ -21,7 +21,7 @@ machine_min_cool_heat_time_window = 15 material_print_temperature = =default_material_print_temperature - 10 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg index 0667ef961d..a64c8298a2 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg @@ -21,7 +21,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg index d93ba61d9d..16be0db845 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -2 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False skin_overlap = 20 speed_print = 60 speed_topbottom = =math.ceil(speed_print * 35 / 60) diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg index b92a826f5a..916b283c9c 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -1 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 10 -prime_tower_mode = none +prime_tower_enable = False speed_print = 60 speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 40 / 60) diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg index 2fe35f1a2e..5dcbe80bbb 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.8 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 20 -prime_tower_mode = none +prime_tower_enable = False speed_print = 50 speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg index fcecc2701b..1420880995 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg @@ -15,7 +15,7 @@ weight = 0 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 15 -prime_tower_mode = none +prime_tower_enable = False speed_print = 55 speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg index cf417a84b6..e0dd43cc28 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg @@ -16,7 +16,7 @@ brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 skin_overlap = 20 speed_topbottom = =math.ceil(speed_print * 35 / 70) speed_wall = =math.ceil(speed_print * 50 / 70) diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg index 363a43975e..16ece7c2dd 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -1 brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 speed_print = 80 speed_topbottom = =math.ceil(speed_print * 30 / 80) speed_wall = =math.ceil(speed_print * 40 / 80) diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg index 92dae4a19f..ca7fd8cbf3 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg @@ -15,7 +15,7 @@ weight = 0 brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 skin_overlap = 10 support_angle = 45 support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg index 2540a78b21..5de59e58c9 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -18,7 +18,7 @@ infill_wipe_dist = 0 layer_height = 0.2 machine_min_cool_heat_time_window = 15 multiple_mesh_overlap = 0 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg index 37e8df992d..b2020831d7 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -18,7 +18,7 @@ infill_wipe_dist = 0 layer_height = 0.15 machine_min_cool_heat_time_window = 15 multiple_mesh_overlap = 0 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg index 5ba84b0564..4be3a9c13a 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 8 multiple_mesh_overlap = 0 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg index 0fb115b548..2e24f485d0 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -20,7 +20,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 5 multiple_mesh_overlap = 0 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg index d0d447acdf..28e8ccbf75 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg @@ -24,7 +24,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg index e55a49baba..5113277ab2 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg index ee55427cf7..636ce41e71 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 20 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg index 15410514cd..a7c533bfea 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 10 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg index a79b715ee0..1d44e48193 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -2 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = none +prime_tower_enable = False skin_overlap = 20 speed_topbottom = =math.ceil(speed_print * 40 / 70) speed_wall = =math.ceil(speed_print * 55 / 70) diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg index a838352f48..6b99ed5a70 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = none +prime_tower_enable = False speed_print = 80 speed_topbottom = =math.ceil(speed_print * 30 / 80) speed_wall = =math.ceil(speed_print * 40 / 80) diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg index e5a10d9222..97be45babc 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False skin_overlap = 10 speed_print = 60 speed_topbottom = =math.ceil(speed_print * 30 / 60) diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg index 486b74c1b2..f305caa82d 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg @@ -14,7 +14,7 @@ weight = 0 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = none +prime_tower_enable = False skin_overlap = 10 top_bottom_thickness = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg index 4293ca81f1..c82043d3af 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg @@ -24,7 +24,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 8 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_amount = 6.5 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg index 1b396f5417..74a628f7cb 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg index 6c4ee71b82..fa9b4c54ea 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg @@ -23,7 +23,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg index d8fca155d3..cffd1e6075 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg @@ -14,7 +14,7 @@ weight = -2 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = none +prime_tower_enable = False skin_overlap = 20 speed_print = 50 speed_roofing = =math.ceil(speed_wall * 20 / 24) diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg index 5ea9fe9336..94fe824f5e 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = none +prime_tower_enable = False speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg index 4e03569ca6..05a6896646 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg @@ -15,7 +15,7 @@ weight = 0 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False skin_overlap = 10 speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg index 0443afa3f6..dcca81f3ef 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg @@ -17,7 +17,7 @@ brim_width = 14 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 20 -prime_tower_mode = normal +prime_tower_enable = True retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg index ccae2cc5d8..585ae8eefe 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -18,7 +18,7 @@ layer_height = 0.4 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 15 -prime_tower_mode = normal +prime_tower_enable = True retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg index 9596b00d33..2280a837ae 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -18,7 +18,7 @@ layer_height = 0.3 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 17 -prime_tower_mode = normal +prime_tower_enable = True retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg index 4a7e29ec36..b1f867807b 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg @@ -14,7 +14,7 @@ weight = -2 [values] brim_width = 15 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg index 5c5b732990..a75ae74ada 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -4 brim_width = 15 layer_height = 0.4 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = normal +prime_tower_enable = True speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg index 9a48e11a7b..c1544a00e2 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -3 brim_width = 15 layer_height = 0.3 material_print_temperature = =default_material_print_temperature + 12 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg index 747730c0a7..a0fc036566 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg @@ -17,7 +17,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg index 40f0779369..547ab013fb 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg index 03116ec10d..b17789ad0f 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PETG_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PETG_Draft_Print.inst.cfg index aab2e25ac2..3eafff9a07 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PETG_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PETG_Draft_Print.inst.cfg @@ -14,7 +14,7 @@ weight = -2 [values] brim_width = 7 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_combing = all speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PETG_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PETG_Superdraft_Print.inst.cfg index 45ec96e089..fe36a86948 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PETG_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PETG_Superdraft_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -4 brim_width = 7 layer_height = 0.4 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_combing = all speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PETG_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PETG_Verydraft_Print.inst.cfg index ee92c6add7..2bba762e2d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PETG_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PETG_Verydraft_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -3 brim_width = 7 layer_height = 0.3 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = normal +prime_tower_enable = True retraction_combing = all speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg index 84a9b9a5fb..57a830402a 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg index ae59471ff3..40f710327f 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg @@ -18,7 +18,7 @@ layer_height = 0.4 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = normal +prime_tower_enable = True speed_infill = =math.ceil(speed_print * 35 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg index 2a4c093dca..702c64bb78 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg @@ -18,7 +18,7 @@ layer_height = 0.3 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg index c9e31486c0..145389fbe4 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg @@ -16,9 +16,9 @@ brim_width = 25 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' material_print_temperature = =default_material_print_temperature + 11 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 10 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg index e821581360..68d54bd406 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -16,9 +16,9 @@ brim_width = 25 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' material_print_temperature = =default_material_print_temperature + 15 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 20 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg index a5817651d8..2aa79cad79 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -17,9 +17,9 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' layer_height = 0.3 material_print_temperature = =default_material_print_temperature + 13 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 15 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg index 5e0816ef9a..a9b7a92918 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = none +prime_tower_enable = False speed_print = 45 support_angle = 70 top_bottom_thickness = =layer_height * 6 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg index 36e25d258a..16e17c500e 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = none +prime_tower_enable = False speed_infill = =math.ceil(speed_print * 30 / 30) speed_print = 30 speed_topbottom = =math.ceil(speed_print * 20 / 30) diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg index ffbc413b6e..96dec4f1c5 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = none +prime_tower_enable = False speed_infill = =math.ceil(speed_print * 30 / 35) speed_topbottom = =math.ceil(speed_print * 20 / 35) speed_wall = =math.ceil(speed_print * 25/ 35) diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg index d8f7812d75..859eb3b33a 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg @@ -23,8 +23,8 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 4 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg index a689035132..61ace7da80 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -23,8 +23,8 @@ material_final_print_temperature = =material_print_temperature - 10 material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg index f4b61cac5d..e45b8f2d1d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -24,8 +24,8 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg index 64ad8ff7f3..eab1a39931 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg @@ -15,7 +15,7 @@ weight = -2 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = none +prime_tower_enable = False retraction_count_max = 5 skin_overlap = 20 skirt_brim_minimal_length = =min(2000, 175/(layer_height*line_width)) diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg index 2cdc81a5d9..ad1e26c7da 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) -prime_tower_mode = none +prime_tower_enable = False retraction_count_max = 5 skin_overlap = 15 skirt_brim_minimal_length = =min(2000, 175/(layer_height*line_width)) diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg index fa2b7026a1..e5ae49b17d 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg @@ -15,7 +15,7 @@ weight = 1 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175/(layer_height*line_width)) support_infill_sparse_thickness = =3*layer_height diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg index d16740c8ef..38334b4358 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg @@ -15,7 +15,7 @@ weight = 0 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175/(layer_height*line_width)) support_infill_sparse_thickness = =2*layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg index acad5a484b..369cbcd563 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg @@ -20,7 +20,7 @@ machine_min_cool_heat_time_window = 15 material_print_temperature = =default_material_print_temperature - 10 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg index 262e4f4b54..6485844da8 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg @@ -21,7 +21,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg index ad25724904..6877d9b6a2 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.8 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature - 10 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg index c0890c9740..de1905e410 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg @@ -15,7 +15,7 @@ weight = -1 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 45 / 60) speed_print = 60 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg index fbe263ab43..ae5c9bcbc1 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 40 / 55) speed_print = 55 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg index 059d39f6c1..701a2db84d 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 50 / 60) speed_print = 60 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.3mm.inst.cfg index cb741764d6..684336d1eb 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.3mm.inst.cfg @@ -16,7 +16,7 @@ weight = -3 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature + 7 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 support_bottom_distance = =support_z_distance support_interface_enable = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.15mm.inst.cfg index 3af6b9a69d..a7a17e5f69 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.15mm.inst.cfg @@ -15,7 +15,7 @@ weight = -1 brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 speed_print = 80 speed_topbottom = =math.ceil(speed_print * 30 / 80) speed_wall = =math.ceil(speed_print * 40 / 80) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.1mm.inst.cfg index 1526b46ba5..a3b8129ed7 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.1mm.inst.cfg @@ -15,7 +15,7 @@ weight = 0 brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 support_angle = 45 support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height support_infill_sparse_thickness = =2 * layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.2mm.inst.cfg index 999e2ce9c9..5c051039d0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.2mm.inst.cfg @@ -16,7 +16,7 @@ brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 speed_topbottom = =math.ceil(speed_print * 35 / 70) speed_wall = =math.ceil(speed_print * 50 / 70) speed_wall_0 = =math.ceil(speed_wall * 35 / 50) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.3mm.inst.cfg index 42b98f5be7..61073067fc 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_bam_0.3mm.inst.cfg @@ -17,7 +17,7 @@ brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 speed_topbottom = =math.ceil(speed_print * 35 / 70) speed_wall = =math.ceil(speed_print * 50 / 70) speed_wall_0 = =math.ceil(speed_wall * 35 / 50) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg index 864421ed78..880461bccf 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 8 multiple_mesh_overlap = 0 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg index 2591f15abb..5dd5e61f82 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg @@ -15,7 +15,7 @@ weight = -1 infill_wipe_dist = 0 machine_min_cool_heat_time_window = 15 multiple_mesh_overlap = 0 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg index ab0354f9ea..7617b35b3b 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 5 multiple_mesh_overlap = 0 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg index 7ac2d06998..7ed1fcd298 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg @@ -15,7 +15,7 @@ weight = -2 infill_wipe_dist = 0 machine_min_cool_heat_time_window = 15 multiple_mesh_overlap = 0 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg index 9968edc74c..c9eebee8a0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 20 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg index 0138115976..bcd04f4b24 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg @@ -20,7 +20,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg index f2a006ce6c..278e502231 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 10 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg index 0e72f56e02..1baf43933c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg @@ -20,7 +20,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg index d313f08887..4b8f9f433b 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg index 73105ed512..5581284de4 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 70 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg index b6eac28eb9..30af138465 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg @@ -14,7 +14,7 @@ weight = 0 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed support_bottom_distance = =support_z_distance diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg index 7ee4df3cac..e5dc960d98 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_topbottom = =math.ceil(speed_print * 40 / 70) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg index 80a564e05a..719adc820b 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg @@ -22,7 +22,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg index 775e8420df..3b106196f2 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg index f8448e868b..455338a901 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg @@ -22,7 +22,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg index e561a64075..b1f5e1f19a 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg @@ -22,7 +22,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 8 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg index 26cce4fcad..b5253cb077 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg index 86d98cfd6c..69cf85f349 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = none +prime_tower_enable = False retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg index 2715630b07..397992c551 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg @@ -15,7 +15,7 @@ weight = 0 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg index 8446a7957f..773da6d3ac 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg @@ -14,7 +14,7 @@ weight = -2 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = none +prime_tower_enable = False retraction_prime_speed = =retraction_speed speed_print = 50 speed_roofing = =math.ceil(speed_wall * 20 / 24) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg index 8e4d4596af..10e43b5699 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg @@ -22,7 +22,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.06mm.inst.cfg index 95f9c84609..de5e0faf2e 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.06mm.inst.cfg @@ -42,7 +42,7 @@ machine_nozzle_heat_up_speed = 1.9 material_extrusion_cool_down_speed = 0.8 material_max_flowrate = 20 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.15mm.inst.cfg index 447b6dfee5..c39c6d42c8 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.8 material_max_flowrate = 20 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.1mm.inst.cfg index 49a6120c8f..08bb2befdf 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.1mm.inst.cfg @@ -42,7 +42,7 @@ machine_nozzle_heat_up_speed = 1.9 material_extrusion_cool_down_speed = 0.8 material_max_flowrate = 20 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg index 2f595d38d0..89b8386d2f 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.2mm.inst.cfg @@ -45,7 +45,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.3mm.inst.cfg index 5aa2ff791b..cc0da1a253 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-abs_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 7 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.15mm.inst.cfg index 170e2199be..d4431382dd 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 20 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False retraction_amount = 8 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg index aae7ff42a2..c304f13e34 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.2mm.inst.cfg @@ -45,7 +45,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False retraction_amount = 8 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.3mm.inst.cfg index 96c3513a97..854b868259 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-petg_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False retraction_amount = 8 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.06mm.inst.cfg index 3a87267e37..9678ba9523 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.06mm.inst.cfg @@ -42,7 +42,7 @@ machine_nozzle_heat_up_speed = 1.9 material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 12 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.15mm.inst.cfg index 17dd161346..c53596bc9f 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 12 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.1mm.inst.cfg index 70b9a95dd4..58a8a1ebb0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.1mm.inst.cfg @@ -42,7 +42,7 @@ machine_nozzle_heat_up_speed = 1.9 material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 12 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg index 564b251c4b..2870c09199 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.2mm.inst.cfg @@ -45,7 +45,7 @@ material_max_flowrate = 12 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.3mm.inst.cfg index 5d27f8e05e..6f450463b9 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 12 material_print_temperature = =default_material_print_temperature + 10 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.06mm.inst.cfg index b1ac45f1b0..e193aa51c3 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.06mm.inst.cfg @@ -42,7 +42,7 @@ machine_nozzle_heat_up_speed = 1.9 material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 14 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.15mm.inst.cfg index 6201f53938..622f2030e4 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 14 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.1mm.inst.cfg index 4c9e939ccc..09f02aa375 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.1mm.inst.cfg @@ -42,7 +42,7 @@ machine_nozzle_heat_up_speed = 1.9 material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 14 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg index dc07130b6c..3b82ebfac7 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.2mm.inst.cfg @@ -44,7 +44,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 14 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.3mm.inst.cfg index cbaf3cd89a..2fd9e5ef2c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_um-tough-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 14 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.2mm.inst.cfg index ff96a0df68..c2d04c9bad 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.2mm.inst.cfg @@ -17,7 +17,7 @@ brim_width = 14 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 20 -prime_tower_mode = normal +prime_tower_enable = True retraction_hop = 0.1 retraction_hop_enabled = False speed_print = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.3mm.inst.cfg index a3d9b394b9..caf16e5f94 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.3mm.inst.cfg @@ -17,7 +17,7 @@ brim_width = 14 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 17 -prime_tower_mode = normal +prime_tower_enable = True retraction_hop = 0.1 retraction_hop_enabled = False speed_print = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.4mm.inst.cfg index dc46682c39..1cd46fab48 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe-plus_0.4mm.inst.cfg @@ -17,7 +17,7 @@ brim_width = 14 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 15 -prime_tower_mode = normal +prime_tower_enable = True retraction_hop = 0.1 retraction_hop_enabled = False speed_infill = =math.ceil(speed_print * 40 / 50) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.2mm.inst.cfg index f2ea43800e..f9ee324f33 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.2mm.inst.cfg @@ -14,7 +14,7 @@ weight = -2 [values] brim_width = 15 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.3mm.inst.cfg index 58193faaaf..f883fe1998 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.3mm.inst.cfg @@ -14,7 +14,7 @@ weight = -3 [values] brim_width = 15 material_print_temperature = =default_material_print_temperature + 12 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.4mm.inst.cfg index 7e58326c02..a5c059c5e6 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_cpe_0.4mm.inst.cfg @@ -14,7 +14,7 @@ weight = -4 [values] brim_width = 15 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = normal +prime_tower_enable = True speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.2mm.inst.cfg index 5b33c9854f..e7d656dcc4 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.2mm.inst.cfg @@ -17,7 +17,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.3mm.inst.cfg index 6ac1edf4e9..08c1f4933b 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.3mm.inst.cfg @@ -17,7 +17,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.4mm.inst.cfg index 536a00cc00..c4d2894885 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_nylon_0.4mm.inst.cfg @@ -17,7 +17,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.2mm.inst.cfg index 539a8c5a7c..d901c6c0dd 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.2mm.inst.cfg @@ -15,7 +15,7 @@ weight = -2 brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.3mm.inst.cfg index bf92354310..0279882346 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.3mm.inst.cfg @@ -15,7 +15,7 @@ weight = -3 brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.4mm.inst.cfg index 138369ef63..373d6a0b78 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_petg_0.4mm.inst.cfg @@ -15,7 +15,7 @@ weight = -4 brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = normal +prime_tower_enable = True speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.2mm.inst.cfg index a3935c55f7..1feae070fc 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.2mm.inst.cfg @@ -16,7 +16,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.3mm.inst.cfg index 9f7162abe0..f93f0848db 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.3mm.inst.cfg @@ -16,7 +16,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.4mm.inst.cfg index 997095fcbf..67f9cdfcf0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pla_0.4mm.inst.cfg @@ -16,7 +16,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = normal +prime_tower_enable = True speed_infill = =math.ceil(speed_print * 35 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg index 2ec19359cf..7619fcf43d 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.2mm.inst.cfg @@ -18,9 +18,9 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 11 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 10 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg index 6726d34585..b157ed198c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.3mm.inst.cfg @@ -18,9 +18,9 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 13 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 15 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg index 0bf76412b2..550a26c7f8 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_pp_0.4mm.inst.cfg @@ -18,9 +18,9 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 15 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 20 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.2mm.inst.cfg index a59a80d04a..1f706632ce 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.2mm.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = none +prime_tower_enable = False speed_print = 45 speed_topbottom = =round(speed_print * 35 / 45) speed_wall = =round(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.3mm.inst.cfg index c840722681..b1437e9160 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.3mm.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = none +prime_tower_enable = False speed_infill = =math.ceil(speed_print * 30 / 35) speed_print = 35 speed_topbottom = =math.ceil(speed_print * 20 / 35) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.4mm.inst.cfg index 1865589991..7c3c4ff6e9 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tough-pla_0.4mm.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = none +prime_tower_enable = False speed_infill = =math.ceil(speed_print * 30 / 30) speed_print = 30 speed_topbottom = =math.ceil(speed_print * 20 / 30) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg index 437fc03997..5d6ce58f7c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg @@ -21,8 +21,8 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 4 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg index 05401c0d34..1b69ada75d 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg @@ -22,8 +22,8 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg index a77cde65e6..d678d7e178 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg @@ -21,8 +21,8 @@ material_final_print_temperature = =material_print_temperature - 10 material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.2mm.inst.cfg index 79f23f9c2c..9d7b4455d6 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 22 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.15 retraction_amount = 4 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.3mm.inst.cfg index a187dc3179..e2a5c54c66 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 22 material_print_temperature = =default_material_print_temperature + 7 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.15 retraction_amount = 4 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.4mm.inst.cfg index cc2c57bcff..26d3dc7fb8 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-abs_0.4mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 22 material_print_temperature = =default_material_print_temperature + 10 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.15 retraction_amount = 4 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.2mm.inst.cfg index 9649f71775..b1dae1cb7a 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 23 material_print_temperature = =default_material_print_temperature - 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 3.5 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.3mm.inst.cfg index a0d9dbdee7..4d4ffa0059 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.3mm.inst.cfg @@ -46,7 +46,7 @@ material_flow = 93 material_max_flowrate = 23 material_print_temperature = =default_material_print_temperature - 5 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 3.5 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.4mm.inst.cfg index 840008f60d..5cc6a43e13 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-petg_0.4mm.inst.cfg @@ -46,7 +46,7 @@ material_flow = 93 material_max_flowrate = 23 material_print_temperature = =default_material_print_temperature - 5 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 3.5 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.2mm.inst.cfg index c0719e38b3..59f8409483 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 15 material_print_temperature = =default_material_print_temperature + 10 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.3mm.inst.cfg index 8f045a1238..a4cdd898f1 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 15 material_print_temperature = =default_material_print_temperature + 10 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.4mm.inst.cfg index b1e8b913fd..79dc105f86 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-pla_0.4mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 15 material_print_temperature = =default_material_print_temperature + 15 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg index 176cfb2cb2..a76864a1a3 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 17 material_print_temperature = =default_material_print_temperature + 10 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.3mm.inst.cfg index 404435e21b..d364232726 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 17 material_print_temperature = =default_material_print_temperature + 15 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.4mm.inst.cfg index 76724ad958..02a71fa9b7 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_um-tough-pla_0.4mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 17 material_print_temperature = =default_material_print_temperature + 15 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.06mm.inst.cfg index b69ddd1011..12b815d5ab 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_infill_sparse_thickness = =3 * layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.15mm.inst.cfg index 67a101d2bc..5390b3ecb7 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.15mm.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) -prime_tower_mode = none +prime_tower_enable = False retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_infill_sparse_thickness = =2 * layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.1mm.inst.cfg index 66c0486b0f..b15b5958a7 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.1mm.inst.cfg @@ -15,7 +15,7 @@ weight = 0 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_infill_sparse_thickness = =2 * layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.2mm.inst.cfg index 6e36d9578f..e273e85eb5 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_pva_0.2mm.inst.cfg @@ -15,7 +15,7 @@ weight = -2 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = none +prime_tower_enable = False retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_interface_enable = True diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.15mm.inst.cfg index 9b81b09599..ea2902cd6c 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.2mm.inst.cfg index e596c6fcd0..bbbad9be1f 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.15mm.inst.cfg index 5c9671c99e..300e2ebaed 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.2mm.inst.cfg index 872368142c..84040ede4e 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_um-pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.15mm.inst.cfg index 2b76474e5f..402ae15eba 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.2mm.inst.cfg index dc84108298..0c9154a233 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.15mm.inst.cfg index 3706d83424..e7b72d6cd0 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.2mm.inst.cfg index 6e03ebd7e5..38c857de5e 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_um-pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg index dc6dc3906d..eef6e66a5e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg @@ -20,7 +20,7 @@ machine_min_cool_heat_time_window = 15 material_print_temperature = =default_material_print_temperature - 10 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg index 69a5af3102..56689c4bfa 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg @@ -21,7 +21,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg index f96f28e71f..573b758705 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.8 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature - 10 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg index 9cc0a12b5a..926ef49922 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg @@ -15,7 +15,7 @@ weight = -1 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 45 / 60) speed_print = 60 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg index 651c780d32..598e83d922 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 40 / 55) speed_print = 55 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg index 28bd4cddff..5f5e9e2fd3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg @@ -16,7 +16,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 speed_infill = =math.ceil(speed_print * 50 / 60) speed_print = 60 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.3mm.inst.cfg index 49e70ecb1c..8656a28067 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.3mm.inst.cfg @@ -16,7 +16,7 @@ weight = -3 machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 20 material_print_temperature = =default_material_print_temperature + 7 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 support_bottom_distance = =support_z_distance support_interface_enable = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.15mm.inst.cfg index b2dd10f321..a4381e0e3b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.15mm.inst.cfg @@ -15,7 +15,7 @@ weight = -1 brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 speed_print = 80 speed_topbottom = =math.ceil(speed_print * 30 / 80) speed_wall = =math.ceil(speed_print * 40 / 80) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.1mm.inst.cfg index ba704aa34b..5f4c480fa4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.1mm.inst.cfg @@ -15,7 +15,7 @@ weight = 0 brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 support_angle = 45 support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height support_infill_sparse_thickness = =2 * layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.2mm.inst.cfg index ccccb2d3e8..9e3c0153b1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.2mm.inst.cfg @@ -16,7 +16,7 @@ brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 speed_topbottom = =math.ceil(speed_print * 35 / 70) speed_wall = =math.ceil(speed_print * 50 / 70) speed_wall_0 = =math.ceil(speed_wall * 35 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.3mm.inst.cfg index cc6e8f9453..bd4e13ebaf 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_bam_0.3mm.inst.cfg @@ -17,7 +17,7 @@ brim_replaces_support = False machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = ='normal' if (min(extruderValues('material_surface_energy')) < 100) else 'none' +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 speed_topbottom = =math.ceil(speed_print * 35 / 70) speed_wall = =math.ceil(speed_print * 50 / 70) speed_wall_0 = =math.ceil(speed_wall * 35 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg index 0b11bc463b..a77d1b4233 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 8 multiple_mesh_overlap = 0 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg index 476cdad5ce..805fb08ead 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg @@ -15,7 +15,7 @@ weight = -1 infill_wipe_dist = 0 machine_min_cool_heat_time_window = 15 multiple_mesh_overlap = 0 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg index 6a18d6a859..77f775d672 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg @@ -18,7 +18,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 5 multiple_mesh_overlap = 0 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg index dcd01b1084..877c48c42d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg @@ -15,7 +15,7 @@ weight = -2 infill_wipe_dist = 0 machine_min_cool_heat_time_window = 15 multiple_mesh_overlap = 0 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg index c2d943bb77..c58107dcf9 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 20 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg index 30b1896528..b210b894e5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg @@ -20,7 +20,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg index aa58bd07b3..aa17d35a97 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 10 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg index e74d6a6532..616443b129 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg @@ -20,7 +20,7 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 multiple_mesh_overlap = 0 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 retraction_hop = 2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg index e724f809d5..f34549bc78 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg index 2cce79480c..4a9e914b99 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 70 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg index 5a730aba3a..dc73f13bb5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg @@ -14,7 +14,7 @@ weight = 0 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed support_bottom_distance = =support_z_distance diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg index a1bde9d68d..ead512bb50 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_topbottom = =math.ceil(speed_print * 40 / 70) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg index e0070ff73b..c6641e7a08 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg @@ -22,7 +22,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg index 0f06f432d4..8eb0d257d6 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg @@ -21,7 +21,7 @@ machine_nozzle_heat_up_speed = 1.5 material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg index 68aeea4c25..bd4dd317bb 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg @@ -22,7 +22,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg index 2f7a70bfa0..1e5ea9efb6 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg @@ -22,7 +22,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 8 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_count_max = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg index 2bf08e3489..cf7a8335b8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg index 3b44a9eb37..a7dcb61128 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = none +prime_tower_enable = False retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg index 3167f39563..f053b33478 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg @@ -15,7 +15,7 @@ weight = 0 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False retraction_prime_speed = =retraction_speed speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg index 238468f784..4e98b6005a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg @@ -14,7 +14,7 @@ weight = -2 [values] machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 -prime_tower_mode = none +prime_tower_enable = False retraction_prime_speed = =retraction_speed speed_print = 50 speed_roofing = =math.ceil(speed_wall * 20 / 24) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg index 208277dc9b..5c6ed28548 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg @@ -22,7 +22,7 @@ infill_sparse_density = 15 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.06mm.inst.cfg index e7d58a1001..c0b4799ca9 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.06mm.inst.cfg @@ -42,7 +42,7 @@ machine_nozzle_heat_up_speed = 1.9 material_extrusion_cool_down_speed = 0.8 material_max_flowrate = 20 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.15mm.inst.cfg index 20e10b3e78..d430f867d8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.8 material_max_flowrate = 20 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.1mm.inst.cfg index fe37499b76..b2c25e26c7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.1mm.inst.cfg @@ -42,7 +42,7 @@ machine_nozzle_heat_up_speed = 1.9 material_extrusion_cool_down_speed = 0.8 material_max_flowrate = 20 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg index 5f85f0b6d1..15b87d8229 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.2mm.inst.cfg @@ -45,7 +45,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.3mm.inst.cfg index 7d9bd13d07..9a10024813 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-abs_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 7 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.15 retraction_amount = 6.5 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.15mm.inst.cfg index 4673f7dddc..5d14f014b9 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 20 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False retraction_amount = 8 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg index 7ffa9aa60a..4e1b0f535f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.2mm.inst.cfg @@ -45,7 +45,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False retraction_amount = 8 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.3mm.inst.cfg index 5cf1740ad1..ab66eed0ab 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-petg_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 20 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False retraction_amount = 8 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.06mm.inst.cfg index cc05029e74..2b192e8c1c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.06mm.inst.cfg @@ -42,7 +42,7 @@ machine_nozzle_heat_up_speed = 1.9 material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 12 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.15mm.inst.cfg index a7bebed472..11301a2990 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 12 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg index 4ca8ccaa86..28cf131812 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.2mm.inst.cfg @@ -45,7 +45,7 @@ material_max_flowrate = 12 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.3mm.inst.cfg index c1ea2d98dd..a01b433eb2 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 12 material_print_temperature = =default_material_print_temperature + 10 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.06mm.inst.cfg index 597bf3b302..f368ac13d8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.06mm.inst.cfg @@ -42,7 +42,7 @@ machine_nozzle_heat_up_speed = 1.9 material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 14 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.15mm.inst.cfg index 81f4e207be..b699ebc9f3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.15mm.inst.cfg @@ -43,7 +43,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 14 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.1mm.inst.cfg index a38a73679d..d0ee391c65 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.1mm.inst.cfg @@ -42,7 +42,7 @@ machine_nozzle_heat_up_speed = 1.9 material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 14 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg index f045d5425d..9869a18bb3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.2mm.inst.cfg @@ -44,7 +44,7 @@ material_extrusion_cool_down_speed = 0.7 material_max_flowrate = 14 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.3mm.inst.cfg index 79e8161047..fc8507c42b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_um-tough-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_max_flowrate = 14 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = none +prime_tower_enable = False raft_airgap = 0.25 retraction_amount = 6.5 retraction_prime_speed = =retraction_speed diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.2mm.inst.cfg index a7877d90e1..0dd369e4dd 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.2mm.inst.cfg @@ -17,7 +17,7 @@ brim_width = 14 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 20 -prime_tower_mode = normal +prime_tower_enable = True retraction_hop = 0.1 retraction_hop_enabled = False speed_print = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.3mm.inst.cfg index 2b5b521f02..e6ce183f4a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.3mm.inst.cfg @@ -17,7 +17,7 @@ brim_width = 14 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 17 -prime_tower_mode = normal +prime_tower_enable = True retraction_hop = 0.1 retraction_hop_enabled = False speed_print = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.4mm.inst.cfg index ff9a049f7e..0c3abc6e3f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe-plus_0.4mm.inst.cfg @@ -17,7 +17,7 @@ brim_width = 14 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 15 -prime_tower_mode = normal +prime_tower_enable = True retraction_hop = 0.1 retraction_hop_enabled = False speed_infill = =math.ceil(speed_print * 40 / 50) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.2mm.inst.cfg index a3340f81a8..eb6e07e080 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.2mm.inst.cfg @@ -14,7 +14,7 @@ weight = -2 [values] brim_width = 15 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.3mm.inst.cfg index 7c80d16f24..e7958d9841 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.3mm.inst.cfg @@ -14,7 +14,7 @@ weight = -3 [values] brim_width = 15 material_print_temperature = =default_material_print_temperature + 12 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.4mm.inst.cfg index 18ec3e9dbe..0683b2959b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_cpe_0.4mm.inst.cfg @@ -14,7 +14,7 @@ weight = -4 [values] brim_width = 15 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = normal +prime_tower_enable = True speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.2mm.inst.cfg index 798db0dfc8..5a774e0750 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.2mm.inst.cfg @@ -17,7 +17,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.3mm.inst.cfg index 86d6130a70..bed4ac46d7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.3mm.inst.cfg @@ -17,7 +17,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.4mm.inst.cfg index 2d9c3ebabe..a0d58757da 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_nylon_0.4mm.inst.cfg @@ -17,7 +17,7 @@ machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 material_print_temperature = =default_material_print_temperature - 5 ooze_shield_angle = 40 -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.45 support_angle = 70 switch_extruder_prime_speed = 30 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.2mm.inst.cfg index 7f51af7154..6208ad9bec 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.2mm.inst.cfg @@ -15,7 +15,7 @@ weight = -2 brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.3mm.inst.cfg index 81d08397f3..98b0d3f5f8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.3mm.inst.cfg @@ -15,7 +15,7 @@ weight = -3 brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.4mm.inst.cfg index 689455183f..156113b809 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_petg_0.4mm.inst.cfg @@ -15,7 +15,7 @@ weight = -4 brim_width = 7 cool_fan_speed = 20 material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = normal +prime_tower_enable = True speed_infill = =math.ceil(speed_print * 33 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.2mm.inst.cfg index d00e5235ba..10bf06fbb5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.2mm.inst.cfg @@ -16,7 +16,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.3mm.inst.cfg index a22439011e..1a63005ced 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.3mm.inst.cfg @@ -16,7 +16,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.4mm.inst.cfg index 7a97620cb4..5e22cee246 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pla_0.4mm.inst.cfg @@ -16,7 +16,7 @@ gradual_infill_step_height = =3 * layer_height machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = normal +prime_tower_enable = True speed_infill = =math.ceil(speed_print * 35 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg index 355e3afa78..c338c4b7ff 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.2mm.inst.cfg @@ -18,9 +18,9 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 11 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 10 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg index e89b5d717b..62d9eb235d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.3mm.inst.cfg @@ -18,9 +18,9 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 13 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 15 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg index 542ba0bb5b..b2792b6fee 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_pp_0.4mm.inst.cfg @@ -18,9 +18,9 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature + 15 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 20 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.2mm.inst.cfg index 1c5161a635..26c20268ea 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.2mm.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = none +prime_tower_enable = False speed_print = 45 speed_topbottom = =round(speed_print * 35 / 45) speed_wall = =round(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.3mm.inst.cfg index 0a4c4ad2c7..cc28dc5150 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.3mm.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = none +prime_tower_enable = False speed_infill = =math.ceil(speed_print * 30 / 35) speed_print = 35 speed_topbottom = =math.ceil(speed_print * 20 / 35) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.4mm.inst.cfg index 2fc8aaf746..eb338d1e1d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tough-pla_0.4mm.inst.cfg @@ -17,7 +17,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 15 -prime_tower_mode = none +prime_tower_enable = False speed_infill = =math.ceil(speed_print * 30 / 30) speed_print = 30 speed_topbottom = =math.ceil(speed_print * 20 / 30) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg index 3deb8f57a0..2491d0ed88 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg @@ -21,8 +21,8 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 4 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg index fd30dfc228..e975175ce0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg @@ -22,8 +22,8 @@ material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 material_print_temperature = =default_material_print_temperature - 2 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg index 2f21317657..5334fac1f0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg @@ -21,8 +21,8 @@ material_final_print_temperature = =material_print_temperature - 10 material_flow = 105 material_initial_print_temperature = =material_print_temperature - 10 multiple_mesh_overlap = 0.2 +prime_tower_enable = True prime_tower_flow = 100 -prime_tower_mode = normal retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.2mm.inst.cfg index e308015dd8..9ba4a38c6e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 22 material_print_temperature = =default_material_print_temperature + 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.15 retraction_amount = 4 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.3mm.inst.cfg index 3d7cabe23d..4ab74980ef 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 22 material_print_temperature = =default_material_print_temperature + 7 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.15 retraction_amount = 4 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.4mm.inst.cfg index f7ab03fac0..269d51dd4b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-abs_0.4mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 22 material_print_temperature = =default_material_print_temperature + 10 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.15 retraction_amount = 4 retraction_prime_speed = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.2mm.inst.cfg index 692f4f8aa7..4f56167ffd 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 23 material_print_temperature = =default_material_print_temperature - 5 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 3.5 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.3mm.inst.cfg index 93e4e071f5..9fdf9a665b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.3mm.inst.cfg @@ -46,7 +46,7 @@ material_flow = 93 material_max_flowrate = 23 material_print_temperature = =default_material_print_temperature - 5 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 3.5 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.4mm.inst.cfg index 592c835689..3368ae6e2d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-petg_0.4mm.inst.cfg @@ -46,7 +46,7 @@ material_flow = 93 material_max_flowrate = 23 material_print_temperature = =default_material_print_temperature - 5 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True retraction_amount = 3.5 retraction_prime_speed = 15 retraction_speed = 45 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.2mm.inst.cfg index fd0b6da130..ca93df9dc1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 15 material_print_temperature = =default_material_print_temperature + 10 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.3mm.inst.cfg index a6b7ac0439..4461ae0772 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 15 material_print_temperature = =default_material_print_temperature + 10 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.4mm.inst.cfg index c873edfacb..1acdad53a0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-pla_0.4mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 15 material_print_temperature = =default_material_print_temperature + 15 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg index 413903a8e8..4973ec35bb 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.2mm.inst.cfg @@ -47,7 +47,7 @@ material_max_flowrate = 17 material_print_temperature = =default_material_print_temperature + 10 meshfix_maximum_resolution = 0.7 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.3mm.inst.cfg index f0c5169389..2bcf3fa82d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.3mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 17 material_print_temperature = =default_material_print_temperature + 15 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.4mm.inst.cfg index cb12b8740c..3e4693c115 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_um-tough-pla_0.4mm.inst.cfg @@ -44,7 +44,7 @@ material_flow = 93 material_max_flowrate = 17 material_print_temperature = =default_material_print_temperature + 15 optimize_wall_printing_order = False -prime_tower_mode = normal +prime_tower_enable = True raft_airgap = 0.25 retraction_amount = 4 retraction_prime_speed = 22 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.06mm.inst.cfg index 022e91ed9f..2bc28f4c1a 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.06mm.inst.cfg @@ -15,7 +15,7 @@ weight = 1 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_infill_sparse_thickness = =3 * layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.15mm.inst.cfg index 40cf72eff4..f5b8c35298 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.15mm.inst.cfg @@ -14,7 +14,7 @@ weight = -1 [values] brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) -prime_tower_mode = none +prime_tower_enable = False retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_infill_sparse_thickness = =2 * layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.1mm.inst.cfg index 8b5a3e9f67..6457f97c9c 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.1mm.inst.cfg @@ -15,7 +15,7 @@ weight = 0 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_infill_sparse_thickness = =2 * layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.2mm.inst.cfg index 1ff95a0e3b..eef90f5f17 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.2mm.inst.cfg @@ -15,7 +15,7 @@ weight = -2 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature + 5 -prime_tower_mode = none +prime_tower_enable = False retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_interface_enable = True diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.3mm.inst.cfg index 58796a07a4..e1862ce3c4 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_pva_0.3mm.inst.cfg @@ -16,7 +16,7 @@ weight = -3 brim_replaces_support = False cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) material_print_temperature = =default_material_print_temperature - 5 -prime_tower_mode = none +prime_tower_enable = False retraction_count_max = 5 skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) support_infill_sparse_thickness = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.15mm.inst.cfg index b7d9b2a05f..8b807c1eb5 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.2mm.inst.cfg index e3e8d486b0..ebc58413e2 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.15mm.inst.cfg index f01921353b..1204be4c15 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.2mm.inst.cfg index 0a1cc1204d..6a7d52af4b 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_um-pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.15mm.inst.cfg index 4437f2c531..40d414cbcb 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.2mm.inst.cfg index 3796177bc5..6144a2c3f0 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.15mm.inst.cfg index 1ec4911676..5bf5d910e8 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.15mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.2mm.inst.cfg index 36b56b6513..21407b6e66 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_um-pla_0.2mm.inst.cfg @@ -18,7 +18,7 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 10 -prime_tower_mode = normal +prime_tower_enable = True speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/variants/liquid/liquid_vo08.inst.cfg b/resources/variants/liquid/liquid_vo08.inst.cfg index a69a0f806e..58cbea1b9d 100644 --- a/resources/variants/liquid/liquid_vo08.inst.cfg +++ b/resources/variants/liquid/liquid_vo08.inst.cfg @@ -37,7 +37,7 @@ material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 material_standby_temperature = 100 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_wipe_enabled = True retract_at_layer_change = =not magic_spiralize retraction_amount = 3 diff --git a/resources/variants/strateo3d/strateo3d_high_temp_04.inst.cfg b/resources/variants/strateo3d/strateo3d_high_temp_04.inst.cfg index b66b984346..4bf51a967a 100644 --- a/resources/variants/strateo3d/strateo3d_high_temp_04.inst.cfg +++ b/resources/variants/strateo3d/strateo3d_high_temp_04.inst.cfg @@ -14,7 +14,7 @@ layer_height_0 = 0.3 machine_nozzle_id = HT0.4 machine_nozzle_size = 0.4 machine_nozzle_tip_outer_diameter = 1.0 -prime_tower_mode = normal +prime_tower_enable = True retract_at_layer_change = False support_angle = 45 support_use_towers = True diff --git a/resources/variants/strateo3d/strateo3d_standard_04.inst.cfg b/resources/variants/strateo3d/strateo3d_standard_04.inst.cfg index 968c7c7262..3d705453d8 100644 --- a/resources/variants/strateo3d/strateo3d_standard_04.inst.cfg +++ b/resources/variants/strateo3d/strateo3d_standard_04.inst.cfg @@ -14,7 +14,7 @@ layer_height_0 = 0.3 machine_nozzle_id = Standard 0.4 machine_nozzle_size = 0.4 machine_nozzle_tip_outer_diameter = 1.0 -prime_tower_mode = normal +prime_tower_enable = True retract_at_layer_change = False support_angle = 60 support_use_towers = True diff --git a/resources/variants/strateo3d/strateo3d_standard_06.inst.cfg b/resources/variants/strateo3d/strateo3d_standard_06.inst.cfg index 9b6d921d70..3443f64531 100644 --- a/resources/variants/strateo3d/strateo3d_standard_06.inst.cfg +++ b/resources/variants/strateo3d/strateo3d_standard_06.inst.cfg @@ -14,7 +14,7 @@ layer_height_0 = 0.4 machine_nozzle_id = Standard 0.6 machine_nozzle_size = 0.6 machine_nozzle_tip_outer_diameter = 1.5 -prime_tower_mode = normal +prime_tower_enable = True retract_at_layer_change = False support_angle = 55 support_use_towers = True diff --git a/resources/variants/strateo3d/strateo3d_standard_08.inst.cfg b/resources/variants/strateo3d/strateo3d_standard_08.inst.cfg index 11ff582ef1..f436ce1fe7 100644 --- a/resources/variants/strateo3d/strateo3d_standard_08.inst.cfg +++ b/resources/variants/strateo3d/strateo3d_standard_08.inst.cfg @@ -14,7 +14,7 @@ layer_height_0 = 0.5 machine_nozzle_id = Standard 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 -prime_tower_mode = normal +prime_tower_enable = True retract_at_layer_change = True support_angle = 50 support_use_towers = True diff --git a/resources/variants/strateo3d/strateo3d_standard_10.inst.cfg b/resources/variants/strateo3d/strateo3d_standard_10.inst.cfg index c9d50d91c3..b957d58d9f 100644 --- a/resources/variants/strateo3d/strateo3d_standard_10.inst.cfg +++ b/resources/variants/strateo3d/strateo3d_standard_10.inst.cfg @@ -14,7 +14,7 @@ layer_height_0 = 0.6 machine_nozzle_id = Standard 1.0 Experimental machine_nozzle_size = 1.0 machine_nozzle_tip_outer_diameter = 2.5 -prime_tower_mode = normal +prime_tower_enable = True retract_at_layer_change = True support_angle = 50 support_use_towers = True diff --git a/resources/variants/strateo3d/strateo3d_standard_12.inst.cfg b/resources/variants/strateo3d/strateo3d_standard_12.inst.cfg index f1f03bfcb4..3a35f9c4a2 100644 --- a/resources/variants/strateo3d/strateo3d_standard_12.inst.cfg +++ b/resources/variants/strateo3d/strateo3d_standard_12.inst.cfg @@ -14,7 +14,7 @@ layer_height_0 = 0.7 machine_nozzle_id = Standard 1.2 Experimental machine_nozzle_size = 1.2 machine_nozzle_tip_outer_diameter = 3.0 -prime_tower_mode = normal +prime_tower_enable = True retract_at_layer_change = True support_angle = 50 support_use_towers = True diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg index baf5f4043a..4190aab0cd 100644 --- a/resources/variants/ultimaker3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_aa0.8.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_id = AA 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_amount = 6.5 diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index 5250dff5e9..62227f50f6 100644 --- a/resources/variants/ultimaker3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_bb0.8.inst.cfg @@ -26,7 +26,7 @@ machine_nozzle_id = BB 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_hop = 2 diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg index 109cd55a9d..941634e3a6 100644 --- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_id = AA 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_amount = 6.5 diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg index c40c69ff62..2a88f165e6 100644 --- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg @@ -26,7 +26,7 @@ machine_nozzle_id = BB 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_hop = 2 diff --git a/resources/variants/ultimaker_s3_aa0.8.inst.cfg b/resources/variants/ultimaker_s3_aa0.8.inst.cfg index 5385e5e540..e7d3487503 100644 --- a/resources/variants/ultimaker_s3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker_s3_aa0.8.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_id = AA 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_amount = 6.5 diff --git a/resources/variants/ultimaker_s3_bb0.8.inst.cfg b/resources/variants/ultimaker_s3_bb0.8.inst.cfg index 56b1ea9af7..d0f78ac3bd 100644 --- a/resources/variants/ultimaker_s3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s3_bb0.8.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_id = BB 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_hop = 2 diff --git a/resources/variants/ultimaker_s5_aa0.8.inst.cfg b/resources/variants/ultimaker_s5_aa0.8.inst.cfg index 4bb5eda5db..04a3a97d11 100644 --- a/resources/variants/ultimaker_s5_aa0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_aa0.8.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_id = AA 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_amount = 6.5 diff --git a/resources/variants/ultimaker_s5_bb0.8.inst.cfg b/resources/variants/ultimaker_s5_bb0.8.inst.cfg index b833c4bcf3..07b556d206 100644 --- a/resources/variants/ultimaker_s5_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_bb0.8.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_id = BB 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_hop = 2 diff --git a/resources/variants/ultimaker_s7_aa0.8.inst.cfg b/resources/variants/ultimaker_s7_aa0.8.inst.cfg index 1feea8c676..b3253f7d25 100644 --- a/resources/variants/ultimaker_s7_aa0.8.inst.cfg +++ b/resources/variants/ultimaker_s7_aa0.8.inst.cfg @@ -23,7 +23,7 @@ machine_nozzle_id = AA 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_amount = 6.5 diff --git a/resources/variants/ultimaker_s7_bb0.8.inst.cfg b/resources/variants/ultimaker_s7_bb0.8.inst.cfg index 17a9971002..010d5c7cf1 100644 --- a/resources/variants/ultimaker_s7_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s7_bb0.8.inst.cfg @@ -25,7 +25,7 @@ machine_nozzle_id = BB 0.8 machine_nozzle_size = 0.8 machine_nozzle_tip_outer_diameter = 2.0 multiple_mesh_overlap = 0 -prime_tower_mode = none +prime_tower_enable = False prime_tower_wipe_enabled = True raft_surface_layers = 1 retraction_amount = 4.5 From bb439e586775089a500de32956ee9d56a2069d1e Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Thu, 22 Feb 2024 16:21:32 +0100 Subject: [PATCH 139/203] Introduce `primetower_enable` setting CURA-11645 --- resources/definitions/fdmprinter.def.json | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 1d453456a8..9dbd7b19a0 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6794,20 +6794,29 @@ "description": "Settings used for printing with multiple extruders.", "children": { + "prime_tower_enable": { + "label": "Enable Prime Tower", + "description": "Print a tower next to the print which serves to prime the material after each nozzle switch.", + "type": "bool", + "enabled": "extruders_enabled_count > 1", + "default_value": false, + "resolve": "(extruders_enabled_count > 1) and any(extruderValues('prime_tower_enable'))", + "settable_per_mesh": false, + "settable_per_extruder": false + }, "prime_tower_mode": { "label": "Prime Tower", - "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.
  • None: do not generate a prime tower
  • Normal: generate a bucket in which secondary materials are primed
  • Interleaved: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", + "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.
  • Normal: generate a bucket in which secondary materials are primed
  • Interleaved: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", "type": "enum", - "value": "'none' if (extruders_enabled_count < 2) else ('interleaved' if (all(material_type_var == extruderValues('material_type')[0] for material_type_var in extruderValues('material_type')) and all(material_brand_var == extruderValues('material_brand')[0] for material_brand_var in extruderValues('material_brand'))) else 'normal')", + "value": "'interleaved' if (all(material_type_var == extruderValues('material_type')[0] for material_type_var in extruderValues('material_type')) and all(material_brand_var == extruderValues('material_brand')[0] for material_brand_var in extruderValues('material_brand'))) else 'normal'", "options": { - "none": "None", "normal": "Normal", "interleaved": "Interleaved" }, - "default_value": "none", - "enabled": "extruders_enabled_count > 1", + "default_value": "normal", + "enabled": "prime_tower_enabled", "settable_per_mesh": false, "settable_per_extruder": false }, From 0a09cee0c6bda29c15b76e3074b8b043c2c4ad94 Mon Sep 17 00:00:00 2001 From: casperlamboo Date: Thu, 22 Feb 2024 15:22:31 +0000 Subject: [PATCH 140/203] Applied printer-linter format --- resources/definitions/fdmprinter.def.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 9dbd7b19a0..a22a06c19f 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6794,7 +6794,8 @@ "description": "Settings used for printing with multiple extruders.", "children": { - "prime_tower_enable": { + "prime_tower_enable": + { "label": "Enable Prime Tower", "description": "Print a tower next to the print which serves to prime the material after each nozzle switch.", "type": "bool", From d4ba499d68fca86b6ccf2e3f9beb8b0824e59207 Mon Sep 17 00:00:00 2001 From: Casper Lamboo Date: Thu, 22 Feb 2024 17:13:01 +0100 Subject: [PATCH 141/203] Update resources/definitions/fdmprinter.def.json --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index a22a06c19f..8b5a1e5e92 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6817,7 +6817,7 @@ "interleaved": "Interleaved" }, "default_value": "normal", - "enabled": "prime_tower_enabled", + "enabled": "prime_tower_enable", "settable_per_mesh": false, "settable_per_extruder": false }, From 0b222d9be229374fb2a33827f4542b8a43f81e81 Mon Sep 17 00:00:00 2001 From: sheep007 <42427653+zanghao912@users.noreply.github.com> Date: Fri, 23 Feb 2024 10:34:10 +0800 Subject: [PATCH 142/203] Update creality_ender3v3se.def.json --- resources/definitions/creality_ender3v3se.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/creality_ender3v3se.def.json b/resources/definitions/creality_ender3v3se.def.json index 5769e3e493..12b863b506 100644 --- a/resources/definitions/creality_ender3v3se.def.json +++ b/resources/definitions/creality_ender3v3se.def.json @@ -45,7 +45,7 @@ "machine_max_feedrate_y": { "value": 500 }, "machine_max_feedrate_z": { "value": 30 }, "machine_name": { "default_value": "Creality Ender-3 V3 SE" }, - "machine_start_gcode": { "default_value": "M220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nM420 S1; Enable mesh leveling\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S[material_print_temperature_layer_0]\nG1 X10.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y145.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 E-1.0000 F1800 ;Retract a bit\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 E0.0000 F1800 \n" }, + "machine_start_gcode": { "default_value": "M220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nM420 S1; Enable mesh leveling\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S{material_print_temperature_layer_0}\nG1 X10.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y145.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 E-1.0000 F1800 ;Retract a bit\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 E0.0000 F1800 \n" }, "machine_width": { "default_value": 220 }, "retraction_amount": { "value": 0.8 }, "retraction_speed": { "default_value": 40 }, From 68d1fb4c6fca8dedb5e7ab57de2f7a4e0d8cae4d Mon Sep 17 00:00:00 2001 From: sheep007 <42427653+zanghao912@users.noreply.github.com> Date: Fri, 23 Feb 2024 15:42:58 +0800 Subject: [PATCH 143/203] fix Anycubic Kobra Go & Kobra 2 start Gcode BUG --- resources/definitions/anycubic_kobra2.def.json | 2 +- resources/definitions/anycubic_kobra_go.def.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/anycubic_kobra2.def.json b/resources/definitions/anycubic_kobra2.def.json index aea6b4d344..965504338b 100644 --- a/resources/definitions/anycubic_kobra2.def.json +++ b/resources/definitions/anycubic_kobra2.def.json @@ -42,7 +42,7 @@ "machine_max_jerk_xy": { "value": 10 }, "machine_max_jerk_z": { "value": 2 }, "machine_name": { "default_value": "Anycubic Kobra 2" }, - "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ; use absolute coordinates\nM82 ; use absolute distances for extrusion\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 ; home all axes\nM300 S1318 P266\nG1 Z5 F5000 ; lift nozzle\nG1 X5 Y0 F3000\nG1 Z0.3 ; set nozzle height\nG92 E0\nG1 X50 Y0 E20 F500 ; Extrude 20mm of filament in a 5cm line \nG92 E0 ; zero the extruded length again \nG1 E-4.5 F4800 ; Retract a little \nG92 E0\nG1 X120 F4000 ; Quickly wipe away from the filament line\nM117 ; Printing\u2026\nG5" }, + "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ; use absolute coordinates\nM82 ; use absolute distances for extrusion\nM104 S{material_print_temperature_layer_0} ; set extruder temp\nM140 S{material_bed_temperature_layer_0} ; set bed temp\nM190 S{material_bed_temperature_layer_0} ; wait for bed temp\nM109 S{material_print_temperature_layer_0} ; wait for extruder temp\nG28 ; home all axes\nM300 S1318 P266\nG1 Z5 F5000 ; lift nozzle\nG1 X5 Y0 F3000\nG1 Z0.3 ; set nozzle height\nG92 E0\nG1 X50 Y0 E20 F500 ; Extrude 20mm of filament in a 5cm line \nG92 E0 ; zero the extruded length again \nG1 E-4.5 F4800 ; Retract a little \nG92 E0\nG1 X120 F4000 ; Quickly wipe away from the filament line\nM117 ; Printing\u2026\nG5" }, "machine_width": { "default_value": 220 }, "material_bed_temperature": { "maximum_value_warning": 110 }, "material_bed_temperature_layer_0": { "maximum_value_warning": 110 }, diff --git a/resources/definitions/anycubic_kobra_go.def.json b/resources/definitions/anycubic_kobra_go.def.json index 8c546bdbb7..686734d962 100644 --- a/resources/definitions/anycubic_kobra_go.def.json +++ b/resources/definitions/anycubic_kobra_go.def.json @@ -23,7 +23,7 @@ "machine_heated_bed": { "default_value": true }, "machine_height": { "default_value": 250 }, "machine_name": { "default_value": "Anycubic Kobra Go" }, - "machine_start_gcode": { "default_value": "M140 S[first_layer_bed_temperature]; Heat bed\nM104 S[first_layer_temperature\n ]; Heat extruder\nG21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nG28 ; Home all axes\nG92 E0 ; Reset Extruder\nM420 S1 ; Enable Bed Levelling Mesh\nM190 S[first_layer_bed_temperature\n ]; Wait for bed to get up to temperature\nM109 S[first_layer_temperature\n ]; Wait for extruder to get up to temperature\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X2 Y20 Z0.3 F5000.0 ; Move to start position\nG1 X2 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X2.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X2.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 F2400 E-1\nG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish" }, + "machine_start_gcode": { "default_value": "M140 S{material_bed_temperature_layer_0}; Heat bed\nM104 S{material_print_temperature_layer_0}; Heat extruder\nG21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nG28 ; Home all axes\nG92 E0 ; Reset Extruder\nM420 S1 ; Enable Bed Levelling Mesh\nM190 S{material_bed_temperature_layer_0}; Wait for bed to get up to temperature\nM109 S{material_print_temperature_layer_0}; Wait for extruder to get up to temperature\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X2 Y20 Z0.3 F5000.0 ; Move to start position\nG1 X2 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X2.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X2.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 F2400 E-1\nG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish" }, "machine_width": { "default_value": 222 } } } \ No newline at end of file From d2ae315522d9c1a0b26e5ac814b862d7e1bc2692 Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Fri, 23 Feb 2024 09:02:26 +0100 Subject: [PATCH 144/203] Update resources/definitions/ultimaker_method_base.def.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- resources/definitions/ultimaker_method_base.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/ultimaker_method_base.def.json b/resources/definitions/ultimaker_method_base.def.json index 19fe80b2e2..ed7b6597e5 100644 --- a/resources/definitions/ultimaker_method_base.def.json +++ b/resources/definitions/ultimaker_method_base.def.json @@ -377,7 +377,7 @@ "retraction_prime_speed": { "value": "retraction_speed" }, "retraction_speed": { "value": 5 }, "roofing_layer_count": { "value": 2 }, - "roofing_material_flow": { "value": "material_flow" }, + "roofing_monotonic": { "value": true }, "skin_material_flow": { "value": "0.95*material_flow" }, "skin_outline_count": { "value": 0 }, From 21032311028a3e97ec175060bb2ca6bd5dca6859 Mon Sep 17 00:00:00 2001 From: pkuiper-ultimaker Date: Fri, 23 Feb 2024 08:03:17 +0000 Subject: [PATCH 145/203] Applied printer-linter format --- resources/definitions/ultimaker_method_base.def.json | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/definitions/ultimaker_method_base.def.json b/resources/definitions/ultimaker_method_base.def.json index ed7b6597e5..07a5a3d253 100644 --- a/resources/definitions/ultimaker_method_base.def.json +++ b/resources/definitions/ultimaker_method_base.def.json @@ -377,7 +377,6 @@ "retraction_prime_speed": { "value": "retraction_speed" }, "retraction_speed": { "value": 5 }, "roofing_layer_count": { "value": 2 }, - "roofing_monotonic": { "value": true }, "skin_material_flow": { "value": "0.95*material_flow" }, "skin_outline_count": { "value": 0 }, From de91761b8af6b1b350a36c09ec40133229a74652 Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Fri, 23 Feb 2024 09:24:05 +0100 Subject: [PATCH 146/203] Update ultimaker.def.json --- resources/definitions/ultimaker.def.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 97eaf278e8..b8d6d33375 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -101,7 +101,6 @@ "relative_extrusion": { "enabled": false, - "value": false }, "retraction_combing": { "value": "'no_outer_surfaces'" }, "retraction_combing_max_distance": { "value": 15 }, @@ -140,4 +139,4 @@ "z_seam_corner": { "value": "'z_seam_corner_none'" }, "zig_zaggify_support": { "value": true } } -} \ No newline at end of file +} From 1b12617e01ff558ebc18bd2634b18020186c08bb Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Fri, 23 Feb 2024 09:27:31 +0100 Subject: [PATCH 147/203] Update ultimaker.def.json --- resources/definitions/ultimaker.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index b8d6d33375..7686bd1301 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -100,7 +100,7 @@ "raft_surface_speed": { "value": "speed_topbottom" }, "relative_extrusion": { - "enabled": false, + "enabled": false }, "retraction_combing": { "value": "'no_outer_surfaces'" }, "retraction_combing_max_distance": { "value": 15 }, From 3eee666d6ad35eb357efc3df46f48e2446effc97 Mon Sep 17 00:00:00 2001 From: pkuiper-ultimaker Date: Fri, 23 Feb 2024 08:28:25 +0000 Subject: [PATCH 148/203] Applied printer-linter format --- resources/definitions/ultimaker.def.json | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 7686bd1301..f62e98f30f 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -98,10 +98,7 @@ "raft_surface_fan_speed": { "value": "cool_fan_speed_min" }, "raft_surface_monotonic": { "value": true }, "raft_surface_speed": { "value": "speed_topbottom" }, - "relative_extrusion": - { - "enabled": false - }, + "relative_extrusion": { "enabled": false }, "retraction_combing": { "value": "'no_outer_surfaces'" }, "retraction_combing_max_distance": { "value": 15 }, "retraction_count_max": { "value": 25 }, @@ -139,4 +136,4 @@ "z_seam_corner": { "value": "'z_seam_corner_none'" }, "zig_zaggify_support": { "value": true } } -} +} \ No newline at end of file From cd9ce966af097a755b2f82714d5214978fae64b9 Mon Sep 17 00:00:00 2001 From: Nikita Chernukhin Date: Fri, 2 Feb 2024 20:46:14 +0100 Subject: [PATCH 149/203] Fix bed mesh offsets for Ratrig V-Core3 200mm and V-Minion --- resources/definitions/ratrig_vcore3_200.def.json | 2 +- resources/definitions/ratrig_vminion.def.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/ratrig_vcore3_200.def.json b/resources/definitions/ratrig_vcore3_200.def.json index d16f15b476..143063b95f 100644 --- a/resources/definitions/ratrig_vcore3_200.def.json +++ b/resources/definitions/ratrig_vcore3_200.def.json @@ -8,7 +8,7 @@ "platform": "ratrig_vcore3_200.stl", "platform_offset": [ 0, - 5, + 0, 0 ], "weight": 16 diff --git a/resources/definitions/ratrig_vminion.def.json b/resources/definitions/ratrig_vminion.def.json index bdc8d0d8a1..daf0d4f302 100644 --- a/resources/definitions/ratrig_vminion.def.json +++ b/resources/definitions/ratrig_vminion.def.json @@ -11,7 +11,7 @@ "machine_extruder_trains": { "0": "ratrig_base_extruder_0" }, "platform_offset": [ 0, - 5, + 0, 0 ], "preferred_variant_name": "0.4mm Nozzle", From ec138516eb1f46d9bb1d7aaa01394d55542c67ba Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Mon, 26 Feb 2024 06:53:23 +0100 Subject: [PATCH 150/203] override Protobuf requirement deps Fix versions conflict --- conanfile.py | 1 + 1 file changed, 1 insertion(+) diff --git a/conanfile.py b/conanfile.py index ca6b4eabd0..2b45c288e9 100644 --- a/conanfile.py +++ b/conanfile.py @@ -355,6 +355,7 @@ class CuraConan(ConanFile): self.requires("spdlog/1.12.0") self.requires("fmt/10.1.1") self.requires("zlib/1.2.13") + self.requires("protobuf/3.21.12") def build_requirements(self): if self.options.get_safe("enable_i18n", False): From fca8d2a75185e19938b4029bc3f70146ae0fcc5e Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Mon, 26 Feb 2024 06:54:20 +0100 Subject: [PATCH 151/203] Revert "override Protobuf requirement deps" This reverts commit ec138516eb1f46d9bb1d7aaa01394d55542c67ba. --- conanfile.py | 1 - 1 file changed, 1 deletion(-) diff --git a/conanfile.py b/conanfile.py index 2b45c288e9..ca6b4eabd0 100644 --- a/conanfile.py +++ b/conanfile.py @@ -355,7 +355,6 @@ class CuraConan(ConanFile): self.requires("spdlog/1.12.0") self.requires("fmt/10.1.1") self.requires("zlib/1.2.13") - self.requires("protobuf/3.21.12") def build_requirements(self): if self.options.get_safe("enable_i18n", False): From d5e8a0acb9d740296e5ee04f91b1b084afac58db Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Mon, 26 Feb 2024 11:12:31 +0100 Subject: [PATCH 152/203] Fix prime tower shadow visible when disabled CURA-11645 --- cura/BuildVolume.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 56abfc0fa1..0f906332eb 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -880,7 +880,7 @@ class BuildVolume(SceneNode): result[extruder.getId()] = [] # Currently, the only normally printed object is the prime tower. - if self._global_container_stack.getProperty("prime_tower_mode", "value") != 'none': + if self._global_container_stack.getProperty("prime_tower_enable", "value"): prime_tower_size = self._global_container_stack.getProperty("prime_tower_size", "value") machine_width = self._global_container_stack.getProperty("machine_width", "value") machine_depth = self._global_container_stack.getProperty("machine_depth", "value") From fb33dfe665778dbcf36480dd1f8f8041c42aea46 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Mon, 26 Feb 2024 11:15:34 +0100 Subject: [PATCH 153/203] Register notification on prime tower enable CURA-11645 --- cura/BuildVolume.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 0f906332eb..742d1872cb 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -1208,7 +1208,7 @@ class BuildVolume(SceneNode): _raft_settings = ["adhesion_type", "raft_base_thickness", "raft_interface_layers", "raft_interface_thickness", "raft_surface_layers", "raft_surface_thickness", "raft_airgap", "layer_0_z_overlap"] _extra_z_settings = ["retraction_hop_enabled", "retraction_hop"] _prime_settings = ["extruder_prime_pos_x", "extruder_prime_pos_y", "prime_blob_enable"] - _tower_settings = ["prime_tower_mode", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y", "prime_tower_brim_enable", "prime_tower_base_size", "prime_tower_base_height"] + _tower_settings = ["prime_tower_enable", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y", "prime_tower_brim_enable", "prime_tower_base_size", "prime_tower_base_height"] _ooze_shield_settings = ["ooze_shield_enabled", "ooze_shield_dist"] _distance_settings = ["infill_wipe_dist", "travel_avoid_distance", "support_offset", "support_enable", "travel_avoid_other_parts", "travel_avoid_supports", "wall_line_count", "wall_line_width_0", "wall_line_width_x"] _extruder_settings = ["support_enable", "support_bottom_enable", "support_roof_enable", "support_infill_extruder_nr", "support_extruder_nr_layer_0", "support_bottom_extruder_nr", "support_roof_extruder_nr", "brim_line_count", "skirt_brim_extruder_nr", "raft_base_extruder_nr", "raft_interface_extruder_nr", "raft_surface_extruder_nr", "adhesion_type"] #Settings that can affect which extruders are used. From af494883ccd8f20ce16efee27ca04dd5737f6bf8 Mon Sep 17 00:00:00 2001 From: Casper Lamboo Date: Mon, 26 Feb 2024 12:28:19 +0100 Subject: [PATCH 154/203] Update resources/definitions/fdmprinter.def.json Co-authored-by: Erwan MATHIEU --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 8b5a1e5e92..4fac6e1d6e 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6808,7 +6808,7 @@ "prime_tower_mode": { "label": "Prime Tower", - "description": "Print a tower next to the model, which serves to prime the material after each nozzle switch.
  • Normal: generate a bucket in which secondary materials are primed
  • Interleaved: generate a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", + "description": "How to generate the prime tower:
  • Normal: create a bucket in which secondary materials are primed
  • Interleaved: create a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", "type": "enum", "value": "'interleaved' if (all(material_type_var == extruderValues('material_type')[0] for material_type_var in extruderValues('material_type')) and all(material_brand_var == extruderValues('material_brand')[0] for material_brand_var in extruderValues('material_brand'))) else 'normal'", "options": From 55e5cd8982e266a8b28b062fb113e150aaef815d Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Mon, 26 Feb 2024 14:58:53 +0100 Subject: [PATCH 155/203] adding dropto buildplate drop per model in 3mf CURA-10542 --- cura/PlatformPhysics.py | 19 ++++++++++++------- cura/Scene/CuraSceneNode.py | 6 ++++++ plugins/3MFReader/ThreeMFReader.py | 4 ++++ plugins/3MFReader/WorkspaceDialog.qml | 1 + plugins/3MFWriter/ThreeMFWriter.py | 1 + 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 6a26190a56..306f6a837a 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -39,7 +39,7 @@ class PlatformPhysics: Application.getInstance().getPreferences().addPreference("physics/automatic_push_free", False) Application.getInstance().getPreferences().addPreference("physics/automatic_drop_down", False) - self._app_per_model_drop = Application.getInstance().getPreferences().getValue("physics/automatic_drop_down") + self._app_per_model_drop = None def getAppPerModelDropDown(self): return self._app_per_model_drop @@ -78,6 +78,14 @@ class PlatformPhysics: # We try to shuffle all the nodes to prevent "locked" situations, where iteration B inverts iteration A. # By shuffling the order of the nodes, this might happen a few times, but at some point it will resolve. random.shuffle(nodes) + drop_down = False + # drop down in case nodes are asked to drop down from the user from workspaceDialog while opening 3mf + if self._app_per_model_drop and (self._app_per_model_drop != app_automatic_drop_down): + drop_down = True + # drop down in case the user has selected automated drop down preference for 3mf opening + if self._app_per_model_drop and app_automatic_drop_down: + drop_down= True + for node in nodes: if node is root or not isinstance(node, SceneNode) or node.getBoundingBox() is None: @@ -88,12 +96,9 @@ class PlatformPhysics: # Move it downwards if bottom is above platform move_vector = Vector() - # if per model drop is different then app_automatic_drop, in case of 3mf loading when user changes this setting for that model - if (self._app_per_model_drop != app_automatic_drop_down): - node.setSetting(SceneNodeSettings.AutoDropDown, self._app_per_model_drop) - if node.getSetting(SceneNodeSettings.AutoDropDown, self._app_per_model_drop) and not (node.getParent() and node.getParent().callDecoration("isGroup") or node.getParent() != root) and node.isEnabled(): #If an object is grouped, don't move it down + if (node.getSetting(SceneNodeSettings.AutoDropDown, app_automatic_drop_down) or drop_down) and not (node.getParent() and node.getParent().callDecoration("isGroup") or node.getParent() != root) and node.isEnabled(): z_offset = node.callDecoration("getZOffset") if node.getDecorator(ZOffsetDecorator.ZOffsetDecorator) else 0 - move_vector = move_vector.set(y = -bbox.bottom + z_offset) + move_vector = move_vector.set(y=-bbox.bottom + z_offset) # If there is no convex hull for the node, start calculating it and continue. if not node.getDecorator(ConvexHullDecorator) and not node.callDecoration("isNonPrintingMesh") and node.callDecoration("getLayerData") is None: @@ -180,7 +185,7 @@ class PlatformPhysics: op.push() # setting this drop to model same as app_automatic_drop_down - self._app_per_model_drop = app_automatic_drop_down + self._app_per_model_drop = None # After moving, we have to evaluate the boundary checks for nodes build_volume.updateNodeBoundaryCheck() diff --git a/cura/Scene/CuraSceneNode.py b/cura/Scene/CuraSceneNode.py index 9b412c7d4f..5a47fa0f0b 100644 --- a/cura/Scene/CuraSceneNode.py +++ b/cura/Scene/CuraSceneNode.py @@ -11,6 +11,7 @@ from UM.Scene.SceneNode import SceneNode from UM.Scene.SceneNodeDecorator import SceneNodeDecorator # To cast the deepcopy of every decorator back to SceneNodeDecorator. import cura.CuraApplication # To get the build plate. +from UM.Scene.SceneNodeSettings import SceneNodeSettings from cura.Settings.ExtruderStack import ExtruderStack # For typing. from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator # For per-object settings. @@ -26,6 +27,7 @@ class CuraSceneNode(SceneNode): self.addDecorator(SettingOverrideDecorator()) # Now we always have a getActiveExtruderPosition, unless explicitly disabled self._outside_buildarea = False self._print_order = 0 + self._drop_down = Application.getInstance().getPreferences().getValue("physics/automatic_drop_down") def setOutsideBuildArea(self, new_value: bool) -> None: self._outside_buildarea = new_value @@ -41,6 +43,10 @@ class CuraSceneNode(SceneNode): def isOutsideBuildArea(self) -> bool: return self._outside_buildarea or self.callDecoration("getBuildPlateNumber") < 0 + @property + def isDropDownEnabled(self) ->bool: + return self.getSetting(SceneNodeSettings.AutoDropDown, self._drop_down) + def isVisible(self) -> bool: return super().isVisible() and self.callDecoration("getBuildPlateNumber") == cura.CuraApplication.CuraApplication.getInstance().getMultiBuildPlateModel().activeBuildPlate diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index ac94282136..99852d84ce 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -16,6 +16,7 @@ from UM.Mesh.MeshReader import MeshReader from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType from UM.Scene.GroupDecorator import GroupDecorator from UM.Scene.SceneNode import SceneNode # For typing. +from UM.Scene.SceneNodeSettings import SceneNodeSettings from cura.CuraApplication import CuraApplication from cura.Machines.ContainerTree import ContainerTree from cura.Scene.BuildPlateDecorator import BuildPlateDecorator @@ -180,6 +181,9 @@ class ThreeMFReader(MeshReader): if key == "print_order": um_node.printOrder = int(setting_value) continue + if key =="drop_to_buildplate": + um_node.setSetting(SceneNodeSettings.AutoDropDown, eval(setting_value)) + continue if key in known_setting_keys: setting_container.setProperty(key, "value", setting_value) else: diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 334317e0dc..0cef71fd42 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -366,6 +366,7 @@ UM.Dialog } function reloadValue() { + manager.manager.setDropToBuildPlateForModel(checkDropModels.checked) checkDropModels.checked = UM.Preferences.getValue("physics/automatic_drop_down") } } diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index 6fda1742f8..c321505643 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -155,6 +155,7 @@ class ThreeMFWriter(MeshWriter): if isinstance(um_node, CuraSceneNode): savitar_node.setSetting("cura:print_order", str(um_node.printOrder)) + savitar_node.setSetting("cura:drop_to_buildplate", str(um_node.isDropDownEnabled)) # Store the metadata. for key, value in um_node.metadata.items(): From fb233d8b16460e3d5b38167a45d834e005dc0920 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Mon, 26 Feb 2024 14:59:48 +0100 Subject: [PATCH 156/203] preference setting of "drop+to_buildplate" preseve from previous versions CURA-10542 --- cura/PlatformPhysics.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 306f6a837a..74fe05927d 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -38,7 +38,7 @@ class PlatformPhysics: self._minimum_gap = 2 # It is a minimum distance (in mm) between two models, applicable for small models Application.getInstance().getPreferences().addPreference("physics/automatic_push_free", False) - Application.getInstance().getPreferences().addPreference("physics/automatic_drop_down", False) + Application.getInstance().getPreferences().addPreference("physics/automatic_drop_down", True) self._app_per_model_drop = None def getAppPerModelDropDown(self): From 0d40d2b07f09d41255e75699682d350248214f00 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Mon, 26 Feb 2024 15:37:54 +0100 Subject: [PATCH 157/203] Fix crash when saving ucp project CURA-11403 --- plugins/3MFWriter/SettingsExportModel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/3MFWriter/SettingsExportModel.py b/plugins/3MFWriter/SettingsExportModel.py index 0c34278067..3b034236c8 100644 --- a/plugins/3MFWriter/SettingsExportModel.py +++ b/plugins/3MFWriter/SettingsExportModel.py @@ -118,7 +118,7 @@ class SettingsExportModel(QObject): setting_type = settings_stack.getProperty(setting_to_export, "type") if setting_type is not None: # This is not very good looking, but will do for now - value = SettingDefinition.settingValueToString(setting_type, value) + " " + unit + value = f"{str(SettingDefinition.settingValueToString(setting_type, value))} {unit}" else: value = str(value) From b5b9dd0e572378e8b6376994cd60e3a8ee5e6089 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Mon, 26 Feb 2024 15:51:36 +0100 Subject: [PATCH 158/203] fixing unit-test CURA-10542 --- cura/Scene/CuraSceneNode.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cura/Scene/CuraSceneNode.py b/cura/Scene/CuraSceneNode.py index 5a47fa0f0b..65b7c1e593 100644 --- a/cura/Scene/CuraSceneNode.py +++ b/cura/Scene/CuraSceneNode.py @@ -27,7 +27,6 @@ class CuraSceneNode(SceneNode): self.addDecorator(SettingOverrideDecorator()) # Now we always have a getActiveExtruderPosition, unless explicitly disabled self._outside_buildarea = False self._print_order = 0 - self._drop_down = Application.getInstance().getPreferences().getValue("physics/automatic_drop_down") def setOutsideBuildArea(self, new_value: bool) -> None: self._outside_buildarea = new_value @@ -45,7 +44,7 @@ class CuraSceneNode(SceneNode): @property def isDropDownEnabled(self) ->bool: - return self.getSetting(SceneNodeSettings.AutoDropDown, self._drop_down) + return self.getSetting(SceneNodeSettings.AutoDropDown, Application.getInstance().getPreferences().getValue("physics/automatic_drop_down")) def isVisible(self) -> bool: return super().isVisible() and self.callDecoration("getBuildPlateNumber") == cura.CuraApplication.CuraApplication.getInstance().getMultiBuildPlateModel().activeBuildPlate From 6cd8196a9660a8d73d66c454398f0b6d8ec6f464 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Mon, 26 Feb 2024 15:53:15 +0100 Subject: [PATCH 159/203] Fix crash when saving ucp project CURA-11403 --- resources/qml/Menus/FileMenu.qml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml index 4ca09cc9f1..67edcc5962 100644 --- a/resources/qml/Menus/FileMenu.qml +++ b/resources/qml/Menus/FileMenu.qml @@ -47,6 +47,11 @@ Cura.Menu enabled: UM.WorkspaceFileHandler.enabled && saveProjectMenu.model.count == 1 onTriggered: { + const args = { + "filter_by_machine": false, + "file_type": "workspace", + "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml", + }; if (UM.Preferences.getValue("cura/dialog_on_project_save")) { saveWorkspaceDialog.args = args @@ -54,11 +59,6 @@ Cura.Menu } else { - const args = { - "filter_by_machine": false, - "file_type": "workspace", - "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml", - }; UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args) } } From 2bdc70c76b0e6238155636528087b50296102bba Mon Sep 17 00:00:00 2001 From: HellAholic Date: Mon, 26 Feb 2024 19:06:35 +0000 Subject: [PATCH 160/203] Applied printer-linter format --- resources/definitions/creality_ender3v3se.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/creality_ender3v3se.def.json b/resources/definitions/creality_ender3v3se.def.json index 8e32a44eb9..86d6818166 100644 --- a/resources/definitions/creality_ender3v3se.def.json +++ b/resources/definitions/creality_ender3v3se.def.json @@ -52,4 +52,4 @@ "speed_layer_0": { "value": 30 }, "speed_print": { "value": 180 } } -} +} \ No newline at end of file From 853bd4cf929eb47f0a470e062b9079deae413b1a Mon Sep 17 00:00:00 2001 From: sheep007 <42427653+zanghao912@users.noreply.github.com> Date: Tue, 27 Feb 2024 10:48:29 +0800 Subject: [PATCH 161/203] Update creality_ender3v3se.def.json --- resources/definitions/creality_ender3v3se.def.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/creality_ender3v3se.def.json b/resources/definitions/creality_ender3v3se.def.json index 12b863b506..8e32a44eb9 100644 --- a/resources/definitions/creality_ender3v3se.def.json +++ b/resources/definitions/creality_ender3v3se.def.json @@ -45,11 +45,11 @@ "machine_max_feedrate_y": { "value": 500 }, "machine_max_feedrate_z": { "value": 30 }, "machine_name": { "default_value": "Creality Ender-3 V3 SE" }, - "machine_start_gcode": { "default_value": "M220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nM420 S1; Enable mesh leveling\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S{material_print_temperature_layer_0}\nG1 X10.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y145.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 E-1.0000 F1800 ;Retract a bit\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 E0.0000 F1800 \n" }, + "machine_start_gcode": { "default_value": "M220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nM420 S1; Use saved mesh leveling data\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM190 S{material_bed_temperature_layer_0} ; Set bed temperature and wait\nM109 S{material_print_temperature_layer_0} ; Set hotend temperature and wait\nG1 X10.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y145.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 E-1.0000 F1800 ;Retract a bit\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 E0.0000 F1800 \n" }, "machine_width": { "default_value": 220 }, "retraction_amount": { "value": 0.8 }, "retraction_speed": { "default_value": 40 }, "speed_layer_0": { "value": 30 }, "speed_print": { "value": 180 } } -} \ No newline at end of file +} From 59d6593c176a8fcc252eb45b2eb82e4ed3e11dc0 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Tue, 27 Feb 2024 09:57:39 +0100 Subject: [PATCH 162/203] fixing reloadvalue manager CURA-10542 --- plugins/3MFReader/WorkspaceDialog.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 0cef71fd42..dbd6356e94 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -366,7 +366,7 @@ UM.Dialog } function reloadValue() { - manager.manager.setDropToBuildPlateForModel(checkDropModels.checked) + manager.setDropToBuildPlateForModel(checkDropModels.checked) checkDropModels.checked = UM.Preferences.getValue("physics/automatic_drop_down") } } From caf710ff606a0fcfb1c27e6986fb0a64251d8adf Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Tue, 27 Feb 2024 12:46:58 +0100 Subject: [PATCH 163/203] Change some left over prime tower mode -> enable CURA-11645 --- plugins/SliceInfoPlugin/SliceInfo.py | 1 + resources/definitions/fdmprinter.def.json | 30 +++++++++++------------ resources/setting_visibility/advanced.cfg | 1 + resources/setting_visibility/basic.cfg | 2 +- resources/setting_visibility/expert.cfg | 1 + 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index f61f5cf295..411146d065 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -263,6 +263,7 @@ class SliceInfo(QObject, Extension): print_settings["retraction_enable"] = global_stack.getProperty("retraction_enable", "value") # Prime tower settings + print_settings["prime_tower_enable"] = global_stack.getProperty("prime_tower_enable", "value") print_settings["prime_tower_mode"] = global_stack.getProperty("prime_tower_mode", "value") # Infill settings diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 4fac6e1d6e..92856e9613 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -979,7 +979,7 @@ "description": "Width of a single prime tower line.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_mode') != 'none'", + "enabled": "'prime_tower_enable'", "default_value": 0.4, "value": "line_width", "minimum_value": "0.001", @@ -3363,7 +3363,7 @@ "description": "The speed at which the prime tower is printed. Printing the prime tower slower can make it more stable when the adhesion between the different filaments is suboptimal.", "type": "float", "unit": "mm/s", - "enabled": "resolveOrValue('prime_tower_mode') != 'none'", + "enabled": "'prime_tower_enable'", "default_value": 60, "value": "speed_print", "minimum_value": "0.1", @@ -3741,7 +3741,7 @@ "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_print", - "enabled": "resolveOrValue('prime_tower_mode') != 'none' and resolveOrValue('acceleration_enabled')", + "enabled": "'prime_tower_enable' and resolveOrValue('acceleration_enabled')", "settable_per_mesh": false } } @@ -4060,7 +4060,7 @@ "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", - "enabled": "resolveOrValue('prime_tower_mode') != 'none' and resolveOrValue('jerk_enabled')", + "enabled": "'prime_tower_enable' and resolveOrValue('jerk_enabled')", "settable_per_mesh": false } } @@ -6827,7 +6827,7 @@ "description": "The width of the prime tower.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_mode') != 'none'", + "enabled": "'prime_tower_enable'", "default_value": 20, "resolve": "max(extruderValues('prime_tower_size'))", "minimum_value": "0", @@ -6846,7 +6846,7 @@ "default_value": 6, "minimum_value": "0", "maximum_value_warning": "(resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height') - sum(extruderValues('prime_tower_min_volume')) + prime_tower_min_volume", - "enabled": "resolveOrValue('prime_tower_mode') != 'none'", + "enabled": "'prime_tower_enable'", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -6859,7 +6859,7 @@ "default_value": 5, "minimum_value": "line_width", "maximum_value_warning": "10.0", - "enabled": "resolveOrValue('prime_tower_mode') != 'none'", + "enabled": "'prime_tower_enable'", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -6869,7 +6869,7 @@ "description": "The x coordinate of the position of the prime tower.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_mode') != 'none'", + "enabled": "'prime_tower_enable'", "default_value": 200, "value": "(resolveOrValue('machine_width') / 2 + resolveOrValue('prime_tower_size') / 2) if resolveOrValue('machine_shape') == 'elliptic' else (resolveOrValue('machine_width') - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('machine_nozzle_offset_x')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_x'))), 1)) - (resolveOrValue('machine_width') / 2 if resolveOrValue('machine_center_is_zero') else 0)", "maximum_value": "(machine_width / 2 if machine_center_is_zero else machine_width) - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0)", @@ -6883,7 +6883,7 @@ "description": "The y coordinate of the position of the prime tower.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_mode') != 'none'", + "enabled": "'prime_tower_enable'", "default_value": 200, "value": "machine_depth - prime_tower_size - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('machine_nozzle_offset_y')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_y'))), 1) - (resolveOrValue('machine_depth') / 2 if resolveOrValue('machine_center_is_zero') else 0)", "maximum_value": "(machine_depth / 2 - resolveOrValue('prime_tower_size') if machine_center_is_zero else machine_depth - resolveOrValue('prime_tower_size')) - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0)", @@ -6896,7 +6896,7 @@ "label": "Wipe Inactive Nozzle on Prime Tower", "description": "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower.", "type": "bool", - "enabled": "resolveOrValue('prime_tower_mode') != 'none'", + "enabled": "'prime_tower_enable'", "default_value": true, "settable_per_mesh": false, "settable_per_extruder": true @@ -6907,7 +6907,7 @@ "label": "Prime Tower Base", "description": "By enabling this setting, your prime-tower will get a brim, even if the model doesn't. If you want a sturdier base for a high tower, you can increase the base height.", "type": "bool", - "enabled": "resolveOrValue('prime_tower_mode') != 'none' and resolveOrValue('adhesion_type') != 'raft'", + "enabled": "'prime_tower_enable' and resolveOrValue('adhesion_type') != 'raft'", "default_value": false, "settable_per_mesh": false, "settable_per_extruder": false @@ -6919,7 +6919,7 @@ "description": "The width of the prime tower brim/base. A larger base enhances adhesion to the build plate, but also reduces the effective print area.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_mode') != 'none' and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", + "enabled": "'prime_tower_enable' and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", "default_value": 1.2, "minimum_value": "0", "maximum_value": "min(0.5 * machine_width, 0.5 * machine_depth)", @@ -6933,7 +6933,7 @@ "description": "The height of the prime tower base. Increasing this value will result in a more sturdy prime tower because the base will be wider. If this setting is too low, the prime tower will not have a sturdy base.", "type": "float", "unit": "mm", - "enabled": "resolveOrValue('prime_tower_mode') != 'none' and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", + "enabled": "'prime_tower_enable' and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", "default_value": 0, "minimum_value": "0", "maximum_value": "machine_height", @@ -6945,7 +6945,7 @@ "label": "Prime Tower Base Slope", "description": "The magnitude factor used for the slope of the prime tower base. If you increase this value, the base will become slimmer. If you decrease it, the base will become thicker.", "type": "float", - "enabled": "resolveOrValue('prime_tower_mode') != 'none' and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", + "enabled": "'prime_tower_enable' and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", "default_value": 4, "minimum_value": "0", "maximum_value": "10", @@ -6963,7 +6963,7 @@ "minimum_value": "0", "minimum_value_warning": "raft_base_line_width", "maximum_value_warning": "100", - "enabled": "resolveOrValue('prime_tower_mode') != 'none' and resolveOrValue('adhesion_type') == 'raft'", + "enabled": "'prime_tower_enable' and resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "raft_base_extruder_nr" diff --git a/resources/setting_visibility/advanced.cfg b/resources/setting_visibility/advanced.cfg index 57698bf252..55a36075be 100644 --- a/resources/setting_visibility/advanced.cfg +++ b/resources/setting_visibility/advanced.cfg @@ -127,6 +127,7 @@ brim_line_count brim_outside_only [dual] +prime_tower_enable prime_tower_mode prime_tower_position_x prime_tower_position_y diff --git a/resources/setting_visibility/basic.cfg b/resources/setting_visibility/basic.cfg index f5552f3cd8..0193eb26ba 100644 --- a/resources/setting_visibility/basic.cfg +++ b/resources/setting_visibility/basic.cfg @@ -53,7 +53,7 @@ adhesion_type adhesion_extruder_nr [dual] -prime_tower_mode +prime_tower_enable prime_tower_position_x prime_tower_position_y diff --git a/resources/setting_visibility/expert.cfg b/resources/setting_visibility/expert.cfg index 0a07fff449..130b2580a4 100644 --- a/resources/setting_visibility/expert.cfg +++ b/resources/setting_visibility/expert.cfg @@ -356,6 +356,7 @@ raft_fan_speed raft_is_shrink_plate [dual] +prime_tower_enable prime_tower_mode prime_tower_size prime_tower_min_volume From 85a82ea986c91ab4b88551dc2d15a497ffb6122d Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Tue, 27 Feb 2024 12:57:38 +0100 Subject: [PATCH 164/203] Fix prime_tower_enable setting use CURA-11645 --- resources/definitions/fdmprinter.def.json | 30 +++++++++++------------ 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 92856e9613..2cea608c33 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -979,7 +979,7 @@ "description": "Width of a single prime tower line.", "type": "float", "unit": "mm", - "enabled": "'prime_tower_enable'", + "enabled": "prime_tower_enable", "default_value": 0.4, "value": "line_width", "minimum_value": "0.001", @@ -3363,7 +3363,7 @@ "description": "The speed at which the prime tower is printed. Printing the prime tower slower can make it more stable when the adhesion between the different filaments is suboptimal.", "type": "float", "unit": "mm/s", - "enabled": "'prime_tower_enable'", + "enabled": "prime_tower_enable", "default_value": 60, "value": "speed_print", "minimum_value": "0.1", @@ -3741,7 +3741,7 @@ "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_print", - "enabled": "'prime_tower_enable' and resolveOrValue('acceleration_enabled')", + "enabled": "prime_tower_enable and resolveOrValue('acceleration_enabled')", "settable_per_mesh": false } } @@ -4060,7 +4060,7 @@ "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", - "enabled": "'prime_tower_enable' and resolveOrValue('jerk_enabled')", + "enabled": "prime_tower_enable and resolveOrValue('jerk_enabled')", "settable_per_mesh": false } } @@ -6827,7 +6827,7 @@ "description": "The width of the prime tower.", "type": "float", "unit": "mm", - "enabled": "'prime_tower_enable'", + "enabled": "prime_tower_enable", "default_value": 20, "resolve": "max(extruderValues('prime_tower_size'))", "minimum_value": "0", @@ -6846,7 +6846,7 @@ "default_value": 6, "minimum_value": "0", "maximum_value_warning": "(resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height') - sum(extruderValues('prime_tower_min_volume')) + prime_tower_min_volume", - "enabled": "'prime_tower_enable'", + "enabled": "prime_tower_enable", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -6859,7 +6859,7 @@ "default_value": 5, "minimum_value": "line_width", "maximum_value_warning": "10.0", - "enabled": "'prime_tower_enable'", + "enabled": "prime_tower_enable", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -6869,7 +6869,7 @@ "description": "The x coordinate of the position of the prime tower.", "type": "float", "unit": "mm", - "enabled": "'prime_tower_enable'", + "enabled": "prime_tower_enable", "default_value": 200, "value": "(resolveOrValue('machine_width') / 2 + resolveOrValue('prime_tower_size') / 2) if resolveOrValue('machine_shape') == 'elliptic' else (resolveOrValue('machine_width') - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('machine_nozzle_offset_x')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_x'))), 1)) - (resolveOrValue('machine_width') / 2 if resolveOrValue('machine_center_is_zero') else 0)", "maximum_value": "(machine_width / 2 if machine_center_is_zero else machine_width) - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0)", @@ -6883,7 +6883,7 @@ "description": "The y coordinate of the position of the prime tower.", "type": "float", "unit": "mm", - "enabled": "'prime_tower_enable'", + "enabled": "prime_tower_enable", "default_value": 200, "value": "machine_depth - prime_tower_size - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('machine_nozzle_offset_y')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_y'))), 1) - (resolveOrValue('machine_depth') / 2 if resolveOrValue('machine_center_is_zero') else 0)", "maximum_value": "(machine_depth / 2 - resolveOrValue('prime_tower_size') if machine_center_is_zero else machine_depth - resolveOrValue('prime_tower_size')) - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0)", @@ -6896,7 +6896,7 @@ "label": "Wipe Inactive Nozzle on Prime Tower", "description": "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower.", "type": "bool", - "enabled": "'prime_tower_enable'", + "enabled": "prime_tower_enable", "default_value": true, "settable_per_mesh": false, "settable_per_extruder": true @@ -6907,7 +6907,7 @@ "label": "Prime Tower Base", "description": "By enabling this setting, your prime-tower will get a brim, even if the model doesn't. If you want a sturdier base for a high tower, you can increase the base height.", "type": "bool", - "enabled": "'prime_tower_enable' and resolveOrValue('adhesion_type') != 'raft'", + "enabled": "prime_tower_enable and resolveOrValue('adhesion_type') != 'raft'", "default_value": false, "settable_per_mesh": false, "settable_per_extruder": false @@ -6919,7 +6919,7 @@ "description": "The width of the prime tower brim/base. A larger base enhances adhesion to the build plate, but also reduces the effective print area.", "type": "float", "unit": "mm", - "enabled": "'prime_tower_enable' and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", + "enabled": "prime_tower_enable and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", "default_value": 1.2, "minimum_value": "0", "maximum_value": "min(0.5 * machine_width, 0.5 * machine_depth)", @@ -6933,7 +6933,7 @@ "description": "The height of the prime tower base. Increasing this value will result in a more sturdy prime tower because the base will be wider. If this setting is too low, the prime tower will not have a sturdy base.", "type": "float", "unit": "mm", - "enabled": "'prime_tower_enable' and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", + "enabled": "prime_tower_enable and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", "default_value": 0, "minimum_value": "0", "maximum_value": "machine_height", @@ -6945,7 +6945,7 @@ "label": "Prime Tower Base Slope", "description": "The magnitude factor used for the slope of the prime tower base. If you increase this value, the base will become slimmer. If you decrease it, the base will become thicker.", "type": "float", - "enabled": "'prime_tower_enable' and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", + "enabled": "prime_tower_enable and (resolveOrValue('prime_tower_brim_enable') or resolveOrValue('adhesion_type') == 'raft')", "default_value": 4, "minimum_value": "0", "maximum_value": "10", @@ -6963,7 +6963,7 @@ "minimum_value": "0", "minimum_value_warning": "raft_base_line_width", "maximum_value_warning": "100", - "enabled": "'prime_tower_enable' and resolveOrValue('adhesion_type') == 'raft'", + "enabled": "prime_tower_enable and resolveOrValue('adhesion_type') == 'raft'", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "raft_base_extruder_nr" From 98becc9f25c901565eef3250c108caa0152cf29c Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Tue, 27 Feb 2024 13:02:46 +0100 Subject: [PATCH 165/203] Minor prime tower setting wording CURA-11645 --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 2cea608c33..1db28b289c 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6807,7 +6807,7 @@ }, "prime_tower_mode": { - "label": "Prime Tower", + "label": "Prime Tower Type", "description": "How to generate the prime tower:
  • Normal: create a bucket in which secondary materials are primed
  • Interleaved: create a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other.
", "type": "enum", "value": "'interleaved' if (all(material_type_var == extruderValues('material_type')[0] for material_type_var in extruderValues('material_type')) and all(material_brand_var == extruderValues('material_brand')[0] for material_brand_var in extruderValues('material_brand'))) else 'normal'", From 1338a562efca7169a3dc38c5aec76180dbe3aa7a Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Tue, 27 Feb 2024 13:45:10 +0100 Subject: [PATCH 166/203] added drop models to buildplate as a right click option Also shortcut: ctrl+B CURA-10542 --- cura/CuraApplication.py | 6 +++--- cura/PlatformPhysics.py | 16 ++++------------ plugins/3MFReader/WorkspaceDialog.py | 5 ----- plugins/3MFReader/WorkspaceDialog.qml | 21 --------------------- resources/qml/Actions.qml | 10 +++++++++- resources/qml/Menus/ContextMenu.qml | 1 + resources/qml/Menus/EditMenu.qml | 1 + resources/qml/Preferences/GeneralPage.qml | 1 - 8 files changed, 18 insertions(+), 43 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 6132d8ab36..680baefdb3 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1085,9 +1085,9 @@ class CuraApplication(QtApplication): def getTextManager(self, *args) -> "TextManager": return self._text_manager - @pyqtSlot(bool) - def getWorkplaceDropToBuildplate(self, drop_to_build_plate: bool) ->None: - return self._physics.setAppPerModelDropDown(drop_to_build_plate) + @pyqtSlot() + def setWorkplaceDropToBuildplate(self): + return self._physics.setAppPerModelDropDown() def getCuraFormulaFunctions(self, *args) -> "CuraFormulaFunctions": if self._cura_formula_functions is None: diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 74fe05927d..1f86258b42 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -41,11 +41,9 @@ class PlatformPhysics: Application.getInstance().getPreferences().addPreference("physics/automatic_drop_down", True) self._app_per_model_drop = None - def getAppPerModelDropDown(self): - return self._app_per_model_drop - - def setAppPerModelDropDown(self, drop_to_buildplate): - self._app_per_model_drop = drop_to_buildplate + def setAppPerModelDropDown(self): + self._app_per_model_drop = True + self._onChangeTimerFinished() def _onSceneChanged(self, source): if not source.callDecoration("isSliceable"): @@ -79,13 +77,7 @@ class PlatformPhysics: # By shuffling the order of the nodes, this might happen a few times, but at some point it will resolve. random.shuffle(nodes) drop_down = False - # drop down in case nodes are asked to drop down from the user from workspaceDialog while opening 3mf - if self._app_per_model_drop and (self._app_per_model_drop != app_automatic_drop_down): - drop_down = True - # drop down in case the user has selected automated drop down preference for 3mf opening - if self._app_per_model_drop and app_automatic_drop_down: - drop_down= True - + if self._app_per_model_drop == True: drop_down = True for node in nodes: if node is root or not isinstance(node, SceneNode) or node.getBoundingBox() is None: diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index c0ea950915..1fafcf59f5 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -353,11 +353,6 @@ class WorkspaceDialog(QObject): Application.getInstance().getBackend().close() - @pyqtSlot(bool) - def setDropToBuildPlateForModel(self, drop_to_buildplate: bool) -> None: - CuraApplication.getInstance().getWorkplaceDropToBuildplate(drop_to_buildplate) - - def setMaterialConflict(self, material_conflict: bool) -> None: if self._has_material_conflict != material_conflict: self._has_material_conflict = material_conflict diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index dbd6356e94..8d06b32e14 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -351,26 +351,6 @@ UM.Dialog } } - Row - { - id: dropToBuildPlate - width: parent.width - height: childrenRect.height - spacing: UM.Theme.getSize("default_margin").width - UM.CheckBox - { - id: checkDropModels - text: catalog.i18nc("@text:window", "Drop models to buildplate") - checked: UM.Preferences.getValue("physics/automatic_drop_down") - onCheckedChanged: manager.setDropToBuildPlateForModel(checked) - } - function reloadValue() - { - manager.setDropToBuildPlateForModel(checkDropModels.checked) - checkDropModels.checked = UM.Preferences.getValue("physics/automatic_drop_down") - } - } - Row { id: clearBuildPlateWarning @@ -493,7 +473,6 @@ UM.Dialog materialSection.reloadValues() profileSection.reloadValues() printerSection.reloadValues() - dropToBuildPlate.reloadValue() } } } diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index 8fe4a11847..7acf39ecb2 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -39,7 +39,7 @@ Item property alias printObjectAfterNext: printObjectAfterNextAction property alias multiplyObject: multiplyObjectAction - + property alias dropAll: dropAllAction property alias selectAll: selectAllAction property alias deleteAll: deleteAllAction property alias reloadAll: reloadAllAction @@ -490,6 +490,14 @@ Item shortcut: "Shift+Ctrl+R" } + Action + { + id: dropAllAction + text: catalog.i18nc("@action:inmenu menubar:edit","Drop All Models to buildplate") + shortcut: "Ctrl+B" + onTriggered: CuraApplication.setWorkplaceDropToBuildplate() + } + Action { id: resetAllTranslationAction diff --git a/resources/qml/Menus/ContextMenu.qml b/resources/qml/Menus/ContextMenu.qml index 1b32c24254..1ab0a1332e 100644 --- a/resources/qml/Menus/ContextMenu.qml +++ b/resources/qml/Menus/ContextMenu.qml @@ -71,6 +71,7 @@ Cura.Menu Cura.MenuItem { action: Cura.Actions.reloadAll } Cura.MenuItem { action: Cura.Actions.resetAllTranslation } Cura.MenuItem { action: Cura.Actions.resetAll } + Cura.MenuItem { action: Cura.Actions.dropAll } // Group actions Cura.MenuSeparator {} diff --git a/resources/qml/Menus/EditMenu.qml b/resources/qml/Menus/EditMenu.qml index 728b3b212b..fdab70360e 100644 --- a/resources/qml/Menus/EditMenu.qml +++ b/resources/qml/Menus/EditMenu.qml @@ -21,6 +21,7 @@ Cura.Menu Cura.MenuItem { action: Cura.Actions.deleteAll } Cura.MenuItem { action: Cura.Actions.resetAllTranslation } Cura.MenuItem { action: Cura.Actions.resetAll } + Cura.MenuItem { action: Cura.Actions.dropAll } Cura.MenuSeparator { } Cura.MenuItem { action: Cura.Actions.groupObjects } Cura.MenuItem { action: Cura.Actions.mergeObjects } diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index d87ecac0b3..0f50f169ef 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -513,7 +513,6 @@ UM.PreferencesPage onCheckedChanged: { UM.Preferences.setValue("physics/automatic_drop_down", checked) - CuraApplication.getWorkplaceDropToBuildplate(checked) } } } From 586590605774c8bca7a08a71f62571e8fac80332 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Tue, 27 Feb 2024 13:52:59 +0100 Subject: [PATCH 167/203] function Name change CURA-10542 --- cura/CuraApplication.py | 2 +- cura/PlatformPhysics.py | 13 +++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 680baefdb3..c32017371f 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1087,7 +1087,7 @@ class CuraApplication(QtApplication): @pyqtSlot() def setWorkplaceDropToBuildplate(self): - return self._physics.setAppPerModelDropDown() + return self._physics.setAppAllModelDropDown() def getCuraFormulaFunctions(self, *args) -> "CuraFormulaFunctions": if self._cura_formula_functions is None: diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 1f86258b42..c61f78d86e 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -39,10 +39,10 @@ class PlatformPhysics: Application.getInstance().getPreferences().addPreference("physics/automatic_push_free", False) Application.getInstance().getPreferences().addPreference("physics/automatic_drop_down", True) - self._app_per_model_drop = None + self._app_all_model_drop = False - def setAppPerModelDropDown(self): - self._app_per_model_drop = True + def setAppAllModelDropDown(self): + self._app_all_model_drop = True self._onChangeTimerFinished() def _onSceneChanged(self, source): @@ -76,9 +76,6 @@ class PlatformPhysics: # We try to shuffle all the nodes to prevent "locked" situations, where iteration B inverts iteration A. # By shuffling the order of the nodes, this might happen a few times, but at some point it will resolve. random.shuffle(nodes) - drop_down = False - if self._app_per_model_drop == True: drop_down = True - for node in nodes: if node is root or not isinstance(node, SceneNode) or node.getBoundingBox() is None: continue @@ -88,7 +85,7 @@ class PlatformPhysics: # Move it downwards if bottom is above platform move_vector = Vector() - if (node.getSetting(SceneNodeSettings.AutoDropDown, app_automatic_drop_down) or drop_down) and not (node.getParent() and node.getParent().callDecoration("isGroup") or node.getParent() != root) and node.isEnabled(): + if (node.getSetting(SceneNodeSettings.AutoDropDown, app_automatic_drop_down) or self._app_all_model_drop) and not (node.getParent() and node.getParent().callDecoration("isGroup") or node.getParent() != root) and node.isEnabled(): z_offset = node.callDecoration("getZOffset") if node.getDecorator(ZOffsetDecorator.ZOffsetDecorator) else 0 move_vector = move_vector.set(y=-bbox.bottom + z_offset) @@ -177,7 +174,7 @@ class PlatformPhysics: op.push() # setting this drop to model same as app_automatic_drop_down - self._app_per_model_drop = None + self._app_all_model_drop = False # After moving, we have to evaluate the boundary checks for nodes build_volume.updateNodeBoundaryCheck() From 002af4eb81e07be1b44620700e7e343e4d191369 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Tue, 27 Feb 2024 16:48:44 +0100 Subject: [PATCH 168/203] saving extruder settings on model exported_model_settings were supposed to be None instead of {} for 3mf saving CURA-10542 --- plugins/3MFWriter/ThreeMFWriter.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index c321505643..f1f0e08741 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -272,7 +272,8 @@ class ThreeMFWriter(MeshWriter): transformation_matrix.preMultiply(translation_matrix) root_node = UM.Application.Application.getInstance().getController().getScene().getRoot() - exported_model_settings = ThreeMFWriter._extractModelExportedSettings(export_settings_model) + exported_model_settings = ThreeMFWriter._extractModelExportedSettings(export_settings_model) if export_settings_model != None else None + for node in nodes: if node == root_node: for root_child in node.getChildren(): From 72448eec5bb6a8b0905d053c96fdd8b1110e7e99 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Wed, 28 Feb 2024 10:22:35 +0100 Subject: [PATCH 169/203] commit to create package CURA-10542 --- plugins/3MFWriter/ThreeMFWriter.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index f1f0e08741..8759cd3cac 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -295,10 +295,12 @@ class ThreeMFWriter(MeshWriter): archive.writestr(model_file, scene_string) archive.writestr(content_types_file, b' \n' + ET.tostring(content_types)) archive.writestr(relations_file, b' \n' + ET.tostring(relations_element)) + except Exception as error: Logger.logException("e", "Error writing zip file") self.setInformation(str(error)) return False + finally: if not self._store_archive: archive.close() From bf73623711ab4200f5b6228be36f7a7cdfee7a63 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Wed, 28 Feb 2024 10:38:28 +0100 Subject: [PATCH 170/203] commit to create package CURA-11403 --- plugins/3MFWriter/ThreeMFWriter.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index 8759cd3cac..f1f0e08741 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -295,12 +295,10 @@ class ThreeMFWriter(MeshWriter): archive.writestr(model_file, scene_string) archive.writestr(content_types_file, b' \n' + ET.tostring(content_types)) archive.writestr(relations_file, b' \n' + ET.tostring(relations_element)) - except Exception as error: Logger.logException("e", "Error writing zip file") self.setInformation(str(error)) return False - finally: if not self._store_archive: archive.close() From 8d2e72a10928426b8e8b903011714fb6e25bf5d1 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Wed, 28 Feb 2024 14:31:51 +0100 Subject: [PATCH 171/203] adding logo for cura project CURA-11403 --- plugins/3MFWriter/ThreeMFWriter.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index f1f0e08741..5583059a2f 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -175,9 +175,9 @@ class ThreeMFWriter(MeshWriter): def getArchive(self): return self._archive - def _addShareLogoToThumbnail(self, primary_image): + def _addLogoToThumbnail(self, primary_image, logo_name): # Load the icon png image - icon_image = QImage(Resources.getPath(Resources.Images, "cura-share.png")) + icon_image = QImage(Resources.getPath(Resources.Images, logo_name)) # Resize icon_image to be 1/4 of primary_image size new_width = int(primary_image.width() / 4) @@ -217,7 +217,9 @@ class ThreeMFWriter(MeshWriter): snapshot = self._createSnapshot() if snapshot: if export_settings_model != None: - self._addShareLogoToThumbnail(snapshot) + self._addLogoToThumbnail(snapshot, "cura-share.png") + elif export_settings_model == None and self._store_archive: + self._addLogoToThumbnail(snapshot, "cura-icon.png") thumbnail_buffer = QBuffer() thumbnail_buffer.open(QBuffer.OpenModeFlag.ReadWrite) snapshot.save(thumbnail_buffer, "PNG") From f3c49e494ebb74163c4a2c502d1b981bdcc5d6e3 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Thu, 29 Feb 2024 15:45:13 +0100 Subject: [PATCH 172/203] adding option of opening model as UCP or normal project file CURA-11403 --- cura/CuraActions.py | 10 +- cura/CuraApplication.py | 12 ++ plugins/3MFReader/ThreeMFWorkspaceReader.py | 16 ++- plugins/3MFWriter/ThreeMFWriter.py | 17 ++- resources/qml/Cura.qml | 63 ++++++++--- .../AskOpenAsProjectOrUcpOrImportModel.qml | 104 ++++++++++++++++++ 6 files changed, 187 insertions(+), 35 deletions(-) create mode 100644 resources/qml/Dialogs/AskOpenAsProjectOrUcpOrImportModel.qml diff --git a/cura/CuraActions.py b/cura/CuraActions.py index e33ce8123d..9612e473b8 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -1,6 +1,6 @@ # Copyright (c) 2023 UltiMaker # Cura is released under the terms of the LGPLv3 or higher. - +import zipfile from typing import List, cast from PyQt6.QtCore import QObject, QUrl, pyqtSignal, pyqtProperty @@ -33,6 +33,7 @@ from cura.Operations.SetBuildPlateNumberOperation import SetBuildPlateNumberOper from UM.Logger import Logger from UM.Scene.SceneNode import SceneNode +USER_SETTINGS_PATH = "Cura/user-settings.json" class CuraActions(QObject): def __init__(self, parent: QObject = None) -> None: @@ -195,6 +196,13 @@ class CuraActions(QObject): operation.addOperation(SetObjectExtruderOperation(node, extruder_id)) operation.push() + @pyqtSlot(str, result = bool) + def isProjectUcp(self, file_url) -> bool: + file_name = QUrl(file_url).toLocalFile() + archive = zipfile.ZipFile(file_name, "r") + cura_file_names = [name for name in archive.namelist() if name.startswith("Cura/")] + return USER_SETTINGS_PATH in cura_file_names + @pyqtSlot(int) def setBuildPlateForSelection(self, build_plate_nr: int) -> None: Logger.log("d", "Setting build plate number... %d" % build_plate_nr) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index c32017371f..00e6304c0a 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1979,6 +1979,18 @@ class CuraApplication(QtApplication): openProjectFile = pyqtSignal(QUrl, bool, arguments = ["project_file", "add_to_recent_files"]) # Emitted when a project file is about to open. + @pyqtSlot(QUrl, bool) + def readLocalUcpFile(self, file: QUrl, add_to_recent_files: bool = True): + + file_name = QUrl(file).toLocalFile() + workspace_reader = self.getWorkspaceFileHandler() + if workspace_reader is None: + Logger.log("w", "Workspace reader not found") + return + + workspace_reader.getReaderForFile(file_name).setOpenAsUcp(True) + workspace_reader.readLocalFile(file, add_to_recent_files) + @pyqtSlot(QUrl, str, bool) @pyqtSlot(QUrl, str) @pyqtSlot(QUrl) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 25e2afa8bd..0e527590f5 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -117,6 +117,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._supported_extensions = [".3mf"] self._dialog = WorkspaceDialog() self._3mf_mesh_reader = None + self._is_ucp = False self._container_registry = ContainerRegistry.getInstance() # suffixes registered with the MimeTypes don't start with a dot '.' @@ -153,6 +154,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._load_profile = False self._user_settings = {} + def setOpenAsUcp(self, openAsUcp: bool): + self._is_ucp = openAsUcp + def getNewId(self, old_id: str): """Get a unique name based on the old_id. This is different from directly calling the registry in that it caches results. @@ -242,7 +246,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Read definition containers # machine_definition_id = None - updatable_machines = None if is_ucp else [] + updatable_machines = None if self._is_ucp else [] machine_definition_container_count = 0 extruder_definition_container_count = 0 definition_container_files = [name for name in cura_file_names if name.endswith(self._definition_container_suffix)] @@ -609,7 +613,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Load the user specifically exported settings self._dialog.exportedSettingModel.clear() - if is_ucp: + if self._is_ucp: try: self._user_settings = json.loads(archive.open("Cura/user-settings.json").read().decode("utf-8")) any_extruder_stack = ExtruderManager.getInstance().getExtruderStack(0) @@ -658,8 +662,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._dialog.setVariantType(variant_type_name) self._dialog.setHasObjectsOnPlate(Application.getInstance().platformActivity) self._dialog.setMissingPackagesMetadata(missing_package_metadata) - self._dialog.setHasVisibleSelectSameProfileChanged(is_ucp) - self._dialog.setAllowCreatemachine(not is_ucp) + self._dialog.setHasVisibleSelectSameProfileChanged(self._is_ucp) + self._dialog.setAllowCreatemachine(not self._is_ucp) self._dialog.show() @@ -701,7 +705,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if self._dialog.getResult() == {}: return WorkspaceReader.PreReadResult.cancelled - self._load_profile = not is_ucp or (self._dialog.selectSameProfileChecked and self._dialog.isCompatibleMachine) + self._load_profile = not self._is_ucp self._resolve_strategies = self._dialog.getResult() # @@ -717,7 +721,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if key not in containers_found_dict or strategy is not None: continue self._resolve_strategies[key] = "override" if containers_found_dict[key] else "new" - + self._is_ucp = False return WorkspaceReader.PreReadResult.accepted @call_on_qt_thread diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index 5583059a2f..3389941ed8 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -135,16 +135,13 @@ class ThreeMFWriter(MeshWriter): stack = um_node.callDecoration("getStack") if stack is not None: changed_setting_keys = stack.getTop().getAllKeys() - - if exported_settings is None: - # Ensure that we save the extruder used for this object in a multi-extrusion setup - if stack.getProperty("machine_extruder_count", "value") > 1: - changed_setting_keys.add("extruder_nr") - - # Get values for all changed settings & save them. - for key in changed_setting_keys: - savitar_node.setSetting("cura:" + key, str(stack.getProperty(key, "value"))) - else: + # Ensure that we save the extruder used for this object in a multi-extrusion setup + if stack.getProperty("machine_extruder_count", "value") > 1: + changed_setting_keys.add("extruder_nr") + # Get values for all changed settings & save them. + for key in changed_setting_keys: + savitar_node.setSetting("cura:" + key, str(stack.getProperty(key, "value"))) + if exported_settings is not None: # We want to export only the specified settings if um_node.getName() in exported_settings: model_exported_settings = exported_settings[um_node.getName()] diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 4983363946..b01cd192c3 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -701,24 +701,34 @@ UM.MainWindow if (hasProjectFile) { - var projectFile = projectFileUrlList[0]; - - // check preference - var choice = UM.Preferences.getValue("cura/choice_on_open_project"); - if (choice == "open_as_project") + var projectFile = projectFileUrlList[0] + var is_ucp = CuraActions.isProjectUcp(projectFile); + print("this file is ucp", is_ucp); + if (is_ucp) { - openFilesIncludingProjectsDialog.loadProjectFile(projectFile); + askOpenAsProjectOrUcpOrImportModelsDialog.fileUrl = projectFile; + askOpenAsProjectOrUcpOrImportModelsDialog.addToRecent = true; + askOpenAsProjectOrUcpOrImportModelsDialog.show(); } - else if (choice == "open_as_model") + else { - openFilesIncludingProjectsDialog.loadModelFiles([projectFile].slice()); - } - else // always ask - { - // ask whether to open as project or as models - askOpenAsProjectOrModelsDialog.fileUrl = projectFile; - askOpenAsProjectOrModelsDialog.addToRecent = true; - askOpenAsProjectOrModelsDialog.show(); + // check preference + var choice = UM.Preferences.getValue("cura/choice_on_open_project"); + if (choice == "open_as_project") + { + openFilesIncludingProjectsDialog.loadProjectFile(projectFile); + } + else if (choice == "open_as_model") + { + openFilesIncludingProjectsDialog.loadModelFiles([projectFile].slice()); + } + else // always ask + { + // ask whether to open as project or as models + askOpenAsProjectOrModelsDialog.fileUrl = projectFile; + askOpenAsProjectOrModelsDialog.addToRecent = true; + askOpenAsProjectOrModelsDialog.show(); + } } } else @@ -769,14 +779,31 @@ UM.MainWindow id: askOpenAsProjectOrModelsDialog } + AskOpenAsProjectOrUcpOrImportModel + { + id: askOpenAsProjectOrUcpOrImportModelsDialog + } + Connections { target: CuraApplication function onOpenProjectFile(project_file, add_to_recent_files) { - askOpenAsProjectOrModelsDialog.fileUrl = project_file; - askOpenAsProjectOrModelsDialog.addToRecent = add_to_recent_files; - askOpenAsProjectOrModelsDialog.show(); + var is_ucp = CuraActions.isProjectUcp(project_file); + print("this file is ucp", is_ucp); + if (is_ucp) + { + + askOpenAsProjectOrUcpOrImportModelsDialog.fileUrl = project_file; + askOpenAsProjectOrUcpOrImportModelsDialog.addToRecent = add_to_recent_files; + askOpenAsProjectOrUcpOrImportModelsDialog.show(); + } + else + { + askOpenAsProjectOrModelsDialog.fileUrl = project_file; + askOpenAsProjectOrModelsDialog.addToRecent = add_to_recent_files; + askOpenAsProjectOrModelsDialog.show(); + } } } diff --git a/resources/qml/Dialogs/AskOpenAsProjectOrUcpOrImportModel.qml b/resources/qml/Dialogs/AskOpenAsProjectOrUcpOrImportModel.qml new file mode 100644 index 0000000000..9791a3e451 --- /dev/null +++ b/resources/qml/Dialogs/AskOpenAsProjectOrUcpOrImportModel.qml @@ -0,0 +1,104 @@ +// Copyright (c) 2022 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.1 + +import UM 1.5 as UM +import Cura 1.0 as Cura + + +UM.Dialog +{ + // This dialog asks the user whether he/she wants to open a project file as a project or import models. + id: base + + title: catalog.i18nc("@title:window", "Open Universal Cura Project (UCP) file") + width: UM.Theme.getSize("small_popup_dialog").width + height: UM.Theme.getSize("small_popup_dialog").height + backgroundColor: UM.Theme.getColor("main_background") + + maximumHeight: height + maximumWidth: width + minimumHeight: maximumHeight + minimumWidth: maximumWidth + + modality: Qt.WindowModal + + property var fileUrl + property var addToRecent: true //Whether to add this file to the recent files list after reading it. + + // load the entire project + function loadProjectFile() { + + UM.WorkspaceFileHandler.readLocalFile(base.fileUrl, base.addToRecent); + + base.hide() + } + + // load the project file as separated models + function loadModelFiles() { + CuraApplication.readLocalFile(base.fileUrl, "open_as_model", base.addToRecent) + + base.hide() + } + + // load the project file as Universal cura project + function loadUcpFiles() { + CuraApplication.readLocalUcpFile(base.fileUrl, base.addToRecent) + + base.hide() + } + + // override UM.Dialog accept + function accept () { + + // when hitting 'enter', we always open as project unless open_as_model was explicitly stored as preference + if (openAsPreference == "open_as_model") { + loadModelFiles() + } else if (openAsPreference == "open_as_ucp"){ + loadUcpFiles() + }else { + loadProjectFile() + } + } + + Column + { + anchors.fill: parent + spacing: UM.Theme.getSize("default_margin").height + + UM.Label + { + id: questionText + width: parent.width + text: catalog.i18nc("@text:window", "This is a Cura Universal project file. Would you like to open it as a Cura project or Cura Universal Project or import the models from it?") + wrapMode: Text.WordWrap + } + } + + onAccepted: loadProjectFile() + onRejected: loadModelFiles() + + buttonSpacing: UM.Theme.getSize("thin_margin").width + + rightButtons: + [ + Cura.SecondaryButton + { + text: catalog.i18nc("@action:button", "Open as project") + onClicked: loadProjectFile() + }, + Cura.PrimaryButton + { + text: catalog.i18nc("@action:button", "Open as UCP") + onClicked: loadUcpFiles() + }, + Cura.SecondaryButton + { + text: catalog.i18nc("@action:button", "Import models") + onClicked: loadModelFiles() + } + ] +} From f678ff2de25a207dcdeda084e89ce413fb0869fd Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Thu, 29 Feb 2024 18:51:48 +0100 Subject: [PATCH 173/203] icon additon in open SVG CURA-11403 --- plugins/3MFWriter/SettingSelection.qml | 2 +- plugins/3MFWriter/ThreeMFWriter.py | 17 +++++---- resources/qml/Cura.qml | 2 - .../AskOpenAsProjectOrUcpOrImportModel.qml | 19 ++-------- .../icons/default/CuraShareIcon.svg | 37 +++++++++++++++++++ 5 files changed, 51 insertions(+), 26 deletions(-) create mode 100644 resources/themes/cura-light/icons/default/CuraShareIcon.svg diff --git a/plugins/3MFWriter/SettingSelection.qml b/plugins/3MFWriter/SettingSelection.qml index 478c2d393c..a50c02f11c 100644 --- a/plugins/3MFWriter/SettingSelection.qml +++ b/plugins/3MFWriter/SettingSelection.qml @@ -19,7 +19,7 @@ RowLayout Layout.preferredWidth: UM.Theme.getSize("setting").width checked: modelData.selected onClicked: modelData.selected = checked - enabled: modelData.selectable + } UM.Label diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index 3389941ed8..5583059a2f 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -135,13 +135,16 @@ class ThreeMFWriter(MeshWriter): stack = um_node.callDecoration("getStack") if stack is not None: changed_setting_keys = stack.getTop().getAllKeys() - # Ensure that we save the extruder used for this object in a multi-extrusion setup - if stack.getProperty("machine_extruder_count", "value") > 1: - changed_setting_keys.add("extruder_nr") - # Get values for all changed settings & save them. - for key in changed_setting_keys: - savitar_node.setSetting("cura:" + key, str(stack.getProperty(key, "value"))) - if exported_settings is not None: + + if exported_settings is None: + # Ensure that we save the extruder used for this object in a multi-extrusion setup + if stack.getProperty("machine_extruder_count", "value") > 1: + changed_setting_keys.add("extruder_nr") + + # Get values for all changed settings & save them. + for key in changed_setting_keys: + savitar_node.setSetting("cura:" + key, str(stack.getProperty(key, "value"))) + else: # We want to export only the specified settings if um_node.getName() in exported_settings: model_exported_settings = exported_settings[um_node.getName()] diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index b01cd192c3..a07bb598d8 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -703,7 +703,6 @@ UM.MainWindow { var projectFile = projectFileUrlList[0] var is_ucp = CuraActions.isProjectUcp(projectFile); - print("this file is ucp", is_ucp); if (is_ucp) { askOpenAsProjectOrUcpOrImportModelsDialog.fileUrl = projectFile; @@ -790,7 +789,6 @@ UM.MainWindow function onOpenProjectFile(project_file, add_to_recent_files) { var is_ucp = CuraActions.isProjectUcp(project_file); - print("this file is ucp", is_ucp); if (is_ucp) { diff --git a/resources/qml/Dialogs/AskOpenAsProjectOrUcpOrImportModel.qml b/resources/qml/Dialogs/AskOpenAsProjectOrUcpOrImportModel.qml index 9791a3e451..a68c48b4a6 100644 --- a/resources/qml/Dialogs/AskOpenAsProjectOrUcpOrImportModel.qml +++ b/resources/qml/Dialogs/AskOpenAsProjectOrUcpOrImportModel.qml @@ -29,13 +29,6 @@ UM.Dialog property var fileUrl property var addToRecent: true //Whether to add this file to the recent files list after reading it. - // load the entire project - function loadProjectFile() { - - UM.WorkspaceFileHandler.readLocalFile(base.fileUrl, base.addToRecent); - - base.hide() - } // load the project file as separated models function loadModelFiles() { @@ -57,10 +50,8 @@ UM.Dialog // when hitting 'enter', we always open as project unless open_as_model was explicitly stored as preference if (openAsPreference == "open_as_model") { loadModelFiles() - } else if (openAsPreference == "open_as_ucp"){ + } else{ loadUcpFiles() - }else { - loadProjectFile() } } @@ -78,21 +69,17 @@ UM.Dialog } } - onAccepted: loadProjectFile() + onAccepted: loadUcpFile() onRejected: loadModelFiles() buttonSpacing: UM.Theme.getSize("thin_margin").width rightButtons: [ - Cura.SecondaryButton - { - text: catalog.i18nc("@action:button", "Open as project") - onClicked: loadProjectFile() - }, Cura.PrimaryButton { text: catalog.i18nc("@action:button", "Open as UCP") + iconSource: UM.Theme.getIcon("CuraShareIcon") onClicked: loadUcpFiles() }, Cura.SecondaryButton diff --git a/resources/themes/cura-light/icons/default/CuraShareIcon.svg b/resources/themes/cura-light/icons/default/CuraShareIcon.svg new file mode 100644 index 0000000000..fb9a6b922c --- /dev/null +++ b/resources/themes/cura-light/icons/default/CuraShareIcon.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From b342574c1991552b545b9c63a98bd902b94957df Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 1 Mar 2024 09:17:37 +0100 Subject: [PATCH 174/203] Change slicing crash error message CURA-11445 --- plugins/CuraEngineBackend/CuraEngineBackend.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 66949eeaf5..c73dee2fb0 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -181,7 +181,10 @@ class CuraEngineBackend(QObject, Backend): application.getPreferences().preferenceChanged.connect(self._onPreferencesChanged) self._slicing_error_message = Message( - text = catalog.i18nc("@message", "Slicing failed with an unexpected error. Please consider reporting a bug on our issue tracker."), + text = catalog.i18nc("@message", "Oops! We encountered an unexpected error during your slicing process. " + "Rest assured, we've automatically received the crash logs for analysis, " + "if you have not disabled data sharing in your preferences. To assist us " + "further, consider sharing your project details on our issue tracker."), title = catalog.i18nc("@message:title", "Slicing failed"), message_type = Message.MessageType.ERROR ) From 709e362ffad376888ad4174f950ac7b8f902289c Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Fri, 1 Mar 2024 09:46:29 +0100 Subject: [PATCH 175/203] Cleanup and extention of exclude lists. Protection of PEI flex plate against high probe and first layer temperature. Relates to PP-441 --- resources/definitions/ultimaker.def.json | 4 +- resources/definitions/ultimaker2.def.json | 29 +++++++------- .../definitions/ultimaker2_plus.def.json | 39 ++++--------------- .../ultimaker2_plus_connect.def.json | 18 ++++----- resources/definitions/ultimaker3.def.json | 6 +-- .../definitions/ultimaker_original.def.json | 39 ++++--------------- .../ultimaker_original_dual.def.json | 39 ++++--------------- resources/definitions/ultimaker_s3.def.json | 4 +- resources/definitions/ultimaker_s5.def.json | 4 ++ resources/definitions/ultimaker_s7.def.json | 4 +- 10 files changed, 59 insertions(+), 127 deletions(-) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 9f99b878be..ef7fc7b1cb 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -8,8 +8,8 @@ "author": "Ultimaker", "manufacturer": "Ultimaker B.V.", "exclude_materials": [ - "generic_hips", - "structur3d_dap100silicone" + "structur3d_*", + "generic_hips" ] }, "overrides": diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json index def26c9b6f..0609cfabf9 100644 --- a/resources/definitions/ultimaker2.def.json +++ b/resources/definitions/ultimaker2.def.json @@ -10,23 +10,20 @@ "file_formats": "text/x-gcode", "platform": "ultimaker2_platform.obj", "exclude_materials": [ + "structur3d_*", "generic_hips", - "generic_petg", - "structur3d_dap100silicone", - "ultimaker_petg_red", - "ultimaker_petg_blue", - "ultimaker_petg_grey", - "ultimaker_petg_black", - "ultimaker_petg_green", - "ultimaker_petg_white", - "ultimaker_petg_orange", - "ultimaker_petg_silver", - "ultimaker_petg_yellow", - "ultimaker_petg_transparent", - "ultimaker_petg_red_translucent", - "ultimaker_petg_blue_translucent", - "ultimaker_petg_green_translucent", - "ultimaker_petg_yellow_fluorescent" + "generic_cffcpe", + "generic_cffpa", + "generic_gffcpe", + "generic_gffpa", + "generic_pekk", + "generic_pva", + "generic_tough_pla", + "ultimaker_bam", + "ultimaker_pva", + "ultimaker_tough_pla_*", + "ultimaker_petg_*", + "ultimaker_petcf_*" ], "firmware_file": "MarlinUltimaker2.hex", "has_machine_quality": true, diff --git a/resources/definitions/ultimaker2_plus.def.json b/resources/definitions/ultimaker2_plus.def.json index 1b3ddcc953..61dd8cae45 100644 --- a/resources/definitions/ultimaker2_plus.def.json +++ b/resources/definitions/ultimaker2_plus.def.json @@ -9,43 +9,20 @@ "file_formats": "text/x-gcode", "platform": "ultimaker2_platform.obj", "exclude_materials": [ + "structur3d_*", "generic_hips", - "generic_petg", - "generic_bam", - "ultimaker_bam", - "generic_pva", - "ultimaker_pva", - "generic_tough_pla", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tough_pla_blue", - "ultimaker_tough_pla_gray", - "ultimaker_tough_pla_yellow", "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", "generic_petcf", - "structur3d_dap100silicone", - "ultimaker_petg_red", - "ultimaker_petg_blue", - "ultimaker_petg_grey", - "ultimaker_petg_black", - "ultimaker_petg_green", - "ultimaker_petg_white", - "ultimaker_petg_orange", - "ultimaker_petg_silver", - "ultimaker_petg_yellow", - "ultimaker_petg_transparent", - "ultimaker_petg_red_translucent", - "ultimaker_petg_blue_translucent", - "ultimaker_petg_green_translucent", - "ultimaker_petg_yellow_fluorescent", - "ultimaker_petcf_black", - "ultimaker_petcf_blue", - "ultimaker_petcf_gray" + "generic_pva", + "generic_tough_pla", + "ultimaker_bam", + "ultimaker_pva", + "ultimaker_tough_pla_*", + "ultimaker_petg_*", + "ultimaker_petcf_*" ], "firmware_file": "MarlinUltimaker2plus.hex", "first_start_actions": [], diff --git a/resources/definitions/ultimaker2_plus_connect.def.json b/resources/definitions/ultimaker2_plus_connect.def.json index 20e914284f..b434b86a32 100644 --- a/resources/definitions/ultimaker2_plus_connect.def.json +++ b/resources/definitions/ultimaker2_plus_connect.def.json @@ -9,20 +9,20 @@ "file_formats": "application/x-ufp;text/x-gcode", "platform": "ultimaker2_plus_connect_platform.obj", "exclude_materials": [ + "structur3d_*", "generic_hips", - "generic_bam", - "ultimaker_bam", - "generic_pva", - "ultimaker_pva", - "ultimaker_petcf_black", - "ultimaker_petcf_blue", - "ultimaker_petcf_gray", - "generic_petcf", "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", - "structur3d_dap100silicone" + "generic_petcf", + "generic_pva", + "generic_tough_pla", + "ultimaker_bam", + "ultimaker_pva", + "ultimaker_tough_pla_*", + "ultimaker_petg_*", + "ultimaker_petcf_*" ], "first_start_actions": [], "has_machine_materials": true, diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index 17a4b6045e..f5f1b386c0 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -13,16 +13,14 @@ 9066 ], "exclude_materials": [ + "structur3d_*", "generic_hips", "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", "generic_petcf", - "ultimaker_petcf_black", - "ultimaker_petcf_blue", - "ultimaker_petcf_gray", - "structur3d_dap100silicone" + "ultimaker_petcf_*" ], "firmware_update_info": { diff --git a/resources/definitions/ultimaker_original.def.json b/resources/definitions/ultimaker_original.def.json index 00f4615971..4729df90b3 100644 --- a/resources/definitions/ultimaker_original.def.json +++ b/resources/definitions/ultimaker_original.def.json @@ -10,43 +10,20 @@ "file_formats": "text/x-gcode", "platform": "ultimaker_platform.3mf", "exclude_materials": [ + "structur3d_*", "generic_hips", - "generic_petg", - "generic_bam", - "ultimaker_bam", - "generic_pva", - "ultimaker_pva", - "generic_tough_pla", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tough_pla_blue", - "ultimaker_tough_pla_gray", - "ultimaker_tough_pla_yellow", "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", "generic_petcf", - "structur3d_dap100silicone", - "ultimaker_petg_blue", - "ultimaker_petg_grey", - "ultimaker_petg_black", - "ultimaker_petg_green", - "ultimaker_petg_white", - "ultimaker_petg_orange", - "ultimaker_petg_silver", - "ultimaker_petg_yellow", - "ultimaker_petg_transparent", - "ultimaker_petg_red_translucent", - "ultimaker_petg_blue_translucent", - "ultimaker_petg_green_translucent", - "ultimaker_petg_yellow_fluorescent", - "ultimaker_petg_red", - "ultimaker_petcf_black", - "ultimaker_petcf_blue", - "ultimaker_petcf_gray" + "generic_pva", + "generic_tough_pla", + "ultimaker_bam", + "ultimaker_pva", + "ultimaker_tough_pla_*", + "ultimaker_petg_*", + "ultimaker_petcf_*" ], "firmware_file": "MarlinUltimaker-{baudrate}.hex", "firmware_hbk_file": "MarlinUltimaker-HBK-{baudrate}.hex", diff --git a/resources/definitions/ultimaker_original_dual.def.json b/resources/definitions/ultimaker_original_dual.def.json index a4cd6bfdf0..ce7baee8cc 100644 --- a/resources/definitions/ultimaker_original_dual.def.json +++ b/resources/definitions/ultimaker_original_dual.def.json @@ -10,43 +10,20 @@ "file_formats": "text/x-gcode", "platform": "ultimaker_platform.3mf", "exclude_materials": [ + "structur3d_*", "generic_hips", - "generic_petg", - "generic_bam", - "ultimaker_bam", - "generic_pva", - "ultimaker_pva", - "generic_tough_pla", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tough_pla_blue", - "ultimaker_tough_pla_gray", - "ultimaker_tough_pla_yellow", "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", "generic_petcf", - "structur3d_dap100silicone", - "ultimaker_petg_blue", - "ultimaker_petg_grey", - "ultimaker_petg_black", - "ultimaker_petg_green", - "ultimaker_petg_white", - "ultimaker_petg_orange", - "ultimaker_petg_silver", - "ultimaker_petg_yellow", - "ultimaker_petg_transparent", - "ultimaker_petg_red_translucent", - "ultimaker_petg_blue_translucent", - "ultimaker_petg_green_translucent", - "ultimaker_petg_yellow_fluorescent", - "ultimaker_petg_red", - "ultimaker_petcf_black", - "ultimaker_petcf_blue", - "ultimaker_petcf_gray" + "generic_pva", + "generic_tough_pla", + "ultimaker_bam", + "ultimaker_pva", + "ultimaker_tough_pla_*", + "ultimaker_petg_*", + "ultimaker_petcf_*" ], "firmware_file": "MarlinUltimaker-{baudrate}-dual.hex", "firmware_hbk_file": "MarlinUltimaker-HBK-{baudrate}-dual.hex", diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json index 483825df5a..28b5f77a50 100644 --- a/resources/definitions/ultimaker_s3.def.json +++ b/resources/definitions/ultimaker_s3.def.json @@ -15,8 +15,8 @@ 213484 ], "exclude_materials": [ - "generic_hips", - "structur3d_dap100silicone" + "structur3d_*", + "generic_hips" ], "firmware_update_info": { diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index cd48c4fd38..2a46649157 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -15,6 +15,10 @@ 214476, 214477 ], + "exclude_materials": [ + "structur3d_*", + "generic_hips" + ], "firmware_update_info": { "check_urls": [ "https://software.ultimaker.com/releases/firmware/9051/stable/um-update.swu.version" ], diff --git a/resources/definitions/ultimaker_s7.def.json b/resources/definitions/ultimaker_s7.def.json index f7b45aa0e7..bb3f5a938d 100644 --- a/resources/definitions/ultimaker_s7.def.json +++ b/resources/definitions/ultimaker_s7.def.json @@ -44,6 +44,8 @@ }, "overrides": { - "machine_name": { "default_value": "Ultimaker S7" } + "default_material_print_temperature": { "maximum_value_warning": "320" }, + "machine_name": { "default_value": "Ultimaker S7" }, + "material_print_temperature_layer_0": { "maximum_value_warning": "320" } } } \ No newline at end of file From f51d97494a48c47e1c03e3bb25d8c0069f69f6df Mon Sep 17 00:00:00 2001 From: saumyaj3 Date: Fri, 1 Mar 2024 09:33:17 +0000 Subject: [PATCH 176/203] Applied printer-linter format --- resources/definitions/creality_ender5plus.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/creality_ender5plus.def.json b/resources/definitions/creality_ender5plus.def.json index 24bf10cd0d..5ad71ee2df 100644 --- a/resources/definitions/creality_ender5plus.def.json +++ b/resources/definitions/creality_ender5plus.def.json @@ -27,4 +27,4 @@ "machine_width": { "default_value": 350 }, "speed_print": { "value": 80.0 } } -} +} \ No newline at end of file From af3308406091c27e92c929403273759856406043 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 1 Mar 2024 10:37:39 +0100 Subject: [PATCH 177/203] Fix prime tower positioning on elliptic build plates --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 1db28b289c..2abdf0df01 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6871,7 +6871,7 @@ "unit": "mm", "enabled": "prime_tower_enable", "default_value": 200, - "value": "(resolveOrValue('machine_width') / 2 + resolveOrValue('prime_tower_size') / 2) if resolveOrValue('machine_shape') == 'elliptic' else (resolveOrValue('machine_width') - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('machine_nozzle_offset_x')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_x'))), 1)) - (resolveOrValue('machine_width') / 2 if resolveOrValue('machine_center_is_zero') else 0)", + "value": "((resolveOrValue('machine_width') / 2 + resolveOrValue('prime_tower_size') / 2) if resolveOrValue('machine_shape') == 'elliptic' else (resolveOrValue('machine_width') - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('machine_nozzle_offset_x')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_x'))), 1))) - (resolveOrValue('machine_width') / 2 if resolveOrValue('machine_center_is_zero') else 0)", "maximum_value": "(machine_width / 2 if machine_center_is_zero else machine_width) - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0)", "minimum_value": "resolveOrValue('prime_tower_size') + (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - (machine_width / 2 if machine_center_is_zero else 0)", "settable_per_mesh": false, From ea42e52b8f645fac3e02f300f4d6e4b15c2983c1 Mon Sep 17 00:00:00 2001 From: saumyaj3 Date: Fri, 1 Mar 2024 09:52:07 +0000 Subject: [PATCH 178/203] Applied printer-linter format --- resources/definitions/creality_ender3v3se.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/creality_ender3v3se.def.json b/resources/definitions/creality_ender3v3se.def.json index 8e32a44eb9..86d6818166 100644 --- a/resources/definitions/creality_ender3v3se.def.json +++ b/resources/definitions/creality_ender3v3se.def.json @@ -52,4 +52,4 @@ "speed_layer_0": { "value": 30 }, "speed_print": { "value": 180 } } -} +} \ No newline at end of file From 9efef84e5c88323bc70aa1b1e6a813664d2133c0 Mon Sep 17 00:00:00 2001 From: saumyaj3 Date: Fri, 1 Mar 2024 10:18:21 +0000 Subject: [PATCH 179/203] Applied printer-linter format --- .../definitions/creality_ender3v2neo.def.json | 36 +++++++++++-------- .../creality_ender3v2neo_0.2.inst.cfg | 2 +- .../creality_ender3v2neo_0.3.inst.cfg | 1 + .../creality_ender3v2neo_0.4.inst.cfg | 1 + .../creality_ender3v2neo_0.5.inst.cfg | 2 +- .../creality_ender3v2neo_0.6.inst.cfg | 1 + .../creality_ender3v2neo_0.8.inst.cfg | 1 + .../creality_ender3v2neo_1.0.inst.cfg | 1 + 8 files changed, 28 insertions(+), 17 deletions(-) diff --git a/resources/definitions/creality_ender3v2neo.def.json b/resources/definitions/creality_ender3v2neo.def.json index 05998865e2..f3f1eede9d 100644 --- a/resources/definitions/creality_ender3v2neo.def.json +++ b/resources/definitions/creality_ender3v2neo.def.json @@ -1,34 +1,40 @@ { - "name": "Creality Ender-3 v2 Neo", "version": 2, + "name": "Creality Ender-3 v2 Neo", "inherits": "creality_base", - "metadata": { - "quality_definition": "creality_base", + "metadata": + { "visible": true, - "platform": "creality_ender3.3mf" + "platform": "creality_ender3.3mf", + "quality_definition": "creality_base" }, - "overrides": { - "machine_name": { "default_value": "Creality Ender-3 v2 Neo" }, - "machine_width": { "default_value": 230 }, + "overrides": + { + "gantry_height": { "value": 25 }, "machine_depth": { "default_value": 230 }, - "machine_height": { "default_value": 250 }, - "machine_head_polygon": { "default_value": [ + "machine_head_polygon": + { + "default_value": [ [-1, 1], [-1, -1], [1, -1], [1, 1] ] }, - "machine_head_with_fans_polygon": { "default_value": [ + "machine_head_with_fans_polygon": + { + "default_value": [ [-26, 34], [-26, -32], [32, -32], [32, 34] ] }, - "machine_start_gcode": { "default_value": "G92 E0 ;Reset Extruder\nG28 ;Home\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up" }, - "retraction_amount": { "value": 4}, - "retraction_speed": { "value": 25}, - "gantry_height": { "value": 25 } + "machine_height": { "default_value": 250 }, + "machine_name": { "default_value": "Creality Ender-3 v2 Neo" }, + "machine_start_gcode": { "default_value": "G92 E0 ;Reset Extruder\nG28 ;Home\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up" }, + "machine_width": { "default_value": 230 }, + "retraction_amount": { "value": 4 }, + "retraction_speed": { "value": 25 } } -} +} \ No newline at end of file diff --git a/resources/variants/creality/creality_ender3v2neo_0.2.inst.cfg b/resources/variants/creality/creality_ender3v2neo_0.2.inst.cfg index 0dda448bef..bed0bbe51f 100644 --- a/resources/variants/creality/creality_ender3v2neo_0.2.inst.cfg +++ b/resources/variants/creality/creality_ender3v2neo_0.2.inst.cfg @@ -8,6 +8,6 @@ hardware_type = nozzle setting_version = 22 type = variant - [values] machine_nozzle_size = 0.2 + diff --git a/resources/variants/creality/creality_ender3v2neo_0.3.inst.cfg b/resources/variants/creality/creality_ender3v2neo_0.3.inst.cfg index fcb0dac3f3..fba4336839 100644 --- a/resources/variants/creality/creality_ender3v2neo_0.3.inst.cfg +++ b/resources/variants/creality/creality_ender3v2neo_0.3.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.3 + diff --git a/resources/variants/creality/creality_ender3v2neo_0.4.inst.cfg b/resources/variants/creality/creality_ender3v2neo_0.4.inst.cfg index aeeba41ff6..80a2f5cb71 100644 --- a/resources/variants/creality/creality_ender3v2neo_0.4.inst.cfg +++ b/resources/variants/creality/creality_ender3v2neo_0.4.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.4 + diff --git a/resources/variants/creality/creality_ender3v2neo_0.5.inst.cfg b/resources/variants/creality/creality_ender3v2neo_0.5.inst.cfg index 810acc8e74..d6071382f8 100644 --- a/resources/variants/creality/creality_ender3v2neo_0.5.inst.cfg +++ b/resources/variants/creality/creality_ender3v2neo_0.5.inst.cfg @@ -8,6 +8,6 @@ hardware_type = nozzle setting_version = 22 type = variant - [values] machine_nozzle_size = 0.5 + diff --git a/resources/variants/creality/creality_ender3v2neo_0.6.inst.cfg b/resources/variants/creality/creality_ender3v2neo_0.6.inst.cfg index ad49249db3..4abca4f34e 100644 --- a/resources/variants/creality/creality_ender3v2neo_0.6.inst.cfg +++ b/resources/variants/creality/creality_ender3v2neo_0.6.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.6 + diff --git a/resources/variants/creality/creality_ender3v2neo_0.8.inst.cfg b/resources/variants/creality/creality_ender3v2neo_0.8.inst.cfg index bfb1bdf0fb..d5ef899ed6 100644 --- a/resources/variants/creality/creality_ender3v2neo_0.8.inst.cfg +++ b/resources/variants/creality/creality_ender3v2neo_0.8.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 0.8 + diff --git a/resources/variants/creality/creality_ender3v2neo_1.0.inst.cfg b/resources/variants/creality/creality_ender3v2neo_1.0.inst.cfg index eeb644d0f5..8dee589cd1 100644 --- a/resources/variants/creality/creality_ender3v2neo_1.0.inst.cfg +++ b/resources/variants/creality/creality_ender3v2neo_1.0.inst.cfg @@ -10,3 +10,4 @@ type = variant [values] machine_nozzle_size = 1.0 + From 3934e6c6e2d4c74b20edc526d9156bc36cef8500 Mon Sep 17 00:00:00 2001 From: 0r31 Date: Fri, 1 Mar 2024 11:38:10 +0100 Subject: [PATCH 180/203] Remove prime tower position and let Cura calculating the right one --- resources/definitions/dagoma_sigma_pro_dual.def.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/resources/definitions/dagoma_sigma_pro_dual.def.json b/resources/definitions/dagoma_sigma_pro_dual.def.json index 2fbf85580d..ac27e93500 100644 --- a/resources/definitions/dagoma_sigma_pro_dual.def.json +++ b/resources/definitions/dagoma_sigma_pro_dual.def.json @@ -31,8 +31,6 @@ "machine_depth": { "default_value": 200 }, "machine_height": { "default_value": 501 }, "machine_start_gcode": { "default_value": ";Start Gcode for {machine_name}\n;Author: Dagoma\n;Sliced: {date} {time}\n;Estimated print time: {print_time}\n;Print speed: {speed_print}mm/s\n;Layer height: {layer_height}mm\n;Wall thickness: {wall_thickness}mm\n;Infill density: {infill_sparse_density}%\n;Infill pattern: {infill_pattern}\n;Support: {support_enable}\n;Print temperature: {material_print_temperature}°C\n;Flow: {material_flow}%\n;Retraction amount: {retraction_amount}mm\n;Retraction speed: {retraction_retract_speed}mm/s\nG90 ;absolute positioning\nM190 S{material_bed_temperature_layer_0};\nM109 S140;\nG1 F200 E-1.0\nM106 S255 ;Activating layers fans\nG28 ;Homing\nG29 ;Calibration\nM107 ;Off Ventilateur\nM109 S{material_print_temperature_layer_0} ;Temperature for the first layer only\nG92 E0 ;Zero the extruded length again\nG1 X0 Y-105 Z1 F3000\nG1 F{speed_travel}\nM117 Printing...\n" }, - "machine_end_gcode": { "default_value": ";End Gcode for {machine_name}\n;Author: Dagoma\nM104 S0\nM107 ;stop fan\nM140 S0 ;heated bed heater off (if you have it)\nG92 E0\nG1 E-55 F4600\nG27\nG90 ; Absolute positioning\nT0" }, - "prime_tower_position_x": { "value": 17.5 }, - "prime_tower_position_y": { "value": 60 } + "machine_end_gcode": { "default_value": ";End Gcode for {machine_name}\n;Author: Dagoma\nM104 S0\nM107 ;stop fan\nM140 S0 ;heated bed heater off (if you have it)\nG92 E0\nG1 E-55 F4600\nG27\nG90 ; Absolute positioning\nT0" } } } From 9633a8e9d431ea421d01e08cf948cbacb535a52f Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Fri, 1 Mar 2024 11:53:05 +0100 Subject: [PATCH 181/203] adding warning to settings not in whitelist CURA-11403 --- plugins/3MFWriter/SettingSelection.qml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/3MFWriter/SettingSelection.qml b/plugins/3MFWriter/SettingSelection.qml index a50c02f11c..d33f2ef8f0 100644 --- a/plugins/3MFWriter/SettingSelection.qml +++ b/plugins/3MFWriter/SettingSelection.qml @@ -19,7 +19,7 @@ RowLayout Layout.preferredWidth: UM.Theme.getSize("setting").width checked: modelData.selected onClicked: modelData.selected = checked - + tooltip: modelData.selectable ? "" :catalog.i18nc("@tooltip", "This setting may not perform well while exporting in UCP. Users are asked to add it at their own risk") } UM.Label @@ -30,9 +30,10 @@ RowLayout UM.HelpIcon { UM.I18nCatalog { id: catalog; name: "cura" } - text: catalog.i18nc("@tooltip", - "This setting can't be exported because it depends on the used printer capacities") + "This setting may not perform well while exporting in UCP, Users are asked to add it at their own risk") visible: !modelData.selectable } + + } From db88a48982383c88007d3491940b21a3eece9a6a Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Fri, 1 Mar 2024 13:02:18 +0100 Subject: [PATCH 182/203] modifier meshes supported in case of per model setting CURA-11403 --- plugins/3MFWriter/SettingsExportModel.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/plugins/3MFWriter/SettingsExportModel.py b/plugins/3MFWriter/SettingsExportModel.py index 3b034236c8..62c445f34e 100644 --- a/plugins/3MFWriter/SettingsExportModel.py +++ b/plugins/3MFWriter/SettingsExportModel.py @@ -59,7 +59,17 @@ class SettingsExportModel(QObject): 'skin_edge_support_thickness', 'alternate_carve_order', 'top_skin_preshrink', - 'interlocking_enable'} + 'interlocking_enable', + 'infill_mesh', + 'cutting_mesh'} + + PER_MODEL_EXPORTABLE_SETTINGS_KEYS = { 'top_bottom_thickness', + 'top_thickness', + 'bottom_thickness', + 'top_layers', + 'bottom_layers', + 'wall_thickness', + 'wall_line_count'} def __init__(self, parent = None): super().__init__(parent) @@ -107,15 +117,20 @@ class SettingsExportModel(QObject): def _exportSettings(settings_stack): user_settings_container = settings_stack.userChanges user_keys = user_settings_container.getAllKeys() - + exportable_settings = SettingsExportModel.EXPORTABLE_SETTINGS settings_export = [] + # in case of modify mesh settings we add spme extra settings to the exportable settings + if 'infill_mesh' in user_keys: + exportable_settings = exportable_settings.union(SettingsExportModel.PER_MODEL_EXPORTABLE_SETTINGS_KEYS) for setting_to_export in user_keys: label = settings_stack.getProperty(setting_to_export, "label") value = settings_stack.getProperty(setting_to_export, "value") unit = settings_stack.getProperty(setting_to_export, "unit") setting_type = settings_stack.getProperty(setting_to_export, "type") + + is_exportable = True if setting_to_export in exportable_settings else False if setting_type is not None: # This is not very good looking, but will do for now value = f"{str(SettingDefinition.settingValueToString(setting_type, value))} {unit}" @@ -125,6 +140,6 @@ class SettingsExportModel(QObject): settings_export.append(SettingExport(setting_to_export, label, value, - setting_to_export in SettingsExportModel.EXPORTABLE_SETTINGS)) + is_exportable)) return settings_export From a2dcce9d5084129badadfe860d14d34e3eec1823 Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Fri, 1 Mar 2024 14:46:13 +0100 Subject: [PATCH 183/203] Cleanup exclude lists. Relates to PP-441 --- resources/definitions/ultimaker2.def.json | 18 ++++++++++++------ resources/definitions/ultimaker2_plus.def.json | 16 +++++++++++----- .../ultimaker2_plus_connect.def.json | 15 +++++++-------- resources/definitions/ultimaker3.def.json | 6 ++++-- .../definitions/ultimaker_original.def.json | 15 ++++++++++----- .../ultimaker_original_dual.def.json | 15 ++++++++++----- resources/definitions/ultimaker_s3.def.json | 5 +++-- resources/definitions/ultimaker_s5.def.json | 5 +++-- 8 files changed, 60 insertions(+), 35 deletions(-) diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json index 0609cfabf9..2dd168fd09 100644 --- a/resources/definitions/ultimaker2.def.json +++ b/resources/definitions/ultimaker2.def.json @@ -10,20 +10,26 @@ "file_formats": "text/x-gcode", "platform": "ultimaker2_platform.obj", "exclude_materials": [ - "structur3d_*", - "generic_hips", + "generic_bam", "generic_cffcpe", "generic_cffpa", + "generic_flexible", "generic_gffcpe", "generic_gffpa", - "generic_pekk", + "generic_hips", + "generic_petcf", + "generic_petg", "generic_pva", "generic_tough_pla", + "structur3d_*", "ultimaker_bam", - "ultimaker_pva", - "ultimaker_tough_pla_*", + "ultimaker_petcf", + "ultimaker_petcf_*", + "ultimaker_petg", "ultimaker_petg_*", - "ultimaker_petcf_*" + "ultimaker_pva", + "ultimaker_tough_pla", + "ultimaker_tough_pla_*" ], "firmware_file": "MarlinUltimaker2.hex", "has_machine_quality": true, diff --git a/resources/definitions/ultimaker2_plus.def.json b/resources/definitions/ultimaker2_plus.def.json index 61dd8cae45..6ddd402927 100644 --- a/resources/definitions/ultimaker2_plus.def.json +++ b/resources/definitions/ultimaker2_plus.def.json @@ -9,20 +9,26 @@ "file_formats": "text/x-gcode", "platform": "ultimaker2_platform.obj", "exclude_materials": [ - "structur3d_*", - "generic_hips", + "generic_bam", "generic_cffcpe", "generic_cffpa", + "generic_flexible", "generic_gffcpe", "generic_gffpa", + "generic_hips", "generic_petcf", + "generic_petg", "generic_pva", "generic_tough_pla", + "structur3d_*", "ultimaker_bam", - "ultimaker_pva", - "ultimaker_tough_pla_*", + "ultimaker_petcf", + "ultimaker_petcf_*", + "ultimaker_petg", "ultimaker_petg_*", - "ultimaker_petcf_*" + "ultimaker_pva", + "ultimaker_tough_pla", + "ultimaker_tough_pla_*" ], "firmware_file": "MarlinUltimaker2plus.hex", "first_start_actions": [], diff --git a/resources/definitions/ultimaker2_plus_connect.def.json b/resources/definitions/ultimaker2_plus_connect.def.json index b434b86a32..564fee957b 100644 --- a/resources/definitions/ultimaker2_plus_connect.def.json +++ b/resources/definitions/ultimaker2_plus_connect.def.json @@ -9,20 +9,19 @@ "file_formats": "application/x-ufp;text/x-gcode", "platform": "ultimaker2_plus_connect_platform.obj", "exclude_materials": [ - "structur3d_*", - "generic_hips", + "generic_bam", "generic_cffcpe", "generic_cffpa", + "generic_flexible", "generic_gffcpe", "generic_gffpa", - "generic_petcf", + "generic_hips", "generic_pva", - "generic_tough_pla", + "structur3d_*", "ultimaker_bam", - "ultimaker_pva", - "ultimaker_tough_pla_*", - "ultimaker_petg_*", - "ultimaker_petcf_*" + "ultimaker_petcf", + "ultimaker_petcf_*", + "ultimaker_pva" ], "first_start_actions": [], "has_machine_materials": true, diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index f5f1b386c0..7eba795a45 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -13,13 +13,15 @@ 9066 ], "exclude_materials": [ - "structur3d_*", - "generic_hips", "generic_cffcpe", "generic_cffpa", + "generic_flexible", "generic_gffcpe", "generic_gffpa", + "generic_hips", "generic_petcf", + "structur3d_*", + "ultimaker_petcf", "ultimaker_petcf_*" ], "firmware_update_info": diff --git a/resources/definitions/ultimaker_original.def.json b/resources/definitions/ultimaker_original.def.json index 4729df90b3..684c30691f 100644 --- a/resources/definitions/ultimaker_original.def.json +++ b/resources/definitions/ultimaker_original.def.json @@ -10,20 +10,25 @@ "file_formats": "text/x-gcode", "platform": "ultimaker_platform.3mf", "exclude_materials": [ - "structur3d_*", - "generic_hips", "generic_cffcpe", "generic_cffpa", + "generic_flexible", "generic_gffcpe", "generic_gffpa", + "generic_hips", "generic_petcf", + "generic_petg", "generic_pva", "generic_tough_pla", + "structur3d_*", "ultimaker_bam", - "ultimaker_pva", - "ultimaker_tough_pla_*", + "ultimaker_petcf", + "ultimaker_petcf_*", + "ultimaker_petg", "ultimaker_petg_*", - "ultimaker_petcf_*" + "ultimaker_pva", + "ultimaker_tough_pla", + "ultimaker_tough_pla_*" ], "firmware_file": "MarlinUltimaker-{baudrate}.hex", "firmware_hbk_file": "MarlinUltimaker-HBK-{baudrate}.hex", diff --git a/resources/definitions/ultimaker_original_dual.def.json b/resources/definitions/ultimaker_original_dual.def.json index ce7baee8cc..777e1f4c2b 100644 --- a/resources/definitions/ultimaker_original_dual.def.json +++ b/resources/definitions/ultimaker_original_dual.def.json @@ -10,20 +10,25 @@ "file_formats": "text/x-gcode", "platform": "ultimaker_platform.3mf", "exclude_materials": [ - "structur3d_*", - "generic_hips", "generic_cffcpe", "generic_cffpa", + "generic_flexible", "generic_gffcpe", "generic_gffpa", + "generic_hips", "generic_petcf", + "generic_petg", "generic_pva", "generic_tough_pla", + "structur3d_*", "ultimaker_bam", - "ultimaker_pva", - "ultimaker_tough_pla_*", + "ultimaker_petcf", + "ultimaker_petcf_*", + "ultimaker_petg", "ultimaker_petg_*", - "ultimaker_petcf_*" + "ultimaker_pva", + "ultimaker_tough_pla", + "ultimaker_tough_pla_*" ], "firmware_file": "MarlinUltimaker-{baudrate}-dual.hex", "firmware_hbk_file": "MarlinUltimaker-HBK-{baudrate}-dual.hex", diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json index 28b5f77a50..a9f0bae259 100644 --- a/resources/definitions/ultimaker_s3.def.json +++ b/resources/definitions/ultimaker_s3.def.json @@ -15,8 +15,9 @@ 213484 ], "exclude_materials": [ - "structur3d_*", - "generic_hips" + "generic_hips", + "generic_flexible", + "structur3d_*" ], "firmware_update_info": { diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index 2a46649157..2732c59893 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -16,8 +16,9 @@ 214477 ], "exclude_materials": [ - "structur3d_*", - "generic_hips" + "generic_hips", + "generic_flexible", + "structur3d_*" ], "firmware_update_info": { From f67d2ed5febdbc3812ab7c2f70a0fb9b3dfedd88 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Fri, 1 Mar 2024 15:25:24 +0100 Subject: [PATCH 184/203] Remove setting visibility for Ucp show settings expanded by default CURA-11403 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 8 ++++++-- plugins/3MFReader/WorkspaceDialog.py | 18 +++++++++--------- plugins/3MFReader/WorkspaceDialog.qml | 13 +++++++------ 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 0e527590f5..6cbf054e4b 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -212,6 +212,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader): return global_stack_file_list[0], extruder_stack_file_list def preRead(self, file_name, show_dialog=True, *args, **kwargs): + result = self._preRead(file_name, show_dialog) + self._is_ucp = False + return result + + def _preRead(self, file_name, show_dialog=True): """Read some info so we can make decisions :param file_name: @@ -662,8 +667,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._dialog.setVariantType(variant_type_name) self._dialog.setHasObjectsOnPlate(Application.getInstance().platformActivity) self._dialog.setMissingPackagesMetadata(missing_package_metadata) - self._dialog.setHasVisibleSelectSameProfileChanged(self._is_ucp) self._dialog.setAllowCreatemachine(not self._is_ucp) + self._dialog.setIsUcp(self._is_ucp) self._dialog.show() @@ -721,7 +726,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if key not in containers_found_dict or strategy is not None: continue self._resolve_strategies[key] = "override" if containers_found_dict[key] else "new" - self._is_ucp = False return WorkspaceReader.PreReadResult.accepted @call_on_qt_thread diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 1fafcf59f5..0f7095ce0a 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -74,10 +74,10 @@ class WorkspaceDialog(QObject): self._is_abstract_machine = False self._is_networked_machine = False self._is_compatible_machine = False - self._has_visible_select_same_profile = False self._select_same_profile_checked = True self._allow_create_machine = True self._exported_settings_model = SpecificSettingsModel() + self._is_ucp = False machineConflictChanged = pyqtSignal() qualityChangesConflictChanged = pyqtSignal() @@ -102,7 +102,7 @@ class WorkspaceDialog(QObject): isPrinterGroupChanged = pyqtSignal() missingPackagesChanged = pyqtSignal() isCompatibleMachineChanged = pyqtSignal() - hasVisibleSelectSameProfileChanged = pyqtSignal() + isUcpChanged = pyqtSignal() selectSameProfileCheckedChanged = pyqtSignal() @pyqtProperty(bool, notify = isPrinterGroupChanged) @@ -318,14 +318,14 @@ class WorkspaceDialog(QObject): def isCompatibleMachine(self) -> bool: return self._is_compatible_machine - def setHasVisibleSelectSameProfileChanged(self, has_visible_select_same_profile): - if has_visible_select_same_profile != self._has_visible_select_same_profile: - self._has_visible_select_same_profile = has_visible_select_same_profile - self.hasVisibleSelectSameProfileChanged.emit() + def setIsUcp(self, isUcp: bool) -> None: + if isUcp != self._is_ucp: + self._is_ucp = isUcp + self.isUcpChanged.emit() - @pyqtProperty(bool, notify = hasVisibleSelectSameProfileChanged) - def hasVisibleSelectSameProfile(self): - return self._has_visible_select_same_profile + @pyqtProperty(bool, notify=isUcpChanged) + def isUcp(self): + return self._is_ucp def setSelectSameProfileChecked(self, select_same_profile_checked): if select_same_profile_checked != self._select_same_profile_checked: diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 8d06b32e14..5212c799df 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -185,14 +185,14 @@ UM.Dialog { leftLabelText: catalog.i18nc("@action:label", "Not in profile") rightLabelText: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", manager.numUserSettings).arg(manager.numUserSettings) - visible: manager.numUserSettings != 0 && manager.selectSameProfileChecked && manager.isCompatibleMachine + visible: manager.numUserSettings != 0 && manager.isCompatibleMachine } WorkspaceRow { leftLabelText: catalog.i18nc("@action:label", "Derivative from") rightLabelText: catalog.i18ncp("@action:label", "%1, %2 override", "%1, %2 overrides", manager.numSettingsOverridenByQualityChanges).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges) - visible: manager.numSettingsOverridenByQualityChanges != 0 && manager.selectSameProfileChecked && manager.isCompatibleMachine + visible: manager.numSettingsOverridenByQualityChanges != 0 && manager.isCompatibleMachine } WorkspaceRow @@ -200,7 +200,7 @@ UM.Dialog leftLabelText: catalog.i18nc("@action:label", "Specific settings") rightLabelText: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", manager.exportedSettingModel.rowCount()).arg(manager.exportedSettingModel.rowCount()) buttonText: tableViewSpecificSettings.shouldBeVisible ? catalog.i18nc("@action:button", "Hide settings") : catalog.i18nc("@action:button", "Show settings") - visible: !manager.selectSameProfileChecked || !manager.isCompatibleMachine + visible: manager.isUcp onButtonClicked: tableViewSpecificSettings.shouldBeVisible = !tableViewSpecificSettings.shouldBeVisible } @@ -209,8 +209,8 @@ UM.Dialog id: tableViewSpecificSettings width: parent.width - parent.leftPadding - UM.Theme.getSize("default_margin").width height: UM.Theme.getSize("card").height - visible: shouldBeVisible && (!manager.selectSameProfileChecked || !manager.isCompatibleMachine) - property bool shouldBeVisible: false + visible: shouldBeVisible && manager.isUcp + property bool shouldBeVisible: true columnHeaders: [ @@ -232,7 +232,7 @@ UM.Dialog text: catalog.i18nc("@action:checkbox", "Select the same profile") onEnabledChanged: manager.selectSameProfileChecked = enabled tooltip: enabled ? "" : catalog.i18nc("@tooltip", "You can use the same profile only if you have the same printer as the project was published with") - visible: manager.hasVisibleSelectSameProfile && manager.isCompatibleMachine + visible: manager.isUcp checked: manager.selectSameProfileChecked onCheckedChanged: manager.selectSameProfileChecked = checked @@ -330,6 +330,7 @@ UM.Dialog id: visibilitySection title: catalog.i18nc("@action:label", "Setting visibility") iconSource: UM.Theme.getIcon("Eye") + visible : !manager.isUcp content: Column { spacing: UM.Theme.getSize("default_margin").height From 87e119789c8b964f0a6a359e9214b068fe7e2877 Mon Sep 17 00:00:00 2001 From: wawanbreton Date: Fri, 1 Mar 2024 14:31:28 +0000 Subject: [PATCH 185/203] Applied printer-linter format --- .../definitions/dagoma_sigma_pro.def.json | 18 +++++++-------- .../dagoma_sigma_pro_dual.def.json | 23 ++++++++++--------- ...goma_sigma_pro_dual_extruder_left.def.json | 8 +++---- ...oma_sigma_pro_dual_extruder_right.def.json | 8 +++---- .../dagoma_sigma_pro_extruder.def.json | 8 +++---- ...goma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg | 3 ++- ...goma_sigma_pro_brass_0.4_pla_h0.2.inst.cfg | 1 + ...goma_sigma_pro_brass_0.4_pla_h0.3.inst.cfg | 1 + ...goma_sigma_pro_brass_0.8_pla_h0.2.inst.cfg | 1 + ...goma_sigma_pro_brass_0.8_pla_h0.4.inst.cfg | 1 + ...goma_sigma_pro_brass_0.8_pla_h0.6.inst.cfg | 1 + ...sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg | 1 + ...sigma_pro_dual_brass_0.4_pla_h0.2.inst.cfg | 1 + ...sigma_pro_dual_brass_0.4_pla_h0.3.inst.cfg | 1 + ...sigma_pro_dual_brass_0.8_pla_h0.2.inst.cfg | 1 + ...sigma_pro_dual_brass_0.8_pla_h0.4.inst.cfg | 1 + ...sigma_pro_dual_brass_0.8_pla_h0.6.inst.cfg | 1 + ...sigma_pro_dual_steel_0.4_pla_h0.1.inst.cfg | 1 + ...sigma_pro_dual_steel_0.4_pla_h0.2.inst.cfg | 1 + ...sigma_pro_dual_steel_0.4_pla_h0.3.inst.cfg | 1 + ...sigma_pro_dual_steel_0.8_pla_h0.2.inst.cfg | 1 + ...sigma_pro_dual_steel_0.8_pla_h0.4.inst.cfg | 1 + ...sigma_pro_dual_steel_0.8_pla_h0.6.inst.cfg | 1 + ...goma_sigma_pro_steel_0.4_pla_h0.1.inst.cfg | 1 + ...goma_sigma_pro_steel_0.4_pla_h0.2.inst.cfg | 1 + ...goma_sigma_pro_steel_0.4_pla_h0.3.inst.cfg | 1 + ...goma_sigma_pro_steel_0.8_pla_h0.2.inst.cfg | 1 + ...goma_sigma_pro_steel_0.8_pla_h0.4.inst.cfg | 1 + ...goma_sigma_pro_steel_0.8_pla_h0.6.inst.cfg | 1 + .../dagoma_sigma_pro_brass_0.8.inst.cfg | 1 + .../dagoma_sigma_pro_dual_brass_0.8.inst.cfg | 1 + .../dagoma_sigma_pro_dual_steel_0.8.inst.cfg | 1 + .../dagoma_sigma_pro_steel_0.8.inst.cfg | 1 + 33 files changed, 62 insertions(+), 33 deletions(-) diff --git a/resources/definitions/dagoma_sigma_pro.def.json b/resources/definitions/dagoma_sigma_pro.def.json index ef0f6ac1d6..8bbac5a483 100644 --- a/resources/definitions/dagoma_sigma_pro.def.json +++ b/resources/definitions/dagoma_sigma_pro.def.json @@ -9,24 +9,24 @@ "manufacturer": "Dagoma", "file_formats": "text/x-gcode", "platform": "dagoma_sigma_pro.obj", - "platform_texture": "dagoma_sigma_pro.png", "first_start_actions": [ "MachineSettingsAction" ], "has_machine_quality": true, "has_variants": true, - "variants_name": "Nozzle", "machine_extruder_trains": { "0": "dagoma_sigma_pro_extruder" }, + "platform_texture": "dagoma_sigma_pro.png", "preferred_quality_type": "h0.2", "preferred_variant_name": "Brass 0.4mm", - "quality_definition": "dagoma_sigma_pro" + "quality_definition": "dagoma_sigma_pro", + "variants_name": "Nozzle" }, "overrides": { - "machine_heated_bed": { "default_value": true }, - "machine_name": { "default_value": "Dagoma Sigma Pro 500Z" }, - "machine_width": { "default_value": 200 }, "machine_depth": { "default_value": 200 }, + "machine_end_gcode": { "default_value": ";End Gcode for {machine_name}\n;Author: Dagoma\nM104 S0\nM107 ;stop fan\nM140 S0 ;heated bed heater off (if you have it)\nG92 E0\nG1 E-55 F4600\nG27\nG90 ; Absolute positioning\nT0" }, + "machine_heated_bed": { "default_value": true }, "machine_height": { "default_value": 501 }, - "machine_start_gcode": { "default_value": ";Start Gcode for {machine_name}\n;Author: Dagoma\n;Sliced: {date} {time}\n;Estimated print time: {print_time}\n;Print speed: {speed_print}mm/s\n;Layer height: {layer_height}mm\n;Wall thickness: {wall_thickness}mm\n;Infill density: {infill_sparse_density}%\n;Infill pattern: {infill_pattern}\n;Support: {support_enable}\n;Print temperature: {material_print_temperature}°C\n;Flow: {material_flow}%\n;Retraction amount: {retraction_amount}mm\n;Retraction speed: {retraction_retract_speed}mm/s\nG90 ;absolute positioning\nM190 S{material_bed_temperature_layer_0};\nM109 S140;\nG1 F200 E-1.0\nM106 S255 ;Activating layers fans\nG28 ;Homing\nG29 ;Calibration\nM107 ;Off Ventilateur\nM109 S{material_print_temperature_layer_0} ;Temperature for the first layer only\nG92 E0 ;Zero the extruded length again\nG1 X0 Y-105 Z1 F3000\nG1 F{speed_travel}\nM117 Printing...\n" }, - "machine_end_gcode": { "default_value": ";End Gcode for {machine_name}\n;Author: Dagoma\nM104 S0\nM107 ;stop fan\nM140 S0 ;heated bed heater off (if you have it)\nG92 E0\nG1 E-55 F4600\nG27\nG90 ; Absolute positioning\nT0" } + "machine_name": { "default_value": "Dagoma Sigma Pro 500Z" }, + "machine_start_gcode": { "default_value": ";Start Gcode for {machine_name}\n;Author: Dagoma\n;Sliced: {date} {time}\n;Estimated print time: {print_time}\n;Print speed: {speed_print}mm/s\n;Layer height: {layer_height}mm\n;Wall thickness: {wall_thickness}mm\n;Infill density: {infill_sparse_density}%\n;Infill pattern: {infill_pattern}\n;Support: {support_enable}\n;Print temperature: {material_print_temperature}\u00b0C\n;Flow: {material_flow}%\n;Retraction amount: {retraction_amount}mm\n;Retraction speed: {retraction_retract_speed}mm/s\nG90 ;absolute positioning\nM190 S{material_bed_temperature_layer_0};\nM109 S140;\nG1 F200 E-1.0\nM106 S255 ;Activating layers fans\nG28 ;Homing\nG29 ;Calibration\nM107 ;Off Ventilateur\nM109 S{material_print_temperature_layer_0} ;Temperature for the first layer only\nG92 E0 ;Zero the extruded length again\nG1 X0 Y-105 Z1 F3000\nG1 F{speed_travel}\nM117 Printing...\n" }, + "machine_width": { "default_value": 200 } } -} +} \ No newline at end of file diff --git a/resources/definitions/dagoma_sigma_pro_dual.def.json b/resources/definitions/dagoma_sigma_pro_dual.def.json index ac27e93500..eb11b37603 100644 --- a/resources/definitions/dagoma_sigma_pro_dual.def.json +++ b/resources/definitions/dagoma_sigma_pro_dual.def.json @@ -9,28 +9,29 @@ "manufacturer": "Dagoma", "file_formats": "text/x-gcode", "platform": "dagoma_sigma_pro.obj", - "platform_texture": "dagoma_sigma_pro.png", "first_start_actions": [ "MachineSettingsAction" ], "has_machine_quality": true, "has_variants": true, - "variants_name": "Nozzle", - "machine_extruder_trains": { + "machine_extruder_trains": + { "0": "dagoma_sigma_pro_dual_extruder_right", "1": "dagoma_sigma_pro_dual_extruder_left" }, + "platform_texture": "dagoma_sigma_pro.png", "preferred_quality_type": "h0.2", "preferred_variant_name": "Brass 0.4mm", - "quality_definition": "dagoma_sigma_pro_dual" + "quality_definition": "dagoma_sigma_pro_dual", + "variants_name": "Nozzle" }, "overrides": { - "machine_heated_bed": { "default_value": true }, - "machine_extruder_count": { "default_value": 2 }, - "machine_name": { "default_value": "Dagoma Sigma Pro 500Z Dual" }, - "machine_width": { "default_value": 200 }, "machine_depth": { "default_value": 200 }, + "machine_end_gcode": { "default_value": ";End Gcode for {machine_name}\n;Author: Dagoma\nM104 S0\nM107 ;stop fan\nM140 S0 ;heated bed heater off (if you have it)\nG92 E0\nG1 E-55 F4600\nG27\nG90 ; Absolute positioning\nT0" }, + "machine_extruder_count": { "default_value": 2 }, + "machine_heated_bed": { "default_value": true }, "machine_height": { "default_value": 501 }, - "machine_start_gcode": { "default_value": ";Start Gcode for {machine_name}\n;Author: Dagoma\n;Sliced: {date} {time}\n;Estimated print time: {print_time}\n;Print speed: {speed_print}mm/s\n;Layer height: {layer_height}mm\n;Wall thickness: {wall_thickness}mm\n;Infill density: {infill_sparse_density}%\n;Infill pattern: {infill_pattern}\n;Support: {support_enable}\n;Print temperature: {material_print_temperature}°C\n;Flow: {material_flow}%\n;Retraction amount: {retraction_amount}mm\n;Retraction speed: {retraction_retract_speed}mm/s\nG90 ;absolute positioning\nM190 S{material_bed_temperature_layer_0};\nM109 S140;\nG1 F200 E-1.0\nM106 S255 ;Activating layers fans\nG28 ;Homing\nG29 ;Calibration\nM107 ;Off Ventilateur\nM109 S{material_print_temperature_layer_0} ;Temperature for the first layer only\nG92 E0 ;Zero the extruded length again\nG1 X0 Y-105 Z1 F3000\nG1 F{speed_travel}\nM117 Printing...\n" }, - "machine_end_gcode": { "default_value": ";End Gcode for {machine_name}\n;Author: Dagoma\nM104 S0\nM107 ;stop fan\nM140 S0 ;heated bed heater off (if you have it)\nG92 E0\nG1 E-55 F4600\nG27\nG90 ; Absolute positioning\nT0" } + "machine_name": { "default_value": "Dagoma Sigma Pro 500Z Dual" }, + "machine_start_gcode": { "default_value": ";Start Gcode for {machine_name}\n;Author: Dagoma\n;Sliced: {date} {time}\n;Estimated print time: {print_time}\n;Print speed: {speed_print}mm/s\n;Layer height: {layer_height}mm\n;Wall thickness: {wall_thickness}mm\n;Infill density: {infill_sparse_density}%\n;Infill pattern: {infill_pattern}\n;Support: {support_enable}\n;Print temperature: {material_print_temperature}\u00b0C\n;Flow: {material_flow}%\n;Retraction amount: {retraction_amount}mm\n;Retraction speed: {retraction_retract_speed}mm/s\nG90 ;absolute positioning\nM190 S{material_bed_temperature_layer_0};\nM109 S140;\nG1 F200 E-1.0\nM106 S255 ;Activating layers fans\nG28 ;Homing\nG29 ;Calibration\nM107 ;Off Ventilateur\nM109 S{material_print_temperature_layer_0} ;Temperature for the first layer only\nG92 E0 ;Zero the extruded length again\nG1 X0 Y-105 Z1 F3000\nG1 F{speed_travel}\nM117 Printing...\n" }, + "machine_width": { "default_value": 200 } } -} +} \ No newline at end of file diff --git a/resources/extruders/dagoma_sigma_pro_dual_extruder_left.def.json b/resources/extruders/dagoma_sigma_pro_dual_extruder_left.def.json index 067ab56b0a..ac00cd1485 100644 --- a/resources/extruders/dagoma_sigma_pro_dual_extruder_left.def.json +++ b/resources/extruders/dagoma_sigma_pro_dual_extruder_left.def.json @@ -10,9 +10,9 @@ "overrides": { "extruder_nr": { "default_value": 1 }, - "machine_nozzle_size": { "default_value": 0.4 }, - "material_diameter": { "default_value": 1.75 }, + "machine_extruder_end_code": { "default_value": ";END T1\nG92 E0\nM83\nG1 E-55 F4700\nM82\nG92 E0\n" }, "machine_extruder_start_code": { "default_value": ";START T1\n;No temperature change\nG1 X0 Y77.5 F8000\nG92 E0\nM83\nG1 E50 F1200\nM82\nG92 E0\n" }, - "machine_extruder_end_code": { "default_value": ";END T1\nG92 E0\nM83\nG1 E-55 F4700\nM82\nG92 E0\n" } + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } } -} +} \ No newline at end of file diff --git a/resources/extruders/dagoma_sigma_pro_dual_extruder_right.def.json b/resources/extruders/dagoma_sigma_pro_dual_extruder_right.def.json index c94792aedf..9959d5108c 100644 --- a/resources/extruders/dagoma_sigma_pro_dual_extruder_right.def.json +++ b/resources/extruders/dagoma_sigma_pro_dual_extruder_right.def.json @@ -10,9 +10,9 @@ "overrides": { "extruder_nr": { "default_value": 0 }, - "machine_nozzle_size": { "default_value": 0.4 }, - "material_diameter": { "default_value": 1.75 }, + "machine_extruder_end_code": { "default_value": ";END T0\nG92 E0\nM83\nG1 E-55 F4700\nM82\nG92 E0\n" }, "machine_extruder_start_code": { "default_value": ";START T0\n;No temperature change\nG1 X0 Y77.5 F8000\nG92 E0\nM83\nG1 E50 F1200\nM82\nG92 E0\n" }, - "machine_extruder_end_code": { "default_value": ";END T0\nG92 E0\nM83\nG1 E-55 F4700\nM82\nG92 E0\n" } + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } } -} +} \ No newline at end of file diff --git a/resources/extruders/dagoma_sigma_pro_extruder.def.json b/resources/extruders/dagoma_sigma_pro_extruder.def.json index 82253a0b0a..55337bd4a0 100644 --- a/resources/extruders/dagoma_sigma_pro_extruder.def.json +++ b/resources/extruders/dagoma_sigma_pro_extruder.def.json @@ -10,9 +10,9 @@ "overrides": { "extruder_nr": { "default_value": 0 }, - "machine_nozzle_size": { "default_value": 0.4 }, - "material_diameter": { "default_value": 1.75 }, + "machine_extruder_end_code": { "default_value": ";END T0\nG92 E0\nM83\nG1 E-55 F4700\nM82\nG92 E0\n" }, "machine_extruder_start_code": { "default_value": ";START T0\n;No temperature change\nG1 X0 Y77.5 F8000\nG92 E0\nM83\nG1 E50 F1200\nM82\nG92 E0\n" }, - "machine_extruder_end_code": { "default_value": ";END T0\nG92 E0\nM83\nG1 E-55 F4700\nM82\nG92 E0\n" } + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } } -} +} \ No newline at end of file diff --git a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg index e8173416c9..9f24b9ff18 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.1.inst.cfg @@ -55,9 +55,9 @@ speed_wall_0 = 25 speed_wall_x = 35.0 speed_z_hop = 120 support_enable = False +support_structure = tree support_tree_angle = 55 support_tree_top_rate = =30 if support_roof_enable else 10 -support_structure = tree switch_extruder_extra_prime_amount = 0 switch_extruder_prime_speed = 20 switch_extruder_retraction_amount = 80 @@ -71,3 +71,4 @@ wall_0_material_flow_layer_0 = 85 wall_thickness = 0.8 wall_transition_length = 0.4 wall_x_material_flow_layer_0 = 90 + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.2.inst.cfg index b9fef0b7d3..8792a7527a 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.2.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.2.inst.cfg @@ -71,3 +71,4 @@ wall_0_material_flow_layer_0 = 85 wall_thickness = 1.2 wall_transition_length = 0.4 wall_x_material_flow_layer_0 = 90 + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.3.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.3.inst.cfg index 7b4eb8d5a1..c38b789f6b 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.3.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.4_pla_h0.3.inst.cfg @@ -12,3 +12,4 @@ variant = Brass 0.4mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.2.inst.cfg index 0a75550fae..035ab244cc 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.2.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.2.inst.cfg @@ -12,3 +12,4 @@ variant = Brass 0.8mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.4.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.4.inst.cfg index 6abc8f22f0..193c64708b 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.4.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.4.inst.cfg @@ -12,3 +12,4 @@ variant = Brass 0.8mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.6.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.6.inst.cfg index e178cf7c3b..e961f9c59e 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.6.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_brass_0.8_pla_h0.6.inst.cfg @@ -12,3 +12,4 @@ variant = Brass 0.8mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg index d6d21f9a8d..eb38d71eec 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.1.inst.cfg @@ -72,3 +72,4 @@ wall_0_material_flow_layer_0 = 85 wall_thickness = 1.2 wall_transition_length = 0.4 wall_x_material_flow_layer_0 = 90 + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.2.inst.cfg index 400aa3e751..33a8956b39 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.2.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.2.inst.cfg @@ -72,3 +72,4 @@ wall_0_material_flow_layer_0 = 85 wall_thickness = 1.2 wall_transition_length = 0.4 wall_x_material_flow_layer_0 = 90 + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.3.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.3.inst.cfg index 13205d114a..540dc947b2 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.3.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.4_pla_h0.3.inst.cfg @@ -12,3 +12,4 @@ variant = Brass 0.4mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.2.inst.cfg index 36d96fb985..bd6d2b4176 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.2.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.2.inst.cfg @@ -12,3 +12,4 @@ variant = Brass 0.8mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.4.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.4.inst.cfg index 42e2b6218d..2da4d4af4f 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.4.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.4.inst.cfg @@ -12,3 +12,4 @@ variant = Brass 0.8mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.6.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.6.inst.cfg index f3c7b09f5c..82ae79a60d 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.6.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_brass_0.8_pla_h0.6.inst.cfg @@ -12,3 +12,4 @@ variant = Brass 0.8mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.1.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.1.inst.cfg index 2026c66f31..26368409b2 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.1.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.1.inst.cfg @@ -12,3 +12,4 @@ variant = Steel 0.4mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.2.inst.cfg index c41f773d73..9d860526ac 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.2.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.2.inst.cfg @@ -12,3 +12,4 @@ variant = Steel 0.4mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.3.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.3.inst.cfg index 40188c628f..e9cbd8f8c0 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.3.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.4_pla_h0.3.inst.cfg @@ -12,3 +12,4 @@ variant = Steel 0.4mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.2.inst.cfg index ce1eb96fb0..f0d1931321 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.2.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.2.inst.cfg @@ -12,3 +12,4 @@ variant = Steel 0.8mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.4.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.4.inst.cfg index f9b9dd7bd3..d7430e5953 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.4.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.4.inst.cfg @@ -12,3 +12,4 @@ variant = Steel 0.8mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.6.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.6.inst.cfg index cd487c1b3f..a431051e77 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.6.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_dual_steel_0.8_pla_h0.6.inst.cfg @@ -12,3 +12,4 @@ variant = Steel 0.8mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.1.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.1.inst.cfg index a681f06ca0..d7009cd72f 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.1.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.1.inst.cfg @@ -12,3 +12,4 @@ variant = Steel 0.4mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.2.inst.cfg index 86228f152c..bc1c894bcc 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.2.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.2.inst.cfg @@ -12,3 +12,4 @@ variant = Steel 0.4mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.3.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.3.inst.cfg index 16a4921dfd..380e162e1c 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.3.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.4_pla_h0.3.inst.cfg @@ -12,3 +12,4 @@ variant = Steel 0.4mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.2.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.2.inst.cfg index 7438eb7e0e..3baede1020 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.2.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.2.inst.cfg @@ -12,3 +12,4 @@ variant = Steel 0.8mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.4.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.4.inst.cfg index b8fbabeec4..df97ec19f5 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.4.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.4.inst.cfg @@ -12,3 +12,4 @@ variant = Steel 0.8mm weight = 1 [values] + diff --git a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.6.inst.cfg b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.6.inst.cfg index ebf6084c4a..6423773478 100644 --- a/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.6.inst.cfg +++ b/resources/quality/dagoma/dagoma_sigma_pro_steel_0.8_pla_h0.6.inst.cfg @@ -12,3 +12,4 @@ variant = Steel 0.8mm weight = 1 [values] + diff --git a/resources/variants/dagoma/dagoma_sigma_pro_brass_0.8.inst.cfg b/resources/variants/dagoma/dagoma_sigma_pro_brass_0.8.inst.cfg index 52503fee05..bc9a8e9ea5 100644 --- a/resources/variants/dagoma/dagoma_sigma_pro_brass_0.8.inst.cfg +++ b/resources/variants/dagoma/dagoma_sigma_pro_brass_0.8.inst.cfg @@ -11,3 +11,4 @@ type = variant [values] machine_nozzle_id = Brass 0.8mm machine_nozzle_size = 0.8 + diff --git a/resources/variants/dagoma/dagoma_sigma_pro_dual_brass_0.8.inst.cfg b/resources/variants/dagoma/dagoma_sigma_pro_dual_brass_0.8.inst.cfg index 446775de72..96f9d485dc 100644 --- a/resources/variants/dagoma/dagoma_sigma_pro_dual_brass_0.8.inst.cfg +++ b/resources/variants/dagoma/dagoma_sigma_pro_dual_brass_0.8.inst.cfg @@ -11,3 +11,4 @@ type = variant [values] machine_nozzle_id = Brass 0.8mm machine_nozzle_size = 0.8 + diff --git a/resources/variants/dagoma/dagoma_sigma_pro_dual_steel_0.8.inst.cfg b/resources/variants/dagoma/dagoma_sigma_pro_dual_steel_0.8.inst.cfg index 7f0ddad893..b2dd1421d7 100644 --- a/resources/variants/dagoma/dagoma_sigma_pro_dual_steel_0.8.inst.cfg +++ b/resources/variants/dagoma/dagoma_sigma_pro_dual_steel_0.8.inst.cfg @@ -11,3 +11,4 @@ type = variant [values] machine_nozzle_id = Steel 0.8mm machine_nozzle_size = 0.8 + diff --git a/resources/variants/dagoma/dagoma_sigma_pro_steel_0.8.inst.cfg b/resources/variants/dagoma/dagoma_sigma_pro_steel_0.8.inst.cfg index 4a9a47b790..d36c2e344d 100644 --- a/resources/variants/dagoma/dagoma_sigma_pro_steel_0.8.inst.cfg +++ b/resources/variants/dagoma/dagoma_sigma_pro_steel_0.8.inst.cfg @@ -11,3 +11,4 @@ type = variant [values] machine_nozzle_id = Steel 0.8mm machine_nozzle_size = 0.8 + From b1b966065161d509508a3cdd0e162330f5413041 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Fri, 1 Mar 2024 15:43:37 +0100 Subject: [PATCH 186/203] removing select same profile checkbox CURA-11403 --- plugins/3MFReader/SpecificSettingsModel.py | 2 +- plugins/3MFReader/ThreeMFWorkspaceReader.py | 1 - plugins/3MFReader/WorkspaceDialog.py | 11 ----------- plugins/3MFReader/WorkspaceDialog.qml | 11 ----------- 4 files changed, 1 insertion(+), 24 deletions(-) diff --git a/plugins/3MFReader/SpecificSettingsModel.py b/plugins/3MFReader/SpecificSettingsModel.py index fd5719d6b3..d541e50b7f 100644 --- a/plugins/3MFReader/SpecificSettingsModel.py +++ b/plugins/3MFReader/SpecificSettingsModel.py @@ -27,7 +27,7 @@ class SpecificSettingsModel(ListModel): setting_type = stack.getProperty(setting, "type") if setting_type is not None: # This is not very good looking, but will do for now - value = SettingDefinition.settingValueToString(setting_type, value) + " " + unit + value = str(SettingDefinition.settingValueToString(setting_type, value)) + " " + str(unit) else: value = str(value) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 6cbf054e4b..108ba3f09b 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -702,7 +702,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._dialog.setIsAbstractMachine(is_abstract_machine) self._dialog.setMachineName(machine_name) self._dialog.updateCompatibleMachine() - self._dialog.setSelectSameProfileChecked(self._dialog.isCompatibleMachine) # Block until the dialog is closed. self._dialog.waitForClose() diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 0f7095ce0a..13e2650971 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -74,7 +74,6 @@ class WorkspaceDialog(QObject): self._is_abstract_machine = False self._is_networked_machine = False self._is_compatible_machine = False - self._select_same_profile_checked = True self._allow_create_machine = True self._exported_settings_model = SpecificSettingsModel() self._is_ucp = False @@ -103,7 +102,6 @@ class WorkspaceDialog(QObject): missingPackagesChanged = pyqtSignal() isCompatibleMachineChanged = pyqtSignal() isUcpChanged = pyqtSignal() - selectSameProfileCheckedChanged = pyqtSignal() @pyqtProperty(bool, notify = isPrinterGroupChanged) def isPrinterGroup(self) -> bool: @@ -327,15 +325,6 @@ class WorkspaceDialog(QObject): def isUcp(self): return self._is_ucp - def setSelectSameProfileChecked(self, select_same_profile_checked): - if select_same_profile_checked != self._select_same_profile_checked: - self._select_same_profile_checked = select_same_profile_checked - self.selectSameProfileCheckedChanged.emit() - - @pyqtProperty(bool, notify = selectSameProfileCheckedChanged, fset = setSelectSameProfileChecked) - def selectSameProfileChecked(self): - return self._select_same_profile_checked - def setAllowCreatemachine(self, allow_create_machine): self._allow_create_machine = allow_create_machine diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 5212c799df..90b15378c5 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -226,17 +226,6 @@ UM.Dialog rows: manager.exportedSettingModel.items } } - - UM.CheckBox - { - text: catalog.i18nc("@action:checkbox", "Select the same profile") - onEnabledChanged: manager.selectSameProfileChecked = enabled - tooltip: enabled ? "" : catalog.i18nc("@tooltip", "You can use the same profile only if you have the same printer as the project was published with") - visible: manager.isUcp - - checked: manager.selectSameProfileChecked - onCheckedChanged: manager.selectSameProfileChecked = checked - } } comboboxVisible: manager.qualityChangesConflict From 72f65406270ba80b89d7f4b3928f282f2046a793 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Fri, 1 Mar 2024 17:18:15 +0100 Subject: [PATCH 187/203] material and profile as suggested CURA-11403 --- plugins/3MFReader/WorkspaceDialog.qml | 28 ++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 90b15378c5..58d2cfaa49 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -12,7 +12,7 @@ import Cura 1.1 as Cura UM.Dialog { id: workspaceDialog - title: catalog.i18nc("@title:window", "Open Project") + title: manager.isUcp? catalog.i18nc("@title:window", "Open Universal Cura Project (UCP)"): catalog.i18nc("@title:window", "Open Project") margin: UM.Theme.getSize("default_margin").width minimumWidth: UM.Theme.getSize("modal_window_minimum").width @@ -28,7 +28,7 @@ UM.Dialog UM.Label { id: titleLabel - text: catalog.i18nc("@action:title", "Summary - Cura Project") + text: manager.isUcp? catalog.i18nc("@action:title", "Summary - Open Universal Cura Project (UCP)"): catalog.i18nc("@action:title", "Summary - Cura Project") font: UM.Theme.getFont("large") anchors.top: parent.top anchors.left: parent.left @@ -159,7 +159,7 @@ UM.Dialog WorkspaceSection { id: profileSection - title: catalog.i18nc("@action:label", "Profile settings") + title: manager.isUcp? catalog.i18nc("@action:label", "Suggested Profile settings"):catalog.i18nc("@action:label", "Profile settings") iconSource: UM.Theme.getIcon("Sliders") content: Column { @@ -194,13 +194,26 @@ UM.Dialog rightLabelText: catalog.i18ncp("@action:label", "%1, %2 override", "%1, %2 overrides", manager.numSettingsOverridenByQualityChanges).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges) visible: manager.numSettingsOverridenByQualityChanges != 0 && manager.isCompatibleMachine } + } + } + WorkspaceSection + { + id: ucpProfileSection + visible: manager.isUcp + title: catalog.i18nc("@action:label", "Settings Loaded from UCP file") + iconSource: UM.Theme.getIcon("Settings") + + content: Column + { + id: ucpProfileSettingsValuesTable + spacing: UM.Theme.getSize("default_margin").height + leftPadding: UM.Theme.getSize("medium_button_icon").width + UM.Theme.getSize("default_margin").width WorkspaceRow { - leftLabelText: catalog.i18nc("@action:label", "Specific settings") + leftLabelText: catalog.i18nc("@action:label", "Settings Loaded from UCP file") rightLabelText: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", manager.exportedSettingModel.rowCount()).arg(manager.exportedSettingModel.rowCount()) buttonText: tableViewSpecificSettings.shouldBeVisible ? catalog.i18nc("@action:button", "Hide settings") : catalog.i18nc("@action:button", "Show settings") - visible: manager.isUcp onButtonClicked: tableViewSpecificSettings.shouldBeVisible = !tableViewSpecificSettings.shouldBeVisible } @@ -263,7 +276,7 @@ UM.Dialog WorkspaceSection { id: materialSection - title: catalog.i18nc("@action:label", "Material settings") + title: manager.isUcp? catalog.i18nc("@action:label", "Suggested Material settings"): catalog.i18nc("@action:label", "Material settings") iconSource: UM.Theme.getIcon("Spool") content: Column { @@ -457,12 +470,13 @@ UM.Dialog { if (visible) { - // Force relead the comboboxes + // Force reload the comboboxes // Since this dialog is only created once the first time you open it, these comboxes need to be reloaded // each time it is shown after the first time so that the indexes will update correctly. materialSection.reloadValues() profileSection.reloadValues() printerSection.reloadValues() + ucpProfileSection.reloadValues() } } } From f19320cad872fca8a901b955b285cdf3bceef609 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Mon, 4 Mar 2024 11:58:21 +0100 Subject: [PATCH 188/203] update the setting table while loading ucp the seond time CURA-11403 --- plugins/3MFReader/SpecificSettingsModel.py | 8 ++++++++ plugins/3MFReader/WorkspaceDialog.py | 2 +- plugins/3MFReader/WorkspaceDialog.qml | 8 +++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/plugins/3MFReader/SpecificSettingsModel.py b/plugins/3MFReader/SpecificSettingsModel.py index d541e50b7f..1a4e02b1b2 100644 --- a/plugins/3MFReader/SpecificSettingsModel.py +++ b/plugins/3MFReader/SpecificSettingsModel.py @@ -3,6 +3,7 @@ from PyQt6.QtCore import Qt +from UM.Logger import Logger from UM.Settings.SettingDefinition import SettingDefinition from UM.Qt.ListModel import ListModel @@ -19,6 +20,8 @@ class SpecificSettingsModel(ListModel): self.addRoleName(self.ValueRole, "value") self._i18n_catalog = None + self._update() + def addSettingsFromStack(self, stack, category, settings): for setting, value in settings.items(): @@ -36,3 +39,8 @@ class SpecificSettingsModel(ListModel): "label": stack.getProperty(setting, "label"), "value": value }) + + def _update(self): + Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) + self.setItems([]) + return diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 13e2650971..6a6642331b 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -332,7 +332,7 @@ class WorkspaceDialog(QObject): def allowCreateMachine(self): return self._allow_create_machine - @pyqtProperty(QObject, constant = True) + @pyqtProperty(QObject) def exportedSettingModel(self): return self._exported_settings_model diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 58d2cfaa49..700f15ab5b 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -216,7 +216,6 @@ UM.Dialog buttonText: tableViewSpecificSettings.shouldBeVisible ? catalog.i18nc("@action:button", "Hide settings") : catalog.i18nc("@action:button", "Show settings") onButtonClicked: tableViewSpecificSettings.shouldBeVisible = !tableViewSpecificSettings.shouldBeVisible } - Cura.TableView { id: tableViewSpecificSettings @@ -239,6 +238,13 @@ UM.Dialog rows: manager.exportedSettingModel.items } } + + property var modelRows: manager.exportedSettingModel.items + onModelRowsChanged: + { + tableModel.clear() + tableModel.rows = modelRows + } } comboboxVisible: manager.qualityChangesConflict From c879809836cb6085915f80fe8c42ebd14e515ef5 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Mon, 4 Mar 2024 16:47:09 +0100 Subject: [PATCH 189/203] selected printer is active printer in UCP CURA-11403 --- cura/Machines/Models/MachineListModel.py | 7 +++++- plugins/3MFReader/ThreeMFWorkspaceReader.py | 28 +++++++++------------ plugins/3MFReader/WorkspaceDialog.py | 26 ++++++++++++++++++- plugins/3MFReader/WorkspaceDialog.qml | 2 +- 4 files changed, 44 insertions(+), 19 deletions(-) diff --git a/cura/Machines/Models/MachineListModel.py b/cura/Machines/Models/MachineListModel.py index 69a3c53d03..de78928687 100644 --- a/cura/Machines/Models/MachineListModel.py +++ b/cura/Machines/Models/MachineListModel.py @@ -5,7 +5,7 @@ # online cloud connected printers are represented within this ListModel. Additional information such as the number of # connected printers for each printer type is gathered. -from typing import Optional, List, cast +from typing import Optional, List, cast, Dict, Any from PyQt6.QtCore import Qt, QTimer, QObject, pyqtSlot, pyqtProperty, pyqtSignal @@ -159,3 +159,8 @@ class MachineListModel(ListModel): "machineCount": machine_count, "catergory": "connected" if is_online else "other", }) + + def getItems(self) -> Dict[str, Any]: + if self.count > 0: + return self.items + return {} \ No newline at end of file diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 108ba3f09b..dd011c43f6 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -144,14 +144,12 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._old_new_materials: Dict[str, str] = {} self._machine_info = None - self._load_profile = False self._user_settings: Dict[str, Dict[str, Any]] = {} def _clearState(self): self._id_mapping = {} self._old_new_materials = {} self._machine_info = None - self._load_profile = False self._user_settings = {} def setOpenAsUcp(self, openAsUcp: bool): @@ -212,11 +210,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): return global_stack_file_list[0], extruder_stack_file_list def preRead(self, file_name, show_dialog=True, *args, **kwargs): - result = self._preRead(file_name, show_dialog) - self._is_ucp = False - return result - - def _preRead(self, file_name, show_dialog=True): """Read some info so we can make decisions :param file_name: @@ -618,11 +611,13 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Load the user specifically exported settings self._dialog.exportedSettingModel.clear() + self._dialog.setCurrentMachineName("") if self._is_ucp: try: self._user_settings = json.loads(archive.open("Cura/user-settings.json").read().decode("utf-8")) any_extruder_stack = ExtruderManager.getInstance().getExtruderStack(0) actual_global_stack = CuraApplication.getInstance().getGlobalContainerStack() + self._dialog.setCurrentMachineName(actual_global_stack.id) for stack_name, settings in self._user_settings.items(): if stack_name == 'global': @@ -675,7 +670,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Choosing the initially selected printer in MachineSelector is_networked_machine = False is_abstract_machine = False - if global_stack and isinstance(global_stack, GlobalStack): + if global_stack and isinstance(global_stack, GlobalStack) and not self._is_ucp: # The machine included in the project file exists locally already, no need to change selected printers. is_networked_machine = global_stack.hasNetworkedConnection() is_abstract_machine = parseBool(existing_global_stack.getMetaDataEntry("is_abstract_machine", False)) @@ -684,7 +679,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): elif self._dialog.updatableMachinesModel.count > 0: # The machine included in the project file does not exist. There is another machine of the same type. # This will always default to an abstract machine first. - machine = self._dialog.updatableMachinesModel.getItem(0) + machine = self._dialog.updatableMachinesModel.getItem(self._dialog.currentMachinePositionIndex) machine_name = machine["name"] is_networked_machine = machine["isNetworked"] is_abstract_machine = machine["isAbstractMachine"] @@ -709,8 +704,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if self._dialog.getResult() == {}: return WorkspaceReader.PreReadResult.cancelled - self._load_profile = not self._is_ucp - self._resolve_strategies = self._dialog.getResult() # # There can be 3 resolve strategies coming from the dialog: @@ -832,7 +825,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): for stack in extruder_stacks: stack.setNextStack(global_stack, connect_signals = False) - if self._load_profile: + if not self._is_ucp: Logger.log("d", "Workspace loading is checking definitions...") # Get all the definition files & check if they exist. If not, add them. definition_container_files = [name for name in cura_file_names if name.endswith(self._definition_container_suffix)] @@ -906,7 +899,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): QCoreApplication.processEvents() # Ensure that the GUI does not freeze. if global_stack: - if self._load_profile: + if not self._is_ucp: # Handle quality changes if any self._processQualityChanges(global_stack) @@ -914,7 +907,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._applyChangesToMachine(global_stack, extruder_stack_dict) else: # Just clear the settings now, so that we can change the active machine without conflicts - self._clearMachineSettings(global_stack, extruder_stack_dict) + self._clearMachineSettings(global_stack, {}) + Logger.log("d", "Workspace loading is notifying rest of the code of changes...") # Actually change the active machine. @@ -924,9 +918,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # function is running on the main thread (Qt thread), although those "changed" signals have been emitted, but # they won't take effect until this function is done. # To solve this, we schedule _updateActiveMachine() for later so it will have the latest data. + self._updateActiveMachine(global_stack) - if not self._load_profile: + if self._is_ucp: # Now we have switched, apply the user settings self._applyUserSettings(global_stack, extruder_stack_dict, self._user_settings) @@ -938,6 +933,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): base_file_name = os.path.basename(file_name) self.setWorkspaceName(base_file_name) + self._is_ucp = False return nodes, self._loadMetadata(file_name) @staticmethod @@ -1320,7 +1316,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if key not in global_stack.getMetaData() and key not in _ignored_machine_network_metadata: global_stack.setMetaDataEntry(key, value) - if self._quality_changes_to_apply: + if self._quality_changes_to_apply !=None: quality_changes_group_list = container_tree.getCurrentQualityChangesGroups() quality_changes_group = next((qcg for qcg in quality_changes_group_list if qcg.name == self._quality_changes_to_apply), None) if not quality_changes_group: diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 6a6642331b..fdb63c6a11 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -63,6 +63,7 @@ class WorkspaceDialog(QObject): self._machine_name = "" self._machine_type = "" self._variant_type = "" + self._current_machine_name = "" self._material_labels = [] self._extruders = [] self._objects_on_plate = False @@ -76,6 +77,7 @@ class WorkspaceDialog(QObject): self._is_compatible_machine = False self._allow_create_machine = True self._exported_settings_model = SpecificSettingsModel() + self._current_machine_pos_index = 0 self._is_ucp = False machineConflictChanged = pyqtSignal() @@ -174,11 +176,33 @@ class WorkspaceDialog(QObject): self._machine_name = machine_name self.machineNameChanged.emit() + def setCurrentMachineName(self, machine: str) -> None: + self._current_machine_name = machine + + @pyqtProperty(str, notify = machineNameChanged) + def currentMachineName(self) -> str: + return self._current_machine_name + + @staticmethod + def getIndexOfCurrentMachine(list_of_dicts, key, value): + for i, d in enumerate(list_of_dicts): + if d.get(key) == value: # found the dictionary + return i; + return 0 + + @pyqtProperty(int, notify = machineNameChanged) + def currentMachinePositionIndex(self): + return self._current_machine_pos_index + @pyqtProperty(QObject, notify = updatableMachinesChanged) def updatableMachinesModel(self) -> MachineListModel: + if self._current_machine_name != "": + self._current_machine_pos_index = self.getIndexOfCurrentMachine(self._updatable_machines_model.getItems(), "id", self._current_machine_name) + else: + self._current_machine_pos_index = 0 return cast(MachineListModel, self._updatable_machines_model) - def setUpdatableMachines(self, updatable_machines: List[GlobalStack]) -> None: + def setUpdatableMachines(self, updatable_machines: List[GlobalStack], current_machine=None) -> None: self._updatable_machines_model.set_machines_filter(updatable_machines) self.updatableMachinesChanged.emit() diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 700f15ab5b..5f13af933c 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -96,7 +96,7 @@ UM.Dialog WorkspaceRow { leftLabelText: catalog.i18nc("@action:label", manager.isPrinterGroup ? "Printer Group" : "Printer Name") - rightLabelText: manager.machineName == catalog.i18nc("@button", "Create new") ? "" : manager.machineName + rightLabelText: manager.isUcp? manager.machineType: manager.machineName == catalog.i18nc("@button", "Create new") ? "" : manager.machineName } } From 68669794de6e22824348c3797dfb9bd259d35374 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Mon, 4 Mar 2024 18:03:11 +0100 Subject: [PATCH 190/203] selected printer is active printer also in case it is a cloud printer CURA-11403 --- cura/Machines/Models/MachineListModel.py | 4 ++-- plugins/3MFReader/WorkspaceDialog.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cura/Machines/Models/MachineListModel.py b/cura/Machines/Models/MachineListModel.py index de78928687..cac52a0e65 100644 --- a/cura/Machines/Models/MachineListModel.py +++ b/cura/Machines/Models/MachineListModel.py @@ -30,10 +30,10 @@ class MachineListModel(ListModel): ComponentTypeRole = Qt.ItemDataRole.UserRole + 8 IsNetworkedMachineRole = Qt.ItemDataRole.UserRole + 9 - def __init__(self, parent: Optional[QObject] = None, machines_filter: List[GlobalStack] = None, listenToChanges: bool = True) -> None: + def __init__(self, parent: Optional[QObject] = None, machines_filter: List[GlobalStack] = None, listenToChanges: bool = True, showCloudPrinters: bool = False) -> None: super().__init__(parent) - self._show_cloud_printers = False + self._show_cloud_printers = showCloudPrinters self._machines_filter = machines_filter self._catalog = i18nCatalog("cura") diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index fdb63c6a11..c04062f686 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -68,7 +68,7 @@ class WorkspaceDialog(QObject): self._extruders = [] self._objects_on_plate = False self._is_printer_group = False - self._updatable_machines_model = MachineListModel(self, listenToChanges=False) + self._updatable_machines_model = MachineListModel(self, listenToChanges = False, showCloudPrinters = True) self._missing_package_metadata: List[Dict[str, str]] = [] self._plugin_registry: PluginRegistry = CuraApplication.getInstance().getPluginRegistry() self._install_missing_package_dialog: Optional[QObject] = None @@ -202,7 +202,7 @@ class WorkspaceDialog(QObject): self._current_machine_pos_index = 0 return cast(MachineListModel, self._updatable_machines_model) - def setUpdatableMachines(self, updatable_machines: List[GlobalStack], current_machine=None) -> None: + def setUpdatableMachines(self, updatable_machines: List[GlobalStack]) -> None: self._updatable_machines_model.set_machines_filter(updatable_machines) self.updatableMachinesChanged.emit() From 85a7586b769163578d793f8325747ada4e390fe4 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Tue, 5 Mar 2024 11:39:12 +0100 Subject: [PATCH 191/203] Fix for test cases --- resources/definitions/creality_ender3v2neo.def.json | 9 --------- 1 file changed, 9 deletions(-) diff --git a/resources/definitions/creality_ender3v2neo.def.json b/resources/definitions/creality_ender3v2neo.def.json index f3f1eede9d..b5cc2ed52a 100644 --- a/resources/definitions/creality_ender3v2neo.def.json +++ b/resources/definitions/creality_ender3v2neo.def.json @@ -12,15 +12,6 @@ { "gantry_height": { "value": 25 }, "machine_depth": { "default_value": 230 }, - "machine_head_polygon": - { - "default_value": [ - [-1, 1], - [-1, -1], - [1, -1], - [1, 1] - ] - }, "machine_head_with_fans_polygon": { "default_value": [ From 3e23ce1c3725750b14bf343919d87774fe3e2b51 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Tue, 5 Mar 2024 14:08:39 +0100 Subject: [PATCH 192/203] code review fixed for PAP CURA-11403 --- cura/CuraApplication.py | 2 +- plugins/3MFReader/SpecificSettingsModel.py | 2 +- plugins/3MFReader/WorkspaceDialog.py | 8 ++++---- plugins/3MFWriter/SettingSelection.qml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 00e6304c0a..0879f88841 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1985,7 +1985,7 @@ class CuraApplication(QtApplication): file_name = QUrl(file).toLocalFile() workspace_reader = self.getWorkspaceFileHandler() if workspace_reader is None: - Logger.log("w", "Workspace reader not found") + Logger.warning(f"Workspace reader not found, cannot read file {file_name}.") return workspace_reader.getReaderForFile(file_name).setOpenAsUcp(True) diff --git a/plugins/3MFReader/SpecificSettingsModel.py b/plugins/3MFReader/SpecificSettingsModel.py index 1a4e02b1b2..ac8e7af3ef 100644 --- a/plugins/3MFReader/SpecificSettingsModel.py +++ b/plugins/3MFReader/SpecificSettingsModel.py @@ -41,6 +41,6 @@ class SpecificSettingsModel(ListModel): }) def _update(self): - Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) + Logger.debug(f"Updating {self.__class__.__name__}") self.setItems([]) return diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index c04062f686..4b9f1eaa6f 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -184,11 +184,11 @@ class WorkspaceDialog(QObject): return self._current_machine_name @staticmethod - def getIndexOfCurrentMachine(list_of_dicts, key, value): + def getIndexOfCurrentMachine(list_of_dicts, key, value, defaultIndex): for i, d in enumerate(list_of_dicts): if d.get(key) == value: # found the dictionary - return i; - return 0 + return i + return defaultIndex @pyqtProperty(int, notify = machineNameChanged) def currentMachinePositionIndex(self): @@ -197,7 +197,7 @@ class WorkspaceDialog(QObject): @pyqtProperty(QObject, notify = updatableMachinesChanged) def updatableMachinesModel(self) -> MachineListModel: if self._current_machine_name != "": - self._current_machine_pos_index = self.getIndexOfCurrentMachine(self._updatable_machines_model.getItems(), "id", self._current_machine_name) + self._current_machine_pos_index = self.getIndexOfCurrentMachine(self._updatable_machines_model.getItems(), "id", self._current_machine_name, defaultIndex = 0) else: self._current_machine_pos_index = 0 return cast(MachineListModel, self._updatable_machines_model) diff --git a/plugins/3MFWriter/SettingSelection.qml b/plugins/3MFWriter/SettingSelection.qml index d33f2ef8f0..794a5aacf6 100644 --- a/plugins/3MFWriter/SettingSelection.qml +++ b/plugins/3MFWriter/SettingSelection.qml @@ -19,7 +19,7 @@ RowLayout Layout.preferredWidth: UM.Theme.getSize("setting").width checked: modelData.selected onClicked: modelData.selected = checked - tooltip: modelData.selectable ? "" :catalog.i18nc("@tooltip", "This setting may not perform well while exporting in UCP. Users are asked to add it at their own risk") + tooltip: modelData.selectable ? "" :catalog.i18nc("@tooltip", "This setting may not perform well while exporting to UCP. Users are asked to add it at their own risk.") } UM.Label @@ -31,7 +31,7 @@ RowLayout { UM.I18nCatalog { id: catalog; name: "cura" } text: catalog.i18nc("@tooltip", - "This setting may not perform well while exporting in UCP, Users are asked to add it at their own risk") + "This setting may not perform well while exporting to UCP, Users are asked to add it at their own risk.") visible: !modelData.selectable } From 0e70b8044655cad72b0f20e138744b31e8a5b134 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Tue, 5 Mar 2024 14:56:09 +0100 Subject: [PATCH 193/203] removal of preference to not open the save dialog for ucp again CURA-11403 --- cura/CuraApplication.py | 2 -- plugins/3MFWriter/ThreeMFWriter.py | 39 ++--------------------- plugins/3MFWriter/UCPDialog.qml | 28 +--------------- resources/qml/Preferences/GeneralPage.qml | 14 -------- 4 files changed, 3 insertions(+), 80 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 0879f88841..39446d0f96 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -601,9 +601,7 @@ class CuraApplication(QtApplication): preferences.addPreference("mesh/scale_to_fit", False) preferences.addPreference("mesh/scale_tiny_meshes", True) preferences.addPreference("cura/dialog_on_project_save", True) - preferences.addPreference("cura/dialog_on_ucp_project_save", True) preferences.addPreference("cura/asked_dialog_on_project_save", False) - preferences.addPreference("cura/asked_dialog_on_ucp_project_save", False) preferences.addPreference("cura/choice_on_profile_override", "always_ask") preferences.addPreference("cura/choice_on_open_project", "always_ask") preferences.addPreference("cura/use_multi_build_plate", False) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index 5583059a2f..1c14c37cfd 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -462,40 +462,5 @@ class ThreeMFWriter(MeshWriter): return extra_settings def exportUcp(self): - preferences = CuraApplication.getInstance().getPreferences() - if preferences.getValue("cura/dialog_on_ucp_project_save"): - self._config_dialog = UCPDialog() - self._config_dialog.show() - else: - application = CuraApplication.getInstance() - workspace_handler = application.getInstance().getWorkspaceFileHandler() - - # Set the model to the workspace writer - mesh_writer = workspace_handler.getWriter("3MFWriter") - mesh_writer.setExportModel(SettingsExportModel()) - - # Open file dialog and write the file - device = application.getOutputDeviceManager().getOutputDevice("local_file") - nodes = [application.getController().getScene().getRoot()] - - file_name = CuraApplication.getInstance().getPrintInformation().baseName - - try: - device.requestWrite( - nodes, - file_name, - ["application/vnd.ms-package.3dmanufacturing-3dmodel+xml"], - workspace_handler, - preferred_mimetype_list="application/vnd.ms-package.3dmanufacturing-3dmodel+xml" - ) - except OutputDeviceError.UserCanceledError: - self._onRejected() - except Exception as e: - message = Message( - catalog.i18nc("@info:error", "Unable to write to file: {0}", file_name), - title=catalog.i18nc("@info:title", "Error"), - message_type=Message.MessageType.ERROR - ) - message.show() - Logger.logException("e", "Unable to write to file %s: %s", file_name, e) - self._onRejected() + self._config_dialog = UCPDialog() + self._config_dialog.show() diff --git a/plugins/3MFWriter/UCPDialog.qml b/plugins/3MFWriter/UCPDialog.qml index 3a0e6bf842..5d094f9187 100644 --- a/plugins/3MFWriter/UCPDialog.qml +++ b/plugins/3MFWriter/UCPDialog.qml @@ -19,21 +19,6 @@ UM.Dialog minimumHeight: UM.Theme.getSize("modal_window_minimum").height backgroundColor: UM.Theme.getColor("detail_background") - property bool dontShowAgain: false - - function storeDontShowAgain() - { - UM.Preferences.setValue("cura/dialog_on_ucp_project_save", !dontShowAgainCheckbox.checked) - UM.Preferences.setValue("cura/asked_dialog_on_ucp_project_save", false) - } - - onVisibleChanged: - { - if(visible && UM.Preferences.getValue("cura/asked_dialog_on_ucp_project_save")) - { - dontShowAgain = !UM.Preferences.getValue("cura/dialog_on_ucp_project_save") - } - } headerComponent: Rectangle { @@ -90,15 +75,7 @@ UM.Dialog delegate: SettingsSelectionGroup { Layout.margins: 0 } } } - leftButtons: - [ - UM.CheckBox - { - id: dontShowAgainCheckbox - text: catalog.i18nc("@action:label", "Don't show project summary on save again") - checked: dontShowAgain - } - ] + rightButtons: [ Cura.TertiaryButton @@ -117,9 +94,6 @@ UM.Dialog onClosing: { - storeDontShowAgain() manager.notifyClosed() } - onRejected: storeDontShowAgain() - onAccepted: storeDontShowAgain() } diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 0f50f169ef..b753d0e48a 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -784,20 +784,6 @@ UM.PreferencesPage } } - UM.TooltipArea - { - width: childrenRect.width - height: childrenRect.height - text: catalog.i18nc("@info:tooltip", "Should a summary be shown when saving a UCP project file?") - - UM.CheckBox - { - text: catalog.i18nc("@option:check", "Show summary dialog when saving a UCP project") - checked: boolCheck(UM.Preferences.getValue("cura/dialog_on_ucp_project_save")) - onCheckedChanged: UM.Preferences.setValue("cura/dialog_on_ucp_project_save", checked) - } - } - UM.TooltipArea { width: childrenRect.width From b119a010ca7ecfec0add86cc8e47c33049053a81 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Tue, 5 Mar 2024 16:34:41 +0100 Subject: [PATCH 194/203] Moved calculating UCP only to Preread and getting value here CURA-11403 --- cura/CuraActions.py | 10 ---------- cura/CuraApplication.py | 6 ++++++ resources/qml/Cura.qml | 4 ++-- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/cura/CuraActions.py b/cura/CuraActions.py index 9612e473b8..835c46bba8 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -1,6 +1,5 @@ # Copyright (c) 2023 UltiMaker # Cura is released under the terms of the LGPLv3 or higher. -import zipfile from typing import List, cast from PyQt6.QtCore import QObject, QUrl, pyqtSignal, pyqtProperty @@ -33,8 +32,6 @@ from cura.Operations.SetBuildPlateNumberOperation import SetBuildPlateNumberOper from UM.Logger import Logger from UM.Scene.SceneNode import SceneNode -USER_SETTINGS_PATH = "Cura/user-settings.json" - class CuraActions(QObject): def __init__(self, parent: QObject = None) -> None: super().__init__(parent) @@ -196,13 +193,6 @@ class CuraActions(QObject): operation.addOperation(SetObjectExtruderOperation(node, extruder_id)) operation.push() - @pyqtSlot(str, result = bool) - def isProjectUcp(self, file_url) -> bool: - file_name = QUrl(file_url).toLocalFile() - archive = zipfile.ZipFile(file_name, "r") - cura_file_names = [name for name in archive.namelist() if name.startswith("Cura/")] - return USER_SETTINGS_PATH in cura_file_names - @pyqtSlot(int) def setBuildPlateForSelection(self, build_plate_nr: int) -> None: Logger.log("d", "Setting build plate number... %d" % build_plate_nr) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 39446d0f96..5de74e4714 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -2194,6 +2194,12 @@ class CuraApplication(QtApplication): def addNonSliceableExtension(self, extension): self._non_sliceable_extensions.append(extension) + @pyqtSlot(str, result = bool) + def isProjectUcp(self, file_url) -> bool: + file_path = QUrl(file_url).toLocalFile() + workspace_reader = self.getWorkspaceFileHandler().getReaderForFile(file_path) + return workspace_reader.getIsProjectUcp() + @pyqtSlot(str, result=bool) def checkIsValidProjectFile(self, file_url): """Checks if the given file URL is a valid project file. """ diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index a07bb598d8..776417e15d 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -702,7 +702,7 @@ UM.MainWindow if (hasProjectFile) { var projectFile = projectFileUrlList[0] - var is_ucp = CuraActions.isProjectUcp(projectFile); + var is_ucp = CuraApplication.isProjectUcp(projectFile); if (is_ucp) { askOpenAsProjectOrUcpOrImportModelsDialog.fileUrl = projectFile; @@ -788,7 +788,7 @@ UM.MainWindow target: CuraApplication function onOpenProjectFile(project_file, add_to_recent_files) { - var is_ucp = CuraActions.isProjectUcp(project_file); + var is_ucp = CuraApplication.isProjectUcp(project_file); if (is_ucp) { From 8ef7b65710ee990ebf74116736ee1c1f3a27e21b Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Tue, 5 Mar 2024 16:37:17 +0100 Subject: [PATCH 195/203] removing update existing/ create new in case of UCP also, making sure post processing scripts are not loaded. CURA-11403 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 76 ++++++++++++--------- plugins/3MFReader/WorkspaceDialog.qml | 4 +- plugins/3MFReader/WorkspaceSection.qml | 3 +- 3 files changed, 47 insertions(+), 36 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index dd011c43f6..75b04db9e3 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -117,7 +117,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._supported_extensions = [".3mf"] self._dialog = WorkspaceDialog() self._3mf_mesh_reader = None - self._is_ucp = False + self._is_ucp = None self._container_registry = ContainerRegistry.getInstance() # suffixes registered with the MimeTypes don't start with a dot '.' @@ -208,6 +208,15 @@ class ThreeMFWorkspaceReader(WorkspaceReader): raise FileNotFoundError("No global stack file found!") return global_stack_file_list[0], extruder_stack_file_list + def _isProjectUcp(self, file_name) -> bool: + if self._is_ucp == None: + archive = zipfile.ZipFile(file_name, "r") + cura_file_names = [name for name in archive.namelist() if name.startswith("Cura/")] + self._is_ucp =True if USER_SETTINGS_PATH in cura_file_names else False + + def getIsProjectUcp(self) -> bool: + return self._is_ucp + def preRead(self, file_name, show_dialog=True, *args, **kwargs): """Read some info so we can make decisions @@ -217,7 +226,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): we don't want to show a dialog. """ self._clearState() - + self._isProjectUcp(file_name) self._3mf_mesh_reader = Application.getInstance().getMeshFileHandler().getReaderForFile(file_name) if self._3mf_mesh_reader and self._3mf_mesh_reader.preRead(file_name) == WorkspaceReader.PreReadResult.accepted: pass @@ -933,7 +942,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): base_file_name = os.path.basename(file_name) self.setWorkspaceName(base_file_name) - self._is_ucp = False + self._is_ucp = None return nodes, self._loadMetadata(file_name) @staticmethod @@ -1312,39 +1321,40 @@ class ThreeMFWorkspaceReader(WorkspaceReader): machine_manager.setActiveMachine(global_stack.getId()) # Set metadata fields that are missing from the global stack - for key, value in self._machine_info.metadata_dict.items(): - if key not in global_stack.getMetaData() and key not in _ignored_machine_network_metadata: - global_stack.setMetaDataEntry(key, value) + if not self._is_ucp: + for key, value in self._machine_info.metadata_dict.items(): + if key not in global_stack.getMetaData() and key not in _ignored_machine_network_metadata: + global_stack.setMetaDataEntry(key, value) - if self._quality_changes_to_apply !=None: - quality_changes_group_list = container_tree.getCurrentQualityChangesGroups() - quality_changes_group = next((qcg for qcg in quality_changes_group_list if qcg.name == self._quality_changes_to_apply), None) - if not quality_changes_group: - Logger.log("e", "Could not find quality_changes [%s]", self._quality_changes_to_apply) - return - machine_manager.setQualityChangesGroup(quality_changes_group, no_dialog = True) - else: - self._quality_type_to_apply = self._quality_type_to_apply.lower() if self._quality_type_to_apply else None - quality_group_dict = container_tree.getCurrentQualityGroups() - if self._quality_type_to_apply in quality_group_dict: - quality_group = quality_group_dict[self._quality_type_to_apply] + if self._quality_changes_to_apply !=None: + quality_changes_group_list = container_tree.getCurrentQualityChangesGroups() + quality_changes_group = next((qcg for qcg in quality_changes_group_list if qcg.name == self._quality_changes_to_apply), None) + if not quality_changes_group: + Logger.log("e", "Could not find quality_changes [%s]", self._quality_changes_to_apply) + return + machine_manager.setQualityChangesGroup(quality_changes_group, no_dialog = True) else: - Logger.log("i", "Could not find quality type [%s], switch to default", self._quality_type_to_apply) - preferred_quality_type = global_stack.getMetaDataEntry("preferred_quality_type") - quality_group = quality_group_dict.get(preferred_quality_type) - if quality_group is None: - Logger.log("e", "Could not get preferred quality type [%s]", preferred_quality_type) - - if quality_group is not None: - machine_manager.setQualityGroup(quality_group, no_dialog = True) - - # Also apply intent if available - available_intent_category_list = IntentManager.getInstance().currentAvailableIntentCategories() - if self._intent_category_to_apply is not None and self._intent_category_to_apply in available_intent_category_list: - machine_manager.setIntentByCategory(self._intent_category_to_apply) + self._quality_type_to_apply = self._quality_type_to_apply.lower() if self._quality_type_to_apply else None + quality_group_dict = container_tree.getCurrentQualityGroups() + if self._quality_type_to_apply in quality_group_dict: + quality_group = quality_group_dict[self._quality_type_to_apply] else: - # if no intent is provided, reset to the default (balanced) intent - machine_manager.resetIntents() + Logger.log("i", "Could not find quality type [%s], switch to default", self._quality_type_to_apply) + preferred_quality_type = global_stack.getMetaDataEntry("preferred_quality_type") + quality_group = quality_group_dict.get(preferred_quality_type) + if quality_group is None: + Logger.log("e", "Could not get preferred quality type [%s]", preferred_quality_type) + + if quality_group is not None: + machine_manager.setQualityGroup(quality_group, no_dialog = True) + + # Also apply intent if available + available_intent_category_list = IntentManager.getInstance().currentAvailableIntentCategories() + if self._intent_category_to_apply is not None and self._intent_category_to_apply in available_intent_category_list: + machine_manager.setIntentByCategory(self._intent_category_to_apply) + else: + # if no intent is provided, reset to the default (balanced) intent + machine_manager.resetIntents() # Notify everything/one that is to notify about changes. global_stack.containersChanged.emit(global_stack.getTop()) diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 5f13af933c..c8d53a1154 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -253,7 +253,7 @@ UM.Dialog id: qualityChangesResolveComboBox model: resolveStrategiesModel textRole: "label" - visible: manager.qualityChangesConflict + visible: manager.qualityChangesConflict && !manager.isUcp contentLeftPadding: UM.Theme.getSize("default_margin").width + UM.Theme.getSize("narrow_margin").width textFont: UM.Theme.getFont("medium") @@ -307,7 +307,7 @@ UM.Dialog id: materialResolveComboBox model: resolveStrategiesModel textRole: "label" - visible: manager.materialConflict + visible: manager.materialConflict && !manager.isUcp contentLeftPadding: UM.Theme.getSize("default_margin").width + UM.Theme.getSize("narrow_margin").width textFont: UM.Theme.getFont("medium") diff --git a/plugins/3MFReader/WorkspaceSection.qml b/plugins/3MFReader/WorkspaceSection.qml index 63b5e89b41..7c8b01be7a 100644 --- a/plugins/3MFReader/WorkspaceSection.qml +++ b/plugins/3MFReader/WorkspaceSection.qml @@ -84,7 +84,8 @@ Item { anchors.right: parent.right anchors.verticalCenter: comboboxLabel.verticalCenter - + color: UM.Theme.getColor("small_button_text") + icon: UM.Theme.getIcon("Information") text: comboboxTooltipText visible: comboboxTooltipText != "" } From a63cf954d420aaaed618a35bfc7863206282d3d6 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Wed, 6 Mar 2024 10:28:09 +0100 Subject: [PATCH 196/203] =?UTF-8?q?modify-settings-for-overlap=E2=80=99,?= =?UTF-8?q?=20'support-blocker'=20and=20'support-mesh'=20saved=20as=20thei?= =?UTF-8?q?r=20respective=20types=20along=20with=20their=20settings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CURA-11403 --- plugins/3MFWriter/SettingsExportModel.py | 25 ++++++++---------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/plugins/3MFWriter/SettingsExportModel.py b/plugins/3MFWriter/SettingsExportModel.py index 62c445f34e..401bf21e90 100644 --- a/plugins/3MFWriter/SettingsExportModel.py +++ b/plugins/3MFWriter/SettingsExportModel.py @@ -59,17 +59,12 @@ class SettingsExportModel(QObject): 'skin_edge_support_thickness', 'alternate_carve_order', 'top_skin_preshrink', - 'interlocking_enable', - 'infill_mesh', - 'cutting_mesh'} + 'interlocking_enable'} - PER_MODEL_EXPORTABLE_SETTINGS_KEYS = { 'top_bottom_thickness', - 'top_thickness', - 'bottom_thickness', - 'top_layers', - 'bottom_layers', - 'wall_thickness', - 'wall_line_count'} + PER_MODEL_EXPORTABLE_SETTINGS_KEYS = {"anti_overhang_mesh", + "infill_mesh", + "cutting_mesh", + "support_mesh"} def __init__(self, parent = None): super().__init__(parent) @@ -119,20 +114,16 @@ class SettingsExportModel(QObject): user_keys = user_settings_container.getAllKeys() exportable_settings = SettingsExportModel.EXPORTABLE_SETTINGS settings_export = [] + # Check whether any of the user keys exist in PER_MODEL_EXPORTABLE_SETTINGS_KEYS + is_exportable = any(key in SettingsExportModel.PER_MODEL_EXPORTABLE_SETTINGS_KEYS for key in user_keys) - # in case of modify mesh settings we add spme extra settings to the exportable settings - if 'infill_mesh' in user_keys: - exportable_settings = exportable_settings.union(SettingsExportModel.PER_MODEL_EXPORTABLE_SETTINGS_KEYS) for setting_to_export in user_keys: label = settings_stack.getProperty(setting_to_export, "label") value = settings_stack.getProperty(setting_to_export, "value") unit = settings_stack.getProperty(setting_to_export, "unit") setting_type = settings_stack.getProperty(setting_to_export, "type") - - is_exportable = True if setting_to_export in exportable_settings else False if setting_type is not None: - # This is not very good looking, but will do for now value = f"{str(SettingDefinition.settingValueToString(setting_type, value))} {unit}" else: value = str(value) @@ -140,6 +131,6 @@ class SettingsExportModel(QObject): settings_export.append(SettingExport(setting_to_export, label, value, - is_exportable)) + is_exportable or setting_to_export in exportable_settings)) return settings_export From 831a1d4876fc5d12c786c2b93a0ebe9c2fbf3728 Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Wed, 6 Mar 2024 12:32:05 +0100 Subject: [PATCH 197/203] Reset openAsUcp at the start of preread CURA-11403 --- cura/CuraApplication.py | 3 ++- plugins/3MFReader/ThreeMFWorkspaceReader.py | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 5de74e4714..86bb53126c 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1986,7 +1986,6 @@ class CuraApplication(QtApplication): Logger.warning(f"Workspace reader not found, cannot read file {file_name}.") return - workspace_reader.getReaderForFile(file_name).setOpenAsUcp(True) workspace_reader.readLocalFile(file, add_to_recent_files) @pyqtSlot(QUrl, str, bool) @@ -2209,6 +2208,8 @@ class CuraApplication(QtApplication): if workspace_reader is None: return False # non-project files won't get a reader try: + if workspace_reader.getPluginId() == "3MFReader": + workspace_reader.clearOpenAsUcp() result = workspace_reader.preRead(file_path, show_dialog=False) return result == WorkspaceReader.PreReadResult.accepted except: diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 75b04db9e3..e6992611c1 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -152,8 +152,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._machine_info = None self._user_settings = {} - def setOpenAsUcp(self, openAsUcp: bool): - self._is_ucp = openAsUcp + def clearOpenAsUcp(self): + self._is_ucp = None def getNewId(self, old_id: str): """Get a unique name based on the old_id. This is different from directly calling the registry in that it caches results. @@ -208,6 +208,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): raise FileNotFoundError("No global stack file found!") return global_stack_file_list[0], extruder_stack_file_list + def _isProjectUcp(self, file_name) -> bool: if self._is_ucp == None: archive = zipfile.ZipFile(file_name, "r") From dbf722e034bf1d14b05a39d30ef9d450e80ec34a Mon Sep 17 00:00:00 2001 From: Saumya Jain Date: Wed, 6 Mar 2024 13:38:33 +0100 Subject: [PATCH 198/203] added settings for modifier meshes and grouped meshed CURA-11403 --- plugins/3MFWriter/SettingsExportModel.py | 53 ++++++++++++------------ 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/plugins/3MFWriter/SettingsExportModel.py b/plugins/3MFWriter/SettingsExportModel.py index 401bf21e90..99ffad4bac 100644 --- a/plugins/3MFWriter/SettingsExportModel.py +++ b/plugins/3MFWriter/SettingsExportModel.py @@ -66,43 +66,42 @@ class SettingsExportModel(QObject): "cutting_mesh", "support_mesh"} - def __init__(self, parent = None): + def __init__(self, parent=None): super().__init__(parent) self._settings_groups = [] application = CuraApplication.getInstance() - # Display global settings - global_stack = application.getGlobalContainerStack() - self._settings_groups.append(SettingsExportGroup(global_stack, - "Global settings", - SettingsExportGroup.Category.Global, - self._exportSettings(global_stack))) + self._appendGlobalSettings(application) + self._appendExtruderSettings(application) + self._appendModelSettings(application) - # Display per-extruder settings + def _appendGlobalSettings(self, application): + global_stack = application.getGlobalContainerStack() + self._settings_groups.append(SettingsExportGroup( + global_stack, "Global settings", SettingsExportGroup.Category.Global, self._exportSettings(global_stack))) + + def _appendExtruderSettings(self, application): extruders_stacks = ExtruderManager.getInstance().getUsedExtruderStacks() for extruder_stack in extruders_stacks: - color = "" - if extruder_stack.material: - color = extruder_stack.material.getMetaDataEntry("color_code") + color = extruder_stack.material.getMetaDataEntry("color_code") if extruder_stack.material else "" + self._settings_groups.append(SettingsExportGroup( + extruder_stack, "Extruder settings", SettingsExportGroup.Category.Extruder, + self._exportSettings(extruder_stack), extruder_index=extruder_stack.position, extruder_color=color)) - self._settings_groups.append(SettingsExportGroup(extruder_stack, - "Extruder settings", - SettingsExportGroup.Category.Extruder, - self._exportSettings(extruder_stack), - extruder_index=extruder_stack.position, - extruder_color=color)) + def _appendModelSettings(self, application): + scene = application.getController().getScene() + for scene_node in scene.getRoot().getChildren(): + self._appendNodeSettings(scene_node, "Model settings", SettingsExportGroup.Category.Model) + + def _appendNodeSettings(self, node, title_prefix, category): + stack = node.callDecoration("getStack") + if stack: + self._settings_groups.append(SettingsExportGroup( + stack, f"{title_prefix}", category, self._exportSettings(stack), node.getName())) + for child in node.getChildren(): + self._appendNodeSettings(child, f"Children of {node.getName()}", SettingsExportGroup.Category.Model) - # Display per-model settings - scene_root = application.getController().getScene().getRoot() - for scene_node in scene_root.getChildren(): - per_model_stack = scene_node.callDecoration("getStack") - if per_model_stack is not None: - self._settings_groups.append(SettingsExportGroup(per_model_stack, - "Model settings", - SettingsExportGroup.Category.Model, - self._exportSettings(per_model_stack), - scene_node.getName())) @pyqtProperty(list, constant=True) def settingsGroups(self) -> List[SettingsExportGroup]: From cd8c5029d2b23de79d6cdaa2b4928020aa4947bb Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Wed, 6 Mar 2024 16:00:38 +0100 Subject: [PATCH 199/203] Remove useless code The resolve properties on the QML objects cause a crash in PyQt. They are not the actual cause, because this should work anyway. But for now, they are however completely useless because the material bed temperature setting can't have a resolve function, so we can remove them anyway. CURA-11657 --- resources/qml/PrintMonitor.qml | 2 -- resources/qml/PrinterOutput/ExtruderBox.qml | 2 -- resources/qml/PrinterOutput/HeatedBedBox.qml | 12 +----------- 3 files changed, 1 insertion(+), 15 deletions(-) diff --git a/resources/qml/PrintMonitor.qml b/resources/qml/PrintMonitor.qml index adb004298d..027586c381 100644 --- a/resources/qml/PrintMonitor.qml +++ b/resources/qml/PrintMonitor.qml @@ -132,8 +132,6 @@ ScrollView key: "material_bed_temperature" watchedProperties: ["value", "minimum_value", "maximum_value", "resolve"] storeIndex: 0 - - property var resolve: Cura.MachineManager.activeStack != Cura.MachineManager.activeMachine ? properties.resolve : "None" } UM.SettingPropertyProvider diff --git a/resources/qml/PrinterOutput/ExtruderBox.qml b/resources/qml/PrinterOutput/ExtruderBox.qml index e567d5d4cb..46deec29ef 100644 --- a/resources/qml/PrinterOutput/ExtruderBox.qml +++ b/resources/qml/PrinterOutput/ExtruderBox.qml @@ -25,8 +25,6 @@ Item key: "material_print_temperature" watchedProperties: ["value", "minimum_value", "maximum_value", "resolve"] storeIndex: 0 - - property var resolve: Cura.MachineManager.activeStack != Cura.MachineManager.activeMachine ? properties.resolve : "None" } Rectangle diff --git a/resources/qml/PrinterOutput/HeatedBedBox.qml b/resources/qml/PrinterOutput/HeatedBedBox.qml index 172606c56d..5323072567 100644 --- a/resources/qml/PrinterOutput/HeatedBedBox.qml +++ b/resources/qml/PrinterOutput/HeatedBedBox.qml @@ -199,17 +199,7 @@ Item { return ""; } - if ((bedTemperature.resolve != "None" && bedTemperature.resolve) && (bedTemperature.stackLevels[0] != 0) && (bedTemperature.stackLevels[0] != 1)) - { - // We have a resolve function. Indicates that the setting is not settable per extruder and that - // we have to choose between the resolved value (default) and the global value - // (if user has explicitly set this). - return bedTemperature.resolve; - } - else - { - return bedTemperature.properties.value; - } + return bedTemperature.properties.value; } } } From af989356a5127a18d68035d1e96ac1288296a369 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Thu, 7 Mar 2024 10:40:59 +0100 Subject: [PATCH 200/203] Use proper gradual flow plugin version --- conandata.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conandata.yml b/conandata.yml index 51a44c152d..fdfc2dec11 100644 --- a/conandata.yml +++ b/conandata.yml @@ -4,7 +4,7 @@ requirements: - "curaengine/(latest)@ultimaker/testing" - "cura_binary_data/(latest)@ultimaker/testing" - "fdm_materials/(latest)@ultimaker/testing" - - "curaengine_plugin_gradual_flow/0.1.0-beta.2" + - "curaengine_plugin_gradual_flow/0.1.0-beta.3" - "dulcificum/latest@ultimaker/testing" - "pysavitar/5.3.0" - "pynest2d/5.3.0" From 8e61996ced4fcaa8d44017bcc410b540780b48e4 Mon Sep 17 00:00:00 2001 From: Casper Lamboo Date: Thu, 7 Mar 2024 16:07:15 +0100 Subject: [PATCH 201/203] Remove wildcards from definition files --- resources/definitions/ultimaker.def.json | 2 +- resources/definitions/ultimaker2.def.json | 7 ++----- resources/definitions/ultimaker2_plus.def.json | 5 +---- resources/definitions/ultimaker2_plus_connect.def.json | 3 +-- resources/definitions/ultimaker3.def.json | 5 ++--- resources/definitions/ultimaker_original.def.json | 7 ++----- resources/definitions/ultimaker_original_dual.def.json | 7 ++----- resources/definitions/ultimaker_s3.def.json | 2 +- resources/definitions/ultimaker_s5.def.json | 2 +- 9 files changed, 13 insertions(+), 27 deletions(-) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index ef7fc7b1cb..3821fdefd6 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -8,7 +8,7 @@ "author": "Ultimaker", "manufacturer": "Ultimaker B.V.", "exclude_materials": [ - "structur3d_*", + "structur3d_", "generic_hips" ] }, diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json index 2dd168fd09..8c0e066cd1 100644 --- a/resources/definitions/ultimaker2.def.json +++ b/resources/definitions/ultimaker2.def.json @@ -21,15 +21,12 @@ "generic_petg", "generic_pva", "generic_tough_pla", - "structur3d_*", + "structur3d_", "ultimaker_bam", "ultimaker_petcf", - "ultimaker_petcf_*", "ultimaker_petg", - "ultimaker_petg_*", "ultimaker_pva", - "ultimaker_tough_pla", - "ultimaker_tough_pla_*" + "ultimaker_tough_pla" ], "firmware_file": "MarlinUltimaker2.hex", "has_machine_quality": true, diff --git a/resources/definitions/ultimaker2_plus.def.json b/resources/definitions/ultimaker2_plus.def.json index 6ddd402927..3a97c38520 100644 --- a/resources/definitions/ultimaker2_plus.def.json +++ b/resources/definitions/ultimaker2_plus.def.json @@ -20,15 +20,12 @@ "generic_petg", "generic_pva", "generic_tough_pla", - "structur3d_*", + "structur3d_", "ultimaker_bam", "ultimaker_petcf", - "ultimaker_petcf_*", "ultimaker_petg", - "ultimaker_petg_*", "ultimaker_pva", "ultimaker_tough_pla", - "ultimaker_tough_pla_*" ], "firmware_file": "MarlinUltimaker2plus.hex", "first_start_actions": [], diff --git a/resources/definitions/ultimaker2_plus_connect.def.json b/resources/definitions/ultimaker2_plus_connect.def.json index 564fee957b..90e7d6f794 100644 --- a/resources/definitions/ultimaker2_plus_connect.def.json +++ b/resources/definitions/ultimaker2_plus_connect.def.json @@ -17,10 +17,9 @@ "generic_gffpa", "generic_hips", "generic_pva", - "structur3d_*", + "structur3d_", "ultimaker_bam", "ultimaker_petcf", - "ultimaker_petcf_*", "ultimaker_pva" ], "first_start_actions": [], diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index 7eba795a45..173fbdb524 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -20,9 +20,8 @@ "generic_gffpa", "generic_hips", "generic_petcf", - "structur3d_*", - "ultimaker_petcf", - "ultimaker_petcf_*" + "structur3d_", + "ultimaker_petcf" ], "firmware_update_info": { diff --git a/resources/definitions/ultimaker_original.def.json b/resources/definitions/ultimaker_original.def.json index 684c30691f..6848cb3c86 100644 --- a/resources/definitions/ultimaker_original.def.json +++ b/resources/definitions/ultimaker_original.def.json @@ -20,15 +20,12 @@ "generic_petg", "generic_pva", "generic_tough_pla", - "structur3d_*", + "structur3d_", "ultimaker_bam", "ultimaker_petcf", - "ultimaker_petcf_*", "ultimaker_petg", - "ultimaker_petg_*", "ultimaker_pva", - "ultimaker_tough_pla", - "ultimaker_tough_pla_*" + "ultimaker_tough_pla" ], "firmware_file": "MarlinUltimaker-{baudrate}.hex", "firmware_hbk_file": "MarlinUltimaker-HBK-{baudrate}.hex", diff --git a/resources/definitions/ultimaker_original_dual.def.json b/resources/definitions/ultimaker_original_dual.def.json index 777e1f4c2b..65fca17df7 100644 --- a/resources/definitions/ultimaker_original_dual.def.json +++ b/resources/definitions/ultimaker_original_dual.def.json @@ -20,15 +20,12 @@ "generic_petg", "generic_pva", "generic_tough_pla", - "structur3d_*", + "structur3d_", "ultimaker_bam", "ultimaker_petcf", - "ultimaker_petcf_*", "ultimaker_petg", - "ultimaker_petg_*", "ultimaker_pva", - "ultimaker_tough_pla", - "ultimaker_tough_pla_*" + "ultimaker_tough_pla" ], "firmware_file": "MarlinUltimaker-{baudrate}-dual.hex", "firmware_hbk_file": "MarlinUltimaker-HBK-{baudrate}-dual.hex", diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json index a9f0bae259..3750b83553 100644 --- a/resources/definitions/ultimaker_s3.def.json +++ b/resources/definitions/ultimaker_s3.def.json @@ -17,7 +17,7 @@ "exclude_materials": [ "generic_hips", "generic_flexible", - "structur3d_*" + "structur3d_" ], "firmware_update_info": { diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index 2732c59893..eb3984510e 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -18,7 +18,7 @@ "exclude_materials": [ "generic_hips", "generic_flexible", - "structur3d_*" + "structur3d_" ], "firmware_update_info": { From 2c033b7adc0cd581fd467c1143d3830961f33c41 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Thu, 7 Mar 2024 16:15:35 +0100 Subject: [PATCH 202/203] Remove incorrect space --- resources/definitions/ultimaker2_plus.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/ultimaker2_plus.def.json b/resources/definitions/ultimaker2_plus.def.json index 3a97c38520..b5ad30bb8d 100644 --- a/resources/definitions/ultimaker2_plus.def.json +++ b/resources/definitions/ultimaker2_plus.def.json @@ -25,7 +25,7 @@ "ultimaker_petcf", "ultimaker_petg", "ultimaker_pva", - "ultimaker_tough_pla", + "ultimaker_tough_pla" ], "firmware_file": "MarlinUltimaker2plus.hex", "first_start_actions": [], From 47a3d4ddbd660d4eca7bd854490a5c4d6a060bcf Mon Sep 17 00:00:00 2001 From: Frederic Meeuwissen <13856291+Frederic98@users.noreply.github.com> Date: Thu, 7 Mar 2024 17:27:07 +0100 Subject: [PATCH 203/203] Improve top layer quality of TPU Recommited from Paul's changes to resolve conflicts --- .../quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg | 7 ++++++- .../quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg | 7 ++++++- .../quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg | 7 ++++++- .../quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg | 7 ++++++- .../quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg | 7 ++++++- .../quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg | 7 ++++++- .../quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg | 7 ++++++- .../quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg | 7 ++++++- .../quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg | 7 ++++++- .../quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg | 7 ++++++- .../quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg | 7 ++++++- .../quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg | 7 ++++++- 12 files changed, 72 insertions(+), 12 deletions(-) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg index 601886a065..008a119dd2 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg @@ -12,6 +12,11 @@ variant = AA 0.4 weight = -1 [values] +bridge_skin_material_flow = 200 +bridge_skin_speed = =bridge_wall_speed +bridge_sparse_infill_max_density = 50 +bridge_wall_material_flow = =bridge_skin_material_flow +bridge_wall_speed = 10 brim_width = 8.75 gradual_infill_step_height = =5 * layer_height infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' @@ -41,7 +46,7 @@ support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 -top_bottom_thickness = 0.7 +top_bottom_thickness = =layer_height * 6 travel_avoid_distance = 1.5 wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg index bb303eeb33..2b585a73ba 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg @@ -12,6 +12,11 @@ variant = AA 0.4 weight = 0 [values] +bridge_skin_material_flow = 200 +bridge_skin_speed = =bridge_wall_speed +bridge_sparse_infill_max_density = 50 +bridge_wall_material_flow = =bridge_skin_material_flow +bridge_wall_speed = 10 brim_width = 8.75 gradual_infill_step_height = =5 * layer_height infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' @@ -42,7 +47,7 @@ support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 -top_bottom_thickness = 0.7 +top_bottom_thickness = =layer_height * 6 travel_avoid_distance = 1.5 wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg index 85c37d439d..1932cf7213 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg @@ -12,6 +12,11 @@ variant = AA 0.4 weight = -2 [values] +bridge_skin_material_flow = 200 +bridge_skin_speed = =bridge_wall_speed +bridge_sparse_infill_max_density = 50 +bridge_wall_material_flow = =bridge_skin_material_flow +bridge_wall_speed = 10 brim_width = 8.75 gradual_infill_step_height = =5 * layer_height infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' @@ -41,7 +46,7 @@ support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 -top_bottom_thickness = 0.7 +top_bottom_thickness = =layer_height * 6 travel_avoid_distance = 1.5 wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg index 5d6ce58f7c..c2e0ba68af 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.2mm.inst.cfg @@ -12,6 +12,11 @@ variant = AA 0.8 weight = -2 [values] +bridge_skin_material_flow = 200 +bridge_skin_speed = =bridge_wall_speed +bridge_sparse_infill_max_density = 50 +bridge_wall_material_flow = =bridge_skin_material_flow +bridge_wall_speed = 10 brim_width = 8.75 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' machine_nozzle_cool_down_speed = 0.5 @@ -36,7 +41,7 @@ support_angle = 50 switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 45 -top_bottom_thickness = 1.2 +top_bottom_thickness = =layer_height * 6 top_skin_expand_distance = =line_width * 2 travel_avoid_distance = 1.5 wall_0_wipe_dist = =line_width * 2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg index 1b69ada75d..156d645694 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.3mm.inst.cfg @@ -12,6 +12,11 @@ variant = AA 0.8 weight = -3 [values] +bridge_skin_material_flow = 200 +bridge_skin_speed = =bridge_wall_speed +bridge_sparse_infill_max_density = 50 +bridge_wall_material_flow = =bridge_skin_material_flow +bridge_wall_speed = 10 brim_width = 8.75 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' infill_sparse_density = 15 @@ -37,7 +42,7 @@ support_angle = 50 switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 45 -top_bottom_thickness = 1.2 +top_bottom_thickness = =layer_height * 6 top_skin_expand_distance = =line_width * 2 travel_avoid_distance = 1.5 wall_0_wipe_dist = =line_width * 2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg index d678d7e178..0f1e8357b3 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_tpu_0.4mm.inst.cfg @@ -12,6 +12,11 @@ variant = AA 0.8 weight = -4 [values] +bridge_skin_material_flow = 200 +bridge_skin_speed = =bridge_wall_speed +bridge_sparse_infill_max_density = 50 +bridge_wall_material_flow = =bridge_skin_material_flow +bridge_wall_speed = 10 brim_width = 8.75 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' infill_sparse_density = 15 @@ -37,7 +42,7 @@ support_angle = 50 switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 45 -top_bottom_thickness = 1.2 +top_bottom_thickness = =layer_height * 6 top_skin_expand_distance = =line_width * 2 travel_avoid_distance = 1.5 wall_0_wipe_dist = =line_width * 2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg index db01865cf8..d718e44a02 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg @@ -12,6 +12,11 @@ variant = AA 0.4 weight = -1 [values] +bridge_skin_material_flow = 200 +bridge_skin_speed = =bridge_wall_speed +bridge_sparse_infill_max_density = 50 +bridge_wall_material_flow = =bridge_skin_material_flow +bridge_wall_speed = 10 brim_width = 8.75 gradual_infill_step_height = =5 * layer_height infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' @@ -41,7 +46,7 @@ support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 -top_bottom_thickness = 0.7 +top_bottom_thickness = =layer_height * 6 travel_avoid_distance = 1.5 wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg index 27a8bb863b..55a724e260 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg @@ -12,6 +12,11 @@ variant = AA 0.4 weight = 0 [values] +bridge_skin_material_flow = 200 +bridge_skin_speed = =bridge_wall_speed +bridge_sparse_infill_max_density = 50 +bridge_wall_material_flow = =bridge_skin_material_flow +bridge_wall_speed = 10 brim_width = 8.75 gradual_infill_step_height = =5 * layer_height infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' @@ -42,7 +47,7 @@ support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 -top_bottom_thickness = 0.7 +top_bottom_thickness = =layer_height * 6 travel_avoid_distance = 1.5 wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg index cf3069ee0f..591e8e91bd 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg @@ -12,6 +12,11 @@ variant = AA 0.4 weight = -2 [values] +bridge_skin_material_flow = 200 +bridge_skin_speed = =bridge_wall_speed +bridge_sparse_infill_max_density = 50 +bridge_wall_material_flow = =bridge_skin_material_flow +bridge_wall_speed = 10 brim_width = 8.75 gradual_infill_step_height = =5 * layer_height infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' @@ -41,7 +46,7 @@ support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 -top_bottom_thickness = 0.7 +top_bottom_thickness = =layer_height * 6 travel_avoid_distance = 1.5 wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg index 2491d0ed88..941bfb3736 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.2mm.inst.cfg @@ -12,6 +12,11 @@ variant = AA 0.8 weight = -2 [values] +bridge_skin_material_flow = 200 +bridge_skin_speed = =bridge_wall_speed +bridge_sparse_infill_max_density = 50 +bridge_wall_material_flow = =bridge_skin_material_flow +bridge_wall_speed = 10 brim_width = 8.75 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' machine_nozzle_cool_down_speed = 0.5 @@ -36,7 +41,7 @@ support_angle = 50 switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 45 -top_bottom_thickness = 1.2 +top_bottom_thickness = =layer_height * 6 top_skin_expand_distance = =line_width * 2 travel_avoid_distance = 1.5 wall_0_wipe_dist = =line_width * 2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg index e975175ce0..11db9e5a62 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.3mm.inst.cfg @@ -12,6 +12,11 @@ variant = AA 0.8 weight = -3 [values] +bridge_skin_material_flow = 200 +bridge_skin_speed = =bridge_wall_speed +bridge_sparse_infill_max_density = 50 +bridge_wall_material_flow = =bridge_skin_material_flow +bridge_wall_speed = 10 brim_width = 8.75 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' infill_sparse_density = 15 @@ -37,7 +42,7 @@ support_angle = 50 switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 45 -top_bottom_thickness = 1.2 +top_bottom_thickness = =layer_height * 6 top_skin_expand_distance = =line_width * 2 travel_avoid_distance = 1.5 wall_0_wipe_dist = =line_width * 2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg index 5334fac1f0..ac2049daae 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_tpu_0.4mm.inst.cfg @@ -12,6 +12,11 @@ variant = AA 0.8 weight = -4 [values] +bridge_skin_material_flow = 200 +bridge_skin_speed = =bridge_wall_speed +bridge_sparse_infill_max_density = 50 +bridge_wall_material_flow = =bridge_skin_material_flow +bridge_wall_speed = 10 brim_width = 8.75 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' infill_sparse_density = 15 @@ -36,7 +41,7 @@ support_angle = 50 switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 45 -top_bottom_thickness = 1.2 +top_bottom_thickness = =layer_height * 6 top_skin_expand_distance = =line_width * 2 travel_avoid_distance = 1.5 wall_0_wipe_dist = =line_width * 2