Merge pull request #10245 from Ultimaker/CURA-7279_back_pressure_compensation

[CURA-7279] Back-Pressure Compensation
This commit is contained in:
Jaime van Kessel 2021-08-11 15:52:32 +02:00 committed by GitHub
commit fb18b278bf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
65 changed files with 14 additions and 103 deletions

View file

@ -12,7 +12,9 @@ _removed_settings = {
"travel_compensate_overlapping_walls_x_enabled",
"fill_perimeter_gaps",
"wall_min_flow",
"wall_min_flow_retract"
"wall_min_flow_retract",
"speed_equalize_flow_enabled",
"speed_equalize_flow_min"
}

View file

@ -62,8 +62,6 @@
"retraction_amount": { "default_value": 6.5 },
"speed_print": { "default_value": 40 },
"speed_equalize_flow_enabled": { "default_value": true },
"speed_equalize_flow_max": { "default_value": 100 },
"acceleration_print": { "default_value": 1000 },

View file

@ -3111,26 +3111,15 @@
"settable_per_mesh": false,
"settable_per_extruder": false
},
"speed_equalize_flow_enabled":
"speed_equalize_flow_width_factor":
{
"label": "Equalize Filament Flow",
"description": "Print thinner than normal lines faster so that the amount of material extruded per second remains the same. Thin pieces in your model might require lines printed with smaller line width than provided in the settings. This setting controls the speed changes for such lines.",
"type": "bool",
"default_value": false,
"settable_per_mesh": false,
"settable_per_extruder": true
},
"speed_equalize_flow_max":
{
"label": "Maximum Speed for Flow Equalization",
"description": "Maximum print speed when adjusting the print speed in order to equalize flow.",
"label": "Flow Equalization Width Factor",
"description": "Extrusion width based correction factor on the equalized flow. The target flow (in mm³/s) is reduced by the percentual difference in line width multiplied by this factor. A factor above zero means that thin lines are adjusted to be even faster than simple flow equalization would speed them up to. Conversely, wider lines are slowed down more. A positive value can help to compensate for the width depended back pressure the previous layer exterts on the line.",
"type": "float",
"unit": "mm/s",
"enabled": "speed_equalize_flow_enabled",
"default_value": 150,
"minimum_value": "0.1",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
"maximum_value_warning": "150",
"unit": "mm³/s",
"default_value": 0.0,
"minimum_value_warning": "0.0",
"maximum_value_warning": "3.0",
"settable_per_mesh": false,
"settable_per_extruder": true
},

View file

@ -48,7 +48,6 @@
"speed_topbottom": {"value": 40 },
"speed_wall": { "value": 35 },
"speed_wall_x": { "value": 40 },
"speed_equalize_flow_max": { "value": 70 },
"retraction_enable": {"default_value":true},
"retraction_amount": { "default_value": 4 },

View file

@ -48,7 +48,6 @@
"speed_topbottom": {"value": 40 },
"speed_wall": { "value": 35 },
"speed_wall_x": { "value": 40 },
"speed_equalize_flow_max": { "value": 70 },
"retraction_enable": {"default_value":true},
"retraction_amount": { "default_value": 4 },

View file

@ -144,7 +144,6 @@
"retraction_prime_speed": { "value": "35" },
"skin_overlap": { "value": "10" },
"speed_equalize_flow_enabled": { "value": "True" },
"speed_layer_0": { "value": "20" },
"speed_prime_tower": { "value": "speed_topbottom" },
"speed_print": { "value": "35" },

View file

@ -92,7 +92,6 @@
"speed_layer_0": {"value": 10},
"speed_travel_layer_0": {"value": 50},
"speed_slowdown_layers": {"value": 2},
"speed_equalize_flow_enabled": {"value": false },
"acceleration_enabled": {"value": false },
"acceleration_roofing": {"value": 3000 },
"jerk_enabled": {"value": false },

View file

