Merge branch '5.10' into CURA-12439_unable-to-resize-columns

This commit is contained in:
Erwan MATHIEU 2025-03-18 14:13:00 +01:00 committed by GitHub
commit b8358a81e9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 262 additions and 110 deletions

View File

@ -1,15 +1,15 @@
version: "5.10.0-beta.1" version: "5.10.0"
requirements: requirements:
- "cura_resources/5.10.0-beta.1" - "cura_resources/5.10.0"
- "uranium/5.10.0-beta.1" - "uranium/5.10.0"
- "curaengine/5.10.0-beta.1" - "curaengine/5.10.0"
- "cura_binary_data/5.10.0-beta.1" - "cura_binary_data/5.10.0"
- "fdm_materials/5.10.0-beta.1" - "fdm_materials/5.10.0"
- "dulcificum/5.10.0" - "dulcificum/5.10.0"
- "pysavitar/5.10.0" - "pysavitar/5.10.0"
- "pynest2d/5.10.0" - "pynest2d/5.10.0"
requirements_internal: requirements_internal:
- "fdm_materials/5.10.0-beta.1" - "fdm_materials/5.10.0"
- "cura_private_data/5.10.0-alpha.0@internal/testing" - "cura_private_data/5.10.0-alpha.0@internal/testing"
requirements_enterprise: requirements_enterprise:
- "native_cad_plugin/2.0.0" - "native_cad_plugin/2.0.0"

View File

@ -449,6 +449,6 @@ class PrintInformation(QObject):
"""If this is a sort of output 'device' (like local or online file storage, rather than a printer), """If this is a sort of output 'device' (like local or online file storage, rather than a printer),
the user could have altered the file-name, and thus the project name should be altered as well.""" the user could have altered the file-name, and thus the project name should be altered as well."""
if isinstance(output_device, ProjectOutputDevice): if isinstance(output_device, ProjectOutputDevice):
new_name = output_device.getLastOutputName() new_name = output_device.popLastOutputName()
if new_name is not None: if new_name is not None:
self.setJobName(os.path.splitext(os.path.basename(new_name))[0]) self.setJobName(os.path.splitext(os.path.basename(new_name))[0])

View File

