Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaime van Kessel <nallath@gmail.com>2021-11-29 12:46:01 +0300
committerGitHub <noreply@github.com>2021-11-29 12:46:01 +0300
commit2000f8143a1392ea1d198b485ba17e84dba33594 (patch)
tree26e492d83d818d49b83d59e0dba6fd47e0e65877
parentfacb6eeb7753b2324be04740d1e973d59ba6d27c (diff)
parent86306dfd9e62af32afbc651312c0d9692d971dbe (diff)
Merge pull request #10860 from Ultimaker/PP-25_close-to-100%-density-infill-behaviour-ArachnelibArachne_rebased
Pp 25 close to 100% density infill behaviour arachne
-rw-r--r--resources/definitions/ultimaker.def.json6
-rw-r--r--resources/definitions/ultimaker2_plus_connect.def.json2
-rw-r--r--resources/definitions/ultimaker3.def.json2
-rw-r--r--resources/definitions/ultimaker_s3.def.json2
-rw-r--r--resources/definitions/ultimaker_s5.def.json2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_draft.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_draft.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_draft.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_high.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_fast.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_fast.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_draft.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_high.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_fast.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_fast.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pc_0.8_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg2
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg4
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg4
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.25_ABS_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.25_PLA_Normal_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.25_TPLA_Normal_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_High_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_High_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg2
-rw-r--r--resources/variants/ultimaker3_aa0.8.inst.cfg2
-rw-r--r--resources/variants/ultimaker3_bb0.8.inst.cfg2
-rw-r--r--resources/variants/ultimaker3_extended_aa0.8.inst.cfg2
-rw-r--r--resources/variants/ultimaker3_extended_bb0.8.inst.cfg2
-rw-r--r--resources/variants/ultimaker_s3_aa0.8.inst.cfg2
-rw-r--r--resources/variants/ultimaker_s3_bb0.8.inst.cfg2
-rw-r--r--resources/variants/ultimaker_s5_aa0.8.inst.cfg2
-rw-r--r--resources/variants/ultimaker_s5_bb0.8.inst.cfg2
171 files changed, 191 insertions, 185 deletions
diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json
index 9e0182a966..e8eae781d1 100644
--- a/resources/definitions/ultimaker.def.json
+++ b/resources/definitions/ultimaker.def.json
@@ -61,6 +61,12 @@
},
"meshfix_maximum_extrusion_area_deviation": {
"value": "50000"
+ },
+ "top_layers": {
+ "value": "math.ceil(round(top_thickness / resolveOrValue('layer_height'), 4))"
+ },
+ "bottom_layers": {
+ "value": "math.ceil(round(bottom_thickness / resolveOrValue('layer_height'), 4))"
}
}
}
diff --git a/resources/definitions/ultimaker2_plus_connect.def.json b/resources/definitions/ultimaker2_plus_connect.def.json
index 52c9eca861..e802c5a055 100644
--- a/resources/definitions/ultimaker2_plus_connect.def.json
+++ b/resources/definitions/ultimaker2_plus_connect.def.json
@@ -55,7 +55,7 @@
},
"infill_wipe_dist": { "value": "0" },
"infill_overlap": { "value": "0" },
- "infill_pattern": { "value": "'grid'" },
+ "infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'grid'" },
"speed_infill": { "value": "speed_print" },
"speed_wall_x": { "value": "speed_wall" },
"layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" },
diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json
index 4743d1b77e..197bfa4513 100644
--- a/resources/definitions/ultimaker3.def.json
+++ b/resources/definitions/ultimaker3.def.json
@@ -97,7 +97,7 @@
"cool_fan_speed_max": { "value": "100" },
"cool_min_speed": { "value": "5" },
"infill_overlap": { "value": "0" },
- "infill_pattern": { "value": "'triangles'" },
+ "infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'triangles'" },
"infill_wipe_dist": { "value": "0" },
"initial_layer_line_width_factor": { "value": "120" },
"jerk_enabled": { "value": "True" },
diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json
index 17531c66a4..6ecf2fe848 100644
--- a/resources/definitions/ultimaker_s3.def.json
+++ b/resources/definitions/ultimaker_s3.def.json
@@ -90,7 +90,7 @@
"cool_fan_speed_max": { "value": "100" },
"cool_min_speed": { "value": "5" },
"infill_overlap": { "value": "0" },
- "infill_pattern": { "value": "'triangles'" },
+ "infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'triangles'" },
"infill_wipe_dist": { "value": "0" },
"jerk_enabled": { "value": "True" },
"jerk_print": { "value": "20", "minimum_value_warning": 20 },
diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json
index d4ba3781f2..ea58cfef33 100644
--- a/resources/definitions/ultimaker_s5.def.json
+++ b/resources/definitions/ultimaker_s5.def.json
@@ -92,7 +92,7 @@
"cool_fan_speed_max": { "value": "100" },
"cool_min_speed": { "value": "5" },
"infill_overlap": { "value": "0" },
- "infill_pattern": { "value": "'triangles'" },
+ "infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'triangles'" },
"infill_wipe_dist": { "value": "0" },
"jerk_enabled": { "value": "True" },
"jerk_print": { "value": "20", "minimum_value_warning": 20 },
diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg
index 25841f3f1e..d9a99f2395 100644
--- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_speed = 50
cool_fan_speed_min = =cool_fan_speed * 25 / 50
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 30
layer_0_z_overlap = 0.22
raft_airgap = 0.37
diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg
index 2bf0aea9f5..7061865c43 100644
--- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_speed = 50
cool_fan_speed_min = =cool_fan_speed * 25 / 50
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 30
layer_0_z_overlap = 0.22
raft_airgap = 0.37
diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg
index 85d5be2acb..a5fdd24f57 100644
--- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_speed = 45
cool_fan_speed_min = =cool_fan_speed * 25 / 45
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 35
layer_0_z_overlap = 0.22
diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg
index e9b2983687..96e7b460b6 100644
--- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_speed = 45
cool_fan_speed_min = =cool_fan_speed * 25 / 45
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 35
layer_0_z_overlap = 0.22
diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg
index 5dd19d11ea..9fa1590893 100644
--- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg
@@ -17,7 +17,7 @@ brim_line_count = 10
cool_fan_speed = 50
cool_fan_speed_min = =cool_fan_speed * 25 / 50
cool_min_layer_time = 3
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 40
layer_0_z_overlap = 0.22
raft_airgap = 0.37
diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg
index 649b7f0019..a726f74687 100644
--- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg
@@ -17,7 +17,7 @@ brim_line_count = 10
cool_fan_speed = 50
cool_fan_speed_min = =cool_fan_speed * 25 / 50
cool_min_layer_time = 3
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 40
layer_0_z_overlap = 0.22
raft_airgap = 0.37
diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg
index f2bbce0e02..c09858b1cf 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg
@@ -17,7 +17,7 @@ brim_line_count = 8
cool_fan_speed = 60
cool_fan_speed_min = =cool_fan_speed * 35 / 60
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 25
layer_0_z_overlap = 0.1
raft_airgap = 0.15
diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg
index 502d5bdfb2..3032ef605f 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg
@@ -17,7 +17,7 @@ brim_line_count = 8
cool_fan_speed = 60
cool_fan_speed_min = =cool_fan_speed * 35 / 60
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 25
layer_0_z_overlap = 0.1
raft_airgap = 0.15
diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg
index e6c61e8909..44eb9469c5 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg
@@ -16,7 +16,7 @@ adhesion_type = raft
cool_fan_speed_min = =cool_fan_speed * 0.35
cool_min_layer_time = 3
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 30
layer_0_z_overlap = 0.22
raft_airgap = 0.57
diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg
index e360099d54..41ab4c2dcb 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg
@@ -16,7 +16,7 @@ adhesion_type = raft
cool_fan_speed_min = =cool_fan_speed * 0.35
cool_min_layer_time = 3
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 30
layer_0_z_overlap = 0.22
raft_airgap = 0.57
diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg
index e38b7db941..84d3f2fa2d 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg
@@ -16,7 +16,7 @@ adhesion_type = raft
brim_line_count = 8
cool_fan_speed_min = =cool_fan_speed * 0.35
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 35
layer_0_z_overlap = 0.22
raft_airgap = 0.44
diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg
index 9cb4389f37..65a86f8056 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg
@@ -16,7 +16,7 @@ adhesion_type = raft
brim_line_count = 8
cool_fan_speed_min = =cool_fan_speed * 0.35
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 35
layer_0_z_overlap = 0.22
raft_airgap = 0.44
diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg
index 76d8847047..a378fcb13c 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg
@@ -16,7 +16,7 @@ adhesion_type = raft
brim_line_count = 8
cool_fan_speed_min = =cool_fan_speed * 0.35
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 40
layer_0_z_overlap = 0.25
raft_airgap = 0.44
diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg
index 35762e25ec..069456275a 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg
@@ -16,7 +16,7 @@ adhesion_type = raft
brim_line_count = 8
cool_fan_speed_min = =cool_fan_speed * 0.35
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 40
layer_0_z_overlap = 0.25
raft_airgap = 0.44
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg
index 2a21ffaae8..8e59344a7d 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg
@@ -18,7 +18,7 @@ cool_fan_speed = 50
cool_fan_speed_min = 0
cool_min_layer_time = 2
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 25
layer_0_z_overlap = 0.2
raft_airgap = 0.25
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg
index aeef45e2cc..5eeb528746 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg
@@ -18,7 +18,7 @@ cool_fan_speed = 50
cool_fan_speed_min = 0
cool_min_layer_time = 2
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 25
layer_0_z_overlap = 0.2
raft_airgap = 0.25
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg
index b9f187e8e2..9f4be3dec6 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_speed = 50
cool_fan_speed_min = 0
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 30
layer_0_z_overlap = 0.3
raft_airgap = 0.35
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg
index 2e1a0a2d1b..92799471c0 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_speed = 50
cool_fan_speed_min = 0
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 30
layer_0_z_overlap = 0.3
raft_airgap = 0.35
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg
index f7accd46f3..19d274763e 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_speed = 50
cool_fan_speed_min = 0
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 35
layer_0_z_overlap = 0.22
raft_airgap = 0.52
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg
index 7cd8ffe316..2f0b0ca31c 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_speed = 50
cool_fan_speed_min = 0
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 35
layer_0_z_overlap = 0.22
raft_airgap = 0.52
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg
index 27663ff176..9cc78894a4 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg
@@ -17,7 +17,7 @@ brim_line_count = 10
cool_fan_speed = 50
cool_fan_speed_min = =cool_fan_speed * 25 / 50
cool_min_layer_time = 3
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 40
layer_0_z_overlap = 0.22
raft_airgap = 0.47
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg
index 5691681b2f..01d434d195 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg
@@ -17,7 +17,7 @@ brim_line_count = 10
cool_fan_speed = 50
cool_fan_speed_min = =cool_fan_speed * 25 / 50
cool_min_layer_time = 3
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 40
layer_0_z_overlap = 0.22
raft_airgap = 0.47
diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg
index 9a8c33f1ee..54168650e6 100644
--- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg
@@ -27,7 +27,7 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 20
infill_overlap = 0
-infill_pattern = cubic
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
infill_wipe_dist = 0
jerk_enabled = True
jerk_layer_0 = =jerk_topbottom
diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg
index 4e0e26b76f..86998318ad 100644
--- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg
@@ -27,7 +27,7 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 20
infill_overlap = 0
-infill_pattern = cubic
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
infill_wipe_dist = 0
jerk_enabled = True
jerk_layer_0 = =jerk_topbottom
diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg
index 8de69298cc..79333e70c5 100644
--- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg
@@ -27,7 +27,7 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 20
infill_overlap = 0
-infill_pattern = cubic
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
infill_wipe_dist = 0
jerk_enabled = True
jerk_layer_0 = =jerk_topbottom
diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg
index c2aa1f68be..8c97f720d5 100644
--- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg
@@ -27,7 +27,7 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 20
infill_overlap = 0
-infill_pattern = cubic
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
infill_wipe_dist = 0
jerk_enabled = True
jerk_layer_0 = =jerk_topbottom
diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg
index 23931ba527..6512c9e064 100644
--- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg
@@ -27,7 +27,7 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 20
infill_overlap = 0
-infill_pattern = cubic
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
infill_wipe_dist = 0
jerk_enabled = True
jerk_layer_0 = =jerk_topbottom
diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg
index 9f8df82d07..d3404eda03 100644
--- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg
@@ -27,7 +27,7 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 20
infill_overlap = 0
-infill_pattern = cubic
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
infill_wipe_dist = 0
jerk_enabled = True
jerk_layer_0 = =jerk_topbottom
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_draft.inst.cfg
index f6aaae5840..9d7766f471 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_draft.inst.cfg
@@ -16,7 +16,7 @@ cool_fan_speed = 50
cool_fan_speed_min = =cool_fan_speed * 25 / 50
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.37
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_normal.inst.cfg
index b96f0aa10e..3232ee17fa 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_normal.inst.cfg
@@ -16,7 +16,7 @@ cool_fan_speed = 50
cool_fan_speed_min = =cool_fan_speed * 25 / 50
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.37
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_draft.inst.cfg
index ead1063349..568de1e9d3 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_draft.inst.cfg
@@ -16,7 +16,7 @@ cool_fan_speed = 45
cool_fan_speed_min = =cool_fan_speed * 25 / 45
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.37
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_normal.inst.cfg
index 6b46e85906..6611600516 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_normal.inst.cfg
@@ -16,7 +16,7 @@ cool_fan_speed = 45
cool_fan_speed_min = =cool_fan_speed * 25 / 45
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.37
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_draft.inst.cfg
index 455049236a..911182f387 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_draft.inst.cfg
@@ -16,7 +16,7 @@ brim_line_count = 10
cool_fan_speed = 50
cool_fan_speed_min = =cool_fan_speed * 25 / 50
cool_min_layer_time = 3
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.37
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_normal.inst.cfg
index 286b9c592a..c5dfdc0f5e 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_normal.inst.cfg
@@ -16,7 +16,7 @@ brim_line_count = 10
cool_fan_speed = 50
cool_fan_speed_min = =cool_fan_speed * 25 / 50
cool_min_layer_time = 3
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.37
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_high.inst.cfg
index 8f2eeb32f3..3ae7cfadd8 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_high.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_high.inst.cfg
@@ -16,7 +16,7 @@ brim_line_count = 8
cool_fan_speed = 60
cool_fan_speed_min = =cool_fan_speed * 35 / 60
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.1
raft_airgap = 0.15
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_normal.inst.cfg
index 79536acdba..860469e6ab 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_normal.inst.cfg
@@ -16,7 +16,7 @@ brim_line_count = 8
cool_fan_speed = 60
cool_fan_speed_min = =cool_fan_speed * 35 / 60
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.1
raft_airgap = 0.15
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_fast.inst.cfg
index 632e8f784f..772decdaaa 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_fast.inst.cfg
@@ -15,7 +15,7 @@ variant = 0.4 mm
cool_fan_speed_min = =cool_fan_speed * 0.35
cool_min_layer_time = 3
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.57
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_normal.inst.cfg
index d62687be0f..8ba007bcfd 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_normal.inst.cfg
@@ -15,7 +15,7 @@ variant = 0.4 mm
cool_fan_speed_min = =cool_fan_speed * 0.35
cool_min_layer_time = 3
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.57
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_fast.inst.cfg
index 2babef4801..3b5b257d1f 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_fast.inst.cfg
@@ -15,7 +15,7 @@ variant = 0.6 mm
brim_line_count = 8
cool_fan_speed_min = =cool_fan_speed * 0.35
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.44
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_normal.inst.cfg
index 211c726405..8817893365 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_normal.inst.cfg
@@ -15,7 +15,7 @@ variant = 0.6 mm
brim_line_count = 8
cool_fan_speed_min = =cool_fan_speed * 0.35
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.44
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_draft.inst.cfg
index 216a87a1ac..fdf3d9e976 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_draft.inst.cfg
@@ -15,7 +15,7 @@ variant = 0.8 mm
brim_line_count = 8
cool_fan_speed_min = =cool_fan_speed * 0.35
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.25
raft_airgap = 0.44
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_normal.inst.cfg
index 312b039d09..9c01a55158 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_normal.inst.cfg
@@ -15,7 +15,7 @@ variant = 0.8 mm
brim_line_count = 8
cool_fan_speed_min = =cool_fan_speed * 0.35
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.25
raft_airgap = 0.44
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_high.inst.cfg
index e7e324e4b7..a50cffd97e 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_high.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_high.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_speed = 50
cool_fan_speed_min = 0
cool_min_layer_time = 2
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.2
raft_airgap = 0.25
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_normal.inst.cfg
index aa61b00a71..97607d71d8 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_normal.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_speed = 50
cool_fan_speed_min = 0
cool_min_layer_time = 2
cool_min_speed = 15
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.2
raft_airgap = 0.25
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_fast.inst.cfg
index ed0fc160c4..8ab51d13d5 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_fast.inst.cfg
@@ -16,7 +16,7 @@ cool_fan_speed = 50
cool_fan_speed_min = 0
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.3
raft_airgap = 0.35
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_normal.inst.cfg
index 10ae53c647..6cf165fd1d 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_normal.inst.cfg
@@ -16,7 +16,7 @@ cool_fan_speed = 50
cool_fan_speed_min = 0
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.3
raft_airgap = 0.35
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_fast.inst.cfg
index 7201380f87..39ff366eac 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_fast.inst.cfg
@@ -16,7 +16,7 @@ cool_fan_speed = 50
cool_fan_speed_min = 0
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.52
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_normal.inst.cfg
index 60d18ddf63..230a8c11f7 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_normal.inst.cfg
@@ -16,7 +16,7 @@ cool_fan_speed = 50
cool_fan_speed_min = 0
cool_min_layer_time = 3
cool_min_speed = 8
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.52
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.8_normal.inst.cfg
index 1722abb781..47f6d99c50 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.8_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.8_normal.inst.cfg
@@ -16,7 +16,7 @@ brim_line_count = 10
cool_fan_speed = 50
cool_fan_speed_min = =cool_fan_speed * 25 / 50
cool_min_layer_time = 3
-infill_overlap = 5
+infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.47
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg
index df39f5c02c..3b83a07935 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg
@@ -27,7 +27,7 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 20
infill_overlap = 0
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0
jerk_enabled = True
jerk_layer_0 = =jerk_topbottom
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg
index de16d949ea..86f6738c41 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg
@@ -27,7 +27,7 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 20
infill_overlap = 0
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0
jerk_enabled = True
jerk_layer_0 = =jerk_topbottom
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg
index 65851adf80..bb65c7f3f4 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg
@@ -27,7 +27,7 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 20
infill_overlap = 0
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0
jerk_enabled = True
jerk_layer_0 = =jerk_topbottom
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg
index 90ff15eab9..c250c87873 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg
@@ -27,7 +27,7 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 20
infill_overlap = 0
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0
jerk_enabled = True
jerk_layer_0 = =jerk_topbottom
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg
index 70f4044233..06ed1144ce 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg
@@ -27,7 +27,7 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 20
infill_overlap = 0
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0
jerk_enabled = True
jerk_layer_0 = =jerk_topbottom
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg
index 6a4e5b609d..4eff1e7d96 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg
@@ -27,7 +27,7 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 20
infill_overlap = 0
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0
jerk_enabled = True
jerk_layer_0 = =jerk_topbottom
diff --git a/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg
index 4c9e6c9be7..efa0377962 100644
--- a/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg
@@ -13,7 +13,7 @@ variant = AA 0.25
[values]
cool_fan_speed = 40
-infill_overlap = 15
+infill_overlap = =0 if infill_sparse_density > 80 else 15
material_final_print_temperature = =material_print_temperature - 5
retraction_prime_speed = 25
speed_topbottom = =math.ceil(speed_print * 30 / 55)
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 066748c369..fa767712df 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
@@ -19,7 +19,7 @@ cool_fan_full_at_height = =layer_height_0 + layer_height
cool_fan_speed_max = 50
cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 5
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg
index 6dfd45a179..5d229372c4 100644
--- a/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg
@@ -15,8 +15,8 @@ variant = AA 0.25
brim_width = 8
cool_fan_full_at_height = =layer_height_0
cool_min_speed = 10
-infill_overlap = 10
-infill_pattern = grid
+infill_overlap = =0 if infill_sparse_density > 80 else 10
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid'
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_final_print_temperature = =max(-273.15, material_print_temperature - 15)
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 31d15a9ba6..50286e7505 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
@@ -18,7 +18,7 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 2.5
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg
index 9c72b7d858..ae923ffe98 100644
--- a/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg
@@ -15,8 +15,8 @@ variant = AA 0.25
brim_width = 8
cool_fan_full_at_height = =layer_height_0
cool_min_speed = 7
-infill_overlap = 10
-infill_pattern = grid
+infill_overlap = =0 if infill_sparse_density > 80 else 10
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid'
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_final_print_temperature = =max(-273.15, material_print_temperature - 15)
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 26eebe8b28..ebc1ef3d84 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
@@ -15,7 +15,7 @@ variant = AA 0.4
cool_fan_speed_max = 80
cool_min_speed = 5
infill_overlap = 0
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
jerk_enabled = True
jerk_print = 25
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 8a51169cf7..7defd639d9 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
@@ -15,7 +15,7 @@ variant = AA 0.4
cool_fan_speed_max = 80
cool_min_speed = 6
infill_overlap = 0
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
jerk_enabled = True
jerk_print = 25
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 86fe20b481..ed7dc37a59 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
@@ -15,7 +15,7 @@ variant = AA 0.4
cool_fan_speed_max = 50
cool_min_speed = 5
infill_overlap = 0
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
jerk_enabled = True
jerk_print = 25
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 f85759369f..5abb681436 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
@@ -15,7 +15,7 @@ variant = AA 0.4
cool_fan_speed_max = 50
cool_min_speed = 7
infill_overlap = 0
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
jerk_enabled = True
jerk_print = 25
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 a292c2cca4..aa21e56eca 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
@@ -20,8 +20,8 @@ cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 6
infill_overlap = 0
-infill_overlap_mm = 0.05
-infill_pattern = triangles
+infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
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 f8d1c87f76..5e2cd3831c 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
@@ -19,8 +19,8 @@ cool_fan_speed_max = 85
cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 7
-infill_overlap_mm = 0.05
-infill_pattern = triangles
+infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
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 4bb729fc4f..5038b0e0a3 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
@@ -20,8 +20,8 @@ cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 8
infill_overlap = 0
-infill_overlap_mm = 0.05
-infill_pattern = triangles
+infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
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 9e42621db6..0a75c8c5c2 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
@@ -20,7 +20,7 @@ cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 5
infill_overlap = 0
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
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 38a1fa60f9..733327bc92 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
@@ -19,7 +19,7 @@ cool_min_layer_time_fan_speed_max = 7
cool_min_speed = 2.5
infill_overlap = 0
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
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 e5d7a502f3..6ac30103a4 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
@@ -19,7 +19,7 @@ cool_min_layer_time_fan_speed_max = 7
cool_min_speed = 2.5
infill_overlap = 0
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
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 60be6bd2e8..e8c3e15b66 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
@@ -19,7 +19,7 @@ cool_min_layer_time_fan_speed_max = 7
cool_min_speed = 2.5
infill_overlap = 0
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg
index 3d07077c9c..fc8c6c7a2f 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg
@@ -19,7 +19,7 @@ cool_min_speed = 4
gradual_infill_step_height = =5 * layer_height
infill_overlap = 0
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
jerk_enabled = True
diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg
index 57eef897b5..05d44a128b 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg
@@ -19,7 +19,7 @@ cool_min_speed = 4
gradual_infill_step_height = =5 * layer_height
infill_overlap = 0
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
jerk_enabled = True
diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg
index aadcf96ce5..4c147484b7 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg
@@ -19,7 +19,7 @@ cool_min_speed = 4
gradual_infill_step_height = =5 * layer_height
infill_overlap = 0
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
jerk_enabled = True
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 e00a21d571..3c1967d183 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
@@ -16,7 +16,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = triangles
+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_final_print_temperature = =max(-273.15, material_print_temperature - 15)
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 bd38700ecf..e6c095066e 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
@@ -16,7 +16,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
layer_height = 0.4
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
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 cccba67fd0..e309d1c5ba 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
@@ -16,7 +16,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
layer_height = 0.3
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
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 1bbea03616..0bf4cfb827 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
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 17
top_skin_expand_distance = =line_width * 2
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
material_bed_temperature_layer_0 = =material_bed_temperature
material_print_temperature = =default_material_print_temperature - 2
material_print_temperature_layer_0 = =default_material_print_temperature + 2
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 47c4011482..b55743a937 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
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 17
top_skin_expand_distance = =line_width * 2
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
material_bed_temperature_layer_0 = =material_bed_temperature
material_print_temperature = =default_material_print_temperature + 2
material_print_temperature_layer_0 = =default_material_print_temperature + 2
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 dbe0811abf..bad0e04203 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
@@ -16,7 +16,7 @@ brim_width = 25
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 17
top_skin_expand_distance = =line_width * 2
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
layer_height = 0.3
material_bed_temperature_layer_0 = =material_bed_temperature
material_print_temperature_layer_0 = =default_material_print_temperature + 2
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 4a8c9c3f91..e63f7c5c04 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
@@ -16,7 +16,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = cubic
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
layer_height_0 = 0.4
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.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 91344347da..e2010e4a66 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
@@ -16,7 +16,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = cubic
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
layer_height_0 = 0.4
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
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 dffdbf28a6..28b1b4c24a 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
@@ -16,7 +16,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = cubic
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
layer_height_0 = 0.4
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
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 d09ba83563..2569a3f020 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
@@ -16,7 +16,7 @@ brim_width = 8.75
cool_min_layer_time_fan_speed_max = 6
top_skin_expand_distance = =line_width * 2
gradual_infill_step_height = =4 * layer_height
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.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 8776914cc8..e624166893 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
@@ -16,7 +16,7 @@ brim_width = 8.75
cool_min_layer_time_fan_speed_max = 6
top_skin_expand_distance = =line_width * 2
gradual_infill_step_height = =4 * layer_height
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
layer_height = 0.4
machine_nozzle_cool_down_speed = 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 47893ec0f5..863c8ec5fb 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
@@ -16,7 +16,7 @@ brim_width = 8.75
cool_min_layer_time_fan_speed_max = 6
top_skin_expand_distance = =line_width * 2
gradual_infill_step_height = =4 * layer_height
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
layer_height = 0.3
machine_nozzle_cool_down_speed = 0.5
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_ABS_Normal_Quality.inst.cfg
index 656d64c204..9f5961becb 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_ABS_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_ABS_Normal_Quality.inst.cfg
@@ -13,7 +13,7 @@ variant = AA 0.25
[values]
cool_fan_speed = 40
-infill_overlap = 15
+infill_overlap = =0 if infill_sparse_density > 80 else 15
material_final_print_temperature = =material_print_temperature - 5
retraction_prime_speed = 25
speed_topbottom = =math.ceil(speed_print * 30 / 55)
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg
index b19a7b9c7d..641bdd571c 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg
@@ -19,7 +19,7 @@ cool_fan_full_at_height = =layer_height_0 + layer_height
cool_fan_speed_max = 50
cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 5
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PLA_Normal_Quality.inst.cfg
index a59c20671b..63196f2a35 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_PLA_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PLA_Normal_Quality.inst.cfg
@@ -15,8 +15,8 @@ variant = AA 0.25
brim_width = 8
cool_fan_full_at_height = =layer_height_0
cool_min_speed = 10
-infill_overlap = 10
-infill_pattern = grid
+infill_overlap = =0 if infill_sparse_density > 80 else 10
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid'
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_final_print_temperature = =max(-273.15, material_print_temperature - 15)
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg
index a097d692dd..993d991c6b 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg
@@ -18,7 +18,7 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 2.5
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_TPLA_Normal_Quality.inst.cfg
index a03260d3e8..93f65fe056 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_TPLA_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_TPLA_Normal_Quality.inst.cfg
@@ -16,8 +16,8 @@ brim_width = 8
cool_fan_full_at_height = =layer_height_0
cool_min_speed = 7
-infill_overlap = 10
-infill_pattern = grid
+infill_overlap = =0 if infill_sparse_density > 80 else 10
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid'
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_final_print_temperature = =max(-273.15, material_print_temperature - 15)
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg
index 22b4221200..8a05a157a0 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg
@@ -25,5 +25,5 @@ speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
wall_thickness = 1
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 50 / 60)
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg
index f866887fa6..1e006df819 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg
@@ -23,5 +23,5 @@ speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 50 / 60) \ No newline at end of file
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg
index 17c7aefbe0..8a41cf3000 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg
@@ -24,5 +24,5 @@ speed_layer_0 = =math.ceil(speed_print * 20 / 50)
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 30 / 50)
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 40 / 50) \ No newline at end of file
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg
index 51d8b48e8f..0d55ae33c9 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg
@@ -22,5 +22,5 @@ speed_layer_0 = =math.ceil(speed_print * 20 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55)
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 45 / 55) \ No newline at end of file
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg
index adf6786e83..af713cf24a 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg
@@ -20,8 +20,8 @@ cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 6
infill_overlap = 0
-infill_overlap_mm = 0.05
-infill_pattern = triangles
+infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg
index 5ae2735f2d..e8e0f96997 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg
@@ -19,8 +19,8 @@ cool_fan_speed_max = 85
cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 7
-infill_overlap_mm = 0.05
-infill_pattern = triangles
+infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg
index 5085510594..eddb721d6a 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg
@@ -20,8 +20,8 @@ cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 8
infill_overlap = 0
-infill_overlap_mm = 0.05
-infill_pattern = triangles
+infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg
index 68c9a1bbec..6f78d5c2e1 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg
@@ -20,7 +20,7 @@ cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 5
infill_overlap = 0
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Draft_Print.inst.cfg
index b40410ce2c..3f244a6a05 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Draft_Print.inst.cfg
@@ -25,6 +25,6 @@ speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
wall_thickness = 1
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 50 / 60)
initial_layer_line_width_factor = 100
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print.inst.cfg
index 72806c0c70..28a69018a6 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print.inst.cfg
@@ -23,6 +23,6 @@ speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 50 / 60)
initial_layer_line_width_factor = 100
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_High_Quality.inst.cfg
index 0d759cd75c..f0cc17f2c2 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_High_Quality.inst.cfg
@@ -24,6 +24,6 @@ speed_layer_0 = =math.ceil(speed_print * 20 / 50)
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 30 / 50)
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 40 / 50)
initial_layer_line_width_factor = 100
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality.inst.cfg
index c06d19927e..9e7f66c7a1 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality.inst.cfg
@@ -23,6 +23,6 @@ speed_layer_0 = =math.ceil(speed_print * 20 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55)
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 45 / 55)
initial_layer_line_width_factor = 100
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg
index 6142412e33..457a5e7048 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg
@@ -19,7 +19,7 @@ cool_min_layer_time_fan_speed_max = 7
cool_min_speed = 2.5
infill_overlap = 0
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg
index e29f83ed8e..8399c9e3f4 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg
@@ -18,7 +18,7 @@ cool_min_layer_time = 7
cool_min_layer_time_fan_speed_max = 7
cool_min_speed = 2.5
infill_overlap = 0
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg
index cd8db42a37..3156a38f37 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg
@@ -19,7 +19,7 @@ cool_min_layer_time_fan_speed_max = 7
cool_min_speed = 2.5
infill_overlap = 0
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg
index b985c97b11..d8fe3cb58a 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg
@@ -19,7 +19,7 @@ cool_min_speed = 4
gradual_infill_step_height = =5 * layer_height
infill_overlap = 0
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
jerk_enabled = True
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg
index 03a7c8fae4..78759eae16 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg
@@ -19,7 +19,7 @@ cool_min_speed = 4
gradual_infill_step_height = =5 * layer_height
infill_overlap = 0
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
jerk_enabled = True
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg
index 482fc42161..353c01e17c 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg
@@ -19,7 +19,7 @@ cool_min_speed = 4
gradual_infill_step_height = =5 * layer_height
infill_overlap = 0
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
jerk_enabled = True
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg
index 015caff1ff..88d965fcf9 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg
@@ -18,7 +18,7 @@ cool_min_speed = 17
top_skin_expand_distance = =line_width * 2
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
material_bed_temperature_layer_0 = =material_bed_temperature
material_print_temperature = =default_material_print_temperature - 2
material_print_temperature_layer_0 = =default_material_print_temperature + 2
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg
index bb724a9b8a..2d635e2c35 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg
@@ -18,7 +18,7 @@ cool_min_speed = 17
top_skin_expand_distance = =line_width * 2
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
material_bed_temperature_layer_0 = =material_bed_temperature
material_print_temperature = =default_material_print_temperature + 2
material_print_temperature_layer_0 = =default_material_print_temperature + 2
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg
index 2a04dba7c7..51ac6ad64a 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg
@@ -18,7 +18,7 @@ cool_min_speed = 17
top_skin_expand_distance = =line_width * 2
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
material_bed_temperature_layer_0 = =material_bed_temperature
material_print_temperature_layer_0 = =default_material_print_temperature + 2
material_standby_temperature = 100
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg
index 26585acf60..15b1d875dc 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg
@@ -16,7 +16,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = cubic
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
layer_height_0 = 0.4
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg
index 32eb10ae89..07c0bdb58a 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg
@@ -16,7 +16,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = cubic
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
layer_height_0 = 0.4
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg
index d92ee73bb1..d65a461c96 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg
@@ -16,7 +16,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = cubic
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
layer_height_0 = 0.4
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg
index 2ec968ea87..0bf963d44e 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg
@@ -15,7 +15,7 @@ variant = AA 0.8
brim_width = 8.75
cool_min_layer_time_fan_speed_max = 6
top_skin_expand_distance = =line_width * 2
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
material_final_print_temperature = =material_print_temperature
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg
index 6aa82ee22d..b156045b2d 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg
@@ -17,7 +17,7 @@ cool_min_layer_time_fan_speed_max = 6
top_skin_expand_distance = =line_width * 2
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg
index 7f71f93e71..87ef9a56f0 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg
@@ -17,7 +17,7 @@ cool_min_layer_time_fan_speed_max = 6
top_skin_expand_distance = =line_width * 2
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Draft_Print.inst.cfg
index ed376310c0..1d97708149 100644
--- a/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Draft_Print.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = triangles
+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_final_print_temperature = =max(-273.15, material_print_temperature - 15)
diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Fast_Print.inst.cfg
index 69d0d5274b..9c77d90987 100644
--- a/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Fast_Print.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = triangles
+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_final_print_temperature = =max(-273.15, material_print_temperature - 15)
diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg
index cb8264338f..5d7b4371b0 100644
--- a/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = triangles
+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_final_print_temperature = =max(-273.15, material_print_temperature - 15)
diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg
index 3bde0b6e99..e9fde09fb8 100644
--- a/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = triangles
+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_final_print_temperature = =max(-273.15, material_print_temperature - 15)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg
index 371e5e5133..0fcaf725a9 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg
@@ -13,7 +13,7 @@ variant = AA 0.25
[values]
cool_fan_speed = 40
-infill_overlap = 15
+infill_overlap = =0 if infill_sparse_density > 80 else 15
material_final_print_temperature = =material_print_temperature - 5
retraction_prime_speed = 25
speed_topbottom = =math.ceil(speed_print * 30 / 55)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg
index 5b33819817..b662dfe9de 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg
@@ -20,7 +20,7 @@ cool_fan_speed_max = 50
cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 5
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg
index e4326a7d0f..3bd10a87b3 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg
@@ -15,8 +15,8 @@ variant = AA 0.25
brim_width = 8
cool_fan_full_at_height = =layer_height_0
cool_min_speed = 10
-infill_overlap = 10
-infill_pattern = grid
+infill_overlap = =0 if infill_sparse_density > 80 else 10
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid'
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_final_print_temperature = =max(-273.15, material_print_temperature - 15)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg
index d8b9738910..a94843a385 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg
@@ -18,7 +18,7 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 2.5
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg
index cf07723ce3..dac1745c05 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg
@@ -16,8 +16,8 @@ brim_width = 8
cool_fan_full_at_height = =layer_height_0
cool_min_speed = 7
-infill_overlap = 10
-infill_pattern = grid
+infill_overlap = =0 if infill_sparse_density > 80 else 10
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid'
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg
index 9eeecb02cc..d57409166b 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg
@@ -27,5 +27,5 @@ top_thickness = =0.8 if infill_sparse_density < 30 and skin_edge_support_thickne
wall_thickness = 1
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 50 / 60)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg
index ae27c7aea2..71deb653ce 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg
@@ -23,5 +23,5 @@ speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 50 / 60) \ No newline at end of file
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg
index d33797ae1e..c69d139a06 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg
@@ -24,5 +24,5 @@ speed_layer_0 = =math.ceil(speed_print * 20 / 50)
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 30 / 50)
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 40 / 50) \ No newline at end of file
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg
index fa9bc0f509..34f95b7595 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg
@@ -22,5 +22,5 @@ speed_layer_0 = =math.ceil(speed_print * 20 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55)
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 45 / 55) \ No newline at end of file
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg
index 85596210a6..82000b3140 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg
@@ -19,8 +19,8 @@ cool_fan_speed_max = 90
cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 6
infill_overlap = 0
-infill_overlap_mm = 0.05
-infill_pattern = triangles
+infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg
index 7efa54f778..8f7dd0a754 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg
@@ -19,8 +19,8 @@ cool_fan_speed_max = 85
cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 7
-infill_overlap_mm = 0.05
-infill_pattern = triangles
+infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg
index efd031273b..5851979b1a 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg
@@ -20,8 +20,8 @@ cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 8
infill_overlap = 0
-infill_overlap_mm = 0.05
-infill_pattern = triangles
+infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg
index 327c2e81c4..79c79ef74a 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg
@@ -20,7 +20,7 @@ cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 5
infill_overlap = 0
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg
index 0623118a07..1c2a7e2718 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg
@@ -26,6 +26,6 @@ speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
top_thickness = =0.8 if infill_sparse_density < 30 and skin_edge_support_thickness == 0.8 else top_bottom_thickness
wall_thickness = 1
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 50 / 60)
initial_layer_line_width_factor = 100
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print.inst.cfg
index bb667d7f4f..d3ad0982b9 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print.inst.cfg
@@ -23,6 +23,6 @@ speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 50 / 60)
initial_layer_line_width_factor = 100 \ No newline at end of file
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_High_Quality.inst.cfg
index d43e8c813a..0329f8ffe9 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_High_Quality.inst.cfg
@@ -24,6 +24,6 @@ speed_layer_0 = =math.ceil(speed_print * 20 / 50)
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 30 / 50)
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 40 / 50)
initial_layer_line_width_factor = 100 \ No newline at end of file
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality.inst.cfg
index 7f718a80c2..efd9bf189d 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality.inst.cfg
@@ -22,6 +22,6 @@ speed_print = 55
speed_layer_0 = =math.ceil(speed_print * 20 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55)
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 45 / 55)
initial_layer_line_width_factor = 100
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg
index 666382da2b..a130406172 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg
@@ -19,7 +19,7 @@ cool_min_layer_time_fan_speed_max = 7
cool_min_speed = 2.5
infill_overlap = 0
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg
index f503800a2f..03d130e346 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg
@@ -19,7 +19,7 @@ cool_min_layer_time_fan_speed_max = 7
cool_min_speed = 2.5
infill_overlap = 0
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg
index 80f1d5c522..7e3676027c 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg
@@ -19,7 +19,7 @@ cool_min_layer_time_fan_speed_max = 7
cool_min_speed = 2.5
infill_overlap = 0
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg
index 9fb1c609a5..172df0a0d6 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg
@@ -19,7 +19,7 @@ cool_min_speed = 4
gradual_infill_step_height = =5 * layer_height
infill_overlap = 0
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
jerk_enabled = True
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg
index 1877d2b85d..2586d6aba7 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg
@@ -19,7 +19,7 @@ cool_min_speed = 4
gradual_infill_step_height = =5 * layer_height
infill_overlap = 0
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
jerk_enabled = True
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg
index 15956837e7..315777badf 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg
@@ -19,7 +19,7 @@ cool_min_speed = 4
gradual_infill_step_height = =5 * layer_height
infill_overlap = 0
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
jerk_enabled = True
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg
index fb9bcea934..caac80af08 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg
@@ -18,7 +18,7 @@ cool_min_speed = 17
top_skin_expand_distance = =line_width * 2
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
material_bed_temperature_layer_0 = =material_bed_temperature
material_print_temperature = =default_material_print_temperature - 2
material_print_temperature_layer_0 = =default_material_print_temperature + 2
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg
index 80ffd5fc0a..6a4706cd8a 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg
@@ -18,7 +18,7 @@ cool_min_speed = 17
top_skin_expand_distance = =line_width * 2
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
material_bed_temperature_layer_0 = =material_bed_temperature
material_print_temperature = =default_material_print_temperature + 2
material_print_temperature_layer_0 = =default_material_print_temperature + 2
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg
index 38c806cdd6..6e117c3fa3 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg
@@ -18,7 +18,7 @@ cool_min_speed = 17
top_skin_expand_distance = =line_width * 2
-infill_pattern = tetrahedral
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
material_bed_temperature_layer_0 = =material_bed_temperature
material_print_temperature_layer_0 = =default_material_print_temperature + 2
material_standby_temperature = 100
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg
index 0b2e183947..761e216305 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg
@@ -16,7 +16,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = cubic
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
layer_height_0 = 0.4
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg
index 74b6765685..283504f7fd 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg
@@ -16,7 +16,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = cubic
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
layer_height_0 = 0.4
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg
index 0d90fa543f..d443f3132e 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg
@@ -16,7 +16,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = cubic
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
layer_height_0 = 0.4
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg
index 76c06ae548..0fb63c2f0f 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg
@@ -17,7 +17,7 @@ cool_min_layer_time_fan_speed_max = 6
top_skin_expand_distance = =line_width * 2
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
material_final_print_temperature = =material_print_temperature
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg
index befe6e95d1..1f7be34d0a 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg
@@ -17,7 +17,7 @@ cool_min_layer_time_fan_speed_max = 6
top_skin_expand_distance = =line_width * 2
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg
index 16a986e76b..1734769099 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg
@@ -17,7 +17,7 @@ cool_min_layer_time_fan_speed_max = 6
top_skin_expand_distance = =line_width * 2
-infill_pattern = cross_3d
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Draft_Print.inst.cfg
index abbcd3a747..705b785d38 100644
--- a/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Draft_Print.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = triangles
+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_final_print_temperature = =max(-273.15, material_print_temperature - 15)
diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Fast_Print.inst.cfg
index 06cfa6e6c5..866a348591 100644
--- a/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Fast_Print.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = triangles
+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_final_print_temperature = =max(-273.15, material_print_temperature - 15)
diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg
index 058aecc495..542ae63881 100644
--- a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = triangles
+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_final_print_temperature = =max(-273.15, material_print_temperature - 15)
diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg
index b12afe0366..807d873b13 100644
--- a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg
@@ -17,7 +17,7 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_pattern = triangles
+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_final_print_temperature = =max(-273.15, material_print_temperature - 15)
diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg
index ca67595946..9d9a7fb7e5 100644
--- a/resources/variants/ultimaker3_aa0.8.inst.cfg
+++ b/resources/variants/ultimaker3_aa0.8.inst.cfg
@@ -15,7 +15,7 @@ cool_fan_speed_max = 100
cool_min_speed = 5
default_material_print_temperature = 200
infill_overlap = 0
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
jerk_enabled = True
jerk_print = 25
diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg
index 18ba4e6f84..434b0bbc69 100644
--- a/resources/variants/ultimaker3_bb0.8.inst.cfg
+++ b/resources/variants/ultimaker3_bb0.8.inst.cfg
@@ -20,7 +20,7 @@ cool_min_speed = 5
gradual_support_infill_step_height = 1.6
gradual_support_infill_steps = 2
infill_overlap = 0
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
jerk_enabled = True
jerk_print = 25
diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg
index f84e70c019..93b8ac5a7f 100644
--- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg
+++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg
@@ -15,7 +15,7 @@ cool_fan_speed_max = 100
cool_min_speed = 5
default_material_print_temperature = 200
infill_overlap = 0
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
jerk_enabled = True
jerk_print = 25
diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg
index aa1531c1e1..920ff8be98 100644
--- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg
+++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg
@@ -20,7 +20,7 @@ cool_min_speed = 5
gradual_support_infill_step_height = 1.6
gradual_support_infill_steps = 2
infill_overlap = 0
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
jerk_enabled = True
jerk_print = 25
diff --git a/resources/variants/ultimaker_s3_aa0.8.inst.cfg b/resources/variants/ultimaker_s3_aa0.8.inst.cfg
index 2f76adb002..0b3a5bac8e 100644
--- a/resources/variants/ultimaker_s3_aa0.8.inst.cfg
+++ b/resources/variants/ultimaker_s3_aa0.8.inst.cfg
@@ -15,7 +15,7 @@ cool_fan_speed_max = 100
cool_min_speed = 5
default_material_print_temperature = 200
infill_overlap = 0
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
jerk_enabled = True
jerk_print = 25
diff --git a/resources/variants/ultimaker_s3_bb0.8.inst.cfg b/resources/variants/ultimaker_s3_bb0.8.inst.cfg
index e7e923f16c..d5d402c9c1 100644
--- a/resources/variants/ultimaker_s3_bb0.8.inst.cfg
+++ b/resources/variants/ultimaker_s3_bb0.8.inst.cfg
@@ -19,7 +19,7 @@ cool_min_speed = 5
gradual_support_infill_step_height = 1.6
gradual_support_infill_steps = 2
infill_overlap = 0
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
jerk_enabled = True
jerk_print = 25
diff --git a/resources/variants/ultimaker_s5_aa0.8.inst.cfg b/resources/variants/ultimaker_s5_aa0.8.inst.cfg
index 8b0edc4031..bc0008b4f6 100644
--- a/resources/variants/ultimaker_s5_aa0.8.inst.cfg
+++ b/resources/variants/ultimaker_s5_aa0.8.inst.cfg
@@ -15,7 +15,7 @@ cool_fan_speed_max = 100
cool_min_speed = 5
default_material_print_temperature = 200
infill_overlap = 0
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
jerk_enabled = True
jerk_print = 25
diff --git a/resources/variants/ultimaker_s5_bb0.8.inst.cfg b/resources/variants/ultimaker_s5_bb0.8.inst.cfg
index d9744f944a..5e13415f62 100644
--- a/resources/variants/ultimaker_s5_bb0.8.inst.cfg
+++ b/resources/variants/ultimaker_s5_bb0.8.inst.cfg
@@ -19,7 +19,7 @@ cool_min_speed = 5
gradual_support_infill_step_height = 1.6
gradual_support_infill_steps = 2
infill_overlap = 0
-infill_pattern = triangles
+infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
jerk_enabled = True
jerk_print = 25