@ -209,10 +209,6 @@
"material_flow_layer_0": {
"enabled": false
},
"speed_equalize_flow_enabled": {
"enabled": false,
"value": "False"
},
"draft_shield_enabled": {
"enabled": false,
"value": "False"

View file

@ -578,9 +578,6 @@
"infill_material_flow": {
"value": "99"
},
"speed_equalize_flow_max": {
"default_value": 40
},
"skin_preshrink": {
"value": "0.0"
},

View file

@ -131,7 +131,6 @@
"retraction_min_travel": { "value": "5" },
"retraction_prime_speed": { "value": "15" },
"skin_overlap": { "value": "10" },
"speed_equalize_flow_enabled": { "value": "True" },
"speed_layer_0": { "value": "20" },
"speed_prime_tower": { "value": "speed_topbottom" },
"speed_print": { "value": "35" },

View file

@ -133,7 +133,6 @@
"retraction_min_travel": { "value": "5" },
"retraction_prime_speed": { "value": "15" },
"skin_overlap": { "value": "10" },
"speed_equalize_flow_enabled": { "value": "True" },
"speed_layer_0": { "value": "20" },
"speed_prime_tower": { "value": "speed_topbottom" },
"speed_print": { "value": "35" },

View file

@ -107,7 +107,6 @@
"speed_wall": { "value": "speed_print*wall_line_width_0/line_width" },
"speed_wall_0": { "value": "math.ceil(speed_wall * 0.6)" },
"speed_wall_x": { "value": "speed_wall" },
"speed_equalize_flow_enabled": { "value": "False" },
"support_angle": { "value": "50" },
"support_xy_distance": { "value": "1" },
"support_z_distance": { "value": "max((0.2 if(0.2%layer_height==0) else layer_height*int((0.2+layer_height)/layer_height)),layer_height)" },
@ -129,7 +128,6 @@
"support_interface_enable": { "value": "True" },
"support_interface_height": { "value": "0.5" },
"support_roof_pattern": { "value": "'concentric'" },
"z_seam_type": { "value": "'shortest'" },
"speed_equalize_flow_max": { "value": "65" }
"z_seam_type": { "value": "'shortest'" }
}
}

View file

@ -107,7 +107,6 @@
"speed_wall": { "value": "speed_print*wall_line_width_0/line_width" },
"speed_wall_0": { "value": "math.ceil(speed_wall * 0.6)" },
"speed_wall_x": { "value": "speed_wall" },
"speed_equalize_flow_enabled": { "value": "False" },
"support_angle": { "value": "50" },
"support_xy_distance": { "value": "1" },
"support_z_distance": { "value": "max((0.2 if(0.2%layer_height==0) else layer_height*int((0.2+layer_height)/layer_height)),layer_height)" },
@ -129,7 +128,6 @@
"support_interface_enable": { "value": "True" },
"support_interface_height": { "value": "0.5" },
"support_roof_pattern": { "value": "'concentric'" },
"z_seam_type": { "value": "'shortest'" },
"speed_equalize_flow_max": { "value": "65" }
"z_seam_type": { "value": "'shortest'" }
}
}

View file

@ -96,7 +96,6 @@
"speed_wall": { "value": "speed_print*wall_line_width_0/line_width" },
"speed_wall_0": { "value": "math.ceil(speed_wall * 0.6)" },
"speed_wall_x": { "value": "speed_wall" },
"speed_equalize_flow_enabled": { "value": "False" },
"support_angle": { "value": "50" },
"support_xy_distance": { "value": "1" },
"support_z_distance": { "value": "max((0.2 if(0.2%layer_height==0) else layer_height*int((0.2+layer_height)/layer_height)),layer_height)" },
@ -118,7 +117,6 @@
"support_interface_enable": { "value": "True" },
"support_interface_height": { "value": "0.5" },
"support_roof_pattern": { "value": "'concentric'" },
"z_seam_type": { "value": "'shortest'" },
"speed_equalize_flow_max": { "value": "65" }
"z_seam_type": { "value": "'shortest'" }
}
}

View file

@ -51,8 +51,6 @@ speed_layer_0 = 25
speed_support = 40
speed_travel_layer_0 = 45
speed_slowdown_layers = 1
speed_equalize_flow_enabled = True
speed_equalize_flow_max = 150
retraction_combing = all
travel_avoid_other_parts = True