@ -163,11 +163,21 @@ class PurgeLinesAndUnload(Script):
"move_to_start": "move_to_start":
{ {
"label": "Circle around to layer start ⚠️​", "label": "Circle around to layer start ⚠️​",
"description": "Depending on where the 'Layer Start X' and 'Layer Start Y' are for the print, the opening travel move can pass across the print area and leave a string there. This option will generate an orthogonal path that moves the nozzle around the edges of the build plate and then comes in to the Start Point. || ⚠️​ || The nozzle will drop to Z0.0 and touch the build plate at each stop in order to 'nail down the string' so it doesn't follow in a straight line.", "description": "Depending on where the 'Layer Start X' and 'Layer Start Y' are for the print, the opening travel move can pass across the print area and leave a string there. This option will generate an orthogonal path that moves the nozzle around the edges of the build plate and then comes in to the Start Point. || ⚠️​ || The nozzle can drop to Z0.0 and touch the build plate at each stop in order to 'nail down the string'. The nozzle always raises after the touch-down. It will not drag on the bed.",
"type": "bool", "type": "bool",
"default_value": false, "default_value": false,
"enabled": true "enabled": true
}, },
"move_to_start_min_z":
{
"label": " Minimum Z height ⚠️​",
"description": "When moving to the start position, the nozzle can touch down on the build plate at each stop (Z = 0.0). That will stick the string to the build plate at each direction change so it doesn't pull across the print area. Some printers may not respond well to Z=0.0. You may set a minimum Z height here (min is 0.0 and max is 0.50). The string must stick or it defeats the purpose of moving around the periphery.",
"type": "float",
"default_value": 0.0,
"minimum_value": 0.0,
"maximum_value": 0.5,
"enabled": "move_to_start"
},
"adjust_starting_e": "adjust_starting_e":
{ {
"label": "Adjust Starting E location", "label": "Adjust Starting E location",
@ -254,6 +264,8 @@ class PurgeLinesAndUnload(Script):
self.prime_blob_distance = self.getSettingValueByKey("prime_blob_distance") self.prime_blob_distance = self.getSettingValueByKey("prime_blob_distance")
else: else:
self.prime_blob_distance = 0 self.prime_blob_distance = 0
# Set the minimum Z to stick the string to the build plate when Move to Start is selected.
self.touchdown_z = self.getSettingValueByKey("move_to_start_min_z")
# Mapping settings to corresponding methods # Mapping settings to corresponding methods
procedures = { procedures = {
@ -385,7 +397,7 @@ class PurgeLinesAndUnload(Script):
def add_move(axis: str, position: float) -> None: def add_move(axis: str, position: float) -> None:
moves.append( moves.append(
f"G0 F{self.speed_travel} {axis}{position} ; Start move\n" f"G0 F{self.speed_travel} {axis}{position} ; Start move\n"
f"G0 F600 Z0 ; Nail down the string\n" f"G0 F600 Z{self.touchdown_z} ; Nail down the string\n"
f"G0 F600 Z2 ; Move up\n" f"G0 F600 Z2 ; Move up\n"
) )
@ -480,6 +492,14 @@ class PurgeLinesAndUnload(Script):
def calculate_purge_volume(line_width, purge_length, volume_per_mm): def calculate_purge_volume(line_width, purge_length, volume_per_mm):
return round((line_width * 0.3 * purge_length) * 1.25 / volume_per_mm, 5) return round((line_width * 0.3 * purge_length) * 1.25 / volume_per_mm, 5)
def adjust_for_prime_blob_gcode(retract_speed, retract_distance):
"""Generates G-code lines for prime blob adjustment."""
gcode_lines = [
f"G1 F{retract_speed} E{retract_distance} ; Unretract",
"G92 E0 ; Reset extruder"
]
return "\n".join(gcode_lines)
purge_location = self.getSettingValueByKey("purge_line_location") purge_location = self.getSettingValueByKey("purge_line_location")
purge_extrusion_full = True if self.getSettingValueByKey("purge_line_length") == "purge_full" else False purge_extrusion_full = True if self.getSettingValueByKey("purge_line_length") == "purge_full" else False
purge_str = ";TYPE:CUSTOM----------[Purge Lines]\nG0 F600 Z2 ; Move up\nG92 E0 ; Reset extruder\n" purge_str = ";TYPE:CUSTOM----------[Purge Lines]\nG0 F600 Z2 ; Move up\nG92 E0 ; Reset extruder\n"
@ -494,6 +514,8 @@ class PurgeLinesAndUnload(Script):
# Travel to the purge start # Travel to the purge start
purge_str += f"G0 F{self.speed_travel} X{self.machine_left + self.border_distance} Y{self.machine_front + 10} ; Move to start\n" purge_str += f"G0 F{self.speed_travel} X{self.machine_left + self.border_distance} Y{self.machine_front + 10} ; Move to start\n"
purge_str += f"G0 F600 Z0.3 ; Move down\n" purge_str += f"G0 F600 Z0.3 ; Move down\n"
if self.prime_blob_enable:
purge_str += adjust_for_prime_blob_gcode(self.retract_speed, self.retract_dist)
# Purge two lines # Purge two lines
purge_str += f"G1 F{self.print_speed} X{self.machine_left + self.border_distance} Y{y_stop} E{purge_volume} ; First line\n" purge_str += f"G1 F{self.print_speed} X{self.machine_left + self.border_distance} Y{y_stop} E{purge_volume} ; First line\n"
purge_str += f"G0 X{self.machine_left + 3 + self.border_distance} Y{y_stop} ; Move over\n" purge_str += f"G0 X{self.machine_left + 3 + self.border_distance} Y{y_stop} ; Move over\n"
@ -513,6 +535,8 @@ class PurgeLinesAndUnload(Script):
# Travel to the purge start # Travel to the purge start
purge_str += f"G0 F{self.speed_travel} X{self.machine_right - self.border_distance} ; Move\nG0 Y{self.machine_back - 10} ; Move\n" purge_str += f"G0 F{self.speed_travel} X{self.machine_right - self.border_distance} ; Move\nG0 Y{self.machine_back - 10} ; Move\n"
purge_str += f"G0 F600 Z0.3 ; Move down\n" purge_str += f"G0 F600 Z0.3 ; Move down\n"
if self.prime_blob_enable:
purge_str += adjust_for_prime_blob_gcode(self.retract_speed, self.retract_dist)
# Purge two lines # Purge two lines
purge_str += f"G1 F{self.print_speed} X{self.machine_right - self.border_distance} Y{y_stop} E{purge_volume} ; First line\n" purge_str += f"G1 F{self.print_speed} X{self.machine_right - self.border_distance} Y{y_stop} E{purge_volume} ; First line\n"
purge_str += f"G0 X{self.machine_right - 3 - self.border_distance} Y{y_stop} ; Move over\n" purge_str += f"G0 X{self.machine_right - 3 - self.border_distance} Y{y_stop} ; Move over\n"
@ -533,6 +557,8 @@ class PurgeLinesAndUnload(Script):
# Travel to the purge start # Travel to the purge start
purge_str += f"G0 F{self.speed_travel} X{self.machine_left + 10} Y{self.machine_front + self.border_distance} ; Move to start\n" purge_str += f"G0 F{self.speed_travel} X{self.machine_left + 10} Y{self.machine_front + self.border_distance} ; Move to start\n"
purge_str += f"G0 F600 Z0.3 ; Move down\n" purge_str += f"G0 F600 Z0.3 ; Move down\n"
if self.prime_blob_enable:
purge_str += adjust_for_prime_blob_gcode(self.retract_speed, self.retract_dist)
# Purge two lines # Purge two lines
purge_str += f"G1 F{self.print_speed} X{x_stop} Y{self.machine_front + self.border_distance} E{purge_volume} ; First line\n" purge_str += f"G1 F{self.print_speed} X{x_stop} Y{self.machine_front + self.border_distance} E{purge_volume} ; First line\n"
purge_str += f"G0 X{x_stop} Y{self.machine_front + 3 + self.border_distance} ; Move over\n" purge_str += f"G0 X{x_stop} Y{self.machine_front + 3 + self.border_distance} ; Move over\n"
@ -554,6 +580,8 @@ class PurgeLinesAndUnload(Script):
purge_str += f"G0 F{self.speed_travel} Y{self.machine_back - self.border_distance} ; Ortho Move to back\n" purge_str += f"G0 F{self.speed_travel} Y{self.machine_back - self.border_distance} ; Ortho Move to back\n"
purge_str += f"G0 X{self.machine_right - 10} ; Ortho move to start\n" purge_str += f"G0 X{self.machine_right - 10} ; Ortho move to start\n"
purge_str += f"G0 F600 Z0.3 ; Move down\n" purge_str += f"G0 F600 Z0.3 ; Move down\n"
if self.prime_blob_enable:
purge_str += adjust_for_prime_blob_gcode(self.retract_speed, self.retract_dist)
# Purge two lines # Purge two lines
purge_str += f"G1 F{self.print_speed} X{x_stop} Y{self.machine_back - self.border_distance} E{purge_volume} ; First line\n" purge_str += f"G1 F{self.print_speed} X{x_stop} Y{self.machine_back - self.border_distance} E{purge_volume} ; First line\n"
purge_str += f"G0 X{x_stop} Y{self.machine_back - 3 - self.border_distance} ; Move over\n" purge_str += f"G0 X{x_stop} Y{self.machine_back - 3 - self.border_distance} ; Move over\n"
@ -575,6 +603,8 @@ class PurgeLinesAndUnload(Script):
# Travel to the purge start # Travel to the purge start
purge_str += f"G0 F{self.speed_travel} X{self.machine_left + self.border_distance} Y{self.machine_front + 10} ; Move to start\n" purge_str += f"G0 F{self.speed_travel} X{self.machine_left + self.border_distance} Y{self.machine_front + 10} ; Move to start\n"
purge_str += f"G0 F600 Z0.3 ; Move down\n" purge_str += f"G0 F600 Z0.3 ; Move down\n"
if self.prime_blob_enable:
purge_str += adjust_for_prime_blob_gcode(self.retract_speed, self.retract_dist)
# Purge two lines # Purge two lines
purge_str += f"G1 F{self.print_speed} X{self.machine_left + self.border_distance} Y{y_stop} E{purge_volume} ; First line\n" purge_str += f"G1 F{self.print_speed} X{self.machine_left + self.border_distance} Y{y_stop} E{purge_volume} ; First line\n"
purge_str += f"G0 X{self.machine_left + 3 + self.border_distance} Y{y_stop} ; Move over\n" purge_str += f"G0 X{self.machine_left + 3 + self.border_distance} Y{y_stop} ; Move over\n"
@ -594,6 +624,8 @@ class PurgeLinesAndUnload(Script):
# Travel to the purge start # Travel to the purge start
purge_str += f"G0 F{self.speed_travel} X{self.machine_right - self.border_distance} Z2 ; Move\nG0 Y{self.machine_back - 10} Z2 ; Move to start\n" purge_str += f"G0 F{self.speed_travel} X{self.machine_right - self.border_distance} Z2 ; Move\nG0 Y{self.machine_back - 10} Z2 ; Move to start\n"
purge_str += f"G0 F600 Z0.3 ; Move down\n" purge_str += f"G0 F600 Z0.3 ; Move down\n"
if self.prime_blob_enable:
purge_str += adjust_for_prime_blob_gcode(self.retract_speed, self.retract_dist)
# Purge two lines # Purge two lines
purge_str += f"G1 F{self.print_speed} X{self.machine_right - self.border_distance} Y{y_stop} E{purge_volume} ; First line\n" purge_str += f"G1 F{self.print_speed} X{self.machine_right - self.border_distance} Y{y_stop} E{purge_volume} ; First line\n"
purge_str += f"G0 X{self.machine_right - 3 - self.border_distance} Y{y_stop} ; Move over\n" purge_str += f"G0 X{self.machine_right - 3 - self.border_distance} Y{y_stop} ; Move over\n"
@ -613,6 +645,8 @@ class PurgeLinesAndUnload(Script):
# Travel to the purge start # Travel to the purge start
purge_str += f"G0 F{self.speed_travel} X{self.machine_left + 10} Z2 ; Move\nG0 Y{self.machine_front + self.border_distance} Z2 ; Move to start\n" purge_str += f"G0 F{self.speed_travel} X{self.machine_left + 10} Z2 ; Move\nG0 Y{self.machine_front + self.border_distance} Z2 ; Move to start\n"
purge_str += f"G0 F600 Z0.3 ; Move down\n" purge_str += f"G0 F600 Z0.3 ; Move down\n"
if self.prime_blob_enable:
purge_str += adjust_for_prime_blob_gcode(self.retract_speed, self.retract_dist)
# Purge two lines # Purge two lines
purge_str += f"G1 F{self.print_speed} X{x_stop} Y{self.machine_front + self.border_distance} E{purge_volume} ; First line\n" purge_str += f"G1 F{self.print_speed} X{x_stop} Y{self.machine_front + self.border_distance} E{purge_volume} ; First line\n"
purge_str += f"G0 X{x_stop} Y{self.machine_front + 3 + self.border_distance} ; Move over\n" purge_str += f"G0 X{x_stop} Y{self.machine_front + 3 + self.border_distance} ; Move over\n"
@ -633,6 +667,8 @@ class PurgeLinesAndUnload(Script):
purge_str += f"G0 F{self.speed_travel} Y{self.machine_back - self.border_distance} Z2; Ortho Move to back\n" purge_str += f"G0 F{self.speed_travel} Y{self.machine_back - self.border_distance} Z2; Ortho Move to back\n"
purge_str += f"G0 X{self.machine_right - 10} Z2 ; Ortho Move to start\n" purge_str += f"G0 X{self.machine_right - 10} Z2 ; Ortho Move to start\n"
purge_str += f"G0 F600 Z0.3 ; Move down\n" purge_str += f"G0 F600 Z0.3 ; Move down\n"
if self.prime_blob_enable:
purge_str += adjust_for_prime_blob_gcode(self.retract_speed, self.retract_dist)
# Purge two lines # Purge two lines
purge_str += f"G1 F{self.print_speed} X{x_stop} Y{self.machine_back - self.border_distance} E{purge_volume} ; First line\n" purge_str += f"G1 F{self.print_speed} X{x_stop} Y{self.machine_back - self.border_distance} E{purge_volume} ; First line\n"
purge_str += f"G0 X{x_stop} Y{self.machine_back - 3 - self.border_distance} ; Move over\n" purge_str += f"G0 X{x_stop} Y{self.machine_back - 3 - self.border_distance} ; Move over\n"
@ -945,7 +981,7 @@ class PurgeLinesAndUnload(Script):
blob_string = "G0 F1200 Z20 ; Move up\n" blob_string = "G0 F1200 Z20 ; Move up\n"
blob_string += f"G0 F{self.speed_travel} X{blob_x} Y{blob_y} ; Move to blob location\n" blob_string += f"G0 F{self.speed_travel} X{blob_x} Y{blob_y} ; Move to blob location\n"
blob_string += f"G1 F{speed_blob} E{self.prime_blob_distance} ; Blob\n" blob_string += f"G1 F{speed_blob} E{self.prime_blob_distance} ; Blob\n"
blob_string += f"G1 F{self.retract_speed} E-{self.retract_dist} ; Retract\n" blob_string += f"G1 F{self.retract_speed} E{self.prime_blob_distance - self.retract_dist} ; Retract\n"
blob_string += "G92 E0 ; Reset extruder\n" blob_string += "G92 E0 ; Reset extruder\n"
blob_string += "M300 P500 S600 ; Beep\n" blob_string += "M300 P500 S600 ; Beep\n"
blob_string += "G4 S2 ; Wait\n" blob_string += "G4 S2 ; Wait\n"

View File

@ -1 +1 @@
version: "5.10.0-beta.1" version: "5.10.0"

View File

@ -3021,6 +3021,7 @@
"minimum_value": "0.0001", "minimum_value": "0.0001",
"minimum_value_warning": "50", "minimum_value_warning": "50",
"maximum_value_warning": "150", "maximum_value_warning": "150",
"enabled": "roofing_layer_count > 0 and top_layers > 0",
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -3035,6 +3036,7 @@
"minimum_value": "0.0001", "minimum_value": "0.0001",
"minimum_value_warning": "50", "minimum_value_warning": "50",
"maximum_value_warning": "150", "maximum_value_warning": "150",
"enabled": "roofing_layer_count > 0 and top_layers > 0",
"limit_to_extruder": "wall_x_extruder_nr", "limit_to_extruder": "wall_x_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -3049,6 +3051,7 @@
"minimum_value": "0.0001", "minimum_value": "0.0001",
"minimum_value_warning": "50", "minimum_value_warning": "50",
"maximum_value_warning": "150", "maximum_value_warning": "150",
"enabled": "flooring_layer_count > 0 and bottom_layers > 0",
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -3063,6 +3066,7 @@
"minimum_value": "0.0001", "minimum_value": "0.0001",
"minimum_value_warning": "50", "minimum_value_warning": "50",
"maximum_value_warning": "150", "maximum_value_warning": "150",
"enabled": "flooring_layer_count > 0 and bottom_layers > 0",
"limit_to_extruder": "wall_x_extruder_nr", "limit_to_extruder": "wall_x_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
} }
@ -3464,6 +3468,7 @@
"maximum_value_warning": "150", "maximum_value_warning": "150",
"default_value": 30, "default_value": 30,
"value": "speed_wall_0", "value": "speed_wall_0",
"enabled": "roofing_layer_count > 0 and top_layers > 0",
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -3478,6 +3483,7 @@
"maximum_value_warning": "150", "maximum_value_warning": "150",
"default_value": 60, "default_value": 60,
"value": "speed_wall_x", "value": "speed_wall_x",
"enabled": "roofing_layer_count > 0 and top_layers > 0",
"limit_to_extruder": "wall_x_extruder_nr", "limit_to_extruder": "wall_x_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -3492,6 +3498,7 @@
"maximum_value_warning": "150", "maximum_value_warning": "150",
"default_value": 30, "default_value": 30,
"value": "speed_wall_0", "value": "speed_wall_0",
"enabled": "flooring_layer_count > 0 and bottom_layers > 0",
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -3506,6 +3513,7 @@
"maximum_value_warning": "150", "maximum_value_warning": "150",
"default_value": 60, "default_value": 60,
"value": "speed_wall_x", "value": "speed_wall_x",
"enabled": "flooring_layer_count > 0 and bottom_layers > 0",
"limit_to_extruder": "wall_x_extruder_nr", "limit_to_extruder": "wall_x_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
} }
@ -3878,7 +3886,7 @@
"maximum_value_warning": "10000", "maximum_value_warning": "10000",
"default_value": 3000, "default_value": 3000,
"value": "acceleration_wall_0", "value": "acceleration_wall_0",
"enabled": "resolveOrValue('acceleration_enabled')", "enabled": "resolveOrValue('acceleration_enabled') and roofing_layer_count > 0 and top_layers > 0",
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -3893,7 +3901,7 @@
"maximum_value_warning": "10000", "maximum_value_warning": "10000",
"default_value": 3000, "default_value": 3000,
"value": "acceleration_wall_x", "value": "acceleration_wall_x",
"enabled": "resolveOrValue('acceleration_enabled')", "enabled": "resolveOrValue('acceleration_enabled') and roofing_layer_count > 0 and top_layers > 0",
"limit_to_extruder": "wall_x_extruder_nr", "limit_to_extruder": "wall_x_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -3908,7 +3916,7 @@
"maximum_value_warning": "10000", "maximum_value_warning": "10000",
"default_value": 3000, "default_value": 3000,
"value": "acceleration_wall_0", "value": "acceleration_wall_0",
"enabled": "resolveOrValue('acceleration_enabled')", "enabled": "resolveOrValue('acceleration_enabled') and flooring_layer_count > 0 and bottom_layers > 0",
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -3923,7 +3931,7 @@
"maximum_value_warning": "10000", "maximum_value_warning": "10000",
"default_value": 3000, "default_value": 3000,
"value": "acceleration_wall_x", "value": "acceleration_wall_x",
"enabled": "resolveOrValue('acceleration_enabled')", "enabled": "resolveOrValue('acceleration_enabled') and flooring_layer_count > 0 and bottom_layers > 0",
"limit_to_extruder": "wall_x_extruder_nr", "limit_to_extruder": "wall_x_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
} }
@ -4251,7 +4259,7 @@
"maximum_value_warning": "50", "maximum_value_warning": "50",
"default_value": 20, "default_value": 20,
"value": "jerk_wall_0", "value": "jerk_wall_0",
"enabled": "resolveOrValue('jerk_enabled')", "enabled": "resolveOrValue('jerk_enabled') and roofing_layer_count > 0 and top_layers > 0",
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -4265,7 +4273,7 @@
"maximum_value_warning": "50", "maximum_value_warning": "50",
"default_value": 20, "default_value": 20,
"value": "jerk_wall_x", "value": "jerk_wall_x",
"enabled": "resolveOrValue('jerk_enabled')", "enabled": "resolveOrValue('jerk_enabled') and roofing_layer_count > 0 and top_layers > 0",
"limit_to_extruder": "wall_x_extruder_nr", "limit_to_extruder": "wall_x_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -4279,7 +4287,7 @@
"maximum_value_warning": "50", "maximum_value_warning": "50",
"default_value": 20, "default_value": 20,
"value": "jerk_wall_0", "value": "jerk_wall_0",
"enabled": "resolveOrValue('jerk_enabled')", "enabled": "resolveOrValue('jerk_enabled') and flooring_layer_count > 0 and bottom_layers > 0",
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -4293,7 +4301,7 @@
"maximum_value_warning": "50", "maximum_value_warning": "50",
"default_value": 20, "default_value": 20,
"value": "jerk_wall_x", "value": "jerk_wall_x",
"enabled": "resolveOrValue('jerk_enabled')", "enabled": "resolveOrValue('jerk_enabled') and flooring_layer_count > 0 and bottom_layers > 0",
"limit_to_extruder": "wall_x_extruder_nr", "limit_to_extruder": "wall_x_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
} }

