diff --git a/conandata.yml b/conandata.yml index 5af5cdef64..698c1238f6 100644 --- a/conandata.yml +++ b/conandata.yml @@ -1,15 +1,15 @@ -version: "5.10.0-beta.1" +version: "5.10.0" requirements: - - "cura_resources/5.10.0-beta.1" - - "uranium/5.10.0-beta.1" - - "curaengine/5.10.0-beta.1" - - "cura_binary_data/5.10.0-beta.1" - - "fdm_materials/5.10.0-beta.1" + - "cura_resources/5.10.0" + - "uranium/5.10.0" + - "curaengine/5.10.0" + - "cura_binary_data/5.10.0" + - "fdm_materials/5.10.0" - "dulcificum/5.10.0" - "pysavitar/5.10.0" - "pynest2d/5.10.0" requirements_internal: - - "fdm_materials/5.10.0-beta.1" + - "fdm_materials/5.10.0" - "cura_private_data/5.10.0-alpha.0@internal/testing" requirements_enterprise: - "native_cad_plugin/2.0.0" diff --git a/cura/UI/PrintInformation.py b/cura/UI/PrintInformation.py index 936e646946..6826c34e43 100644 --- a/cura/UI/PrintInformation.py +++ b/cura/UI/PrintInformation.py @@ -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), the user could have altered the file-name, and thus the project name should be altered as well.""" if isinstance(output_device, ProjectOutputDevice): - new_name = output_device.getLastOutputName() + new_name = output_device.popLastOutputName() if new_name is not None: self.setJobName(os.path.splitext(os.path.basename(new_name))[0]) diff --git a/plugins/PostProcessingPlugin/scripts/PurgeLinesAndUnload.py b/plugins/PostProcessingPlugin/scripts/PurgeLinesAndUnload.py index de2b1c0f7a..a356fec379 100644 --- a/plugins/PostProcessingPlugin/scripts/PurgeLinesAndUnload.py +++ b/plugins/PostProcessingPlugin/scripts/PurgeLinesAndUnload.py @@ -163,11 +163,21 @@ class PurgeLinesAndUnload(Script): "move_to_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", "default_value": false, "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": { "label": "Adjust Starting E location", @@ -254,7 +264,9 @@ class PurgeLinesAndUnload(Script): self.prime_blob_distance = self.getSettingValueByKey("prime_blob_distance") else: 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 procedures = { "add_purge_lines": self._add_purge_lines, @@ -385,7 +397,7 @@ class PurgeLinesAndUnload(Script): def add_move(axis: str, position: float) -> None: moves.append( 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" ) @@ -479,6 +491,14 @@ class PurgeLinesAndUnload(Script): 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) + + 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_extrusion_full = True if self.getSettingValueByKey("purge_line_length") == "purge_full" else False @@ -494,6 +514,8 @@ class PurgeLinesAndUnload(Script): # 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 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_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" @@ -513,6 +535,8 @@ class PurgeLinesAndUnload(Script): # 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 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_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" @@ -533,6 +557,8 @@ class PurgeLinesAndUnload(Script): # 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 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_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" @@ -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 X{self.machine_right - 10} ; Ortho move to start\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_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" @@ -575,6 +603,8 @@ class PurgeLinesAndUnload(Script): # 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 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_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" @@ -594,6 +624,8 @@ class PurgeLinesAndUnload(Script): # 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 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_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" @@ -613,6 +645,8 @@ class PurgeLinesAndUnload(Script): # 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 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_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" @@ -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 X{self.machine_right - 10} Z2 ; Ortho Move to start\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_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" @@ -945,7 +981,7 @@ class PurgeLinesAndUnload(Script): 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"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 += "M300 P500 S600 ; Beep\n" blob_string += "G4 S2 ; Wait\n" diff --git a/resources/conandata.yml b/resources/conandata.yml index 8236ba70b5..a30e8f2613 100644 --- a/resources/conandata.yml +++ b/resources/conandata.yml @@ -1 +1 @@ -version: "5.10.0-beta.1" +version: "5.10.0" diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 7ec5cb6157..b42b5c417a 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3021,6 +3021,7 @@ "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", + "enabled": "roofing_layer_count > 0 and top_layers > 0", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, @@ -3035,6 +3036,7 @@ "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", + "enabled": "roofing_layer_count > 0 and top_layers > 0", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true }, @@ -3049,6 +3051,7 @@ "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", + "enabled": "flooring_layer_count > 0 and bottom_layers > 0", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, @@ -3063,6 +3066,7 @@ "minimum_value": "0.0001", "minimum_value_warning": "50", "maximum_value_warning": "150", + "enabled": "flooring_layer_count > 0 and bottom_layers > 0", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true } @@ -3464,6 +3468,7 @@ "maximum_value_warning": "150", "default_value": 30, "value": "speed_wall_0", + "enabled": "roofing_layer_count > 0 and top_layers > 0", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, @@ -3478,6 +3483,7 @@ "maximum_value_warning": "150", "default_value": 60, "value": "speed_wall_x", + "enabled": "roofing_layer_count > 0 and top_layers > 0", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true }, @@ -3492,6 +3498,7 @@ "maximum_value_warning": "150", "default_value": 30, "value": "speed_wall_0", + "enabled": "flooring_layer_count > 0 and bottom_layers > 0", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, @@ -3506,6 +3513,7 @@ "maximum_value_warning": "150", "default_value": 60, "value": "speed_wall_x", + "enabled": "flooring_layer_count > 0 and bottom_layers > 0", "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true } @@ -3878,7 +3886,7 @@ "maximum_value_warning": "10000", "default_value": 3000, "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", "settable_per_mesh": true }, @@ -3893,7 +3901,7 @@ "maximum_value_warning": "10000", "default_value": 3000, "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", "settable_per_mesh": true }, @@ -3908,7 +3916,7 @@ "maximum_value_warning": "10000", "default_value": 3000, "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", "settable_per_mesh": true }, @@ -3923,7 +3931,7 @@ "maximum_value_warning": "10000", "default_value": 3000, "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", "settable_per_mesh": true } @@ -4251,7 +4259,7 @@ "maximum_value_warning": "50", "default_value": 20, "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", "settable_per_mesh": true }, @@ -4265,7 +4273,7 @@ "maximum_value_warning": "50", "default_value": 20, "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", "settable_per_mesh": true }, @@ -4279,7 +4287,7 @@ "maximum_value_warning": "50", "default_value": 20, "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", "settable_per_mesh": true }, @@ -4293,7 +4301,7 @@ "maximum_value_warning": "50", "default_value": 20, "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", "settable_per_mesh": true } diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 65ceaf6f0f..2e9f4abda1 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -84,7 +84,7 @@ "material_standby_temperature": { "minimum_value": "0", - "value": "material_print_temperature - 100" + "value": "resolveOrValue('material_print_temperature') - 100" }, "meshfix_maximum_deviation": { "value": "machine_nozzle_size / 10" }, "meshfix_maximum_resolution": { "value": "max(speed_wall_0 / 75, 0.5)" }, diff --git a/resources/definitions/ultimaker_s8.def.json b/resources/definitions/ultimaker_s8.def.json index fd758f6e2a..bc5dae085c 100644 --- a/resources/definitions/ultimaker_s8.def.json +++ b/resources/definitions/ultimaker_s8.def.json @@ -48,27 +48,145 @@ }, "overrides": { - "acceleration_infill": { "value": "acceleration_print" }, - "acceleration_layer_0": { "value": 2000 }, - "acceleration_prime_tower": { "value": "acceleration_print" }, - "acceleration_print": { "value": 20000 }, - "acceleration_print_layer_0": { "value": "acceleration_layer_0" }, - "acceleration_roofing": { "value": "acceleration_wall_0" }, - "acceleration_skirt_brim": { "value": "acceleration_layer_0" }, - "acceleration_support": { "value": "acceleration_print" }, - "acceleration_support_bottom": { "value": "acceleration_support_interface" }, - "acceleration_support_infill": { "value": "acceleration_support" }, - "acceleration_support_interface": { "value": "acceleration_support" }, - "acceleration_support_roof": { "value": "acceleration_support_interface" }, - "acceleration_topbottom": { "value": "acceleration_print" }, - "acceleration_travel": { "value": 10000 }, + "acceleration_flooring": + { + "maximum_value": "machine_max_acceleration_x", + "maximum_value_warning": "machine_max_acceleration_x*0.8", + "value": "acceleration_roofing" + }, + "acceleration_infill": + { + "maximum_value": "machine_max_acceleration_x", + "maximum_value_warning": "machine_max_acceleration_x*0.8", + "value": "acceleration_print" + }, + "acceleration_layer_0": + { + "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_layer_0": { "value": "acceleration_layer_0" }, - "acceleration_wall": { "value": "acceleration_print/8" }, - "acceleration_wall_0": { "value": "acceleration_wall" }, - "acceleration_wall_0_roofing": { "value": "acceleration_wall_0" }, - "acceleration_wall_x": { "value": "acceleration_print" }, - "acceleration_wall_x_roofing": { "value": "acceleration_wall" }, + "acceleration_travel_layer_0": + { + "maximum_value": "machine_max_acceleration_x", + "maximum_value_warning": "machine_max_acceleration_x*0.8", + "value": "acceleration_layer_0" + }, + "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'" }, "bottom_thickness": { "value": "3*layer_height if top_layers==4 and not support_enable else top_bottom_thickness" }, "bridge_skin_material_flow": { "value": 200 }, @@ -89,10 +207,14 @@ "cool_min_layer_time_overhang": { "value": 9 }, "cool_min_layer_time_overhang_min_segment_length": { "value": 2 }, "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 }, "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 }, "hole_xy_offset": { "value": 0.075 }, "infill_material_flow": { "value": "material_flow" }, @@ -241,6 +363,8 @@ "value": "jerk_wall_0" }, "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_y": { "default_value": 500 }, "machine_max_jerk_e": @@ -281,6 +405,7 @@ "optimize_wall_printing_order": { "value": false }, "prime_tower_brim_enable": { "value": true }, "prime_tower_min_volume": { "value": 10 }, + "prime_tower_mode": { "resolve": "'normal'" }, "retraction_amount": { "value": 6.5 }, "retraction_combing_avoid_distance": { "value": 1.2 }, "retraction_combing_max_distance": { "value": 50 }, @@ -293,6 +418,7 @@ "skin_material_flow": { "value": 95 }, "skin_overlap": { "value": 0 }, "skin_preshrink": { "value": 0 }, + "skirt_brim_minimal_length": { "value": 1000 }, "skirt_brim_speed": { "maximum_value_warning": 300, @@ -344,7 +470,7 @@ "speed_support": { "maximum_value_warning": 300, - "value": "speed_print" + "value": "speed_wall" }, "speed_support_bottom": { @@ -374,11 +500,13 @@ "speed_travel": { "maximum_value": 500, + "maximum_value_warning": 400, "value": 400 }, "speed_travel_layer_0": { "maximum_value": 500, + "maximum_value_warning": 400, "value": 150 }, "speed_wall": @@ -417,13 +545,17 @@ "value": "speed_wall" }, "support_angle": { "value": 60 }, + "support_bottom_distance": { "maximum_value_warning": "3*layer_height" }, "support_bottom_offset": { "value": 0 }, "support_brim_width": { "value": 10 }, "support_interface_enable": { "value": true }, "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_pattern": { "value": "'gyroid' if support_structure == 'tree' else 'lines'" }, + "support_roof_height": { "minimum_value_warning": 0 }, "support_structure": { "value": "'normal'" }, + "support_top_distance": { "maximum_value_warning": "3*layer_height" }, "support_tree_bp_diameter": { "value": 15 }, "support_tree_tip_diameter": { "value": 1.0 }, "support_tree_top_rate": { "value": 20 }, diff --git a/resources/intent/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg b/resources/intent/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg index 6b0e052ec9..8d8e73a1a8 100644 --- a/resources/intent/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg @@ -5,6 +5,7 @@ version = 4 [metadata] intent_category = engineering +is_experimental = True material = generic_nylon-cf-slide quality_type = draft setting_version = 25 diff --git a/resources/intent/ultimaker_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg b/resources/intent/ultimaker_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg index 0e2138ce25..a89e4eb944 100644 --- a/resources/intent/ultimaker_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg @@ -5,6 +5,7 @@ version = 4 [metadata] intent_category = engineering +is_experimental = True material = generic_nylon-cf-slide quality_type = draft setting_version = 25 diff --git a/resources/qml/Preferences/SettingVisibilityItem.qml b/resources/qml/Preferences/SettingVisibilityItem.qml index 52b06b3dee..a7f4a47e23 100644 --- a/resources/qml/Preferences/SettingVisibilityItem.qml +++ b/resources/qml/Preferences/SettingVisibilityItem.qml @@ -46,33 +46,26 @@ Item text: { - if(provider.properties.enabled == "True") - { - 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 - } - } + if (provider.properties.enabled === "True") return ""; - 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 diff --git a/resources/qml/Preferences/SettingVisibilityPage.qml b/resources/qml/Preferences/SettingVisibilityPage.qml index f186f3e460..73fd021fa2 100644 --- a/resources/qml/Preferences/SettingVisibilityPage.qml +++ b/resources/qml/Preferences/SettingVisibilityPage.qml @@ -1,7 +1,7 @@ // Copyright (c) 2022 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.1 +import QtQuick 2.15 import QtQuick.Controls 2.15 import UM 1.5 as UM @@ -27,10 +27,7 @@ UM.PreferencesPage ] signal scrollToSection( string key ) - onScrollToSection: - { - settingsListView.positionViewAtIndex(definitionsModel.getIndex(key), ListView.Beginning) - } + onScrollToSection: settingsListView.positionViewAtIndex(definitionsModel.getIndex(key), ListView.Beginning) function reset() { @@ -118,30 +115,14 @@ UM.PreferencesPage model: settingVisibilityPresetsModel.items textRole: "name" - currentIndex: - { - 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) - } + currentIndex: settingVisibilityPresetsModel.items.findIndex(i => i.presetId === settingVisibilityPresetsModel.activePreset) + onActivated: settingVisibilityPresetsModel.setActivePreset(settingVisibilityPresetsModel.items[index].presetId) } ListView { id: settingsListView + reuseItems: true anchors { top: filter.bottom @@ -164,33 +145,31 @@ UM.PreferencesPage expanded: ["*"] visibilityHandler: UM.SettingPreferenceVisibilityHandler {} } - cacheBuffer: 1000000 // Set a large cache to effectively just cache every list item. - property Component settingVisibilityCategory: Cura.SettingVisibilityCategory {} - property Component settingVisibilityItem: Cura.SettingVisibilityItem {} + Component + { + id: settingVisibilityCategory + Cura.SettingVisibilityCategory {} + } + + Component + { + id: settingVisibilityItem + Cura.SettingVisibilityItem {} + } delegate: Loader { id: loader - width: settingsListView.width - scrollBar.width height: model.type !== undefined ? UM.Theme.getSize("section").height : 0 property var definition: model property var settingDefinitionsModel: definitionsModel - asynchronous: true + asynchronous: false active: model.type !== undefined - sourceComponent: - { - switch (model.type) - { - case "category": - return settingsListView.settingVisibilityCategory - default: - return settingsListView.settingVisibilityItem - } - } + sourceComponent: model.type === "category" ? settingVisibilityCategory : settingVisibilityItem } } } diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm.inst.cfg index 611f5bc5a6..128d0bef77 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm.inst.cfg @@ -1,9 +1,10 @@ [general] definition = ultimaker_s3 -name = Fast +name = Fast - Experimental version = 4 [metadata] +is_experimental = True material = generic_nylon-cf-slide quality_type = draft setting_version = 25 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm.inst.cfg index 08c199737d..87651a1870 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm.inst.cfg @@ -1,9 +1,10 @@ [general] definition = ultimaker_s5 -name = Fast +name = Fast - Experimental version = 4 [metadata] +is_experimental = True material = generic_nylon-cf-slide quality_type = draft setting_version = 25