View file

@ -51,8 +51,6 @@ speed_layer_0 = 25
speed_support = 40
speed_travel_layer_0 = 45
speed_slowdown_layers = 1
speed_equalize_flow_enabled = True
speed_equalize_flow_max = 150
retraction_combing = all
travel_avoid_other_parts = True

View file

@ -51,8 +51,6 @@ speed_layer_0 = 25
speed_support = 50
speed_travel_layer_0 = 45
speed_slowdown_layers = 1
speed_equalize_flow_enabled = True
speed_equalize_flow_max = 150
acceleration_enabled = False
retraction_combing = all

View file

@ -51,8 +51,6 @@ speed_layer_0 = 25
speed_support = 50
speed_travel_layer_0 = 45
speed_slowdown_layers = 1
speed_equalize_flow_enabled = True
speed_equalize_flow_max = 150
acceleration_enabled = False
retraction_combing = all

View file

@ -51,8 +51,6 @@ speed_layer_0 = 25
speed_support = 40
speed_travel_layer_0 = 45
speed_slowdown_layers = 1
speed_equalize_flow_enabled = True
speed_equalize_flow_max = 150
retraction_combing = all
travel_avoid_other_parts = True

View file

@ -51,8 +51,6 @@ speed_layer_0 = 25
speed_support = 40
speed_travel_layer_0 = 45
speed_slowdown_layers = 1
speed_equalize_flow_enabled = True
speed_equalize_flow_max = 150
retraction_combing = all
travel_avoid_other_parts = True

View file

@ -39,8 +39,6 @@ speed_topbottom = =round(speed_print / 5 * 4)
speed_travel = =round(speed_print if magic_spiralize else 150)
speed_travel_layer_0 = =speed_travel
speed_support_interface = =speed_topbottom
speed_equalize_flow_enabled = True
speed_equalize_flow_max = =speed_print
acceleration_enabled = True
acceleration_print = 100

View file

@ -39,8 +39,6 @@ speed_topbottom = =round(speed_print / 5 * 4)
speed_travel = =round(speed_print if magic_spiralize else 150)
speed_travel_layer_0 = =speed_travel
speed_support_interface = =speed_topbottom
speed_equalize_flow_enabled = True
speed_equalize_flow_max = =speed_print
acceleration_enabled = True
acceleration_print = 100

View file

@ -73,7 +73,6 @@ speed_travel = 150
speed_layer_0 = 10
speed_travel_layer_0 = 50
speed_slowdown_layers = 2
speed_equalize_flow_enabled = False
acceleration_enabled = False
acceleration_roofing = 3000
jerk_enabled = False

View file

@ -72,7 +72,6 @@ speed_travel = 150
speed_layer_0 = 10
speed_travel_layer_0 = 50
speed_slowdown_layers = 2
speed_equalize_flow_enabled = False
acceleration_enabled = False
acceleration_roofing = 3000
jerk_enabled = False

View file

@ -72,7 +72,6 @@ speed_travel = 150
speed_layer_0 = 10
speed_travel_layer_0 = 50
speed_slowdown_layers = 2
speed_equalize_flow_enabled = False
acceleration_enabled = False
acceleration_roofing = 3000
jerk_enabled = False

View file

@ -46,7 +46,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 18
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -46,7 +46,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 18
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -46,7 +46,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 18
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -45,7 +45,6 @@ retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
retraction_prime_speed = 15
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 18 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -45,7 +45,6 @@ retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
retraction_prime_speed = 15
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 18 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -44,7 +44,6 @@ retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
retraction_prime_speed = 15
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 18 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -73,7 +73,6 @@ speed_travel = 150
speed_layer_0 = 10
speed_travel_layer_0 = 50
speed_slowdown_layers = 2
speed_equalize_flow_enabled = False
acceleration_enabled = False
acceleration_roofing = 3000
jerk_enabled = False

View file