View File

@ -48,27 +48,145 @@
}, },
"overrides": "overrides":
{ {
"acceleration_infill": { "value": "acceleration_print" }, "acceleration_flooring":
"acceleration_layer_0": { "value": 2000 }, {
"acceleration_prime_tower": { "value": "acceleration_print" }, "maximum_value": "machine_max_acceleration_x",
"acceleration_print": { "value": 20000 }, "maximum_value_warning": "machine_max_acceleration_x*0.8",
"acceleration_print_layer_0": { "value": "acceleration_layer_0" }, "value": "acceleration_roofing"
"acceleration_roofing": { "value": "acceleration_wall_0" }, },
"acceleration_skirt_brim": { "value": "acceleration_layer_0" }, "acceleration_infill":
"acceleration_support": { "value": "acceleration_print" }, {
"acceleration_support_bottom": { "value": "acceleration_support_interface" }, "maximum_value": "machine_max_acceleration_x",
"acceleration_support_infill": { "value": "acceleration_support" }, "maximum_value_warning": "machine_max_acceleration_x*0.8",
"acceleration_support_interface": { "value": "acceleration_support" }, "value": "acceleration_print"
"acceleration_support_roof": { "value": "acceleration_support_interface" }, },
"acceleration_topbottom": { "value": "acceleration_print" }, "acceleration_layer_0":
"acceleration_travel": { "value": 10000 }, {
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": 2000
},
"acceleration_prime_tower":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_print"
},
"acceleration_print":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": 20000
},
"acceleration_print_layer_0":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_layer_0"
},
"acceleration_roofing":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_wall_0"
},
"acceleration_skirt_brim":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_layer_0"
},
"acceleration_support":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_print"
},
"acceleration_support_bottom":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_support_interface"
},
"acceleration_support_infill":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_support"
},
"acceleration_support_interface":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_support"
},
"acceleration_support_roof":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_support_interface"
},
"acceleration_topbottom":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_print"
},
"acceleration_travel":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": 10000
},
"acceleration_travel_enabled": { "value": true }, "acceleration_travel_enabled": { "value": true },
"acceleration_travel_layer_0": { "value": "acceleration_layer_0" }, "acceleration_travel_layer_0":
"acceleration_wall": { "value": "acceleration_print/8" }, {
"acceleration_wall_0": { "value": "acceleration_wall" }, "maximum_value": "machine_max_acceleration_x",
"acceleration_wall_0_roofing": { "value": "acceleration_wall_0" }, "maximum_value_warning": "machine_max_acceleration_x*0.8",
"acceleration_wall_x": { "value": "acceleration_print" }, "value": "acceleration_layer_0"
"acceleration_wall_x_roofing": { "value": "acceleration_wall" }, },
"acceleration_wall":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_print/8"
},
"acceleration_wall_0":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_wall"
},
"acceleration_wall_0_flooring":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_wall_0_roofing"
},
"acceleration_wall_0_roofing":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_wall_0"
},
"acceleration_wall_x":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_print"
},
"acceleration_wall_x_flooring":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_wall_x_roofing"
},
"acceleration_wall_x_roofing":
{
"maximum_value": "machine_max_acceleration_x",
"maximum_value_warning": "machine_max_acceleration_x*0.8",
"value": "acceleration_wall"
},
"adhesion_type": { "value": "'brim' if support_enable and support_structure=='tree' else 'skirt'" }, "adhesion_type": { "value": "'brim' if support_enable and support_structure=='tree' else 'skirt'" },
"bottom_thickness": { "value": "3*layer_height if top_layers==4 and not support_enable else top_bottom_thickness" }, "bottom_thickness": { "value": "3*layer_height if top_layers==4 and not support_enable else top_bottom_thickness" },
"bridge_skin_material_flow": { "value": 200 }, "bridge_skin_material_flow": { "value": 200 },
@ -89,10 +207,14 @@
"cool_min_layer_time_overhang": { "value": 9 }, "cool_min_layer_time_overhang": { "value": 9 },
"cool_min_layer_time_overhang_min_segment_length": { "value": 2 }, "cool_min_layer_time_overhang_min_segment_length": { "value": 2 },
"cool_min_speed": { "value": 6 }, "cool_min_speed": { "value": 6 },
"cool_min_temperature": { "value": "material_print_temperature-15" }, "cool_min_temperature":
{
"minimum_value_warning": "material_print_temperature-15",
"value": "material_print_temperature-15"
},
"default_material_print_temperature": { "maximum_value_warning": 320 }, "default_material_print_temperature": { "maximum_value_warning": 320 },
"extra_infill_lines_to_support_skins": { "value": "'walls_and_lines'" }, "extra_infill_lines_to_support_skins": { "value": "'walls_and_lines'" },
"flooring_layer_count": { "value": 0 }, "flooring_layer_count": { "value": 1 },
"gradual_flow_enabled": { "value": false }, "gradual_flow_enabled": { "value": false },
"hole_xy_offset": { "value": 0.075 }, "hole_xy_offset": { "value": 0.075 },
"infill_material_flow": { "value": "material_flow" }, "infill_material_flow": { "value": "material_flow" },
@ -241,6 +363,8 @@
"value": "jerk_wall_0" "value": "jerk_wall_0"
}, },
"machine_gcode_flavor": { "default_value": "Cheetah" }, "machine_gcode_flavor": { "default_value": "Cheetah" },
"machine_max_acceleration_x": { "default_value": 50000 },
"machine_max_acceleration_y": { "default_value": 50000 },
"machine_max_feedrate_x": { "default_value": 500 }, "machine_max_feedrate_x": { "default_value": 500 },
"machine_max_feedrate_y": { "default_value": 500 }, "machine_max_feedrate_y": { "default_value": 500 },
"machine_max_jerk_e": "machine_max_jerk_e":
@ -281,6 +405,7 @@
"optimize_wall_printing_order": { "value": false }, "optimize_wall_printing_order": { "value": false },
"prime_tower_brim_enable": { "value": true }, "prime_tower_brim_enable": { "value": true },
"prime_tower_min_volume": { "value": 10 }, "prime_tower_min_volume": { "value": 10 },
"prime_tower_mode": { "resolve": "'normal'" },
"retraction_amount": { "value": 6.5 }, "retraction_amount": { "value": 6.5 },
"retraction_combing_avoid_distance": { "value": 1.2 }, "retraction_combing_avoid_distance": { "value": 1.2 },
"retraction_combing_max_distance": { "value": 50 }, "retraction_combing_max_distance": { "value": 50 },
@ -293,6 +418,7 @@
"skin_material_flow": { "value": 95 }, "skin_material_flow": { "value": 95 },
"skin_overlap": { "value": 0 }, "skin_overlap": { "value": 0 },
"skin_preshrink": { "value": 0 }, "skin_preshrink": { "value": 0 },
"skirt_brim_minimal_length": { "value": 1000 },
"skirt_brim_speed": "skirt_brim_speed":
{ {
"maximum_value_warning": 300, "maximum_value_warning": 300,
@ -344,7 +470,7 @@
"speed_support": "speed_support":
{ {
"maximum_value_warning": 300, "maximum_value_warning": 300,
"value": "speed_print" "value": "speed_wall"
}, },
"speed_support_bottom": "speed_support_bottom":
{ {
@ -374,11 +500,13 @@
"speed_travel": "speed_travel":
{ {
"maximum_value": 500, "maximum_value": 500,
"maximum_value_warning": 400,
"value": 400 "value": 400
}, },
"speed_travel_layer_0": "speed_travel_layer_0":
{ {
"maximum_value": 500, "maximum_value": 500,
"maximum_value_warning": 400,
"value": 150 "value": 150
}, },
"speed_wall": "speed_wall":
@ -417,13 +545,17 @@
"value": "speed_wall" "value": "speed_wall"
}, },
"support_angle": { "value": 60 }, "support_angle": { "value": 60 },
"support_bottom_distance": { "maximum_value_warning": "3*layer_height" },
"support_bottom_offset": { "value": 0 }, "support_bottom_offset": { "value": 0 },
"support_brim_width": { "value": 10 }, "support_brim_width": { "value": 10 },
"support_interface_enable": { "value": true }, "support_interface_enable": { "value": true },
"support_interface_offset": { "value": "support_offset" }, "support_interface_offset": { "value": "support_offset" },
"support_line_width": { "value": "1.25*line_width" },
"support_offset": { "value": "1.2 if support_structure == 'tree' else 0.8" }, "support_offset": { "value": "1.2 if support_structure == 'tree' else 0.8" },
"support_pattern": { "value": "'gyroid' if support_structure == 'tree' else 'lines'" }, "support_pattern": { "value": "'gyroid' if support_structure == 'tree' else 'lines'" },
"support_roof_height": { "minimum_value_warning": 0 },
"support_structure": { "value": "'normal'" }, "support_structure": { "value": "'normal'" },
"support_top_distance": { "maximum_value_warning": "3*layer_height" },
"support_tree_bp_diameter": { "value": 15 }, "support_tree_bp_diameter": { "value": 15 },
"support_tree_tip_diameter": { "value": 1.0 }, "support_tree_tip_diameter": { "value": 1.0 },
"support_tree_top_rate": { "value": 20 }, "support_tree_top_rate": { "value": 20 },

View File

@ -5,6 +5,7 @@ version = 4
[metadata] [metadata]
intent_category = engineering intent_category = engineering
is_experimental = True
material = generic_nylon-cf-slide material = generic_nylon-cf-slide
quality_type = draft quality_type = draft
setting_version = 25 setting_version = 25

View File

@ -5,6 +5,7 @@ version = 4
[metadata] [metadata]
intent_category = engineering intent_category = engineering
is_experimental = True
material = generic_nylon-cf-slide material = generic_nylon-cf-slide
quality_type = draft quality_type = draft
setting_version = 25 setting_version = 25

View File

@ -46,33 +46,26 @@ Item
text: text:
{ {
if(provider.properties.enabled == "True") if (provider.properties.enabled === "True") return "";
{
return ""
}
var key = definition ? definition.key : ""
var requires = settingDefinitionsModel.getRequires(key, "enabled")
if (requires.length == 0)
{
return catalog.i18nc("@item:tooltip", "This setting has been hidden by the active machine and will not be visible.");
}
else
{
var requires_text = ""
for (var i in requires)
{
if (requires_text == "")
{
requires_text = requires[i].label
}
else
{
requires_text += ", " + requires[i].label
}
}
return catalog.i18ncp("@item:tooltip %1 is list of setting names", "This setting has been hidden by the value of %1. Change the value of that setting to make this setting visible.", "This setting has been hidden by the values of %1. Change the values of those settings to make this setting visible.", requires.length) .arg(requires_text); var key = definition ? definition.key : "";
var requires = settingDefinitionsModel.getRequires(key, "enabled");
if (requires.length === 0) {
return catalog.i18nc(
"@item:tooltip",
"This setting has been hidden by the active machine and will not be visible."
);
} }
var requiresText = requires.map(r => r.label).join(", ");
return catalog.i18ncp(
"@item:tooltip %1 is list of setting names",
"This setting has been hidden by the value of %1. Change the value of that setting to make this setting visible.",
"This setting has been hidden by the values of %1. Change the values of those settings to make this setting visible.",
requires.length
).arg(requiresText);
} }
UM.ColorImage UM.ColorImage

View File

@ -1,7 +1,7 @@
// Copyright (c) 2022 Ultimaker B.V. // Copyright (c) 2022 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher. // Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.1 import QtQuick 2.15
import QtQuick.Controls 2.15 import QtQuick.Controls 2.15
import UM 1.5 as UM import UM 1.5 as UM
@ -27,10 +27,7 @@ UM.PreferencesPage
] ]
signal scrollToSection( string key ) signal scrollToSection( string key )
onScrollToSection: onScrollToSection: settingsListView.positionViewAtIndex(definitionsModel.getIndex(key), ListView.Beginning)
{
settingsListView.positionViewAtIndex(definitionsModel.getIndex(key), ListView.Beginning)
}
function reset() function reset()
{ {
@ -118,30 +115,14 @@ UM.PreferencesPage
model: settingVisibilityPresetsModel.items model: settingVisibilityPresetsModel.items
textRole: "name" textRole: "name"
currentIndex: currentIndex: settingVisibilityPresetsModel.items.findIndex(i => i.presetId === settingVisibilityPresetsModel.activePreset)
{ onActivated: settingVisibilityPresetsModel.setActivePreset(settingVisibilityPresetsModel.items[index].presetId)
var idx = -1;
for(var i = 0; i < settingVisibilityPresetsModel.items.length; ++i)
{
if(settingVisibilityPresetsModel.items[i].presetId === settingVisibilityPresetsModel.activePreset)
{
idx = i;
break;
}
}
return idx;
}
onActivated:
{
var preset_id = settingVisibilityPresetsModel.items[index].presetId
settingVisibilityPresetsModel.setActivePreset(preset_id)
}
} }
ListView ListView
{ {
id: settingsListView id: settingsListView
reuseItems: true
anchors anchors
{ {
top: filter.bottom top: filter.bottom
@ -164,33 +145,31 @@ UM.PreferencesPage
expanded: ["*"] expanded: ["*"]
visibilityHandler: UM.SettingPreferenceVisibilityHandler {} visibilityHandler: UM.SettingPreferenceVisibilityHandler {}
} }
cacheBuffer: 1000000 // Set a large cache to effectively just cache every list item.
property Component settingVisibilityCategory: Cura.SettingVisibilityCategory {} Component
property Component settingVisibilityItem: Cura.SettingVisibilityItem {} {
id: settingVisibilityCategory
Cura.SettingVisibilityCategory {}
}
Component
{
id: settingVisibilityItem
Cura.SettingVisibilityItem {}
}
delegate: Loader delegate: Loader
{ {
id: loader id: loader
width: settingsListView.width - scrollBar.width width: settingsListView.width - scrollBar.width
height: model.type !== undefined ? UM.Theme.getSize("section").height : 0 height: model.type !== undefined ? UM.Theme.getSize("section").height : 0
property var definition: model property var definition: model
property var settingDefinitionsModel: definitionsModel property var settingDefinitionsModel: definitionsModel
asynchronous: true asynchronous: false
active: model.type !== undefined active: model.type !== undefined
sourceComponent: sourceComponent: model.type === "category" ? settingVisibilityCategory : settingVisibilityItem
{
switch (model.type)
{
case "category":
return settingsListView.settingVisibilityCategory
default:
return settingsListView.settingVisibilityItem
}
}
} }
} }
} }

View File

@ -1,9 +1,10 @@
[general] [general]
definition = ultimaker_s3 definition = ultimaker_s3
name = Fast name = Fast - Experimental
version = 4 version = 4
[metadata] [metadata]
is_experimental = True
material = generic_nylon-cf-slide material = generic_nylon-cf-slide
quality_type = draft quality_type = draft
setting_version = 25 setting_version = 25

View File

@ -1,9 +1,10 @@
[general] [general]
definition = ultimaker_s5 definition = ultimaker_s5
name = Fast name = Fast - Experimental
version = 4 version = 4
[metadata] [metadata]
is_experimental = True
material = generic_nylon-cf-slide material = generic_nylon-cf-slide
quality_type = draft quality_type = draft
setting_version = 25 setting_version = 25