@ -70,7 +70,6 @@ speed_travel = 150
speed_layer_0 = 10
speed_travel_layer_0 = 40
speed_slowdown_layers = 2
speed_equalize_flow_enabled = False
acceleration_enabled = False
jerk_enabled = False
retraction_combing = off

View file

@ -73,7 +73,6 @@ speed_travel = 150
speed_layer_0 = 10
speed_travel_layer_0 = 50
speed_slowdown_layers = 2
speed_equalize_flow_enabled = False
acceleration_enabled = False
acceleration_roofing = 3000
jerk_enabled = False

View file

@ -72,7 +72,6 @@ speed_travel = 150
speed_layer_0 = 10
speed_travel_layer_0 = 50
speed_slowdown_layers = 2
speed_equalize_flow_enabled = False
acceleration_enabled = False
acceleration_roofing = 3000
jerk_enabled = False

View file

@ -71,7 +71,6 @@ speed_travel = 150
speed_layer_0 = 10
speed_travel_layer_0 = 50
speed_slowdown_layers = 2
speed_equalize_flow_enabled = False
acceleration_enabled = False
acceleration_roofing = 3000
jerk_enabled = False

View file

@ -71,7 +71,6 @@ speed_travel = 150
speed_layer_0 = 10
speed_travel_layer_0 = 50
speed_slowdown_layers = 2
speed_equalize_flow_enabled = False
acceleration_enabled = False
acceleration_roofing = 3000
jerk_enabled = False

View file

@ -71,7 +71,6 @@ speed_travel = 150
speed_layer_0 = 10
speed_travel_layer_0 = 50
speed_slowdown_layers = 2
speed_equalize_flow_enabled = False
acceleration_enabled = False
acceleration_roofing = 3000
jerk_enabled = False

View file

@ -42,7 +42,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 13
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_travel = 300

View file

@ -48,7 +48,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 18
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -47,7 +47,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 18
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -46,7 +46,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 18
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -47,7 +47,6 @@ retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
retraction_prime_speed = 15
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 18 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -48,7 +48,6 @@ retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
retraction_prime_speed = 15
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 18 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -45,7 +45,6 @@ retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
retraction_prime_speed = 15
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 18 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -42,7 +42,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 13
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_travel_layer_0 = 50

View file

@ -46,7 +46,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 18
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -46,7 +46,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 18
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -46,7 +46,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 18
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -45,7 +45,6 @@ retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
retraction_prime_speed = 15
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 18 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -45,7 +45,6 @@ retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
retraction_prime_speed = 15
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 18 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -44,7 +44,6 @@ retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
retraction_prime_speed = 15
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 18 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -42,7 +42,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 13
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_travel_layer_0 = 50

View file

@ -46,7 +46,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 18
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -46,7 +46,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 18
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -46,7 +46,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 18
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -45,7 +45,6 @@ retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
retraction_prime_speed = 15
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 18 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -45,7 +45,6 @@ retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
retraction_prime_speed = 15
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 18 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -44,7 +44,6 @@ retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
retraction_prime_speed = 15
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = =math.ceil(speed_print * 18 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View file

@ -150,8 +150,7 @@ speed_print_layer_0
speed_travel_layer_0
skirt_brim_speed
speed_slowdown_layers
speed_equalize_flow_enabled
speed_equalize_flow_max
speed_equalize_flow_width_factor
acceleration_enabled
acceleration_print
acceleration_infill

View file

@ -47,7 +47,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = 20
speed_print = 35
speed_topbottom = =math.ceil(speed_print * 25 / 35)

View file

@ -48,7 +48,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = 20
speed_print = 35
speed_topbottom = =math.ceil(speed_print * 25 / 35)

View file

@ -48,7 +48,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = 20
speed_print = 35
speed_topbottom = =math.ceil(speed_print * 25 / 35)

View file

@ -48,7 +48,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = 20
speed_print = 35
speed_topbottom = =math.ceil(speed_print * 25 / 35)

View file

@ -48,7 +48,6 @@ retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
skin_overlap = 5
speed_equalize_flow_enabled = True
speed_layer_0 = 20
speed_print = 35
speed_topbottom = =math.ceil(speed_print * 25 / 35)