From 843f00f6ffce87d17235477a746d7ade3c52c1dc Mon Sep 17 00:00:00 2001 From: geeetech3d Date: Sat, 12 Mar 2022 09:46:29 +0800 Subject: [PATCH 01/58] add Mizar_S Profile --- .../definitions/geeetech_Mizar_S.def.json | 111 ++++++++++++++++++ .../geeetech_Mizar_S_extruder_0.def.json | 15 +++ 2 files changed, 126 insertions(+) create mode 100644 resources/definitions/geeetech_Mizar_S.def.json create mode 100644 resources/extruders/geeetech_Mizar_S_extruder_0.def.json diff --git a/resources/definitions/geeetech_Mizar_S.def.json b/resources/definitions/geeetech_Mizar_S.def.json new file mode 100644 index 0000000000..b8a88c51db --- /dev/null +++ b/resources/definitions/geeetech_Mizar_S.def.json @@ -0,0 +1,111 @@ +{ + "version": 2, + "name": "Mizar S", + "inherits": "fdmprinter", + "metadata": { + "author": "Barry Ding", + "manufacturer": "Geeetech", + "file_formats": "text/x-gcode", + "visible": true, + "machine_extruder_trains": { + "0": "geeetech_mizar_s_extruder_0" + } + }, + "overrides": { + "machine_name": { + "default_value": "Mizar S" + }, + "machine_start_gcode": { + "default_value": "G28 ;Home\nM190 S{material_bed_temperature}\nM109 S{material_print_temperature} T0\nG1 Z15.0 F6000 ;Move the platform down 15mm\nG92 E0\nG1 F200 E3\nG92 E0" + }, + "machine_end_gcode": { + "default_value": "M104 S0;Cooling the heat end\nM140 S0;Cooling the heat bed\nG92 E1\nG1 E-1 F300\nG28 X0 Y0;Home X axis and Y axis\nM84" + }, + "machine_width": { + "default_value": 255 + }, + "machine_height": { + "default_value": 260 + }, + "machine_depth": { + "default_value": 255 + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_center_is_zero": { + "default_value": false + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "layer_height": { + "default_value": 0.1 + }, + "layer_height_0": { + "default_value": 0.3 + }, + "retraction_amount": { + "default_value": 2 + }, + "retraction_speed": { + "default_value": 25 + }, + "adhesion_type": { + "default_value": "skirt" + }, + "machine_head_with_fans_polygon": { + "default_value": [ + [-32, 38], + [30, 38], + [30, -55], + [-32, -55] + ] + }, + "gantry_height": { + "value": "260" + }, + "machine_max_feedrate_x": { + "default_value": 300 + }, + "machine_max_feedrate_y": { + "default_value": 300 + }, + "machine_max_feedrate_z": { + "default_value": 10 + }, + "machine_max_feedrate_e": { + "default_value": 50 + }, + "machine_max_acceleration_x": { + "default_value": 2000 + }, + "machine_max_acceleration_y": { + "default_value": 2000 + }, + "machine_max_acceleration_z": { + "default_value": 100 + }, + "machine_max_acceleration_e": { + "default_value": 10000 + }, + "machine_acceleration": { + "default_value": 2000 + }, + "machine_max_jerk_xy": { + "default_value": 10 + }, + "machine_max_jerk_z": { + "default_value": 1 + }, + "machine_max_jerk_e": { + "default_value": 5 + }, + "machine_gcode_flavor": { + "default_value": "Repetier" + } + } +} diff --git a/resources/extruders/geeetech_Mizar_S_extruder_0.def.json b/resources/extruders/geeetech_Mizar_S_extruder_0.def.json new file mode 100644 index 0000000000..bd64fc5353 --- /dev/null +++ b/resources/extruders/geeetech_Mizar_S_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "geeetech_mizar_s", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} From 748c51f32f3e3dd1cd6f008810f60348a1c5daa0 Mon Sep 17 00:00:00 2001 From: geeetech3d Date: Wed, 30 Mar 2022 10:53:22 +0800 Subject: [PATCH 02/58] add Mizar_S Profile2 --- .../definitions/geeetech_Mizar_S.def.json | 118 +++++------------- ...0.def.json => geeetech_Mizar_S_1.def.json} | 6 +- 2 files changed, 37 insertions(+), 87 deletions(-) rename resources/extruders/{geeetech_Mizar_S_extruder_0.def.json => geeetech_Mizar_S_1.def.json} (72%) diff --git a/resources/definitions/geeetech_Mizar_S.def.json b/resources/definitions/geeetech_Mizar_S.def.json index b8a88c51db..7cd7e42e68 100644 --- a/resources/definitions/geeetech_Mizar_S.def.json +++ b/resources/definitions/geeetech_Mizar_S.def.json @@ -1,26 +1,22 @@ { "version": 2, - "name": "Mizar S", + "name": "Geeetech Mizar_S", "inherits": "fdmprinter", "metadata": { - "author": "Barry Ding", + "visible": true, + "author": "Amit L", "manufacturer": "Geeetech", "file_formats": "text/x-gcode", - "visible": true, - "machine_extruder_trains": { - "0": "geeetech_mizar_s_extruder_0" + "has_materials": true, + "machine_extruder_trains": + { + "0": "geeetech_Mizar_S_1" } + }, + "overrides": { - "machine_name": { - "default_value": "Mizar S" - }, - "machine_start_gcode": { - "default_value": "G28 ;Home\nM190 S{material_bed_temperature}\nM109 S{material_print_temperature} T0\nG1 Z15.0 F6000 ;Move the platform down 15mm\nG92 E0\nG1 F200 E3\nG92 E0" - }, - "machine_end_gcode": { - "default_value": "M104 S0;Cooling the heat end\nM140 S0;Cooling the heat bed\nG92 E1\nG1 E-1 F300\nG28 X0 Y0;Home X axis and Y axis\nM84" - }, + "machine_name": { "default_value": "Geeetech Mizar_S" }, "machine_width": { "default_value": 255 }, @@ -29,83 +25,35 @@ }, "machine_depth": { "default_value": 255 - }, - "machine_heated_bed": { - "default_value": true - }, + }, "machine_center_is_zero": { "default_value": false }, - "material_diameter": { - "default_value": 1.75 + "layer_height": { "default_value": 0.1 }, + "layer_height_0": { "default_value": 0.15 }, + "retraction_amount": { "default_value": 0.8 }, + "retraction_speed": { "default_value": 35 }, + "adhesion_type": { "default_value": "skirt" }, + "machine_head_with_fans_polygon": { "default_value": [[-31,31],[34,31],[34,-40],[-31,-40]] }, + "gantry_height": { "value": "28" }, + "machine_max_feedrate_z": { "default_value": 12 }, + "machine_max_feedrate_e": { "default_value": 120 }, + "machine_max_acceleration_z": { "default_value": 500 }, + "machine_acceleration": { "default_value": 1000 }, + "machine_max_jerk_xy": { "default_value": 10 }, + "machine_max_jerk_z": { "default_value": 0.2 }, + "machine_max_jerk_e": { "default_value": 2.5 }, + "machine_heated_bed": { "default_value": true }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { + "default_value": "G28 ; Auto home\nG1 Z15 F300 ;Move up slightly\nM107 ;Off fans\nG90 ;Switch to absolute positioning\nM82 ;Extruder absolute mode\nG92 E0 ;Set position of extruder to 0\nG0 X10 Y20 F1500 ;Move to X10 Y20 at 1500mms\nG1 Z0.8 ;Move Z to 0.8\nG1 F300 X180 E40 ;Extrude a line of filament\nG1 F1200 Z2 ;Raise Z\nG92 E0 ;Set extruder position to zero\nG28 ;Auto home" }, - "machine_nozzle_size": { - "default_value": 0.4 + "machine_end_gcode": { + "default_value": "G91 ;Switch to relative positioning\nG1 E-1 ;Retract filament to lower pressure\nG0 X0 Y200 ;Move hotend to left and bed forward\nM104 S0 ;Cooldown hotend\nG90 ;Switch to absolute mode\nG92 E0 ;Set extruder to zero\nM140 S0 ;Cooldown bed\nM84 ; Disable steppers" }, - "layer_height": { - "default_value": 0.1 - }, - "layer_height_0": { - "default_value": 0.3 - }, - "retraction_amount": { - "default_value": 2 - }, - "retraction_speed": { - "default_value": 25 - }, - "adhesion_type": { - "default_value": "skirt" - }, - "machine_head_with_fans_polygon": { - "default_value": [ - [-32, 38], - [30, 38], - [30, -55], - [-32, -55] - ] - }, - "gantry_height": { - "value": "260" - }, - "machine_max_feedrate_x": { - "default_value": 300 - }, - "machine_max_feedrate_y": { - "default_value": 300 - }, - "machine_max_feedrate_z": { - "default_value": 10 - }, - "machine_max_feedrate_e": { - "default_value": 50 - }, - "machine_max_acceleration_x": { - "default_value": 2000 - }, - "machine_max_acceleration_y": { - "default_value": 2000 - }, - "machine_max_acceleration_z": { - "default_value": 100 - }, - "machine_max_acceleration_e": { - "default_value": 10000 - }, - "machine_acceleration": { - "default_value": 2000 - }, - "machine_max_jerk_xy": { - "default_value": 10 - }, - "machine_max_jerk_z": { + "machine_extruder_count": { "default_value": 1 - }, - "machine_max_jerk_e": { - "default_value": 5 - }, - "machine_gcode_flavor": { - "default_value": "Repetier" } + } } diff --git a/resources/extruders/geeetech_Mizar_S_extruder_0.def.json b/resources/extruders/geeetech_Mizar_S_1.def.json similarity index 72% rename from resources/extruders/geeetech_Mizar_S_extruder_0.def.json rename to resources/extruders/geeetech_Mizar_S_1.def.json index bd64fc5353..da4440cd87 100644 --- a/resources/extruders/geeetech_Mizar_S_extruder_0.def.json +++ b/resources/extruders/geeetech_Mizar_S_1.def.json @@ -1,15 +1,17 @@ { + "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", "metadata": { - "machine": "geeetech_mizar_s", + "machine": "geeetech_Mizar_S", "position": "0" }, "overrides": { - "extruder_nr": { "default_value": 0 }, + "extruder_nr": { "default_value": 0 }, "machine_nozzle_size": { "default_value": 0.4 }, "material_diameter": { "default_value": 1.75 } + } } From 776c71e5c9f648d7c0b83e2feba0e1d4cd8b1eec Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Sat, 23 Jul 2022 22:35:18 +0200 Subject: [PATCH 03/58] Shorten excessively long lines - Some lines in the files were excessively long, even in the context of the Cura project which seems to prefer a long line length. These lines could not be read easily even on github .... - Removed some unnecessary whitespaces - Added some extra spaces so that inline comments are separated by at least two spaces from the statement --- cura/LayerPolygon.py | 62 +++++++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py index 2c3b432b1d..89bb84d375 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -24,9 +24,12 @@ class LayerPolygon: PrimeTowerType = 11 __number_of_types = 12 - __jump_map = numpy.logical_or(numpy.logical_or(numpy.arange(__number_of_types) == NoneType, numpy.arange(__number_of_types) == MoveCombingType), numpy.arange(__number_of_types) == MoveRetractionType) + __jump_map = numpy.logical_or(numpy.logical_or(numpy.arange(__number_of_types) == NoneType, + numpy.arange(__number_of_types) == MoveCombingType), + numpy.arange(__number_of_types) == MoveRetractionType) - def __init__(self, extruder: int, line_types: numpy.ndarray, data: numpy.ndarray, line_widths: numpy.ndarray, line_thicknesses: numpy.ndarray, line_feedrates: numpy.ndarray) -> None: + def __init__(self, extruder: int, line_types: numpy.ndarray, data: numpy.ndarray, + line_widths: numpy.ndarray, line_thicknesses: numpy.ndarray, line_feedrates: numpy.ndarray) -> None: """LayerPolygon, used in ProcessSlicedLayersJob :param extruder: The position of the extruder @@ -58,14 +61,16 @@ class LayerPolygon: self._mesh_line_count = len(self._types) - self._jump_count self._vertex_count = self._mesh_line_count + numpy.sum(self._types[1:] == self._types[:-1]) - # Buffering the colors shouldn't be necessary as it is not + # Buffering the colors shouldn't be necessary as it is not # re-used and can save a lot of memory usage. self._color_map = LayerPolygon.getColorMap() self._colors = self._color_map[self._types] # type: numpy.ndarray - # When type is used as index returns true if type == LayerPolygon.InfillType or type == LayerPolygon.SkinType or type == LayerPolygon.SupportInfillType + # When type is used as index returns true if type == LayerPolygon.InfillType + # or type == LayerPolygon.SkinType + # or type == LayerPolygon.SupportInfillType # Should be generated in better way, not hardcoded. - self._is_infill_or_skin_type_map = numpy.array([0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0], dtype = bool) + self._is_infill_or_skin_type_map = numpy.array([0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0], dtype=bool) self._build_cache_line_mesh_mask = None # type: Optional[numpy.ndarray] self._build_cache_needed_points = None # type: Optional[numpy.ndarray] @@ -80,12 +85,14 @@ class LayerPolygon: # Only if the type of line segment changes do we need to add an extra vertex to change colors self._build_cache_needed_points[1:, 0][:, numpy.newaxis] = self._types[1:] != self._types[:-1] # Mark points as unneeded if they are of types we don't want in the line mesh according to the calculated mask - numpy.logical_and(self._build_cache_needed_points, self._build_cache_line_mesh_mask, self._build_cache_needed_points ) + numpy.logical_and(self._build_cache_needed_points, self._build_cache_line_mesh_mask, self._build_cache_needed_points) self._vertex_begin = 0 self._vertex_end = cast(int, numpy.sum(self._build_cache_needed_points)) - def build(self, vertex_offset: int, index_offset: int, vertices: numpy.ndarray, colors: numpy.ndarray, line_dimensions: numpy.ndarray, feedrates: numpy.ndarray, extruders: numpy.ndarray, line_types: numpy.ndarray, indices: numpy.ndarray) -> None: + def build(self, vertex_offset: int, index_offset: int, vertices: numpy.ndarray, + colors: numpy.ndarray, line_dimensions: numpy.ndarray, feedrates: numpy.ndarray, + extruders: numpy.ndarray, line_types: numpy.ndarray, indices: numpy.ndarray) -> None: """Set all the arrays provided by the function caller, representing the LayerPolygon The arrays are either by vertex or by indices. @@ -112,18 +119,18 @@ class LayerPolygon: needed_points_list = self._build_cache_needed_points # Index to the points we need to represent the line mesh. This is constructed by generating simple - # start and end points for each line. For line segment n these are points n and n+1. Row n reads [n n+1] - # Then then the indices for the points we don't need are thrown away based on the pre-calculated list. - index_list = ( numpy.arange(len(self._types)).reshape((-1, 1)) + numpy.array([[0, 1]]) ).reshape((-1, 1))[needed_points_list.reshape((-1, 1))] + # start and end points for each line. For line segment n these are points n and n+1. Row n reads [n n+1] + # Then then the indices for the points we don't need are thrown away based on the pre-calculated list. + index_list = (numpy.arange(len(self._types)).reshape((-1, 1)) + numpy.array([[0, 1]])).reshape((-1, 1))[needed_points_list.reshape((-1, 1))] # The relative values of begin and end indices have already been set in buildCache, so we only need to offset them to the parents offset. self._vertex_begin += vertex_offset self._vertex_end += vertex_offset - # Points are picked based on the index list to get the vertices needed. + # Points are picked based on the index list to get the vertices needed. vertices[self._vertex_begin:self._vertex_end, :] = self._data[index_list, :] - # Create an array with colors for each vertex and remove the color data for the points that has been thrown away. + # Create an array with colors for each vertex and remove the color data for the points that has been thrown away. colors[self._vertex_begin:self._vertex_end, :] = numpy.tile(self._colors, (1, 2)).reshape((-1, 4))[needed_points_list.ravel()] # Create an array with line widths and thicknesses for each vertex. @@ -138,14 +145,15 @@ class LayerPolygon: # Convert type per vertex to type per line line_types[self._vertex_begin:self._vertex_end] = numpy.tile(self._types, (1, 2)).reshape((-1, 1))[needed_points_list.ravel()][:, 0] - # The relative values of begin and end indices have already been set in buildCache, so we only need to offset them to the parents offset. + # The relative values of begin and end indices have already been set in buildCache, + # so we only need to offset them to the parents offset. self._index_begin += index_offset self._index_end += index_offset - indices[self._index_begin:self._index_end, :] = numpy.arange(self._index_end-self._index_begin, dtype = numpy.int32).reshape((-1, 1)) + indices[self._index_begin:self._index_end, :] = numpy.arange(self._index_end-self._index_begin, dtype=numpy.int32).reshape((-1, 1)) # When the line type changes the index needs to be increased by 2. indices[self._index_begin:self._index_end, :] += numpy.cumsum(needed_points_list[line_mesh_mask.ravel(), 0], dtype = numpy.int32).reshape((-1, 1)) - # Each line segment goes from it's starting point p to p+1, offset by the vertex index. + # Each line segment goes from it's starting point p to p+1, offset by the vertex index. # The -1 is to compensate for the necessarily True value of needed_points_list[0,0] which causes an unwanted +1 in cumsum above. indices[self._index_begin:self._index_end, :] += numpy.array([self._vertex_begin - 1, self._vertex_begin]) @@ -214,7 +222,7 @@ class LayerPolygon: """ normals = numpy.copy(self._data) - normals[:, 1] = 0.0 # We are only interested in 2D normals + normals[:, 1] = 0.0 # We are only interested in 2D normals # Calculate the edges between points. # The call to numpy.roll shifts the entire array by one so that @@ -245,17 +253,17 @@ class LayerPolygon: if cls.__color_map is None: theme = cast(Theme, QtApplication.getInstance().getTheme()) cls.__color_map = numpy.array([ - theme.getColor("layerview_none").getRgbF(), # NoneType - theme.getColor("layerview_inset_0").getRgbF(), # Inset0Type - theme.getColor("layerview_inset_x").getRgbF(), # InsetXType - theme.getColor("layerview_skin").getRgbF(), # SkinType - theme.getColor("layerview_support").getRgbF(), # SupportType - theme.getColor("layerview_skirt").getRgbF(), # SkirtType - theme.getColor("layerview_infill").getRgbF(), # InfillType - theme.getColor("layerview_support_infill").getRgbF(), # SupportInfillType - theme.getColor("layerview_move_combing").getRgbF(), # MoveCombingType - theme.getColor("layerview_move_retraction").getRgbF(), # MoveRetractionType - theme.getColor("layerview_support_interface").getRgbF(), # SupportInterfaceType + theme.getColor("layerview_none").getRgbF(), # NoneType + theme.getColor("layerview_inset_0").getRgbF(), # Inset0Type + theme.getColor("layerview_inset_x").getRgbF(), # InsetXType + theme.getColor("layerview_skin").getRgbF(), # SkinType + theme.getColor("layerview_support").getRgbF(), # SupportType + theme.getColor("layerview_skirt").getRgbF(), # SkirtType + theme.getColor("layerview_infill").getRgbF(), # InfillType + theme.getColor("layerview_support_infill").getRgbF(), # SupportInfillType + theme.getColor("layerview_move_combing").getRgbF(), # MoveCombingType + theme.getColor("layerview_move_retraction").getRgbF(), # MoveRetractionType + theme.getColor("layerview_support_interface").getRgbF(), # SupportInterfaceType theme.getColor("layerview_prime_tower").getRgbF() # PrimeTowerType ]) From bce60a7d96d88e47723c68a69e9bbbcf33d689ff Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Sat, 23 Jul 2022 23:02:00 +0200 Subject: [PATCH 04/58] Fix typo Correct typo (duplicated word) --- cura/LayerPolygon.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py index 89bb84d375..4ba206e34d 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -120,7 +120,7 @@ class LayerPolygon: # Index to the points we need to represent the line mesh. This is constructed by generating simple # start and end points for each line. For line segment n these are points n and n+1. Row n reads [n n+1] - # Then then the indices for the points we don't need are thrown away based on the pre-calculated list. + # Then the indices for the points we don't need are thrown away based on the pre-calculated list. index_list = (numpy.arange(len(self._types)).reshape((-1, 1)) + numpy.array([[0, 1]])).reshape((-1, 1))[needed_points_list.reshape((-1, 1))] # The relative values of begin and end indices have already been set in buildCache, so we only need to offset them to the parents offset. From 9221c3e21e41c6cd318c350028677ce984b2fc21 Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Sat, 23 Jul 2022 23:11:06 +0200 Subject: [PATCH 05/58] Improve layout of comment Modify the layout of the comment to improve readability. Now each sentence starts on a new line. Add a punctuation mark (comma) to improve clarity. --- cura/LayerPolygon.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py index 4ba206e34d..7a66b60ca0 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -118,8 +118,9 @@ class LayerPolygon: line_mesh_mask = self._build_cache_line_mesh_mask needed_points_list = self._build_cache_needed_points - # Index to the points we need to represent the line mesh. This is constructed by generating simple - # start and end points for each line. For line segment n these are points n and n+1. Row n reads [n n+1] + # Index to the points we need to represent the line mesh. + # This is constructed by generating simple start and end points for each line. + # For line segment n, these are points n and n+1. Row n reads [n n+1] # Then the indices for the points we don't need are thrown away based on the pre-calculated list. index_list = (numpy.arange(len(self._types)).reshape((-1, 1)) + numpy.array([[0, 1]])).reshape((-1, 1))[needed_points_list.reshape((-1, 1))] From 1bf330df66f0797077d7ffdd469d1fe5b3762c82 Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Sat, 23 Jul 2022 23:19:20 +0200 Subject: [PATCH 06/58] Improve layout of comment Modify the layout of the comment to improve readability. Now each sentence starts on a new line. --- cura/LayerPolygon.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py index 7a66b60ca0..d5714f403e 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -226,10 +226,9 @@ class LayerPolygon: normals[:, 1] = 0.0 # We are only interested in 2D normals # Calculate the edges between points. - # The call to numpy.roll shifts the entire array by one so that - # we end up subtracting each next point from the current, wrapping - # around. This gives us the edges from the next point to the current - # point. + # The call to numpy.roll shifts the entire array by one + # so that we end up subtracting each next point from the current, wrapping around. + # This gives us the edges from the next point to the current point. normals = numpy.diff(normals, 1, 0) # Calculate the length of each edge using standard Pythagoras From b8f448a359b84ef33bfee783cfe3bceab3d91541 Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Thu, 28 Jul 2022 11:18:16 +0200 Subject: [PATCH 07/58] Add link to style guide Add link to the document that describes the code conventions and guidelines to be followed in all Ultimaker code, regardless the programming environment / language. This document is located in the Ultimaker/Meta repo. --- contributing.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contributing.md b/contributing.md index 06f9dd472b..180b6b1461 100644 --- a/contributing.md +++ b/contributing.md @@ -16,4 +16,6 @@ Making pull requests -------------------- If you want to propose a change to Cura's source code, please create a pull request in the appropriate repository (being [Cura](https://github.com/Ultimaker/Cura), [Uranium](https://github.com/Ultimaker/Uranium), [CuraEngine](https://github.com/Ultimaker/CuraEngine), [fdm_materials](https://github.com/Ultimaker/fdm_materials), [libArcus](https://github.com/Ultimaker/libArcus), [cura-build](https://github.com/Ultimaker/cura-build), [cura-build-environment](https://github.com/Ultimaker/cura-build-environment), [libSavitar](https://github.com/Ultimaker/libSavitar), [libCharon](https://github.com/Ultimaker/libCharon) or [cura-binary-data](https://github.com/Ultimaker/cura-binary-data)) and if your change requires changes on multiple of these repositories, please link them together so that we know to merge them together. -Some of these repositories will have automated tests running when you create a pull request, indicated by green check marks or red crosses in the Github web page. If you see a red cross, that means that a test has failed. If the test doesn't fail on the Master branch but does fail on your branch, that indicates that you've probably made a mistake and you need to do that. Click on the cross for more details, or run the test locally by running `cmake . && ctest --verbose`. \ No newline at end of file +The style guide for code contributions to Cura and other Ultimaker projects can be found [here](https://github.com/Ultimaker/Meta/blob/master/general/generic_code_conventions.md). + +Some of these repositories will have automated tests running when you create a pull request, indicated by green check marks or red crosses in the Github web page. If you see a red cross, that means that a test has failed. If the test doesn't fail on the Master branch but does fail on your branch, that indicates that you've probably made a mistake and you need to do that. Click on the cross for more details, or run the test locally by running `cmake . && ctest --verbose`. From 556b009a9dbe68ba25960a29e9ff1eb88725e140 Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Wed, 3 Aug 2022 11:26:39 +0200 Subject: [PATCH 08/58] Fix Bug in timing MachineErrorChecker execution We want the Logger in line 215 to give the execution time in seconds so we don't want the start time to be the epoch. Currently the logger will output something like time = 1659518458.5s not like time = 3.0s --- cura/Machines/MachineErrorChecker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Machines/MachineErrorChecker.py b/cura/Machines/MachineErrorChecker.py index 2cb333d157..d2140cc49b 100644 --- a/cura/Machines/MachineErrorChecker.py +++ b/cura/Machines/MachineErrorChecker.py @@ -43,7 +43,7 @@ class MachineErrorChecker(QObject): self._application = cura.CuraApplication.CuraApplication.getInstance() self._machine_manager = self._application.getMachineManager() - self._start_time = 0. # measure checking time + self._start_time = time.time() # measure checking time # This timer delays the starting of error check so we can react less frequently if the user is frequently # changing settings. From fad47856e49ac4c9e4052e5fb9f9c581335ebc30 Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Wed, 3 Aug 2022 11:40:15 +0200 Subject: [PATCH 09/58] Rename _start_time to _check_start_time This better reflects what _start_time is and makes the code easier to read. _check_start_time is self documenting. The current comment next to _start_time is erroneous since _start_time is not "measuring the checking time" --- cura/Machines/MachineErrorChecker.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cura/Machines/MachineErrorChecker.py b/cura/Machines/MachineErrorChecker.py index d2140cc49b..df335eddb4 100644 --- a/cura/Machines/MachineErrorChecker.py +++ b/cura/Machines/MachineErrorChecker.py @@ -43,7 +43,7 @@ class MachineErrorChecker(QObject): self._application = cura.CuraApplication.CuraApplication.getInstance() self._machine_manager = self._application.getMachineManager() - self._start_time = time.time() # measure checking time + self._check_start_time = time.time() # This timer delays the starting of error check so we can react less frequently if the user is frequently # changing settings. @@ -152,7 +152,7 @@ class MachineErrorChecker(QObject): self._stacks_and_keys_to_check.append((stack, key)) self._application.callLater(self._checkStack) - self._start_time = time.time() + self._check_start_time = time.time() Logger.log("d", "New error check scheduled.") def _checkStack(self) -> None: @@ -212,4 +212,4 @@ class MachineErrorChecker(QObject): self._check_in_progress = False self.needToWaitForResultChanged.emit() self.errorCheckFinished.emit() - Logger.log("i", "Error check finished, result = %s, time = %0.1fs", result, time.time() - self._start_time) + Logger.log("i", "Error check finished, result = %s, time = %0.1fs", result, time.time() - self._check_start_time) From a39fed1dc3c99650e701e434c78a4b14b2303574 Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Thu, 4 Aug 2022 09:45:47 +0200 Subject: [PATCH 10/58] Use one line conditional assignment Use one line conditional assignement instead of if else block. The intent is now clearer and the code is easier to read. --- cura/Machines/MachineErrorChecker.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/cura/Machines/MachineErrorChecker.py b/cura/Machines/MachineErrorChecker.py index 2cb333d157..022b01ae35 100644 --- a/cura/Machines/MachineErrorChecker.py +++ b/cura/Machines/MachineErrorChecker.py @@ -204,10 +204,7 @@ class MachineErrorChecker(QObject): self._has_errors = result self.hasErrorUpdated.emit() self._machine_manager.stacksValidationChanged.emit() - if keys_to_recheck is None: - self._keys_to_check = set() - else: - self._keys_to_check = keys_to_recheck + self._keys_to_check = keys_to_recheck if keys_to_recheck else set() self._need_to_check = False self._check_in_progress = False self.needToWaitForResultChanged.emit() From 9ac7eb4da7d2859f430792b4dca7fa24caa63e2f Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Fri, 5 Aug 2022 10:37:02 +0200 Subject: [PATCH 11/58] Use enumerate to iterate over self._types This is more pythonic. The comparaison in the if block below the for loop now becomes clearer. --- cura/LayerPolygon.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py index 2c3b432b1d..c13bef85de 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -39,10 +39,10 @@ class LayerPolygon: self._extruder = extruder self._types = line_types - for i in range(len(self._types)): - if self._types[i] >= self.__number_of_types: # Got faulty line data from the engine. - Logger.log("w", "Found an unknown line type: %s", i) - self._types[i] = self.NoneType + for idx, line_type in enumerate(self._types): + if line_type >= self.__number_of_types: # Got faulty line data from the engine. + Logger.log("w", "Found an unknown line type: %s", line_type) + self._types[idx] = self.NoneType self._data = data self._line_widths = line_widths self._line_thicknesses = line_thicknesses From 1c3479c9fc63ae7fc23726cd24dd42e458b06237 Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Fri, 5 Aug 2022 11:08:20 +0200 Subject: [PATCH 12/58] Refactor check for unknown line types Using .where() clarifies the intent. --- cura/LayerPolygon.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py index c13bef85de..01970bd54f 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -39,9 +39,11 @@ class LayerPolygon: self._extruder = extruder self._types = line_types - for idx, line_type in enumerate(self._types): - if line_type >= self.__number_of_types: # Got faulty line data from the engine. - Logger.log("w", "Found an unknown line type: %s", line_type) + unknown_types = np.where(self_types >= self_number_of_types) + if unknown_types: + # Got faulty line data from the engine. + for idx in unknown_types: + Logger.log("w", "Found an unknown line type at: %s", idx) self._types[idx] = self.NoneType self._data = data self._line_widths = line_widths From e54c859b2d126a571e9f5e5029a09a5fc8cdcf98 Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Mon, 8 Aug 2022 10:33:32 +0200 Subject: [PATCH 13/58] Iterate directly over list in readIndex() No need for range(len.. and later use of index... --- plugins/X3DReader/X3DReader.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/X3DReader/X3DReader.py b/plugins/X3DReader/X3DReader.py index 548c9f44e6..7f6955b458 100644 --- a/plugins/X3DReader/X3DReader.py +++ b/plugins/X3DReader/X3DReader.py @@ -866,13 +866,13 @@ def readIndex(node, attr): v = readIntArray(node, attr, []) chunks = [] chunk = [] - for i in range(len(v)): - if v[i] == -1: + for i in v: + if i == -1: if chunk: chunks.append(chunk) chunk = [] else: - chunk.append(v[i]) + chunk.append(i) if chunk: chunks.append(chunk) return chunks From 50a0ffa2573ee4a957168cf7bb92e44ca9a6f760 Mon Sep 17 00:00:00 2001 From: Michel Wilhelm Date: Sat, 13 Aug 2022 16:07:56 -0300 Subject: [PATCH 14/58] chore: definition file is out of the pattern --- .../definitions/renkforce_rf100_xl.def.json | 122 +++++++++--------- 1 file changed, 60 insertions(+), 62 deletions(-) diff --git a/resources/definitions/renkforce_rf100_xl.def.json b/resources/definitions/renkforce_rf100_xl.def.json index f0e8644ae4..a8cad09618 100644 --- a/resources/definitions/renkforce_rf100_xl.def.json +++ b/resources/definitions/renkforce_rf100_xl.def.json @@ -7,66 +7,64 @@ "file_formats": "text/x-gcode", "manufacturer": "Renkforce", "visible": true, - "machine_extruder_trains": - { + "machine_extruder_trains": { "0": "renkforce_rf100_xl_extruder_0" } }, - "overrides": { "adhesion_type": { "default_value": "skirt" }, "bottom_thickness": { - "value": "0.6" + "value": 0.6 }, "brim_width": { - "value": "3.0" + "value": 3.0 }, "cool_fan_enabled": { - "value": "True" + "value": true }, "cool_fan_full_at_height": { - "value": "0.5" + "value": 0.5 }, "cool_fan_speed_max": { - "value": "100.0" + "value": 100.0 }, "cool_fan_speed_min": { - "value": "100.0" + "value": 100.0 }, "cool_lift_head": { - "value": "True" + "value": true }, "cool_min_layer_time": { - "value": "1.0" + "value": 1.0 }, "cool_min_speed": { - "value": "5.0" + "value": 5.0 }, "infill_before_walls": { - "value": "True" + "value": true }, "infill_line_width": { - "value": "0.6" + "value": 0.6 }, "infill_overlap": { - "value": "15.0" + "value": 15.0 }, "infill_sparse_density": { - "value": "26.0" + "value": 26.0 }, "ironing_enabled": { - "value": "True" + "value": true }, "layer_0_z_overlap": { - "value": "0.11" + "value": 0.11 }, "layer_height_0": { - "value": "0.3" + "value": 0.3 }, "machine_depth": { - "value": "200" + "value": 200 }, "machine_end_gcode": { "default_value": ";End GCode\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-4 F300 ;move Z up a bit and retract filament even more\nM104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG0 Z{machine_height} F1800 ;move the platform all the way down\nG28 X0 Y0 F1800 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning\nM117 Done" @@ -75,10 +73,10 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_heated_bed": { - "default_value": "true" + "default_value": true }, "machine_height": { - "value": "200" + "value": 200 }, "machine_name": { "default_value": "Renkforce RF100 XL" @@ -87,112 +85,112 @@ "default_value": ";Sliced at: {day} {date} {time}\nG21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG1 Z5.0 F1800 ;move Z to 5mm\nG28 X0 Y0 F1800 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstop\nG92 E0 ;zero the extruded length\nG1 F200 E6.0 ;extrude 6.0mm of feed stock to build pressure\nG1 Z5.0 F300 ;move the platform down 5mm\nG92 E0 ;zero the extruded length again\nG1 F1800\n;Put printing message on LCD screen\nM117 Printing..." }, "machine_width": { - "value": "200" + "value": 200 }, "material_bed_temperature": { - "value": "70" + "value": 70 }, "material_print_temperature": { - "value": "210.0" + "value": 210.0 }, "ooze_shield_enabled": { - "value": "True" + "value": true }, "raft_airgap": { - "value": "0.33" + "value": 0.33 }, "raft_base_line_spacing": { - "value": "3.0" + "value": 3.0 }, "raft_base_line_width": { - "value": "1.0" + "value": 1.0 }, "raft_base_thickness": { - "value": "0.3" + "value": 0.3 }, "raft_interface_line_spacing": { - "value": "3.0" + "value": 3.0 }, "raft_interface_line_width": { - "value": "0.4" + "value": 0.4 }, "raft_interface_thickness": { - "value": "0.27" + "value": 0.27 }, "raft_margin": { - "value": "6.0" + "value": 6.0 }, "raft_speed": { - "value": "20.0" + "value": 20.0 }, "raft_surface_layers": { - "value": "2" + "value": 2 }, "raft_surface_line_spacing": { - "value": "0.4" + "value": 0.4 }, "raft_surface_line_width": { - "value": "0.4" + "value": 0.4 }, "raft_surface_thickness": { - "value": "0.1" + "value": 0.1 }, "retraction_amount": { - "value": "5.0" + "value": 5.0 }, "retraction_combing": { - "value": "'all'" + "value": "all" }, "retraction_enable": { - "value": "True" + "value": true }, "retraction_min_travel": { - "value": "1.5" + "value": 1.5 }, "skin_overlap": { - "value": "15.0" + "value": 15.0 }, "skirt_brim_minimal_length": { - "value": "150.0" + "value": 150.0 }, "skirt_gap": { - "value": "3.0" + "value": 3.0 }, "skirt_line_count": { - "value": "3" + "value": 3 }, "speed_infill": { - "value": "50.0" + "value": 50.0 }, "speed_layer_0": { - "value": "15.0" + "value": 15.0 }, "speed_print": { - "value": "50.0" + "value": 50.0 }, "speed_topbottom": { - "value": "30.0" + "value": 30.0 }, "speed_travel": { - "value": "50.0" + "value": 50.0 }, "speed_wall_0": { - "value": "25.0" + "value": 25.0 }, "speed_wall_x": { - "value": "35.0" + "value": 35.0 }, "support_angle": { - "value": "60.0" + "value": 60.0 }, "support_enable": { - "value": "False" + "value": false }, "support_infill_rate": { "value": "15 if support_enable and support_structure == 'normal' else 0 if support_enable and support_structure == 'tree' else 15" }, "support_line_width": { - "value": "0.6" + "value": 0.6 }, "support_pattern": { "default_value": "lines" @@ -201,16 +199,16 @@ "default_value": "everywhere" }, "support_xy_distance": { - "value": "0.7" + "value": 0.7 }, "support_z_distance": { - "value": "0.35" + "value": 0.35 }, "top_bottom_thickness": { - "value": "0.8" + "value": 0.8 }, "wall_thickness": { - "value": "0.8" + "value": 0.8 } } -} +} \ No newline at end of file From 6fd1e11964d1230beb1809911c82786a58858a99 Mon Sep 17 00:00:00 2001 From: odaki Date: Mon, 15 Aug 2022 12:40:23 +0900 Subject: [PATCH 15/58] Prevents the head from moving outside the print area Prevents the head from moving outside the print area after printing is complete. --- resources/definitions/kingroon_base.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/kingroon_base.def.json b/resources/definitions/kingroon_base.def.json index a8dd8725e2..4ea97f2527 100644 --- a/resources/definitions/kingroon_base.def.json +++ b/resources/definitions/kingroon_base.def.json @@ -129,7 +129,7 @@ "overrides": { "machine_name": { "default_value": "Kingroon Base Printer" }, "machine_start_gcode": { "default_value": "G28 ; home all axes\n M117 Purge extruder\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface\n G1 X2 Y20 Z0.3 F5000.0 ; move to start-line position\n G1 X2 Y175.0 Z0.3 F1500.0 E15 ; draw 1st line\n G1 X2 Y175.0 Z0.4 F5000.0 ; move to side a little\n G1 X2 Y20 Z0.4 F1500.0 E30 ; draw 2nd line\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface"}, - "machine_end_gcode": { "default_value": "G91; relative positioning\n G1 Z1.0 F3000 ; move z up little to prevent scratching of print\n G90; absolute positioning\n G1 X0 Y200 F1000 ; prepare for part removal\n M104 S0; turn off extruder\n M140 S0 ; turn off bed\n G1 X0 Y300 F1000 ; prepare for part removal\n M84 ; disable motors\n M106 S0 ; turn off fan" }, + "machine_end_gcode": { "default_value": "G91; relative positioning\n G1 Z1.0 F3000 ; move z up little to prevent scratching of print\n G90; absolute positioning\n M104 S0; turn off extruder\n M140 S0 ; turn off bed\n G1 X0 Y175 F1000 ; prepare for part removal\n M84 ; disable motors\n M106 S0 ; turn off fan" }, "machine_width": { "default_value": 180 }, "machine_depth": { "default_value": 180 }, From c3833c2ff8e8f8e580c85cb8ec9a73524ca24594 Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Thu, 18 Aug 2022 12:22:07 +0200 Subject: [PATCH 16/58] ArrangeObjectsJob.py: Refactor run method arrange from Nest2DArrange will return a boolean so we can simplify --- cura/Arranging/ArrangeObjectsJob.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cura/Arranging/ArrangeObjectsJob.py b/cura/Arranging/ArrangeObjectsJob.py index e65a442acb..d1370d46e1 100644 --- a/cura/Arranging/ArrangeObjectsJob.py +++ b/cura/Arranging/ArrangeObjectsJob.py @@ -28,18 +28,20 @@ class ArrangeObjectsJob(Job): title = i18n_catalog.i18nc("@info:title", "Finding Location")) status_message.show() - found_solution_for_all = None try: found_solution_for_all = arrange(self._nodes, Application.getInstance().getBuildVolume(), self._fixed_nodes) except: # If the thread crashes, the message should still close + found_solution_for_all = False Logger.logException("e", "Unable to arrange the objects on the buildplate. The arrange algorithm has crashed.") status_message.hide() - if found_solution_for_all is not None and not found_solution_for_all: + + if not found_solution_for_all: no_full_solution_message = Message( i18n_catalog.i18nc("@info:status", "Unable to find a location within the build volume for all objects"), title = i18n_catalog.i18nc("@info:title", "Can't Find Location"), message_type = Message.MessageType.ERROR) no_full_solution_message.show() + self.finished.emit(self) From 9f3a1cfe0ae3810e41ddba09f2ec836f12b2f6ec Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Tue, 23 Aug 2022 19:53:50 +0200 Subject: [PATCH 17/58] Use f-string and info method with Logger Use f-string and info method for Logger instead of "Old Style" string formating. --- cura/Machines/MachineErrorChecker.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cura/Machines/MachineErrorChecker.py b/cura/Machines/MachineErrorChecker.py index df335eddb4..a770e63785 100644 --- a/cura/Machines/MachineErrorChecker.py +++ b/cura/Machines/MachineErrorChecker.py @@ -212,4 +212,5 @@ class MachineErrorChecker(QObject): self._check_in_progress = False self.needToWaitForResultChanged.emit() self.errorCheckFinished.emit() - Logger.log("i", "Error check finished, result = %s, time = %0.1fs", result, time.time() - self._check_start_time) + execution_time = time.time() - self._check_start_time + Logger.info(f"Error check finished, result = {result}, time = {execution_time:.2f}s") From e9172b10af9e8132ab81c1841b3d0262e489f17c Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Tue, 23 Aug 2022 20:01:47 +0200 Subject: [PATCH 18/58] Use f-string and warn method with Logger Use f-string and warn method for Logger instead of "Old Style" string formatting. Co-authored-by: Jelle Spijker --- cura/LayerPolygon.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py index 01970bd54f..91a26b2500 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -43,7 +43,7 @@ class LayerPolygon: if unknown_types: # Got faulty line data from the engine. for idx in unknown_types: - Logger.log("w", "Found an unknown line type at: %s", idx) + Logger.warn(f"Found an unknown line type at: {idx}") self._types[idx] = self.NoneType self._data = data self._line_widths = line_widths From afb90b4b2eb7efe45dc0525294cac8485a1762d4 Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Wed, 24 Aug 2022 19:52:26 +0200 Subject: [PATCH 19/58] Move initialization of found_solution_for_all Initialize the variable found_solution_for_all with False and don't set it a the exception block. --- cura/Arranging/ArrangeObjectsJob.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Arranging/ArrangeObjectsJob.py b/cura/Arranging/ArrangeObjectsJob.py index d1370d46e1..6ba6717191 100644 --- a/cura/Arranging/ArrangeObjectsJob.py +++ b/cura/Arranging/ArrangeObjectsJob.py @@ -21,6 +21,7 @@ class ArrangeObjectsJob(Job): self._min_offset = min_offset def run(self): + found_solution_for_all = False status_message = Message(i18n_catalog.i18nc("@info:status", "Finding new location for objects"), lifetime = 0, dismissable = False, @@ -31,7 +32,6 @@ class ArrangeObjectsJob(Job): try: found_solution_for_all = arrange(self._nodes, Application.getInstance().getBuildVolume(), self._fixed_nodes) except: # If the thread crashes, the message should still close - found_solution_for_all = False Logger.logException("e", "Unable to arrange the objects on the buildplate. The arrange algorithm has crashed.") status_message.hide() From bd526dfe336a96a44e450ba271bb4cb6a322e10e Mon Sep 17 00:00:00 2001 From: Paul Kuiper <46715907+pkuiper-ultimaker@users.noreply.github.com> Date: Wed, 31 Aug 2022 11:48:14 +0200 Subject: [PATCH 20/58] Autogenerated intent profiles for the S_line printers. Settings are now also automatically ordered (= easier diffing in the future). Relates to: PP-202 --- ...um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg | 10 +++------ ..._s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg | 11 +--------- ...aa0.4_ABS_Normal_Quality_Accurate.inst.cfg | 11 +--------- ...s3_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg | 6 +----- ...a0.4_CPEP_Normal_Quality_Accurate.inst.cfg | 6 +----- ..._s3_aa0.4_CPE_Fast_Print_Accurate.inst.cfg | 12 +---------- ...aa0.4_CPE_Normal_Quality_Accurate.inst.cfg | 6 +----- ...3_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg | 6 +----- ...0.4_Nylon_Normal_Quality_Accurate.inst.cfg | 6 +----- ...m_s3_aa0.4_PC_Fast_Print_Accurate.inst.cfg | 6 +----- ..._aa0.4_PC_Normal_Quality_Accurate.inst.cfg | 6 +----- ...s3_aa0.4_PETG_Fast_Print_Accurate.inst.cfg | 6 +----- ...a0.4_PETG_Normal_Quality_Accurate.inst.cfg | 6 +----- ...um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg | 15 +++---------- ..._s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg | 5 +---- ...aa0.4_PLA_Normal_Quality_Accurate.inst.cfg | 5 +---- ...3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg | 15 +++++-------- ...m_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg | 15 +++---------- ...s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg | 5 +---- ...a0.4_TPLA_Normal_Quality_Accurate.inst.cfg | 5 +---- ..._aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg | 21 +++++-------------- ...um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg | 10 +++------ ..._s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg | 6 +----- ...aa0.4_ABS_Normal_Quality_Accurate.inst.cfg | 6 +----- ...s5_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg | 7 +------ ...a0.4_CPEP_Normal_Quality_Accurate.inst.cfg | 7 +------ ..._s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg | 7 +------ ...aa0.4_CPE_Normal_Quality_Accurate.inst.cfg | 7 +------ ...5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg | 7 +------ ...0.4_Nylon_Normal_Quality_Accurate.inst.cfg | 7 +------ ...m_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg | 7 +------ ..._aa0.4_PC_Normal_Quality_Accurate.inst.cfg | 7 +------ ...s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg | 7 +------ ...a0.4_PETG_Normal_Quality_Accurate.inst.cfg | 7 +------ ...um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg | 10 +++------ ..._s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg | 6 +----- ...aa0.4_PLA_Normal_Quality_Accurate.inst.cfg | 6 +----- ...5_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg | 15 +++++-------- ...m_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg | 10 +++------ ...s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg | 6 +----- ...a0.4_TPLA_Normal_Quality_Accurate.inst.cfg | 6 +----- ..._aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg | 15 +++++-------- 42 files changed, 70 insertions(+), 280 deletions(-) diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg index f2095ba055..1a82100882 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg @@ -12,16 +12,12 @@ material = generic_abs variant = AA 0.4 [values] +infill_sparse_density = 15 +jerk_print = 30 speed_infill = =speed_print +speed_layer_0 = 20 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -speed_layer_0 = 20 top_bottom_thickness = 0.8 -infill_sparse_density = 15 - -jerk_print = 30 - - - diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg index ed17a36b8a..468528e62c 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg @@ -12,22 +12,13 @@ material = generic_abs variant = AA 0.4 [values] - jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg index 4ec7a841a5..48dee963d1 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg @@ -12,22 +12,13 @@ material = generic_abs variant = AA 0.4 [values] - jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg index b74cd522ac..5ece30afd9 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg @@ -12,17 +12,13 @@ material = generic_cpe_plus variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 - diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg index 1caacdf72f..4afeb44758 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg @@ -12,17 +12,13 @@ material = generic_cpe_plus variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 - diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print_Accurate.inst.cfg index de109c9810..85a2b0f773 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print_Accurate.inst.cfg @@ -12,23 +12,13 @@ material = generic_cpe variant = AA 0.4 [values] - jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 - diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg index 315b26a3b1..88843e549e 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg @@ -12,17 +12,13 @@ material = generic_cpe variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 - diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg index d4a999d8eb..e0d70d45f2 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg @@ -12,17 +12,13 @@ material = generic_nylon variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 - diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg index aa371be6f3..e60b654426 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg @@ -12,17 +12,13 @@ material = generic_nylon variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 - diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print_Accurate.inst.cfg index abd125f483..944362e745 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print_Accurate.inst.cfg @@ -12,17 +12,13 @@ material = generic_pc variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 - diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality_Accurate.inst.cfg index c8cf2a3bd4..006b3cac4c 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality_Accurate.inst.cfg @@ -12,17 +12,13 @@ material = generic_pc variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 - diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print_Accurate.inst.cfg index b4bbdddff7..2686ff7e34 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print_Accurate.inst.cfg @@ -12,17 +12,13 @@ material = generic_petg variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 - diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg index 19418812af..d0f84a8755 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg @@ -12,17 +12,13 @@ material = generic_petg variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 - diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg index 3186c6be4e..8ca43ef884 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg @@ -12,21 +12,12 @@ material = generic_pla variant = AA 0.4 [values] +infill_sparse_density = 15 +jerk_print = 30 speed_infill = =speed_print +speed_layer_0 = 20 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -speed_layer_0 = 20 top_bottom_thickness = 0.8 -infill_sparse_density = 15 - -jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 - - diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg index 36ea7c975e..565387bed6 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg @@ -12,16 +12,13 @@ material = generic_pla variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg index 88691ef1d6..d84c7c3a1a 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg @@ -12,16 +12,13 @@ material = generic_pla variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg index b59ed875b4..3b6a5b6486 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg @@ -11,22 +11,17 @@ quality_type = verydraft material = generic_pla variant = AA 0.4 is_experimental = True - [values] -infill_sparse_density = 10 - -jerk_print = 30 - acceleration_print = 4000 acceleration_wall = 2000 acceleration_wall_0 = 2000 - -speed_print = 50 +infill_sparse_density = 10 +jerk_print = 30 speed_infill = =speed_print +speed_layer_0 = 20 +speed_print = 50 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -speed_layer_0 = 20 - -top_bottom_thickness = 0.8 \ No newline at end of file +top_bottom_thickness = 0.8 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg index 1ca1775990..b2557b3f5e 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg @@ -12,21 +12,12 @@ material = generic_tough_pla variant = AA 0.4 [values] +infill_sparse_density = 15 +jerk_print = 30 speed_infill = =speed_print +speed_layer_0 = 20 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -speed_layer_0 = 20 top_bottom_thickness = 0.8 -infill_sparse_density = 15 - -jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 - - diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg index 924edf577d..3b43a028b4 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg @@ -12,16 +12,13 @@ material = generic_tough_pla variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg index b92e07a877..c8a0053010 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg @@ -12,16 +12,13 @@ material = generic_tough_pla variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg index 21cd1059f0..48fe33a990 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg @@ -11,28 +11,17 @@ quality_type = verydraft material = generic_tough_pla variant = AA 0.4 is_experimental = True - [values] -infill_sparse_density = 10 - -jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 - acceleration_print = 4000 acceleration_wall = 2000 acceleration_wall_0 = 2000 - -speed_print = 50 +infill_sparse_density = 10 +jerk_print = 30 speed_infill = =speed_print +speed_layer_0 = 20 +speed_print = 50 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -speed_layer_0 = 20 - -top_bottom_thickness = 0.8 \ No newline at end of file +top_bottom_thickness = 0.8 diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg index 98ad3af40b..994699e382 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg @@ -12,16 +12,12 @@ material = generic_abs variant = AA 0.4 [values] +infill_sparse_density = 15 +jerk_print = 30 speed_infill = =speed_print +speed_layer_0 = 20 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -speed_layer_0 = 20 top_bottom_thickness = 0.8 -infill_sparse_density = 15 - -jerk_print = 30 - - - diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg index 8939d670b1..592ca35859 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg @@ -12,17 +12,13 @@ material = generic_abs variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg index 44f76d561f..6143b0d78d 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg @@ -12,17 +12,13 @@ material = generic_abs variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg index 7bf1fc834a..6d729bcea9 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg @@ -12,18 +12,13 @@ material = generic_cpe_plus variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset - diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg index a95862c35a..86e7cc0505 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg @@ -12,18 +12,13 @@ material = generic_cpe_plus variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset - diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg index bfdd35017c..12902a388c 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg @@ -12,18 +12,13 @@ material = generic_cpe variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset - diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg index 022fb2b50d..642a8e2b3c 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg @@ -12,18 +12,13 @@ material = generic_cpe variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset - diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg index 3637040c4c..1725da9733 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg @@ -12,18 +12,13 @@ material = generic_nylon variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset - diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg index 6cce98ca60..0bba4ccb0f 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg @@ -12,18 +12,13 @@ material = generic_nylon variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset - diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg index 32e0463447..f3a372c8b2 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg @@ -12,18 +12,13 @@ material = generic_pc variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset - diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality_Accurate.inst.cfg index 0b7ffb4154..cca4d4af10 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality_Accurate.inst.cfg @@ -12,18 +12,13 @@ material = generic_pc variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset - diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg index 186281c17c..6b06cb6164 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg @@ -12,18 +12,13 @@ material = generic_petg variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset - diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg index 545a8b5654..345dc02a8c 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg @@ -12,18 +12,13 @@ material = generic_petg variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset - diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg index 76d9191fc1..2baf1418a4 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg @@ -12,16 +12,12 @@ material = generic_pla variant = AA 0.4 [values] +infill_sparse_density = 15 +jerk_print = 30 speed_infill = =speed_print +speed_layer_0 = 20 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -speed_layer_0 = 20 top_bottom_thickness = 0.8 -infill_sparse_density = 15 - -jerk_print = 30 - - - diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg index ca098b5bfa..aa880fba07 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg @@ -12,17 +12,13 @@ material = generic_pla variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg index 472c0b4359..65b3df86d6 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg @@ -12,17 +12,13 @@ material = generic_pla variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg index 51cfaebe34..97d631d300 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg @@ -11,22 +11,17 @@ quality_type = verydraft material = generic_pla variant = AA 0.4 is_experimental = True - [values] -infill_sparse_density = 10 - -jerk_print = 30 - acceleration_print = 4000 acceleration_wall = 2000 acceleration_wall_0 = 2000 - -speed_print = 50 +infill_sparse_density = 10 +jerk_print = 30 speed_infill = =speed_print +speed_layer_0 = 20 +speed_print = 50 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -speed_layer_0 = 20 - -top_bottom_thickness = 0.8 \ No newline at end of file +top_bottom_thickness = 0.8 diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg index 7851ecd793..5c603860e5 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg @@ -12,16 +12,12 @@ material = generic_tough_pla variant = AA 0.4 [values] +infill_sparse_density = 15 +jerk_print = 30 speed_infill = =speed_print +speed_layer_0 = 20 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -speed_layer_0 = 20 top_bottom_thickness = 0.8 -infill_sparse_density = 15 - -jerk_print = 30 - - - diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg index 2b1b769595..69f421288c 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg @@ -12,17 +12,13 @@ material = generic_tough_pla variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg index daa327a2f5..079403efb2 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg @@ -12,17 +12,13 @@ material = generic_tough_pla variant = AA 0.4 [values] - jerk_print = 30 - -speed_print = 30 speed_infill = =speed_print speed_layer_0 = 20 +speed_print = 30 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall top_bottom_thickness = =wall_thickness - wall_thickness = =line_width * 3 -xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg index ec93cc5599..0b2666bf23 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg @@ -11,22 +11,17 @@ quality_type = verydraft material = generic_tough_pla variant = AA 0.4 is_experimental = True - [values] -infill_sparse_density = 10 - -jerk_print = 30 - acceleration_print = 4000 acceleration_wall = 2000 acceleration_wall_0 = 2000 - -speed_print = 50 +infill_sparse_density = 10 +jerk_print = 30 speed_infill = =speed_print +speed_layer_0 = 20 +speed_print = 50 speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -speed_layer_0 = 20 - -top_bottom_thickness = 0.8 \ No newline at end of file +top_bottom_thickness = 0.8 From ec4c18f09a03de43dff884a4a4f2cce37bbad795 Mon Sep 17 00:00:00 2001 From: joeydelarago Date: Thu, 1 Sep 2022 09:26:25 +0200 Subject: [PATCH 21/58] Remove unused CICD CURA-9483 --- CMakeLists.txt | 89 ----------------------------- Jenkinsfile | 74 ------------------------ cmake/CuraPluginInstall.cmake | 92 ------------------------------ cmake/CuraTests.cmake | 77 ------------------------- cmake/mod_bundled_packages_json.py | 73 ------------------------ 5 files changed, 405 deletions(-) delete mode 100644 CMakeLists.txt delete mode 100644 Jenkinsfile delete mode 100644 cmake/CuraPluginInstall.cmake delete mode 100644 cmake/CuraTests.cmake delete mode 100755 cmake/mod_bundled_packages_json.py diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 9d6e3c709b..0000000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright (c) 2022 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -# For MSVC flags, will be ignored on non-Windows OS's and this project in general. Only needed for cura-build-environment. -cmake_policy(SET CMP0091 NEW) -project(cura) -cmake_minimum_required(VERSION 3.18) - -include(GNUInstallDirs) - -list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) - -set(URANIUM_DIR "${CMAKE_SOURCE_DIR}/../Uranium" CACHE PATH "The location of the Uranium repository") -set(URANIUM_SCRIPTS_DIR "${URANIUM_DIR}/scripts" CACHE PATH "The location of the scripts directory of the Uranium repository") - -option(CURA_DEBUGMODE "Enable debug dialog and other debug features" OFF) -if(CURA_DEBUGMODE) - set(_cura_debugmode "ON") -endif() - -option(GENERATE_TRANSLATIONS "Should the translations be generated?" ON) - -set(CURA_APP_NAME "cura" CACHE STRING "Short name of Cura, used for configuration folder") -set(CURA_APP_DISPLAY_NAME "Ultimaker Cura" CACHE STRING "Display name of Cura") -set(CURA_VERSION "master" CACHE STRING "Version name of Cura") -set(CURA_BUILDTYPE "" CACHE STRING "Build type of Cura, eg. 'PPA'") -set(CURA_CLOUD_API_ROOT "" CACHE STRING "Alternative Cura cloud API root") -set(CURA_CLOUD_API_VERSION "" CACHE STRING "Alternative Cura cloud API version") -set(CURA_CLOUD_ACCOUNT_API_ROOT "" CACHE STRING "Alternative Cura cloud account API version") -set(CURA_MARKETPLACE_ROOT "" CACHE STRING "Alternative Marketplace location") -set(CURA_DIGITAL_FACTORY_URL "" CACHE STRING "Alternative Digital Factory location") - -configure_file(${CMAKE_SOURCE_DIR}/com.ultimaker.cura.desktop.in ${CMAKE_BINARY_DIR}/com.ultimaker.cura.desktop @ONLY) - -configure_file(cura/CuraVersion.py.in CuraVersion.py @ONLY) - -if(NOT DEFINED Python_VERSION) - set(Python_VERSION - 3.10 - CACHE STRING "Python Version" FORCE) - message(STATUS "Setting Python version to ${Python_VERSION}. Set Python_VERSION if you want to compile against an other version.") -endif() -if(APPLE) - set(Python_FIND_FRAMEWORK NEVER) -endif() -find_package(Python ${Python_VERSION} EXACT REQUIRED COMPONENTS Interpreter) -message(STATUS "Linking and building ${project_name} against Python ${Python_VERSION}") -if(NOT DEFINED Python_SITELIB_LOCAL) - set(Python_SITELIB_LOCAL - "${Python_SITELIB}" - CACHE PATH "Local alternative site-package location to install Cura" FORCE) -endif() - -# Tests -include(CuraTests) - -if(NOT ${URANIUM_DIR} STREQUAL "") - set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${URANIUM_DIR}/cmake") -endif() -if(NOT ${URANIUM_SCRIPTS_DIR} STREQUAL "") - list(APPEND CMAKE_MODULE_PATH ${URANIUM_DIR}/cmake) - include(UraniumTranslationTools) - # Extract Strings - add_custom_target(extract-messages ${URANIUM_SCRIPTS_DIR}/extract-messages ${CMAKE_SOURCE_DIR} cura) - # Build Translations - if(${GENERATE_TRANSLATIONS}) - CREATE_TRANSLATION_TARGETS() - endif() -endif() - -install(DIRECTORY resources DESTINATION ${CMAKE_INSTALL_DATADIR}/cura) - -include(CuraPluginInstall) - -install(FILES cura_app.py DESTINATION ${CMAKE_INSTALL_BINDIR} - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) -install(DIRECTORY cura DESTINATION "${Python_SITELIB_LOCAL}") -install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py DESTINATION "${Python_SITELIB_LOCAL}/cura/") -if(NOT APPLE AND NOT WIN32) - install(FILES ${CMAKE_BINARY_DIR}/com.ultimaker.cura.desktop - DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) - install(FILES ${CMAKE_SOURCE_DIR}/resources/images/cura-icon.png - DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/128x128/apps/) - install(FILES com.ultimaker.cura.appdata.xml - DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo) - install(FILES cura.sharedmimeinfo - DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages/ - RENAME cura.xml ) -endif() diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index a345ebbd05..0000000000 --- a/Jenkinsfile +++ /dev/null @@ -1,74 +0,0 @@ -parallel_nodes(['linux && cura', 'windows && cura']) -{ - timeout(time: 2, unit: "HOURS") - { - - // Prepare building - stage('Prepare') - { - // Ensure we start with a clean build directory. - step([$class: 'WsCleanup']) - - // Checkout whatever sources are linked to this pipeline. - checkout scm - } - - // If any error occurs during building, we want to catch it and continue with the "finale" stage. - catchError - { - // Building and testing should happen in a subdirectory. - dir('build') - { - // Perform the "build". Since Uranium is Python code, this basically only ensures CMake is setup. - stage('Build') - { - def branch = env.BRANCH_NAME - if(!fileExists("${env.CURA_ENVIRONMENT_PATH}/${branch}")) - { - branch = "master" - } - - // Ensure CMake is setup. Note that since this is Python code we do not really "build" it. - def uranium_dir = get_workspace_dir("Ultimaker/Uranium/${branch}") - cmake("..", "-DCMAKE_PREFIX_PATH=\"${env.CURA_ENVIRONMENT_PATH}/${branch}\" -DCMAKE_BUILD_TYPE=Release -DURANIUM_DIR=\"${uranium_dir}\"") - } - - // Try and run the unit tests. If this stage fails, we consider the build to be "unstable". - stage('Unit Test') - { - if (isUnix()) - { - // For Linux - try { - sh 'make CTEST_OUTPUT_ON_FAILURE=TRUE test' - } catch(e) - { - currentBuild.result = "UNSTABLE" - } - } - else - { - // For Windows - try - { - // This also does code style checks. - bat 'ctest -V' - } catch(e) - { - currentBuild.result = "UNSTABLE" - } - } - } - } - } - - // Perform any post-build actions like notification and publishing of unit tests. - stage('Finalize') - { - // Publish the test results to Jenkins. - junit allowEmptyResults: true, testResults: 'build/junit*.xml' - - notify_build_result(env.CURA_EMAIL_RECIPIENTS, '#cura-dev', ['master', '2.']) - } - } -} diff --git a/cmake/CuraPluginInstall.cmake b/cmake/CuraPluginInstall.cmake deleted file mode 100644 index 79b86ebdc6..0000000000 --- a/cmake/CuraPluginInstall.cmake +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright (c) 2022 Ultimaker B.V. -# CuraPluginInstall.cmake is released under the terms of the LGPLv3 or higher. - -# -# This module detects all plugins that need to be installed and adds them using the CMake install() command. -# It detects all plugin folder in the path "plugins/*" where there's a "plugin.json" in it. -# -# Plugins can be configured to NOT BE INSTALLED via the variable "CURA_NO_INSTALL_PLUGINS" as a list of string in the -# form of "a;b;c" or "a,b,c". By default all plugins will be installed. -# - -option(PRINT_PLUGIN_LIST "Should the list of plugins that are installed be printed?" ON) - -# Options or configuration variables -set(CURA_NO_INSTALL_PLUGINS "" CACHE STRING "A list of plugins that should not be installed, separated with ';' or ','.") - -file(GLOB_RECURSE _plugin_json_list ${CMAKE_SOURCE_DIR}/plugins/*/plugin.json) -list(LENGTH _plugin_json_list _plugin_json_list_len) - -# Sort the lists alphabetically so we can handle cases like this: -# - plugins/my_plugin/plugin.json -# - plugins/my_plugin/my_module/plugin.json -# In this case, only "plugins/my_plugin" should be added via install(). -set(_no_install_plugin_list ${CURA_NO_INSTALL_PLUGINS}) -# Sanitize the string so the comparison will be case-insensitive. -string(STRIP "${_no_install_plugin_list}" _no_install_plugin_list) -string(TOLOWER "${_no_install_plugin_list}" _no_install_plugin_list) - -# WORKAROUND counterpart of what's in cura-build. -string(REPLACE "," ";" _no_install_plugin_list "${_no_install_plugin_list}") - -list(LENGTH _no_install_plugin_list _no_install_plugin_list_len) - -if(_no_install_plugin_list_len GREATER 0) - list(SORT _no_install_plugin_list) -endif() -if(_plugin_json_list_len GREATER 0) - list(SORT _plugin_json_list) -endif() - -# Check all plugin directories and add them via install() if needed. -set(_install_plugin_list "") -foreach(_plugin_json_path ${_plugin_json_list}) - get_filename_component(_plugin_dir ${_plugin_json_path} DIRECTORY) - file(RELATIVE_PATH _rel_plugin_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_plugin_dir}) - get_filename_component(_plugin_dir_name ${_plugin_dir} NAME) - - # Make plugin name comparison case-insensitive - string(TOLOWER "${_plugin_dir_name}" _plugin_dir_name_lowercase) - - # Check if this plugin needs to be skipped for installation - set(_add_plugin ON) # Indicates if this plugin should be added to the build or not. - set(_is_no_install_plugin OFF) # If this plugin will not be added, this indicates if it's because the plugin is - # specified in the NO_INSTALL_PLUGINS list. - if(_no_install_plugin_list) - if("${_plugin_dir_name_lowercase}" IN_LIST _no_install_plugin_list) - set(_add_plugin OFF) - set(_is_no_install_plugin ON) - endif() - endif() - - # Make sure this is not a subdirectory in a plugin that's already in the install list - if(_add_plugin) - foreach(_known_install_plugin_dir ${_install_plugin_list}) - if(_plugin_dir MATCHES "${_known_install_plugin_dir}.+") - set(_add_plugin OFF) - break() - endif() - endforeach() - endif() - - if(_add_plugin) - if(${PRINT_PLUGIN_LIST}) - message(STATUS "[+] PLUGIN TO INSTALL: ${_rel_plugin_dir}") - endif() - get_filename_component(_rel_plugin_parent_dir ${_rel_plugin_dir} DIRECTORY) - install(DIRECTORY ${_rel_plugin_dir} - DESTINATION lib${LIB_SUFFIX}/cura/${_rel_plugin_parent_dir} - PATTERN "__pycache__" EXCLUDE - PATTERN "*.qmlc" EXCLUDE - ) - list(APPEND _install_plugin_list ${_plugin_dir}) - elseif(_is_no_install_plugin) - if(${PRINT_PLUGIN_LIST}) - message(STATUS "[-] PLUGIN TO REMOVE : ${_rel_plugin_dir}") - endif() - execute_process(COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/mod_bundled_packages_json.py - -d ${CMAKE_CURRENT_SOURCE_DIR}/resources/bundled_packages - ${_plugin_dir_name} - RESULT_VARIABLE _mod_json_result) - endif() -endforeach() diff --git a/cmake/CuraTests.cmake b/cmake/CuraTests.cmake deleted file mode 100644 index 09e8dadbab..0000000000 --- a/cmake/CuraTests.cmake +++ /dev/null @@ -1,77 +0,0 @@ -# Copyright (c) 2022 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -include(CTest) -include(CMakeParseArguments) - -add_custom_target(test-verbose COMMAND ${CMAKE_CTEST_COMMAND} --verbose) - -function(cura_add_test) - set(_single_args NAME DIRECTORY PYTHONPATH) - cmake_parse_arguments("" "" "${_single_args}" "" ${ARGN}) - - if(NOT _NAME) - message(FATAL_ERROR "cura_add_test requires a test name argument") - endif() - - if(NOT _DIRECTORY) - message(FATAL_ERROR "cura_add_test requires a directory to test") - endif() - - if(NOT _PYTHONPATH) - set(_PYTHONPATH ${_DIRECTORY}) - endif() - - if(WIN32) - string(REPLACE "|" "\\;" _PYTHONPATH ${_PYTHONPATH}) - set(_PYTHONPATH "${_PYTHONPATH}\\;$ENV{PYTHONPATH}") - else() - string(REPLACE "|" ":" _PYTHONPATH ${_PYTHONPATH}) - set(_PYTHONPATH "${_PYTHONPATH}:$ENV{PYTHONPATH}") - endif() - - get_test_property(${_NAME} ENVIRONMENT test_exists) #Find out if the test exists by getting a property from it that always exists (such as ENVIRONMENT because we set that ourselves). - if (NOT ${test_exists}) - add_test( - NAME ${_NAME} - COMMAND ${Python_EXECUTABLE} -m pytest --junitxml=${CMAKE_BINARY_DIR}/junit-${_NAME}.xml ${_DIRECTORY} - ) - set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT LANG=C) - set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT "PYTHONPATH=${_PYTHONPATH}") - else() - message(WARNING "Duplicate test ${_NAME}!") - endif() -endfunction() - - -#Add code style test. -add_test( - NAME "code-style" - COMMAND ${Python_EXECUTABLE} run_mypy.py - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} -) - -#Add test for import statements which are not compatible with all builds -add_test( - NAME "invalid-imports" - COMMAND ${Python_EXECUTABLE} scripts/check_invalid_imports.py - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} -) - -cura_add_test(NAME pytest-main DIRECTORY ${CMAKE_SOURCE_DIR}/tests PYTHONPATH "${CMAKE_SOURCE_DIR}|${URANIUM_DIR}") - -file(GLOB_RECURSE _plugins plugins/*/__init__.py) -foreach(_plugin ${_plugins}) - get_filename_component(_plugin_directory ${_plugin} DIRECTORY) - if(EXISTS ${_plugin_directory}/tests) - get_filename_component(_plugin_name ${_plugin_directory} NAME) - cura_add_test(NAME pytest-${_plugin_name} DIRECTORY ${_plugin_directory} PYTHONPATH "${_plugin_directory}|${CMAKE_SOURCE_DIR}|${URANIUM_DIR}") - endif() -endforeach() - -#Add test for whether the shortcut alt-keys are unique in every translation. -add_test( - NAME "shortcut-keys" - COMMAND ${Python_EXECUTABLE} scripts/check_shortcut_keys.py - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} -) diff --git a/cmake/mod_bundled_packages_json.py b/cmake/mod_bundled_packages_json.py deleted file mode 100755 index e03261b479..0000000000 --- a/cmake/mod_bundled_packages_json.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env python3 -# -# This script removes the given package entries in the bundled_packages JSON files. This is used by the PluginInstall -# CMake module. -# - -import argparse -import collections -import json -import os -import sys - - -def find_json_files(work_dir: str) -> list: - """Finds all JSON files in the given directory recursively and returns a list of those files in absolute paths. - - :param work_dir: The directory to look for JSON files recursively. - :return: A list of JSON files in absolute paths that are found in the given directory. - """ - - json_file_list = [] - for root, dir_names, file_names in os.walk(work_dir): - for file_name in file_names: - abs_path = os.path.abspath(os.path.join(root, file_name)) - json_file_list.append(abs_path) - return json_file_list - - -def remove_entries_from_json_file(file_path: str, entries: list) -> None: - """Removes the given entries from the given JSON file. The file will modified in-place. - - :param file_path: The JSON file to modify. - :param entries: A list of strings as entries to remove. - :return: None - """ - - try: - with open(file_path, "r", encoding = "utf-8") as f: - package_dict = json.load(f, object_hook = collections.OrderedDict) - except Exception as e: - msg = "Failed to load '{file_path}' as a JSON file. This file will be ignored Exception: {e}"\ - .format(file_path = file_path, e = e) - sys.stderr.write(msg + os.linesep) - return - - for entry in entries: - if entry in package_dict: - del package_dict[entry] - print("[INFO] Remove entry [{entry}] from [{file_path}]".format(file_path = file_path, entry = entry)) - - try: - with open(file_path, "w", encoding = "utf-8", newline = "\n") as f: - json.dump(package_dict, f, indent = 4) - except Exception as e: - msg = "Failed to write '{file_path}' as a JSON file. Exception: {e}".format(file_path = file_path, e = e) - raise IOError(msg) - - -def main() -> None: - parser = argparse.ArgumentParser("mod_bundled_packages_json") - parser.add_argument("-d", "--dir", dest = "work_dir", - help = "The directory to look for bundled packages JSON files, recursively.") - parser.add_argument("entries", metavar = "ENTRIES", type = str, nargs = "+") - - args = parser.parse_args() - - json_file_list = find_json_files(args.work_dir) - for json_file_path in json_file_list: - remove_entries_from_json_file(json_file_path, args.entries) - - -if __name__ == "__main__": - main() From 8bb2671a28aaf213ba3ee98f967a0c26b336016e Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Fri, 2 Sep 2022 15:35:59 +0200 Subject: [PATCH 22/58] Don't show abstract machines in configuration page So they cannot be removed through the preferences CURA-9289 --- cura/Machines/Models/GlobalStacksModel.py | 22 ++++++++++++++++++++++ resources/qml/Preferences/MachinesPage.qml | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/cura/Machines/Models/GlobalStacksModel.py b/cura/Machines/Models/GlobalStacksModel.py index 8f13d34ccf..69f2ec3822 100644 --- a/cura/Machines/Models/GlobalStacksModel.py +++ b/cura/Machines/Models/GlobalStacksModel.py @@ -44,6 +44,7 @@ class GlobalStacksModel(ListModel): self._filter_connection_type = None # type: Optional[ConnectionType] self._filter_online_only = False self._filter_capabilities: List[str] = [] # Required capabilities that all listed printers must have. + self._filter_abstract_machines: Optional[bool] = None # Listen to changes CuraContainerRegistry.getInstance().containerAdded.connect(self._onContainerChanged) @@ -54,6 +55,7 @@ class GlobalStacksModel(ListModel): filterConnectionTypeChanged = pyqtSignal() filterCapabilitiesChanged = pyqtSignal() filterOnlineOnlyChanged = pyqtSignal() + filterAbstractMachinesChanged = pyqtSignal() def setFilterConnectionType(self, new_filter: Optional[ConnectionType]) -> None: if self._filter_connection_type != new_filter: @@ -98,6 +100,22 @@ class GlobalStacksModel(ListModel): """ return self._filter_capabilities + def setFilterAbstractMachines(self, new_filter: Optional[bool]) -> None: + if self._filter_abstract_machines != new_filter: + self._filter_abstract_machines = new_filter + self.filterAbstractMachinesChanged.emit() + + @pyqtProperty(bool, fset = setFilterAbstractMachines, notify = filterAbstractMachinesChanged) + def filterAbstractMachines(self) -> Optional[bool]: + """ + Weather we include abstract printers, non-abstract printers or both + + if this is set to None both abstract and non-abstract printers will be included in the list + set to True will only include abstract printers + set to False will only inclde non-abstract printers + """ + return self._filter_abstract_machines + def _onContainerChanged(self, container) -> None: """Handler for container added/removed events from registry""" @@ -130,6 +148,10 @@ class GlobalStacksModel(ListModel): if self._filter_online_only and not is_online: continue + is_abstract_machine = parseBool(container_stack.getMetaDataEntry("is_abstract_machine", False)) + if self._filter_abstract_machines is not None and self._filter_abstract_machines is not is_abstract_machine: + continue + capabilities = set(container_stack.getMetaDataEntry(META_CAPABILITIES, "").split(",")) if set(self._filter_capabilities) - capabilities: # Not all required capabilities are met. continue diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml index c77545bc03..258b45292e 100644 --- a/resources/qml/Preferences/MachinesPage.qml +++ b/resources/qml/Preferences/MachinesPage.qml @@ -17,7 +17,7 @@ UM.ManagementPage title: catalog.i18nc("@title:tab", "Printers") detailsPlaneCaption: base.currentItem && base.currentItem.name ? base.currentItem.name : "" - model: Cura.GlobalStacksModel { } + model: Cura.GlobalStacksModel { filterAbstractMachines: false } sectionRole: "discoverySource" From 27fc11b8404ed84a9b95b2fdddab239d2cd3c93b Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Fri, 2 Sep 2022 15:48:22 +0200 Subject: [PATCH 23/58] Prevent abstract machines from being deleted in the config menu CURA-9277 --- cura/Machines/Models/GlobalStacksModel.py | 3 ++- resources/qml/Preferences/MachinesPage.qml | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cura/Machines/Models/GlobalStacksModel.py b/cura/Machines/Models/GlobalStacksModel.py index 69f2ec3822..62b470daee 100644 --- a/cura/Machines/Models/GlobalStacksModel.py +++ b/cura/Machines/Models/GlobalStacksModel.py @@ -172,6 +172,7 @@ class GlobalStacksModel(ListModel): "metadata": container_stack.getMetaData().copy(), "discoverySource": section_name, "removalWarning": removal_warning, - "isOnline": is_online}) + "isOnline": is_online, + "isAbstractMachine": is_abstract_machine}) items.sort(key=lambda i: (not i["hasRemoteConnection"], i["name"])) self.setItems(items) diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml index 258b45292e..16f144cf85 100644 --- a/resources/qml/Preferences/MachinesPage.qml +++ b/resources/qml/Preferences/MachinesPage.qml @@ -17,7 +17,7 @@ UM.ManagementPage title: catalog.i18nc("@title:tab", "Printers") detailsPlaneCaption: base.currentItem && base.currentItem.name ? base.currentItem.name : "" - model: Cura.GlobalStacksModel { filterAbstractMachines: false } + model: Cura.GlobalStacksModel { } sectionRole: "discoverySource" @@ -139,7 +139,7 @@ UM.ManagementPage Cura.MenuItem { text: catalog.i18nc("@action:button", "Remove") - enabled: base.currentItem != null && model.count > 1 + enabled: base.currentItem != null && model.count > 1 && !base.currentItem.isAbstractMachine onTriggered: confirmDialog.open() } Cura.MenuItem From 6d0acbe0952408cbe4c08961127a99ee7d8be59e Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Fri, 2 Sep 2022 16:28:10 +0200 Subject: [PATCH 24/58] Always show correct number of connected machines Calculate number of connected machines _after_ the abstract machine its connected is removed from the list CURA-9277 --- cura/Machines/Models/MachineListModel.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cura/Machines/Models/MachineListModel.py b/cura/Machines/Models/MachineListModel.py index 55db072180..d3ae8f7acb 100644 --- a/cura/Machines/Models/MachineListModel.py +++ b/cura/Machines/Models/MachineListModel.py @@ -89,12 +89,13 @@ class MachineListModel(ListModel): machines_manager = CuraApplication.getInstance().getMachineManager() online_machine_stacks = machines_manager.getMachinesWithDefinition(definition_id, online_only = True) - # Create a list item for abstract machine - self.addItem(abstract_machine, len(online_machine_stacks)) other_machine_stacks.remove(abstract_machine) if abstract_machine in online_machine_stacks: online_machine_stacks.remove(abstract_machine) + # Create a list item for abstract machine + self.addItem(abstract_machine, len(online_machine_stacks)) + # Create list of machines that are children of the abstract machine for stack in online_machine_stacks: if self._show_cloud_printers: From ce6d7d72bd0194e3146e153450ce7d3fa7045d30 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Mon, 5 Sep 2022 11:14:13 +0200 Subject: [PATCH 25/58] Fix calculating number of removed devices CURA-9277 --- .../UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py b/plugins/UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py index c875eb183a..caed6ddf91 100644 --- a/plugins/UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py +++ b/plugins/UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py @@ -31,7 +31,7 @@ class RemovedPrintersMessage(Message): super().__init__(title=self.i18n_catalog.i18ncp("info:status", "A cloud connection is not available for a printer", "A cloud connection is not available for some printers", - len(self.removed_devices)), + len(self._removed_devices)), message_type=Message.MessageType.WARNING, text = message_text) From 48b8585ce669a1e52bb21968a727acc8268cae3e Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Mon, 5 Sep 2022 11:44:29 +0200 Subject: [PATCH 26/58] Make sure online printers are always shown in the correct tab CURA-9277 --- cura/Machines/Models/MachineListModel.py | 27 +++++++++++++----------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/cura/Machines/Models/MachineListModel.py b/cura/Machines/Models/MachineListModel.py index d3ae8f7acb..ead1061a05 100644 --- a/cura/Machines/Models/MachineListModel.py +++ b/cura/Machines/Models/MachineListModel.py @@ -89,17 +89,27 @@ class MachineListModel(ListModel): machines_manager = CuraApplication.getInstance().getMachineManager() online_machine_stacks = machines_manager.getMachinesWithDefinition(definition_id, online_only = True) + def online_machines_has_connection_filter(machine_stack): + # This is required because machines loaded from projects have the is_online="True" but no connection type. + # We want to display them the same way as unconnected printers in this case. + has_connection = False + for connection_type in [ConnectionType.NetworkConnection.value, ConnectionType.CloudConnection.value]: + has_connection |= connection_type in machine_stack.configuredConnectionTypes + return has_connection + + online_machine_stacks = list(filter(online_machines_has_connection_filter, online_machine_stacks)) + other_machine_stacks.remove(abstract_machine) if abstract_machine in online_machine_stacks: online_machine_stacks.remove(abstract_machine) # Create a list item for abstract machine - self.addItem(abstract_machine, len(online_machine_stacks)) + self.addItem(abstract_machine, True, len(online_machine_stacks)) # Create list of machines that are children of the abstract machine for stack in online_machine_stacks: if self._show_cloud_printers: - self.addItem(stack) + self.addItem(stack, True) # Remove this machine from the other stack list if stack in other_machine_stacks: other_machine_stacks.remove(stack) @@ -119,25 +129,18 @@ class MachineListModel(ListModel): }) for stack in other_machine_stacks: - self.addItem(stack) + self.addItem(stack, False) - def addItem(self, container_stack: ContainerStack, machine_count: int = 0) -> None: + def addItem(self, container_stack: ContainerStack, is_online, machine_count: int = 0) -> None: if parseBool(container_stack.getMetaDataEntry("hidden", False)): return - # This is required because machines loaded from projects have the is_online="True" but no connection type. - # We want to display them the same way as unconnected printers in this case. - has_connection = False - has_connection |= parseBool(container_stack.getMetaDataEntry("is_abstract_machine", False)) - for connection_type in [ConnectionType.NetworkConnection.value, ConnectionType.CloudConnection.value]: - has_connection |= connection_type in container_stack.configuredConnectionTypes - self.appendItem({ "componentType": "MACHINE", "name": container_stack.getName(), "id": container_stack.getId(), "metadata": container_stack.getMetaData().copy(), - "isOnline": parseBool(container_stack.getMetaDataEntry("is_online", False)) and has_connection, + "isOnline": is_online, "isAbstractMachine": parseBool(container_stack.getMetaDataEntry("is_abstract_machine", False)), "machineCount": machine_count, }) From db6e7d57f93a9845f1a6460d9835800ac02aee48 Mon Sep 17 00:00:00 2001 From: KOONOVO3DPrinter Date: Mon, 5 Sep 2022 20:08:59 +0800 Subject: [PATCH 27/58] Add tank-M machine (#13036) CURA-9605 --- resources/definitions/tank_m3.def.json | 25 ++++ resources/definitions/tank_m3_max.def.json | 24 ++++ resources/definitions/tank_m_base.def.json | 124 ++++++++++++++++++ .../extruders/tank_m_base_extruder_0.def.json | 16 +++ resources/images/tank_m.png | Bin 0 -> 66583 bytes resources/meshes/tank_m.obj | 60 +++++++++ .../quality/tank_m_base_global_draft.inst.cfg | 17 +++ .../quality/tank_m_base_global_high.inst.cfg | 18 +++ .../tank_m_base_global_standard.inst.cfg | 18 +++ 9 files changed, 302 insertions(+) create mode 100644 resources/definitions/tank_m3.def.json create mode 100644 resources/definitions/tank_m3_max.def.json create mode 100644 resources/definitions/tank_m_base.def.json create mode 100644 resources/extruders/tank_m_base_extruder_0.def.json create mode 100644 resources/images/tank_m.png create mode 100644 resources/meshes/tank_m.obj create mode 100644 resources/quality/tank_m_base_global_draft.inst.cfg create mode 100644 resources/quality/tank_m_base_global_high.inst.cfg create mode 100644 resources/quality/tank_m_base_global_standard.inst.cfg diff --git a/resources/definitions/tank_m3.def.json b/resources/definitions/tank_m3.def.json new file mode 100644 index 0000000000..9a65397a64 --- /dev/null +++ b/resources/definitions/tank_m3.def.json @@ -0,0 +1,25 @@ +{ + "name": "Tank M3", + "version": 2, + "inherits": "tank_m_base", + "overrides": { + "machine_name": { "default_value": "Tank M3" }, + "machine_width": { "default_value": 235 }, + "machine_depth": { "default_value": 235 }, + "machine_height": { "default_value": 250 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 0 } + + }, + "metadata": { + "quality_definition": "tank_m_base", + "visible": true + } +} diff --git a/resources/definitions/tank_m3_max.def.json b/resources/definitions/tank_m3_max.def.json new file mode 100644 index 0000000000..ef271dc2f5 --- /dev/null +++ b/resources/definitions/tank_m3_max.def.json @@ -0,0 +1,24 @@ +{ + "name": "Tank M3 Max", + "version": 2, + "inherits": "tank_m_base", + "overrides": { + "machine_name": { "default_value": "Tank M3 Max" }, + "machine_width": { "default_value": 310 }, + "machine_depth": { "default_value": 310 }, + "machine_height": { "default_value": 400 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 0 } + }, + "metadata": { + "quality_definition": "tank_m_base", + "visible": true + } +} diff --git a/resources/definitions/tank_m_base.def.json b/resources/definitions/tank_m_base.def.json new file mode 100644 index 0000000000..e4f465d39e --- /dev/null +++ b/resources/definitions/tank_m_base.def.json @@ -0,0 +1,124 @@ +{ + "name": "tank_m Base Printer", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": false, + "author": "tank_m", + "manufacturer": "tank_m", + "file_formats": "text/x-gcode", + "platform": "tank_m.obj", + "platform_texture": "tank_m.png", + + "first_start_actions": [ "MachineSettingsAction" ], + "machine_extruder_trains": {"0": "tank_m_base_extruder_0"}, + + "has_materials": true, + "has_machine_quality": true, + + + "preferred_quality_type": "standard", + "preferred_material": "generic_pla" + }, + + + "overrides": { + "machine_start_gcode": { + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Move to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nM117 Printing..." + }, + "machine_end_gcode": { + "default_value": "M104 T0 S0 ;1st extruder heater off\nM104 T1 S0 ;2nd extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" + }, + + "machine_max_feedrate_x": { "value": 500 }, + "machine_max_feedrate_y": { "value": 500 }, + "machine_max_feedrate_z": { "value": 50 }, + "machine_max_feedrate_e": { "value": 500 }, + + "machine_max_acceleration_x": { "value": 2500 }, + "machine_max_acceleration_y": { "value": 2500 }, + "machine_max_acceleration_z": { "value": 100 }, + "machine_max_acceleration_e": { "value": 2000 }, + "machine_acceleration": { "value": 2500 }, + + "machine_heated_bed": { "default_value": true }, + + "material_diameter": { "default_value": 1.75 }, + + + "acceleration_print": { "value": 2500 }, + "acceleration_travel": { "value": 2500 }, + + "line_width": { "value": "machine_nozzle_size" }, + + "wall_thickness": {"value": "line_width * 2" }, + + "top_bottom_thickness": {"value": "layer_height_0 + layer_height * 3" }, + + "infill_sparse_density": { "value": "15" }, + "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, + + "material_print_temperature": { "value": "195" }, + "material_print_temperature_layer_0": { "value": "material_print_temperature" }, + "material_initial_print_temperature": { "value": "material_print_temperature" }, + "material_final_print_temperature": { "value": "material_print_temperature" }, + "material_bed_temperature": { "value": "55" }, + "material_bed_temperature_layer_0": { "value": "material_bed_temperature" }, + "material_flow": { "value": 100 }, + "material_standby_temperature": { "value": "material_print_temperature" }, + + + "speed_print": { "value": 50.0 } , + "speed_infill": { "value": "speed_print" }, + "speed_wall": { "value": "speed_print / 2" }, + "speed_wall_0": { "value": "speed_wall" }, + "speed_wall_x": { "value": "speed_wall" }, + "speed_topbottom": { "value": "speed_print / 2" }, + "speed_travel": { "value": "120.0 if speed_print < 60 else 300.0 if speed_print > 100 else speed_print * 2.2" }, + "speed_layer_0": { "value": 25.0 }, + "speed_print_layer_0": { "value": "speed_layer_0" }, + "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 25 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, + "speed_prime_tower": { "value": "speed_topbottom" }, + "speed_support": { "value": "speed_wall_0" }, + "speed_z_hop": { "value": 5 }, + + "retraction_enable": { "value": true }, + "retraction_amount": { "value": 1.0 }, + "retraction_speed": { "value": 40 }, + + "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, + "cool_fan_enabled": { "value": true }, + "cool_min_layer_time": { "value": 10 }, + + + "support_brim_enable": { "value": true }, + "support_angle": { "value": "math.floor(math.degrees(math.atan(line_width/2.0/layer_height)))" }, + "support_pattern": { "value": "'zigzag'" }, + "support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" }, + "support_use_towers": { "value": false }, + "support_xy_distance": { "value": "wall_line_width_0 * 2" }, + "support_xy_distance_overhang": { "value": "wall_line_width_0" }, + "support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height*2" }, + "support_xy_overrides_z": { "value": "'xy_overrides_z'" }, + "support_wall_count": { "value": 1 }, + "support_brim_width": { "value": 4 }, + + "support_enable": { "value": true }, + "support_interface_enable": { "value": true }, + "support_interface_height": { "value": "layer_height * 4" }, + "support_interface_density": { "value": 33.333 }, + "support_interface_pattern": { "value": "'grid'" }, + "support_interface_skip_height": { "value": 0.2 }, + "minimum_support_area": { "value": 2 }, + "minimum_interface_area": { "value": 10 }, + + "fill_outline_gaps": { "value": false }, + + "adhesion_type": { "value": "'skirt'" }, + "brim_replaces_support": { "value": false }, + "skirt_gap": { "value": 6.0 }, + "skirt_line_count": { "value": 3 } + + + } +} diff --git a/resources/extruders/tank_m_base_extruder_0.def.json b/resources/extruders/tank_m_base_extruder_0.def.json new file mode 100644 index 0000000000..64bafe97d2 --- /dev/null +++ b/resources/extruders/tank_m_base_extruder_0.def.json @@ -0,0 +1,16 @@ +{ + "version": 2, + "name": "Extruder 0", + "inherits": "fdmextruder", + "metadata": { + "machine": "tank_m_base", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + + } +} diff --git a/resources/images/tank_m.png b/resources/images/tank_m.png new file mode 100644 index 0000000000000000000000000000000000000000..b5c93afc5a1c18d50886ec377186bdac650f81f5 GIT binary patch literal 66583 zcmeEuhdW&D*8UbLM39IQJqaSZsL_Rp9-@oh>lle%N1`PJLG(`a-bOb>bVEcpdJUs9 zM)%u!-|w97_y4St#wfLy|QkL*0)lC2Z2<7FTs{z2(+22pR z>)#Hqz3ns@70vsFO9+@xHvY^nJ&-P)i$o z3jlDROi_2!iN=zP&tffzwWP*(%H!DX!GYVzt?zsCTv-yM=ikt>Xqgo@Jo-i) zl60vVs$HVAG&czdHknK_nz$E3#V>j1p>v_Whv2&xD9;_>O`>E%aZ8r}`5O}l*Alhx z)!wU8PaLqT3>Te&u=8-1!3Dl@eRi^tU7e4$st=VrJ?hjVpFil1Ss+=1@$Ayap5sTm z5duX)DlISJH>!K>TYR^0u7ncl{B#8*efK#&Q4vG}x2^biJg@)|jW~{wWWxcFabFh! zpz+r|{k$&}N*#Cr@I3t;YuU3Kw^~VyT8NTcX&YN8u9#eZE_sWwMfA4R^(8-=n;G|F zpHXVG2#;T_F2kitzmqtByQ=lcQ^M6b68(2*M~dsl_fo&zYYf7_`m77@uE_)84|hz% z#~=3NQ6z+4eP|-b7v=Z${@Mr9R}b5}-hRE3FJ&8PAjh!B@s?C5OkeWkGpg%8PsmwF zqwJF}?thv>T+Vq7(CjXXXwn{&H~!d_uy_{05&8 zS$>)@(f<@IWBgHv>QN`T*|HA5Rs_Ept&X588Ffpl$u=J2l~BLC8+e8Rx4+rH|NL22 zM@dIIk7hBz;7Y3d^J0bM=Bw`;1x1Ibr`SUgK*kwc}TjeDwle2{#`zo zL?&bsxpePWj;xU%i8fX?SZl5|=X(5Ue>$1CA8|kJe%)AGUGqP1yG0m8=-(-4`k2y= z(u*?pUJWHzf>O@4p}2%D4el`>>IAEJ;&`a04(lPSH(6v4NsMreR*Y}VYJrBPlcvOo zM*)FGp(b&mp_Wh13(ZQ^#eDo>^1_jPTFr)hfs%eTH?;`WfmcRZ%|_?%Ps|7_f&yQp z2gzk=nALPphCLwf;IY`%ks5ugg^Omli&r+)t2o|Ja=ms+?aJk)q%Q4LU|D1tX_>O} z28lz|Q9idLG?A>(|Dd0+--`p6LxQ7x)VA2N*tb}4(sQzT(sc9fCiy0Ma@)l*MKXmw z1tSa*#=79w3)H`=53EPI46KU}nV~(_@G(6YqP6KkSq$VL3q!HKJ-R(eFUZY@C-9ll z{>f9boxaazzwF{|Y6o`$=JW3KTGvN@x6T@r&tk59v=wZ%$nQ=eZdnASF)iYov6!+G zH8Hi}L4E!HwSB3X1^LA;(XxK9YRI{-uZw-EXuPO2tMrY(#&Z z=WEOVp5L~nZAERB;gqt^Pm!bextAo)HI70Zk{goikmlJNvrM&B|Fe1sla+kSSigVkAh)3=zCo0R))|MM!Bp{t>;;b{|{N@en+)KP9o z7wWs-TvM-?v9P$9#Yz7fu6T#|l{C+^;O3m>hqGeM48Ehj3BEVZQcp!rde0+{5c3{; zaguCyN65Z&X@Sp*_+1tL*oMWZ6J~-ZoIa&J;we&WW2^7aZq%5pF z1)S@zs??p|IAhsIi?rtM-Y!$xDeEvCd{C%Tt+k6f0}}y{T@Zy8ODIy`Kiglf+d> zEc@S=Qsug*vYhLnOnY}PASqBqra3b#^Hq6Gt%7LON{Uv@;nQgmAL$e8Ae9#`9lZD| zYHS{nlu>mI`^s9+M`wx#Cf-bN2z^QZlANVRXcJq-HpX4^xJJd2jV+pR$zui5LmeI5 zgI!`ccG^dg*#{~OW>u+`s1lJYapkeO>)q3Hua#?(dp*oMYk9GL%s}v-+`H*>nQCoW z<#?^T?(W<}giHfDL#R518|M=PwR&@Ro1LFNz1F=IvFEA_I%=AGwjNV^;cEUrv$Lhy z-fQ#4Y_RmZ^;(3Ny|bp0=29WEHXpiOX-ozp2*; zFGB5Q2xJ|4roaq(wa$wRYnmq>O^za_-MsdR{AtNVX12dgi>kje`rD@3kh2M}8Vnv<&V%izFv6vXBMXu)meI8R>r++=ts$*! zbIqmi_LD_3mrni&?bP&?$6~w3OYfr>bIo&8Q(j7l4JS-_V3p1i>g@T#sp5dn+4v5@ap(Y|#3O(I?RH^)sc41nX++UBD;b<0|zc1&Az6t)%i%bE~ zzpwlh@jwdw*CXzB^Z)!q&IjJOf4`3l9GU2jIVH^e-p)FLU_I3@!g3urF37z>kVqei(2Z zT-hQtY=^Hib%x7@t23jtl*nD5-+8IylKj~`fv`feXw06M6=f+`j!a+Bp_?doo+#&^ z5a4fzYk(Ic0vg@rWE172BRrZT0_NRs7+2XPI-?fxWTR-*2iX-z+4Z706xG-jwUqU= zZYiqW($iAX>k8uN4dSr5rv7Rur|45sMXa+qWH>73iK1E*oG}6wl}sAN=b*S(n_-PV z|Ka;ds`4YfbD5_^`~Z+1`S`hU}hS zZaG9AP9qOj*5&2U<+v9TTVq~r-21x!%SbW@8>PCMdTh~G8hLr$il_>6CKG&%7PYGA zoPsox@aW^&&ua-+ga*zAFk(p?i8F7WUS0>%;jcMC%AJQ{z?r9Zgm0lI=d@`XG%Jy= z69SgKv4a^CFDfl5ITAJPhl|uw9LT>FK-~E&e+?FAY6}t+SW<>C(mbG%jSA!lSd;?~ zVWK?nb~vL*`0WMkr4b%@I1d6oe@{SM`Zzuk>Q6hHHkW7u-%~PX#+Q{_z|K$8OEvPs zxcVE_OcW~|8IP5GAIX0s2d~y(mo=XmJHKdle&MgoJ5~tFj8oEOqby+7QxnCP9_+j& zL(gvk8CIdF7q^FFdJJ-$uPO}PDAH!O`GGLie?aO%I8#mzg!bM3~#fDBw zfo5Xv_=^3AfSv}*TGc-5S@owE)9j-jVfOwGG2S7Nf)I!;__+Y`I8j%F5A~V9@Ue}h zyqf)f!sjAaAt{oe0s`sXr#YDuK}D#XOx>I!-JHyX*rG)E*LV+P8oTv76X`)&4qbVj z3Smpuld_Coxf~B@1ud2j>S^6Dn%aLGJm)_QZrgcoK)udr(y7sF{e{*m)|L`d0D;?T zDsj2iUyP=*S$~ln)64F?uVr}Qr@pu-Wo9@*EA|m zKi-!aN#Y?DvsiC^pobwOv+ziN+}#vgMEp8j$hv3!gQ}=B+S6e`W0-p7j2iHpw5ogc9C$>Scpgto(LmNCo?Kmo7^?afjkav`KH-6j!M)rW5P(O=K0>o zdPngsd~)?7zz9ceCSGg{+GWucS)RO3%~~+?KpKOI;kz`E){4-rAaP?9Vh;GiN9LmM zy0OdVwe>h=ntJ~K{A}-}2EncnGdLUkiIHFk#ZhPi!IkU-Zy3waFE$JRcWOP}dme+yFkC=Y zor3}_D~C@a{n)R>tiIzHMDA175r|p(#yF6#oPOFkQ#EPi(6~p8wtV%fII3te=<8$- zBPw=|&VFRzPE?t>rcTBBy^xiAA)V!bH9~r0QIl=NYQ2;?7=r=47dR{$&a(T2=D&?kIf~yY93b*^sgx_{-t4%dyi!{#9*qfDWHGWg z8m0Da{OayHE=Bo-iN&P%^}@Cgpy4y*O~IG=Jb0 z^5b&Qxi|xJH{8XtX6eE{-X#2}ZCq#AyFVULew!G6>(i-egOle`e&*KYpoPfRjCkD* ztKYZ&pFuX|0>cKqggrSwF@ADMaN7s-G;J0Em_>P zkU%G?i2wjE-zNqkav8j z8wEX0!cLtJt)9vJAG35fK$olQS(C5To4I))zp+ADyk6$T>&&rPm=5Yc)JUTo&Lgqy zu0^yeoUB*sibcrwbIGD6D3vTc7CqDi-yl?fiMW9cl-zP^v|r6gw-#^BP+}V zyWkVQI2dQ=1mD^vR`?g9I>Sdi!e~TDcVvIgL4s&Su%o zB7Pbv87?DlH9bnCHz4h1Hf>gWu}|e8Ul|g$F;0pf56DKzyut{B=eTr`{$#6^nwo$Q zYwk@*Ov-oZABUL|e;(s#X_cXZ>sMg&zW{jTFKcx8q_nGJc8TLt(-R$qQhbW&O8>xJ z>!)cuK{pq9$gbqf{AFTl9$hif)B_nT`InXpbMB+A7%}YG`}JY&6Fwj>^?$ut3k`Rk zu2OxXn1X|XGcZx^tw?91YwvQ?z6X@B6s2c$4f(Pp6~1 zmJOfqs`=E=PQx3fJ!$D7tX$$xt^m0rbX^#_xscL_3eZsb-^^IZ1Ul}g6NR`+x3J!DL(#GRHVxkf~)cQ{fb+KXIBrp)l_u& zEzce63maJZakv}pX$M__y2Y;{Al>tSk6e$x9&u_}n)?Ou-EL{-HZr1_J(e~V^e7^k zJ$z2KYX#5cF(J>>^KWDM+Ji?{nqIIU?Z01vZS2vyiOIMW0RP-BIkvc-Y29Uy!o7Io z_?^`HnH*|EVL>?ky9!DoGsc2@Mc3oGeA zmovu}H$N#7$yDY+2I4UIyfK4sM@@WebNY51pyc8=xr8U5Y_B6aL!WT^yo1{3aqf*Y zK8tE2c*-CKrTaDGtpMZi1^?4_8sLHtXxMY04*f)ivr(cGx^c9J1zPfQ?8(5eC`huH zSRSt8Pk{G$Kon#N>Gm{r({JAIH_*sc6L`4z^v}ikh)X@U?HKBgkc4Z^+Wh9%ldfb} zt@FN(TH?;Q)>28PnHIetQ1rEilb0s7+KG{*Vf!bo#L>+d7N>uD9*JnxNwjNoPXDRr9M zslUX4M`MK1c>|O#o5$k4I3ZAwyZq1_*YC9i$?fKtX!;_bH0{ceV#BO50S%?*N>1Kd z*Nd)ZSCA=4<2WLBgP6K!PU<4E8!@v_EM|%Hw62dr8aSjaEN}m|I$;b60H}(4zc{Q| zSz41wqLvsph@%~4>Le#2ya&V~KhlTvy`-rVT`NQ^J#UK=W5_rxC3xVF%LDf3o%_JM zNR%Mq&alma7*=LHNTfeU)o<*yE3eIX%zJ;k%bsHnTIP|tmMl;u)%xz%u)0 z*d((Vfl7D)H7o)1!q?JzKCKw#iQp~92=k$ zyPd-Wunv}YWH08TDSRZ*`3)na{plGj(%O)wXp8tn7DH0eIt ztq+{-anDLpLJBteqH0RR?23?gMHf?)^mtTP>@t=3$dmts?2GtO= zya;<|x?a&?e#u1e!WDTKuQU$$#hG&RXBXta(*~kYpppB_0Th22{Yo+-0pV~t10JM-~N5P zBdWhUSOY79Keuh^B`zqONN%j2hT7=Db-}@;oY&GhMiDEroZF%Ou#w#kiyHg~7l{P` zI26STmP{)VSNptA%_Iyj4kO@SUqbAai2L$;iM*O#gkQn&>t)v^+m&>(VH7QN;~qab z4)q$@^Ovm%2#3*PSZKg3NE8J{0P6#`R11L6H)N4n@w!;_*#K z4@tX~Y)@z;;qv^k^SsTS&B&N-pW@Q^#!My`&+~yw^Fgv|@^63m^!rJIS zYnCgEkD9;%(s|4q?|9wk5uBk&a)UnnaaN8&Ik0J9sB``Zs1f>R$kxn{+r8nwnJg|R zA@HSc-SQ1?UIb3M6yXa?iW>}-#9>$UwiRs&FP$;{P>ofKyg#BT-LtJ`I}N5jY}A8j z7N5sf$Z4A zpP;P5XStzAKad1L*wOL~ob(f&iibpS=ai=gW5>st>xcnWOk^Q^<~8jDn!gZ|vjMaR zZA5~XdgplgKtKINO_x!RqYte*?Y>2O}hRqnoU>!Y1U+}FQn1_xKqyZF_3wsvw&CH(qiv-?^JR7|5B z8t_N@)o?h1XM1HC@$#VCj_0w?MD*U8c6(pq2yYHwmzA^X;Oe{+HRnx!X?6M8yu4;} z%IrMS!>HSom(=&Ugis zT*94KB5p^OW%EX>!Y(gq9|-mHnuRmSTV3IMfUg%7z*HE{Q3z)NKX->Sbi)}KW%1B~_9c zNT^5@Bvk=H>kCt%u3i)YoN*PRE02nba$$@tXA-iJx9zy|a8XX7L#rxz0}u6s-K1Mf z3$7u}OKQ>`&Vk=~7EN&2krIAW`hk?+SL;XL{7sJ25sZB8E<1>1cQ6mVtL90}hR|C#a zdfrKLCdjQlTi9(cObz#~LJPPo9;a%^W4$j$fmg3WFE}*6?x}1Jqy7IyG#Lp4OInWw8r|b24TS$bu?{ zEu7K$L3e?@ZsKS2(%W#Aa^=$7QJeukm`qO1QHS#1@Y&$Hpr-u18hL%9T&h4b#Iw&k z%OOUJj)DFljt2+EQtZ{&Sd?^4zMR7~mB-|9{k>ZQ{mDgoXO-@Gm^ST=+C}FHg!LbI ztx7qMVkj)}fcm%|<#@CO4?td~?3K;?KT%gNfA=O6*+d+ zlv5NYRFTYU;W8CFT+7kjmQzHe8zsz6;MJm073snmWVvkZgnfb7(7}XQI6n@bevHz} zvZXE#fe5g|$y90B3X%fJOCuq}NK?sb1;c69bwh^j-58z%#FyB9{huLgd|S}6mm^%l zqPMq>I@-Mu*yRe}@;~Fev8@KV+TTObwxo z+h6)&Y2?^>T_ZUSm-WRn>0P2&je+i{%(OCdOcfKFSy@-8s@Y2Y-OZOXxCVkqbq=!( zTXM_%@R5w9Y!5o#+4(2?%FSx<8M76idflC0maj1J9x|1;KPZYq_@kMca|c!k|Y1BVBYWbRSDEItwygVs`ylyG;(clEHfr5&jspM zJmg9JKt>D?>-1L+9umKNpgyXS^wzkPW$hHw{ZUcs3%hP5sUqvWdd>QiHI%N9anLl% zC7KmqCMIBqRcmk&FGHcCh!xInR1;!QubaI3WZwz5efWKS-;bjDjj~xIg?)?fq>hZb zpfoi^oh0E}^rqcvwrtzW=y54U*Bj#hG^92$_BUA_2_y8jdFDM^n8@2i_tEPi&VcFT zdbz8KA-XD0veq#3KDZFt=Re&wys2U0?NM>I%9VfRvfglRMjP6HZea!_y#n+~n^Rq>m-M(9`2dz; zDDG-#zC%QUUHH-h(vWu>bI+sQ%ABk;lHs%0o!~@m;uL!wutk)1>4k>RxV&Ate)ac_ zB>qbw;&$>G2c`e>dR=!J#r36J?E`U_=FYxKF;#U?hJ=5`Q`C}qwLc+mWZ=Lz?8>(p zYTsMf3Xy5Y9xaO?>OvJvD(GJO7}VryxQ8LW2yv<1GZ^|z`3sM%!v)FS9Rf+!{r;}^ zG>vJkw8pi+dG3Z;^9rnj5z_(+$SYL{yx+G%1@_~BK2jKqkHPBBmWm5w`0(Av4Dxnd zjt=WGm#25EXJQX!=mjhwHQA4G;hE;NdaQV|qQQU_WIN)3qrreET1V!oudd0l@NqYb%N`}Do}t&p4| zT3)ivUop#XququBZfMVzfi1%00*Lc3OOrZ8yb!YnjnR+zbvsDkft|*$Pswy|PfYiN zRYtf@I%H0Lck*p~-u~$gP4lQr=cY}u$ia&U4w{J?o@AA>yekE-JMO~owyx-F5l1lj zU~V{hI;uR|7ki~9reaukp2YsyucF*yM0qpOK-7qB#fbcIwzjO|$G{6yR&vfyr|1f4 zepq$iT76)GSy=C-)08%Lg3Z<2$#V-=_K%Rr0YjoRa2uT$O(N)QNjy`L4wWScl;vm5 zH;f$e*Lq19tCp(6bH{cn=~fWTrmIz!YxWIRfHgp2cP^1y%S*8?)H}P+qkO7sQpfdc zJJj466x!VTyp=g8Kkto9oa!~eD2d_T#p%a%h6spy_XzXXKN$4Zp(@s8I+Ha-bCo{) z5}i26JUbD;{PvLsu^x!Gh2LUHBliRPGP;UdcO8dD%@V@5SF`7&1ye6fgIF`DM7{gH zI0-2_N^H7_nli#`knnXe{-^Z^*w+ zzzG2Q*?NK1w7U#71GGYAe90=0HLi}B_sv=#cCMt{+ZQ|+Ui^6WV;GZCV4t&h4R+FT z*QoE+1C7wk_0wayF6@C$8IyCP$%Ls9%l?VA!$Gz3T65s$V&@e#!s7Tzp~hUK+0x~r z+)#+XgYT>3A^^Y@^gpTs*0TBB{8+>xL8Sgty|N>m|3uN|qiGh^r(^2k)?djN^QuEb zy3n05_|6ub$z^s~q*+MPMU_pUbmAT+zMZLpn;h-xpvg`RQ#LDrnJDgQs8%XyUS4qM z-tigiKiEBK$2OnrNDJ2P{Z%OaTM{>3=PkdXZG?E7NPT`(RGy^`@_lXD$X64}aMs_* z3F;V6wxCaw$G$aG(p_@>6d&;4c3&rozKJ7czgF*CjriO&Zq%cH8`-ISjbIUjNoZ9q zi!WN|GJGLb+z}a+9btv0@Lk8~LA~r1=#&4T>Pir!gRTNJXTiY1B_?Es*@%KYM+Zqt zmjBiBxgmj$4YY`x%3kaVx%G+e3*uR?iIN8TT;Uc1RK-e%kT`>v3twDqkvMPJ!{mry zpX^Um>^TJjA5gql{!>o|C-H<=2f-ydM7bX)YywTo06s7dzuR zDi{pg1p-Zzq)0|af@$mx`JId295dfc{oytSY1qu3-H-gYQ{_A_`*PfpIiCWXjoKgt zp^PLfU{ayUg}{~R3^|KLU&zwve&xsre?@7$S2FHvHM>%hbjiQ^ae9U#p^{Hk!C*9b zy}^9z*98%bMO~A3ekEcHdYEtwlla;Aw&eE0U3(v(W&6oK*mAp&+xh94hBTng0zD74 z60uQNm)6?g;(>@@g=gv2p4>yN6lb?G!E zSj))GM7;nz6nfpw@Lq2icM=s@2FSlN9K9?VhkYNf6<+E-BM|rO-hxWJu<%>Mv?M02 zc=UZMd>>dYIARgZl{Y|CJ!}!&RIi(NgpEBI(N&Q(++B1pJKvu1T^gm0_PqTkPVVk( zHg6FYjP(@R(W1{AG;?8<3gsN@A1W*#*LS&RS!xlJ1%HFw=sXLXRq--QGpad%X<3V7 zG1odW#&wG~2FOhn#vzS7Bi9Z$l zc%7remO8;xjH$ypn5Qq{){feDuRX7O%c!dp^-!T;Y%QWc4BNSK$-M?WJF!4*yN9d; z%jkK{vE~eMk%LIxk6EQQFH?vf!@JK4&iBTXYPv?HF4%XSTGe@Nfbx?j7;z-{94K%DeL?!P_9(Y2|s zm;?5R3qyO+`ty6gVp3GD7%9=R?S0`IZdHW4-lWmx;-@0fS8A9}P_Q2Q$|Jcv@zcep z(lUN^O)G;fmbTe`bbOEunLiUEay_Bq5t!lBgTY@Vn8$!6z*^v z9v**ZL-R_9CaE>ufw368s++V^?@oK{v1Y)&SPRzviNz=h&f=}GGP-lh!kGe zB@4m?oU{!cDfniEQL+h`g0>(M+lXMPO&F)Vsq;BpdBAWq=HC#Ls-FI(Ip4{BAlH(a zNDy?9=;rY=d+7B0PLhib<)BRLcodJ6rr)H7S|ft)mYcpHm4hA$XU;4r4ZP|8mSMo5 zmT*HGJOG24%L9=wE zN`LW~fO$Rc>-9`0Sjxc&M1XI5F%ELM@}S_#9F|VsNxjmR%;*mLC!>ik>kZbf3#x^P zFDz)UZ(*nCVt)=hI{Ht2O~)adZZsFsus=Bf?3bbd*X$3P?g(E?4{vmXUQ}))=?z|_ zs`HcE3DI;R&Ks0iL5G)KnKdQbbzt)ZX#7l{x}R$I?f3|lsNPg+t$-bo-Fs7~Z)Dd) zT}fP3;^X~v_;9yo<771Y@|5_GYIIKN2yTH8RnB}nnZey_Zv9RVWGQJo$gfi zW^I1vSF(y>{i@fc47ei=32|6kMUefaM9smLkC{^ew(r|53-WJZgUl)21(|V|P>~bP zSPeagqn_T!m5ecNy$0mH0n2nyc)QrmY)xUqo8gXTm$@sOsC97IF1+1kGqWATh#}R) z;U-hk75V(3%Ewr>L?V|n&E2T;S97Rk7%kzKA-jWk51ZDVRGARS#Xxz`@;0fIXnQQ! zGid1pRlxB(XW6sTCtwSt$#?5lD_1}5^z5rG!R!~93Uf^wTf-3%(zWrZA%6)Dn+w^} zDR};K3!rvBqXg?_+rB&YVlNB5%1DIBft=NrCL0=oUD7t?)nw6`GUqluSD#a6`*PN2 zvxLL0=ojFSRE+R@L{-s->}unF4%nO#uQpH54Kp=;M9PQYy_b+eb<6F5@jcQAVLs-z zmCXv|^sewzzmHrP??m(ZqhCici}XS=G7Men zO?Ia{5Sr8=;O^5tEV9Z(lsbpQdrW_d9s%pm;p_nE`}a5|`t=ca|ow(olm&G|om%Ew@+MC06mh7hka za^W4sD3wCuUiOFh(Prr=8TrBX?vr)~W^|l4Q}zuBw~=s>x<*n--SMgF2e0F3FO*ih zX0Y%udV-#C21`$i;i&aH!AV-FqCaaF!eR?(brFzgWNg8(|9u}p)uCc)aIQ#W9Zww0 zi{&F@m+g(}5tq_-d(TxXZ`ppZ8KFn_(L&KDTeYQIcGvWT-)IgLFKS$q6q=Z-&geEH z*9zYIh+gR+HWUzf^YrOZDNE^%WUzX^K_pn(xK}~zCV|u{P(7HIgw#0v?w#f{9DV;* zlg6%lInev!(A!<>Ox16}L>Oc@pYE1lYxo%%e#w57YP)W!n=4F>3|I#Jeyqj|xsZge zlpaG;ia9!{*Q=y;kD2u(j?a$z9B52`i_ot}r^=2?k$q^U&f6Rf0|$v%U9L(r>}o283DOTp5z~U2@Qto)jMo}(*feuRWMWo^^gyh zOq=uL0&&nE*l9}j4vtjImKn6SF8aj_uB1na{qT{t>OET1Tm3}W%&jlyex>~jpL(eU zwum4+)mrB*VO+Y_y%UFYxSrteImY2TXMqE!f?#Wjng_RrV{`UotHT-bvUSeW=mDci z9^D)6ip)!6cMNlhxNoNcxQpsq*e0?7oH1w=nmDZidr+lBtDRpGbUtUKAE&e-3yJ9M z^bbAtv`$9L@uUN37}px!y?&&A1;`TzJ+%Nc(W*y5Y!B1+vHUzoIAr=*prH)1D}&uA z)jJtSge5$r1_z@Y_ozSgpD$adAD4o~=NOo9(nrr0lCj>6;=V^Y zx{I=_qsuRb*Sxoq>6~2$JSR%8f1{;ueA_9AE#vRG2ZjpjU!ii5JCBOx7j*glwk=I} z5`jtVaF%GL)(0D?_ppNTVEL5gQ{E4A-{118{Z1;We7f~MEJeBQf{VR}*4;-P&NavX zb_jkS>}^1|A$q63RKa;wwCj}5m*Q7Bf9ysgc?`PMECW%(PJ`ZsMkVZC*Y>(0PmVh{ zaqN$@+j8H0cPgPI1I!U`8F?=)xf%pF&=2@_fe#2vRz*T+c!Rm0yx2${%xMN_A- zj`|#>Sr|Lj_ys)2nLd=Qg&$N*%vHuXPA25dM#oBo>eg~Kt^%pEKGW3xz6@TPK9)Nj z?YLrG5leS_oJF_6@t-xx)8m@Xb3%H(noT%~UgoDCZn)Lc^}oBefvMxAbs3c`f+zXy z{$fyw!kxxeT95_`=^~EIVeVTsLl^a6ol=MV$_hBT{w~EBVrfst4$BvzzwU{=E={^N zmR2bUzwcFMv8>HCi8wBuxMC3i;)e|gQaL7HBlB8G8!o}#v+1J0(bHTQiXSuaEGERb z$Lp#*xx7(|OOefSc=N9_Vtx2xNp9XvK&iitt+dI!e>@TfRiRn?wDLl8qTIlzIogF_ z=*H`Y%XLt}^I;p|io<354Z0jpK+wg?Qhlq*KNupAU}Q7Py|j>r4g^nvq($SZIx8-`v~0M*qtHxE!H3h1kbMuKB(fR1#9u`ks2YPlW07KsH1- z2f^;Ul!IVIk7E*IAYbqC)VJ@|1NSm58D9FLuzGcux^n{N*!{8WOf-&8~_ld91 zJL#r`PTec5#X5utV&}V2O?$*iK3>kGTpkka+Adh_O7_OhRG?8384rQE@U&u|)tJ`u zqf-$1YRmXNey)!0-wWY9tVu&$K6f7#;hfz!YREggmAQT0mg;wVMrwFsH=?u;a(=Is zIwz5%d%^sCVHlLPXX!rldE98F25Qk5J;Z5?s(C-t>Ex)d2h2{}=oO|es?S6yYz?g3M@t`)AT80 zunLpiT+W&EX^}iUK&doX+sNyc?Afol)o?l;8qQBFQ3Rn+z*!h8uTD1l55Xu2XPJQ< z@d9yNFm4k&K(h1L$&eQtbbQ`$88}C%&aqZld01U?-kt&9(!2@kZphh5_ma_nGpM#NPO!b1wvRQf5AC!3E?v9-Us}UQJ z!6K4ttzRgK23WW347>(v5%Wf+Q@))htXBYDyWT|V*DfM84i`UK5qhGvO^^cm*;w;I z?Xd)*@ktD}bauaqOKsQYw`;g6Dji*KIgbq5f$-27db9=ZFL-U~^8Db{E?2(!p2aE8 zW8?>@`nfUsxELAER@%ge0FuY<2gz=TrU$$`^I)J-1Q3|13lsK7k-aJK-5pQu*q`y4 zXl{VXRp;LM4VM4w;vXj~)(t57L(`_JDzLlR8o26A;P6gUd4F>js432KG&K8Akm308 zh!N{J4K)Ti&mutmwlTwO!`iW68@Hx#(?a&8AZPvZ&y?8{p^?-_e`VnBV4zOX+u+SU zT4>#O*s`Y;-kEk%xi}Fmc$aUiSn=V8UYHr7B20ud!DkcHzC5A|zzv-4?zuI>W`4ax zK&d50N!fF94gze^jbmaH+GEH4Z18E{WCaymF#qP1&s_n&By{Y~aFzbr7K&3aF8CBM z8RCT+XsVPDxU2@xQdQ`!=dV%RVml+)SC^6SB4)nqHDu2aqAp!r?1)Q)5}4`){b7jv zC-?rQy;%8D&o;+~m#2YQy-F5U{LLmzC~t6*whw>ywPx@3{)X$IyJ@7#)|cw7QPN!| z@$WL1lnf9Ss$**XBPRmSi|w|(H{T)YzxHrufdSIM^vD}`?m|xb=+Jb_z^Rg^FU;F= z#CRaB`jLtU7=zzZN4KIG!W5y3=*Uw2W{e#r=pQlYRF7>aG&WeG`Dp{z!09@6OnGDx zWF1kWKWY~ip_8y}h{lA>pVl?(@-Yzfk`7$D5l3i$K3r68=F9p%jx{$p86@E}!jvhe z<-J(%xRDJYJ>)F&w3yy@Q{rT-axwVzd3K+oc=vCH578HJ{+f*rYFxP-)YL;bs9R8g zNX{ST)r`|}s~+K%HD;vH-@P`Zs_Z1G04E>mHxZ+MO1HCCVMG zweOC!D8?L&>4|NYo?MiV|I{|BJMSL?b5B9^gDNoM_`2vylf8j+u4sqJ$ zymfEayBi|GZg;``iwxE}H(JdUN=VFAolCq2Ss*RiZT1b%8uV!CVss=8H8whOszzV> zfHxgUJ#pDeU+mubqJRKU5B?kB9_XEzB{e{8t>uY*&Zn{@dGD6?e;VZ&FxI7@sB*coIAeOUsX-1HQf>W>$d5e4YF9ce zDi?3~mQ^9FSP0mSD-;T3H|#{9ZqTCrf!T`vtu(beK+Aqzsht@&I8J$5w~H(2Otf8` zwz0TjW8}4`GZdxAIeU>p|7s-8?|01-8^1&7cgmm)u~H^>ot~N$^<6;3Vb8Z>xR$SX z*IxY;pMTn6*!`ku3bEILVByoB{oJ!5wap~%W}DayhqqVj)OxZ|GyqgP4t98v|3AZ=59=*Z7oA zsDccRu_+j>Eld%dh?PynAgnh}R0JD)nP0bK0HbfsoQn!LR_Q(Ur8;*E+LY2x1^{>A zC05b8YE73;^$xAFHAoNS=*NrZrSVLD4<0_K`>Y^Sr^z8TpyW=oJn00KMDSI+RWE0; zl{OSHyx9q5^Ms+giTt|dyi5;MW3|r)2;Q6t? z=P3Rpqx+r*$DDlp4*P*VGTju7CE;Y4|07r{)Yh=r$JW|d1u3q{UiD0OXiB?nMfvWJzyqUdYfRlmyb ze)xd;uNi*9=UK-`5`C0nWiJE?NUz?F9m4G&gpVMo!#TaT8zL?g!KejtCQraVrlIT7 zAh>KQR&|oPlJ?D^HVa?QX;tiQ^w^r^e3%9a&`$(%Or^-vv6)QIuqiz)uqi9;<0_Z+ zF#c1j?sNop4C#sBU}4U`4zwsUWL(>x5ywVxSv5uCPpdn3&%x`I^Jfsb??L+f8&N~@ zVh5X?9amw)R>6GT^UX)`_w=Ge}%ZT`3(|GDn{Eh(?+s8K_6MI zeXXoI*=n%CtFWE*lv&uP-y7~l9l{)r+)WORF5tV>Y1AK($h6IEesI4NyVB6p`E{(m zBpJ?JVEN==gX3g0cYpWi!Iru!Rz?`w=!~64fl1dm z=j`po2^S~TWO)XMZy!uR!sy3YfAgV}7dUg)xDt{oLZseGA^Dq4gQ8}O;tn|ZDyF7% zaeOxDLjfLoCK&uQHimWE&ePt%L+FzivKa|;O>a7_^cnQ<(DU5Y8nj#bs+sFMMB5Vq ztwng5eZG06#pyTt$=5?M$`zJmWBs%u-Vnw0s)!Kd%y2_q&f zRKkO02bX00v$5c`Xp+V?K$WQEXnHfSO7J8swXXD{5>$LQLIu8rbAVHu*FlA)#$MN@ z?I9~3@c-C*>#r!Iw(ols5flVeIz>WKx=WF6>F!QxkW@jXyHlE>q=s%`BnBjg4(aZa z8s5!yU-w$?pYS|uJ?C=qiznv{``r83$3FJ=``JSUs`nwu^%#u{L=NO)9zN>_nF7G} z^Mc3?9YDa&?_{_N@6H zq;H1o%zqzCI(6`(4*XXf+gbJL6t%n3(jPr4L+@QWbsPu^|E_~a7sj_%`JJ?1ZMoz^ zX|)?3Tft+@Iq>%wD4p~@uE@^(Ze77#uky&SZ66~`bhdd5>)oPGK9OF~4;p7$UQn!% zPn)o}uCMb!YoUh-f4TP*LjQMOgRi7=Z1WsJH9IWF!~WDp`PckR>)Ckao144wlARN2 z(mF}x;of|`zub{Xq#yLQ_Q`OnumE2o*+mduPGsM`b`p@Evfqnn_@OBO)x$7*a+Zqf zd9?!yU5pr4LevL2t|$NnzBk(Kx;ag->9jD(wQi9m|B%e^fR-VVY@9HBr{QgF1R)a! z#7ZWzi%tzPOKAgLhFOd0qXxH=o;Y5O%>L_OCnK=xS8=N>x#@g`Tj$w)Owo2T?hIZ? zk$IF`^D@@lva;__I={YSU$JGGDzB>JCt@VnwJia2XHAi+Jk$^VcUHGrlwS8UKArvb zDZrjg?CrtVYE3W(KEY}+u4sR-TQcy6>)9&j;tD3f;RD@G##)1F>%eb1j& zzuB6wuUbqRs4EQ$uxv}idr#!I;L0eq_1~>JjT(6`_?ZiG!s1xvKVIn)Hm_IBdE&f( z3VBoO)fIBvx_VFwR&?h*JL^{|){YW3N~dj#b!ACv9FW>bP{=b3s*7&4L{?@Q=A=Dv z;`f2mggux3EHCN=o%XnEKi)?H$I_lP>E}jlCtUImJqIe7^F$?TA!C9dym;LcGjvAu zTznCsLLzdaADnNsPmzRr;73U$&1b&vTKL%Sv~TW?19^jNSlOK6dSuikCR%%dh$0R} zrHkcGf3=p+tlxk$&--x^psDl&apc{yH=*foC$3iWvIt@m73Do3{yWBe=IOI9^qD?< zM3F24u$AAT0;G06#(!)tI(dBBc;x^>6S=dvmnM|@4BpmMbsnPS6){__bQuaA5}0gU z`}1Qhfw_GCqus7QwdCExtm4go7G?!5U3FKDd=dmR>2!~%NeLI zAgWtuzjKQMR?hCFAG=9j;j_W&SZ~Vyi&1JePrBKQ6qkyypC;QvodCV==Izz~Y0BF& zMr50b>p7yoh%it$2SlX1C#%<+&d}>&9(Lbuwl*sgo?Xo>!>BSMb~O{h1!+nu)@Pt#5-NV~=}Hdd=>#iDx|EKCtOl)@-8VbF@*{s3ZzII}ccw zsp2Qmi@(fY&zVRt_gnwk%9g5Ogn8F+clA$j{SEE+@N-?*{M+0%jr20y-@jFIu^)~V zCD1LUM5!{UVyn?Xkazw4?%q`9v-z8_j7(%5xsy&JJAop|fhT^;GA}8&H4i^;J3<{h z9;t%+!~c6f^!&u}s{^z{~Zol?f8q^n7x!wE{!5m=8)EFH^17x&g z$&_AKU)Gz??}O**{`YwW-2{4Ve!>O|7oJywhLy+X0entww@20{J2&bWZ)$F!e% z()b*%dd?PmEcV4_f7*{djs3nRm9TcQ8Rq}fcUc^YmQDJ<&rA5Rp-gFQc-s0yMtV5W z{CyUMeR%#i(bL@vssd?r6?fvvy9Yu>w-Czy!>_GTRJ(SY)A+cs_^r_|)7K{*@)k3; zg@VA@@ZUE&-Qo_R9zLGhTb{p42TD8{~GN5|#Hl+KfL8CNO{zcoD znoMZfy8q>aS&q>)?Roz-wwqW;Qm@b+Y1>t#r17KBxTnJUzn}KH0-bVm)9W<1a`rpv zU{p&;D5QuGOc>w_B(dtdj9L6s+6E?Xw`LlD`(0(t=F?G7+~%)!o&b^{m;c~DzwdG!^KV^E z{Cn1I(Q)HbxMsEbgE#r6wQ6^@k)P9y;2zt%>iTH?4*uQ!5Xk?-p!}y9{%^pb{7)bF ze~7pL1IU2D1o~md&(2Ykj=DIOHkbe&&mxOZOQ@o|MNR&dQL+U34|KWv>a9R&`UlEC z&e_d`m?#?&H)3p3sEtU*>vRrUxjr0{>x`kG)}fP(di5ER)!+*^m??U3aLw!K5FL!? zFDv6u9dt2}C6~h-S)3BfSp|gjI?ZQSO}tR??~PU{C%ViqK)<*IA1o9Z=Ne>Yq~U#q z9>^$hm(g$umi)8Lit$m*j@O|Pf(<3Ee5NH2>5He5mZ_p8*TJNYZJkU6@|V`SJHH@M z(nMltF8nFyKNCjq>e0cWqljzh+Sn$YD9y|oTfx@5;KL7UjYdi2SLjs0nL6F3^P!hU z9J7<}FFFHkioEv~3M{+U1Y_-Gmn22?SKVhlX&0?yKdhv$iJko2+HU)J5!rNxSh1T1 z+t_ykE0U;~ZG3US-H}gloBuaJL>js?*;s6yOTv2MC5t?NOzl5dh+bp>I=ucmn+4k* zv5?CyP{AN#KQPDyPx7Ag#N@2q*5Z9Wc*5{5t;z9B2)3%>(7#-inQck12DNm4&%)ZJ5%-2LX@VBR$pN#Y(+ZlWyAXlOOn_fZ9p3kcd_S4 zVG|*jefBj+PyG8!5#?E{P+U zJT|0$xS}@Z8ya;^&_j!5XsOPFA1{|`;>OS2Q-g+H*@ARj7|FRFM$&kq?y;lIpQK%+ zBc+kfEhz3mPCb(&cZLgz11lTj#^~mI?OZ@Vi>Drpq!-Z4FiorGuCDoGMwnRhDvAxr z)vdlgHmg+eA0T=i{iIu11r(wiq%p>U1`Hx9747Jt*UpF z-D^yW5M=OO0%$C#+-h&VyA`}mQ$6v5;Rh-YO{bo=Y4#z~Le^mxwSz#a zVQU%k1laioZy7*7*nScdlv@njJSP>fY`n+7{7F^!jCAUPYa}`Kg6@;JOUf^cR0tIB z{OLUibx;@UCPZPvi$?YEKJP$~l+W`sKq?l&uu#50Ljtr1@#z)QlScIkXdhvYEh^5b2R ziM5bdt%yc?y*qv=>-yp@p#x9*6xx4Z}V`esf5SQi!A(X80h~+a%hVJ!Si1m zntJ>qaFfgfqJG$3mCyRGAKqTMg7V@Aa*k>~-?*UM$=H>)rQ(@yL3nLh(}~_|ZC5~D zRxeb6?*9xI#v(die_b0<+$x`heKuf8NDfkBJ3mkz??CdU&n`5cHA$0URf9oov{Ga= zQflg_2KDR)ikd2H^ZVU3TO7yLg|&>e;Tpg>)i7IEM^|D>J7%~MhL|x>@k6UJyUO&G z7m76RwdF1OmdR8+zw4_TI1S`l*|z-R&w#4A>dU7opXc*E(xV*vEn2sGdm?NnLZJ>! zvB^{N_h{iU!Mnoyy)%stbqPUuO_>+RU!(^c&iaDtHmA=Hb1Tx4`0-3M*t4r-BA4IW zkFp8zc0-_nj3w`KI})RqA_+j+>>HEC3WW_b3JjK2KmRt7xO_E?_>4&yTMeAUn7~=i z$R#qA()L1IjyL`mHZJk<4>v#Y-aqyCry>Q@mVYJv=RX87d>8X=c$_VD*XEBy-sB3X zwEbQAP=73B=F(*~zJIA|k+H(RRN8bP?-_7)kNOu{no#+TwI;5go8gg)G`rYfRmhue z-`V_}9~%H9l(CCR{mYf5)fh|1YvA(^vjy#akL>2M{V8)S>Yl8N;~X&M3fnX3!qOMi zvXeu9Cstn1mp_>)-l zxTrD=?C&9OTo2zI_aT;tBXNxmPs(x={)y7sEXD1QXQ9rLDEZfWvb0TZGvp(0_k5#b z3S}{vez-ng`juR{;Z{#mRz z;0#PQul)=8DoMp{VUb2Fk@I1-7qNqI`473HF3+b>E}_+ac|C z$gJkcgEks+Y8D;8$g$Z<`Ox(WBAnf8*C`l!hoFiGIknIb&vI@0hUMEw@to_cB8&Tv ziMr~f2birlY8`;4Z;g z@}ZOwV}CDJAoOnVkKPzgxa7vyjOH$oq!$n5h}*JPX%hpyH?6T zQq}+Ce)7{$hfr%#%5ictSjkW>zssa-*&!K8+4$fLWQ-8ZMg(0dZg*Sx?VFRG^5v6< zh*9LpJgtpw&$7IS-}-!OBf3$)7Y(c{gj!`Y`Rt)_&x24#4YoD5X3taBa)f`__$rcc z=(li1j2hEc4Z@kf_dYxIT~qfM*Ngc4wApk|%nMha@k#6Bs!xA)-6FC}be&9AgO(ur z`uFE40*GbldpG-H{JJFCOA$nQgez>0e2^~Hy;`Mu-2q~2t^ih(OdZBDRO zc<15wnefXP0#j%OVAj!K%2@Qx75b9?{4{~H0%R`1wrE8j;Lq%v4`~cu&TTE2VY}H) zQq`C-S9VTn0SPkoqSL=$#`R{u)ZIK@W^+nEl!F-e$V9Sk9no;KsoJ|P9}>Xr9})Hp zYS>rbuUInoeaOyn_q=~KQqKxXLzXM)78<>VL>8cXo`R>ZoVCtp{}Wi#F}Vq*(gNkk zNy!P7?y;NE!k@aQP#bW_Va;ty?DkkYx_z=tV6x4Qdl1G7N&Xcr{Rk4ztTz0scTM99 zy2$l0RJ4IW{CB6vs)QrU?7=w*mDFeS*_?Vtwh-gBL1pqElLddm#n-_wDD)+5+0l-X zapcaKwnW$Hej2;{bLoCyNR)Rx+3|4NMX(0eWbIEu;Fc!kW?J%QUsm# z&2wCJ{bhMi4C6KLhyndx-Xz7-<*ljCK5a+!IC4j2tn5n=P8s9@KWfzd___HC!IpzQsLC=g^^(0S1l(*IKH{AsDR{7c|O0$r$ z2cQF6Fs_zxDeNfKJa`I-oD2>q05Dxr= zuy+YdDUBe+;p(CVwrLaqduPtsmNxoj{DarHb`KfrbZqCt`zj>s?sqSN6zgb57w++tgBqShc7FV!l!IPogFH)%)ZjkH(YjKvS%OQ&0nsRH+|5nt zD`DL+Uu7Fj*`y$mn-E$Wu0UBpj8oC<`5Ymogezj;qX@eiGQnaLAho~oHpJE5v3YZ` zOc()i`S^$O@z9pygVd3)IYZhzfPEy4QuXLo7fzh`okjIJ98Q1Slvw(`lnti!duv}9 za4aX&M<7Mmcf++Wy3m0(Gi;|U|9t2B=A#7#oybCw9|%cge+rWdM=n4;Su&*>jQP?q z8qFEYo(@iC<1x@{RK%q55k%#u1P>aU3~;3^C|-~%^gkCgebgJ{@GgctZIR@SWYohk?p|jJ*~7dZ zzb9?Ib|@0P?{a)$FV%_DY8&j#4)R44hkg%W5vs*Ce)V9POdlwoH^PFSAvQJ`hNaPx zi61_JSaii|yvKf+g)&}RP#)I~W6iUL zou2BEjq;plD71|~u7XZmA=tg-pb9w3PJ2ar*2@NN?Jf&eRnFFc>Z9N z>q6JVW*xAItwj7um~pD*nm=Gv8@Af11@gf& z!nl3{n*EfOcSVLYx13Qrf9Ty&Iae96Yho{g0BvI|rSUNJSG*7;j${a=G%m)y(71yh z90HbMqp*FW*n)j}`wq>+<8(IR0Yi*{iz+_Tv9+T^*pXZ#aJfj=wVDWn=j{*f!X*|g z@4IRCrVaA>URmw=Yk^4aj8`$+u(`y3AMsb=B-dx;waY&e_-YsG*48#aMQAPEEC*5W z&IjX-OzcV#jAnCL^&~(w)7qoJ@H?DE=7%X%2h9Hsd@mpW=$u??Hz(3N;5$hP^|&5r z7#%=}#*u%kkb)>A%YhjL?cFd%uhGKtaZpe3*Q>|SeQO|M<~Dy=Bjx-RR*}~i|@$VZ7&5yfzCAq1hiY!es@k|#a0*nYfthlM1#!E-?GR1aFW^ClQGH?Cr zNyyVEM))Al|5M3QlY$Sc&zuw`9yTwiuAROqF53ELc>B)^L0UFkBMJ;EJMx#?BTrI3 zHLi;QL<=$|k3>xA+IaQqvuHlMd{wFCROK3|XIy|gc%2xz_|(ar9udZx1TZciCZhxR zWzQQbZZW2Ql3DJ=yxu3_c! zV4Uygp-JC)M3re+kxsm+iP^9Ki{q~uXgv(C$3cslAq@gTkn`s)y6zoPE)1=pBFfl%y zb>+QuEEkN{!d^!aQ!Hloo|detJQ3y4(qk3ec$v;WM)c<^1EOTq?!4+=+Dc>EW?K7 zy=tXlUeAS{C-|dI*o3ihjpjUn5u8qWy?SS5R>%3m<>`mU{vO2Mf-hj-)m%RG=Zck) zjj?>F%;i=O*TqV)E^GA4=D_z26wGx>6UM@b1YeGwKJS9p;33rDI zi@T+gV~)>^Yof){#9LEBHyF?A20g(ZKh-bz5X)#IY;xT!Lnofuj3IL_pr}tFvsxgQ zmew&JVk{2wg!=L#uS`npA;(_tPJ>j9qqM3-G1qC@M@U}Zg3?uBj?U5zO)Z~N+qTJ^ zGcCF-mnd3|K`WaReK&j@;6};Z8(D@)ofpq`$*lK1CZ*_`;Xs+)VAk{>^ON#2A(3Y% z$>@@`^0Af;SBh;F@d?0m7NIN4W6Ct06aK2opMT8Xg?6k}U^iq|Fh(j@{KCEDL%AhM zm|OMFS*^a;PYC0VKX;pdsfa)P7|{%!{8~C)5KSSkYA-LmpwK1es1_7$IAZY~z$^TI zvimCnDo(;_$|p@D#$3Q+VhlJDq=lpW)M)dpJglT;VxwuN2H_g=n)hLO+^JQKHAR=N z6)(5dfJ#^I+ZP8TJn`!qVZFUjlj$m3jiX4QB?2%fx_j|-dY3m|#ticYW}m)Fm^D^- z(;J4Y@ON6R2ok_kRQ}PE3xT3G5mThV;`7YdE$3$)J)^LkJk+`SPc=vpJLu&4VA5)1 zC-C!}Hkx31wCGG8LlhewOk+1s(THQPrl|*R?}Hbch<3jjc;6hHL@+PFIueoGt*CjNfo$bYlb8)Zg%)hFd4OF zKAKL&NGbw_LqYTKc9!O<*!EhW*&Ke0xeNfCLDUITocWJKvLL+`+@VOHtC^s22Opc9`UkPA~RYG9-UQk#5$xiQpFEb;h z&+O<)o&&?781@0zm9quNukRvHqCDy7O$LB0JnXZX@fv8hmd!kY(JFrgDuL!z^|>5m6l>$P)pBd2qSj9H zRk6!l;hs@-N5yoHz3e1l64w=57Qd^La~08aJWC&bhoGccz+)&d{bbs=&upQd6_bGP zv-XP3LC5_j^t*foaWRun*y4l zQ_^m|ot}3%*1&FZtL~^=?!eHq%oOU|#7v!;eJSDI>_8praE4a4r<>0#+bmOE zE#QuB^2~)R6%eZ!>BB&bBu<75aBnK3w!?FlW>SujIx)WD zF$F?_uH;Xd!kHU2Qaxd9E&&r#Jh4;;zP} zQBqt1O+QYKaT?{pww!C z-YK;=JVY+~lPIirFDt%jE_|q@F8MZoZl7BDQjpsVG8q1Fger?6xr&$lnJv{5!dS!> zchqt0haeCkjQU=;wfVgBnu9486J1eAY9mBx>dZO06u`VndlS*3wcBL3p*)mk>F67e zIv0cd-2o}$8}D@Oi2@Vb|O4fei-fZvu`l0j5^ka`0#?Zj$ z?LVa>6*#;Vt(usJxg_(W#FY20AE~{Mq`$9t1@7j>nn{kC_{&pO2DM-z5O3btB{J{V zCS;%|Qd;wN$&A)H;iLRGt}{B|Z`a$7ZM?Le49@DcOsCD8CXNcISxQYK!rs3gU+UPE zH*I*Tk@2Iz1PZtZfQ-~^Zah;W*b|AG0CStR$XvxDG*i!Es`BQOsqQ$!R1)3kPGC9# z3WJwhoj)=F^*WCwp;ti!coPY+_ic8_r+luu?8^O+15dC4`PLTopu;({_9&FD#>__K zEG&hb+Be@m7tY8cn3jbMU&@hrJujHD-s{!bU9)$)TD|qs8CU}P?(`t5A6yL3jB-$3 z-9nB!?9J<0M7Vp_holXRK3$T?S6@4;LtkwZ6-M%weWwEMtP{Z9J^XP{y5v@dPtyBp zCI3b_Ya&(nu$Hx?BJGS|gIt!0klTpF6D{%t{v4fB-|wcO&ETLwI`Pb@#iZk4?`ue@ zv7q0R3f4p%`!r|kr#sI~dLcW96dIH15* zj92HNb~d9BV5tC_hS+=68=)tXLMF^g?_p(UZ>W7tUjFgz1>~3AAD#8vb0KZl2Yd7UY3R@|K1f`<>_bR=mq7Zm z`mRK){EqIuNlX3YHE*oq|O9m*{NO)+TBry{*w6Ugv)*EOwc3H8Hz0wApd1 z1E>bxqr>T55$QFie>cz1zNPt}MU0Exc3eF~AuMr;BJosZpG97@Z;`DJ$dX@PrmD3W zYA~|3g2B#H_>paD)?L2qGE+~w5CD@bwWEV+1S-DTWLOeV=}uj(eBSgL8b0|xzO)&TMILt+cCXSd^^Dpbx+R3f*5C_+ zo^OKFRR%JrDyFN~QY$wbx##?wtqLbN?KZ!xn(4 zSdFAjiHzP6b5H{ZAc$ki%IFAunAG~sl13y}4+AM?KJ!d!6+PgW)QN3BqDZ39OCr}J zV&jyS{AgK8Ca=mRiL6VYdB!A3U9u{LXj}mNzI^fTBq`pyg^_%IKJys56(XqGPwQ7C zQPG;-2=O^{%79s|tk=-_xm7K{Z^)v13dEpg+Idn_+N|H+j;9rDRVlw4?w0xKz(P@U zbwnVv&+o?D<_cU_IM*)21Z|AaR;8#EPmx{~d$rO&d%y0pf_Adt}AyHm{vQ z)0>Dlq(I{u6irKwk07iv4?9VAY~5|AxXRSNUZZ*tT8ssVP{2%BXm!R+MS9NX+od{| zTjc;G))@%za+V;x*kydcT<9)};5;oIexYjgn-O;TMM3yz0+BPp^_-1qBQHlW<`63w zPs|I2Yt=lHM3pu+a9+bEs6OV~#@H6oQ3IB&ccR?Yr|;G0?(+k{YmuE&hT(*$|16)y ztL8`=dmWg9B3b(HeFFDeSj>kjWc4%Y`=f{R+b&(UKa+iL5^MS9oV&+`dglCFKX3U! ztp-bc)Mqe-xwbcyTVugtJ)np+bH@+ykr%KL)EdTKfBp&BT>`jX`4@T9@5yr$fCDK= zxzHTorpIi}POCnd&9)OFqgCP(`2(eQ{f1DSJYa1I>#{et4ux2%oFlrB-(;L2s>=M? zQn%Y|^yKS$>vq{pYvQ8UXIq*OtA*61jH^~lENZ2_FSDQ>>)=apa)dIqNL ziP<`!68A=qJEd#nIxtMPN@Q=Il>UmL8$CtkZpOGS%@<5OqULS75Y{@KwZ)=_2_LU} z-*|QN@J(1qw{GzqUAmPWEMm(3a-or9;TuuiysDn~U1C!5Z!nKim?4PR^lxgi)8Nf_ zQtnv3){lSJ0~XSScR`>s~F)=l@~Y+_H^GBTMbiwa+-%4e;+b!3yaHy*^pt5hUApu&hLu zUCd)M{a;5xvHz^Lqr_cSV*~hNJ=HfEv8Cz1ZBVF9-&;W5k_uqF>EWEFO%*|$_V?=0W)CUm6H&^rILINd`{Hm8j{wTVy% zk_s!!T!@QNolg{6F40|t*-Yv6)rd{B%}uz+l}<{T{bZk~7dQ(Nn*sPcop-}g3CjgQ zQtI3fdgk4sMyozb29;o${|tu!J~WKzj2DBMrkN^TzcHhw3OK)+Bg?Tm7J}u4$K(6y zYC*$SrMRgsNq z&CrG$vUtt?UimOU(@%W;^j_|G({4WrM-0?ke}BU``oUv1pn-Z)c5-G5IKsvt#hx(5(d3A`AMb}L6D`)$bl8(M{-MSIqx`9=qf6v& z@p2j=_HO1n2TIK6oP=K5eJ$WtePfH9-YUXHiR&eaRW)xiEp7OdN#mRqa@2gSXUlwT zi{ZE0mMGUZE9T^HUXp!iH*S9*n;Y(uO5RlHS_D0A#`C&I^G9Zs%YbWP$ldwgh=S*- z0kUu#by_T#GQ8Ds4yz8Ynw<yDr=r}GjR};0|yZQBqyLou*V6gAE+%r$l)RUkZkch-8j`c-cLAFb~d!g$4-^N*+V3*okCE;D%FP%g+)_7g}`8!{=`>0QMCMh>^GcWMN ztZW7y4*W%YG+Zrmw%e>I=H0fe(VY^ZVJ%3k%X6)Pn~^EKy?V3NuiJo3vuSbKKAv3H zNglQCkw%i#6z$i9*H_Y-{M&+Oai}NB>p0};LfC7E2NtThqTY*%Mjr$O0v~+=G8ws! z2UquzW(27s!EVD&DE-8(v@JP{LE*1Qk^QA?U45jK%uUH?zMsh_f@`394aIhPS`ob$ zaruIt#`Qj%aNmTB*4uPs+pZsK=cl0H=^qK7?$XJQzKex`+p{Le_3yv(jvi(i7c9+; zQzSq^q2z5xn zq7LWq7N1F3?nEmz*gaf*4*b;)t$Bh|0=Cq?Mn5^4+FTad7MgDO7FH=f%dS1a=xE-X zNt|C~e*v!W~lQK7@9wW2dAM4nC3O_A!5cbkrzKf6YT7KFqn}0eKD;%Xt7{ zM_G;aJ-FhOs5=rx@P<*frr2oxmf=lwq);&6Ij$vNrQzCPt!sQa+W5^cLC@ibZp=XY zl7NVVn$+|!f-g)C75vXyEy8Z}zd|V*X!5%15j(}Mm*clJyz_e$2s2Zw-Ky=cEeT?O zDL(hQN4^M-c4}@c$gvR`$vk*S{i~`npv@}&gJscs?X!h1XZx3}J0;|#f>U<+QrD7_ zhOYhLZMIDlM8vNT)%YO9I!13m{G(MUI#7J7s%3HL)SWkj-fgvVKVKJPuCJs~gJJ!^ z-__YEW$tOp@Y7SR+Wd(2g3o*N>VJf1^6@Okj2gVyRa_6lTOInh%`jS)FQpP-9GdIO zuzaC%xL(srXdKareM5`4v6l5%3TlQVcuRLg4Pb(`zmq$ueS}`%ICZ7Cyp{N^5&q^izZ#aLJ+MAub zx^QCQM1mLp@^nhiv2EYoeNz`Tgm2Q+vvtjw<~lz4;e5%C zkhcft+Di%EQ!xB-Ai1J*di=xI7c|s#37dUW#|i~nb8GmA{cRjR&x`6qdSqYJrt8)5 zqdC3b=`fi4DV3&U^J@bgl8SPw9i1F1xWJo{=d$_vM+fL^*DMG_boQ7#6}*(eTdpN^ z1nUzntugBXRURF@k1+M^Y&m%b)kgl8s2KcE8L$3Q1C21g-I{g(t*S3=zGn!3t3O&d z$T_6^ma@n{I9HF0CESkTl2~7rH3%<}j-r~le_y#Jr`V+EIE^)9D4ka~D#h*FO8InR z;R0-Z5z7k>apDxE|BNA$^TVOBF;`aG>{`c4uQN-zreLl^iu%`{_Hh=i`b$4r=lUoRPf>W=l$D0tI+X zYPWu9natS(_Y(FTILTS!`t!X5DXX1lz3(3xOMn7RHtisE_fbNtg+VKVgeIE#?ATl% z^|_b?L;mcY=CpVMtmi4p_I*I@#dT@jt@)(ZSqnj$6X`HEhTa6u`B$rulay$}2kFOVw>zr; zT)Pq)@l2?L4zz=VQTqBCQp742;cs}CaYPM9*6pPC(6jMc?hzk)Qve`uIII+2=P{}0 z><~ApH`a|8yZ3=*^)ae3PkF3?`M3o80qK#@mU5#XyUHOlEUST0bYy`~Lqu?gRm`~f zV_AQn^2v0fZ@~HQoc^StO`Y4?%Z*Qet@R(LyI-ufPSg1a(Qw_KHnY|>|6R%Obm~Vc zHX0-s%L&;tGo4qs;7Q8WsmGTVlQywRZa05ec3F+UGD@-JqCeemgm&rb-}9Ab=KdW83dwu0#{Q|92G+W=%*Fm^<$aEpCXt>G;~DCbh8+q{_2j1_-6-w@Rj>d2x^=mW~6K2FxRb zKL(=9buZc*yOX3XCC>RGu5T(r@`T2mQ3Yv@0+4$O5}@wMK4^F;<0;6O- zqw(NiVGV!z5Oi$ZCqB&n{ZCi0VL72K8d#n<54YN!-_9Hw$rWLy)M>B^=+NW$J@d=( z9BQ*X8~fyUTbsRqVUv5BT(I>_Cy6bk_VM$a3mnUD3j!5B%i_w^2yzk(PK~5Ve&l&% z_|tkdep=t>jWRtqi{CiE-ulIy1bVV$=~gQ)R+TXpB#3nz$VBi*D>u@3^ia%hhJVs| zOx@u3JTS)O4%ur&?@pYe0 z#I4?+*`f4}uBp(}B>iKq@>Gedx`pxELN)1QjyX#y?(?=uyaBp${RtO~-LM{5 z_XoUOi%J)(6*ZJ6ZDj{^g$wSn?J}Ex6Tj@T>Ee4`5_pA`V&Tu_8pD=Fe8>upYU?u} zT%B7@ALWG*lYkWl1Nw7znR@$u<((p34>%XnN*Ee`WV3ZVI^-p|RdKn9F@77HRw)!% zX1&yXIX=VbxX{wimo+J>7E}|=X|w0k=d79 z;j-Iq`I03AsrQ1qHep{k{EdLXLd|a7Kp;s35k^j1{ZjAQd{yUUBtd8qnW#1r ze{S^e5S`TZr!2Q%&sD`C%U5H`xGx~^yJSs8JqhgceU0qX$(jV|V0oSpI2y=;^L3lB zO6`lr+zX1fZN@C`!=nhk2y23031k!ISgFJCd14=DC!HTOoV$DlThq!s>5?%=GLwu! z+A|-^4kt&LMLAuKXWDqA&e20}X4Nn}vUX(Y#rh2)Qm;!eZb{GM>EM^%Xj3LU(G;4} zoXnb!CC$SF2ev-3QcYflvH0M&OWZA2@`qQIHj+Hoz6zn-ifjilJjY?pc&8dVBwcKZ zNcXXD&@W5x_6PLN^{MhgfLr<9KifhJ?$1fMj!%?mVKx)`8mT`CJTC=YHDiXO0um z(xh!H)Osa&!&dRYx;XWxx`DaAztCEVT+aK_IO**YIn?hZ7fuWNZY7M?NSxUlQD4AREPq-!!@1ml*bl7tzv7Opaki`A9{=h} zs5dOpM;?j(uwNw0URn8Rly zVz?1KX7haKp}6%`o1@IgjyNkf`_wH&UMI?T_IV$6gFazgS>UquS+Hf=$9ML(%FyQ- zu3x5-1u17#p4*+n=T^lgb;cWYFyFdH%6ff%5!Fl~#ZY*axsSzjmXv>GCx3C8Klj!~ z(l-Fx=E9KUZ@OR3&z<{$Pw&o@8`*HaoC3_{NhV&9uyy_v>7m3)m{*`{fWlu>5Y7Uq|m z9crZC&UnGMyy8KykV^kR+*P}GnRWZ?@JvFb~y$Hn)*g=s46H# zug7I9+3`W6a?ki)xR67hd;8+6a!a103-%Y3=}%N`l@mDFEvci&?KylPcX_>EP+!-H zU5MePkvRW(RA9~y-b^s0qe|g1G8iq+5POXKKl6R0NLl72rQu18d{@c_y6ZOkGez6WEt_P-538Nf3qTy zTzExc54nb+s@MyUQ%&f?|4=;+rF0+MOvQhUg?W!3=dJ_Yf8}EOjJ5s)w_Q@%AjCohy_8zJ2aEEQy4S-#LsKr>)pTMo`I+7R zR~l#OTo)<>C#`=wtU}nAVSO7SSB+sv?=YQ=6g%s;L`q4L*S#xXa0ohkMHpf$;diFrTBb&UumuRe-k?uDUQDFLZL9 znc7|Ldtt846pCnddnhSGou_`(_$toj+qk@>Z1@!~#X4Oi`iv;KD+U#y6xNYhmgnKL zH}5@tAAsz@ni>E3{c)h|r?rO=xtxwn{XGW*2Zj;bBf@9vW8F9gqAgDFkt(;go)}2; z<4*{?2i5Q0r54WW7F_%2`dwe|@3Z+`7R0vTi0m=mF4R12mVYXzg2^#3?>b^twe(ax zxuD<_llp6qw=2GL`f=&&SvRxmd2b?==py4)s94qs6P?@U=Fhs9ROb@B0w;Ly>rL;q z%iQgl*`#+XGJQ?)Q`X2?X6Ev#ODF8Zv4J|c;z9W7J9d7GmTb45pJ}nqQU^_{L1!9V zmQyFE$2FXT!2y1G+6^X(jJ|Iu&fl7sOt)vZ6_l{diOs3WBn@;Vb6hu+_BREaVYi## zZ8;Kio!9E~lnD+WR_A}q^3q};bH}LaGCM+4=5M`R#hL0*P+yhm{h)syrR7Y-*>{2> zvI1$c*hiy&o&}wGk9Sq-b?&P@JigU|hZaFlr@Vw9NfnGI-Q{mXL%-9^!iTMD za@!A@c7-xO*zLBc9x6~vzThhz+*r7@sY?+J3pIX5ejMtU2InI#DtDXJLwy)ONTcJ1 zh2*_*vG$&c*o~Z}iv9bf-5DDWHu6*ywsp%>PT}5E|9W>a5k`iyhjk5$C&t73yS&6j ztUJXzBXupPm0FCFH6#DaNFUME0}WJ)j#K-uVc~ja^~|lSF*Ny#WGSA&+-S|#Y?7$F zaO2(qJVmf%ES+eJ$UrmZT&z-qym>GDVT-9tu0XG3+29tIw_NOs*5EbVcF;@g4 z&3c&BhywEKehhWx9Tv6Glb&NagU0(x@8@z)_Y%#eKIJ_ z*GCOuQHypB-@ndHAgibj#+xHcTbMT~*3GxnTW(dn>A2L^J+7aP022Dw`p?>Er5R^OCDd$%k^S){8BA*X8J?l1=^=eWWn0>)zQM#h-NUnn$CMUMZI(w=C1LS8`JX6z%xac#y+@I zl{yHiue%-yRd<^5a+04W;5R0$$-sGC_)@!@xE=G3X}}KMOY`r2Mb=n%GZ9{{7}4rm zRb*AD`o0^42EQ3nr5mX+qnqFfta+4wCidTY9Vk6)BFncv*LR#~q4w}{27?CCw)Kc- zP0nOSe5y#$-FnD}O4s+I?<%Q`cT%ritdF=AV`;vs^>FqfBYq5zFK6+?x`2;=eRK-P zRToR|w>uky!{g!uLw;hne<}1GQK|YuG`Kx`Sv&P*hAHgE7af6jRYG_|UYdSY%T+h$ zP9gnNg&eH;&$JLuV(J|0$5u|QtM{mbWJo%i&NK%_%9y77lo)5w0WTce5a$<6D~s=&MD3HUn3>h%Ky zVm!EeH~W>C^LaU;T?Ew_=URwc&JHqqCP_IxhQ4|aFYh@T9QDC%L2ZG3EUW*Iz4v^C zbM4xPCzV7H8;OLlNztN&XwedaAWGEe5oCU5 zyyxuud4BJ`|A*)LsV{S8qBu35#AUIY1GZ5F?@Nxjr<_*M+2SP7CH}C zz25|gun_-T=+?oCy7Sw=V3q%nraeh+6MC9|bpfM9CwC2NO;z^^^Co+TMiJCw_>qtS zx_BGbJ6@MsWV5|^=@bvWJdKaD)>@_AbmgWrEw&1cPqsqlkl)kEXkAT3ODESvCv_`+ zESN4$A$qGlj~g&MA*NepfsCqny=RUw&l&TS3?3hCokWiDCbl+#7Ef&HOJO2dp9+@t!*cSm$t^T zL;i$vixhM^ot<}<7slrmS)Y$CRXEhb zTY^HZ2NiHNg30)~zE9eYjm$^d(ZA;@0-|VpB@+mpDVx}b3fFh7YH6ku_Oy#x!dEJ_ zjILd@(sb(`Km1s^@p47y)z$6e%d@T|1Wfe>{{$|xcKjo!*`A?SbAXn@LaX;{%hFlZ$!jnD*uh z_xpfV3K3gzkM1pa@lm#HtVPE=QQQ| zP)K}{@0u4|Y-m8+JQiTV^RG-sB$*!lnB$ccLm%5Aa`yV&&_;iuXuI0Vms2HSa6N1^ zPQU1$&jsUej}EqEr-MK{^6)jt_c652p^Wp=$8v) z?1PQuWVB4;*E;UP5ln^cg4%eyt~>7T1ttoU$X4^H^%?7oUfrDHiHbL~u}3bslqGR1VD8<%N^%|-Qa2zpfV>}SrW zG?;B?zsA$43R}T)qJWR37enlSWTI_bFrDp&=9zB{DmoBGPkA)AZERgBm0nFh7efB& zGGz8dHA~aVj6;xacyoTno2S_0x#}^q)BD_N(M#W#J32kMN4IjNm%h|*bAH*{vkVxy zl-tWf-SOK)?1xXxbas46Hs9-+h%resfv(>T^!^#rr4d~hVtYu+;G*c>y8qlc-S637 z2ixXr1b9=-bNi5L*Z2pLs=Rv}KiVA-Hz-Ck+uVg()8lB-8n2)j??pII{@qR1r{o6O ztv{>YdQ6gsbUrNi6Hg4vjgWrj1{m+)%!QQ2==2OGmiH1D2qG;?oenYD4Bz`{+%mqz z^r5OMuMg_sZe)(!6}O+v$gF*W(eA}L59?|R)y-ob4q z<$;VX{W15#zE@#1Rq!CT%=!A@!G14-0;Wr)ieUf&aslNQn5^BK;oyhg>%{l zLbPO^+A&GG4QANH zh{L8t;ECJUrc1rcy#F|Vwt{}dwE;;)m#Uq3!}s&{E7*-xL<6s|FXW&0r3Q)hFDkv; z^S855PZ~fj)Cb-$A@n)(oGf{6`nn`9hAjfYDdKE z?5~aQdCC@cpEM+W$JIF|6C>_WXw3{53w!<4s?24Z*n$Ra<7;f=9L0X|Ph{4AWDoG7 zZ)x=mdjpfJ+N~K?Ynr`OWBahcxmCC7l$SB1RptA)IRh{5Y_&s%68$IrIOn+@^KS&=E?0Z8v^fMQ{5Z<^)j6|e^o7u(xf~VmFz->SrJ;$ z!?5{uk~%Iar9N{Whv(cfVNE&e`2AWcn+^JkQJgM$8aLmo5k%ALZBR1jUT3KXYX5|64_ z-U%j`n(Vw6J^Gp%MqE^tdokC|9<|(TWKxS<+7}#`wL34@m39ctN^{DdN^Ou6E2atR zsPz;uzgSf;^|S3A-~S#I>0F)Xlfy@>Vr?vU!6)`?+aw4fe{QK+ub3S5nc*8|dW?mn zBX4`+T!*_-g7eGVMG&hn!Twre=fnzH*x7Vt!Ld%nP>)4?c4YG|{&V(M9gAbzqB!&r zW((P4v=@xKVc7Ff6!e;sq%nSOeBAiQ_|Z!KBbZy~Q}?l5?3>cl z**1gCdht@PaorE01UFwccUhGynt~6e@Y9iZbsyTTar)5A5d3h2=+xvPg?T{H2Wwa5nCoxJU=%O?3@DQDo76)x zpAAG_dX2T?v5TCrLuQ8VN#f%M#+1cl0XPvv1nI7Hk>__$Kj8)S)w% zjXsmZ#A%7HMrxURhR2U#1fVdFBOd=UcsTc@$@n6vj|2mecH?f97JLc{$w<3)Pr`h_ zcN@cK;bK^s%Ip2dByPQtBZ<5q#63TdqE_52*L_+;OEapnJ4P*l`#YKjVLSfl2t9sQ zgrl7<-FaD%?&;LBWKWe}GrTIAh?@%U4OGSVoNkwXKzzwK?c-BEw$A)%bTsg3C_pkw znqJ1R$5=)&JWbBsP;&^Ah5pzp^BEqpys+#X{*tkA+p@i!2W_*-ES?UOPbDiTnxATqJ!$XF)L1L4R0*km+onm@uW_CXw`hNF?Xo$ zpJ^p?RU7PnP^3)NL6C((SWb4P)x3IZeRFKp`pQZrdRXkV|Hm>^uB3g=Sy9>fh)X7< zYrVQME&Jt&(BUB0k1o-AlR!Gww`PY<3zJg~j~6V46M@grOJ-1frerx$e&2kJu$H;o z$gO<5rZOP8L&VRAC+hr}+USSXMKHFcpX~6k3dx17DqqZeE!e~N8u1A`J|8SXdD*I` zR0}C}yG#QrM-PmB){ojMI?$$I^#frxJ;w{V0UkN!E3DtRMQ$L>A1SX6#8x>N z86VfnMK*~v#Y2N)Zt&YJ_GCOmK)qqTzlz^YwSAZSK=1dnEnhe&va2g}EOhiyoUR{J zm7ZqM*LC3A?gK}(GVM4vubWP$y1lVN%P+UaM%g)Zy&%d_WV(J~pp}I{9Ug}t=$Yn; zTEI7IX7T{B3%GpVSsM6>N4%^T=NN;Ee%ywNp#@!gcI34C`S`kG1o)ugPCFZvkB|HW z2INPc?9BlO=G|j;G^>&RfJK8|-n4mM?R|Q=kfkKPj5KoP5vcNrxY)OIA>eKh1-&Yp zsD8~CDK~q5>#XZE$|V1J$$Y<9Nl-m{J>S!9q;v0j-?h_?0BSFRC90&mer*0<+v(qN zYUH`09YyE9oavMAy)LQ3{pv-&oGv>tg9D6~Xbk@Kp}&WynD&%`?M|M-$ttcAe;RWa zkH*CqilGwJygQ&P*&s3WU54|sZlFz8=K80lHNvs`0jE)j{h!VL*3clWes-3Wy8Syc zpM9_YIzluDn!k|a%m|s?0dN~mw%FT9xBO(klj2$(|A@}8A4sYMeFHX92Lu{0XFdNC zYR^nM`p)EI$ww=`Ci;2I+8K9TmuB(?h5fGUKO3q0Ccm0RAw1)>O4(NG5EEyR_F_%4 zD?GN*bG|Sh8m9aw=LP3ultzR9q6f3SXAQn>B}9WJ=v%p#*D)3<;*8vfZClsWJ}c|R z21P1h>gZ%f4ABF2LlkN7Zk+NQ-ZEC~5pu)-J4jF!OO~IMB7^SkupT*^WUFUnu0vN~ z?nfKHGo<)(rS^?0L+_@{!MZTt;VXVYHF#YF=dVnoWeRwS%c zB*kU`s>!&)rxqR(ngu9C{jTr#mXbv_vNP2+qVt>+^0-}6uY1*-`E&+@?$<*nGI6QY z4?iH>&HomcV9h#H7`&i=Pm4?2p7eMtXj6MEp$MJsUo@0fa^&Psf`Aun)H< z4`f?RznL zmFM--VSCK~`q(4)H$d0qiKIw4cFiUeM+@r>xYiS>URI_}21Ge3Xy7BvtVRobbHd<} z%5wORx$FL8;=(4!$D6*7Ho~Cl)hR|-Mm5X zbZ`C6wd9kp$mPy*8doK9d+wdvru!gOG5feOw>H2rzMbmxo9(K-+aRO+Qyc2~FvXGo z^+93saOBXhwPt-xQwIPp+<$Tl965IXrfnZ1Cx5f*V*Fi(Cg^J#-Hv_sMD!m&=Scas z8+qkk#dt?;rEtRFrm)bH zn&&p=iPVw3*L}C{TTz%F5@qIueWVmWSGs>-aR{~6$aL;W9f{y$DKPWqyX@GK2cK=F zDfBIT!Feh}+1UKFw?1*(OQwFnOGGH5uciT^RNI1m>N4(_Ca0M9v1j{21>$t&3_f%h zD_IryAqmy+X1SyhaIe}uJv~3zXvGI$q7~&hJ%+yP$mLJyjj=)Hl&}60G1UM~3uYyP z*!Xa^mY;1>adSy!|#M8LQtVSCg>Yr%2{rVQtRH z`s?$Q)SFQo#bsm3^|fAqtB)B)ucxdF3${!0E*Tn&%@&Cr_LuBn!p_Q`c1{L8P+P<* zLv3C%K6}IMuEVADv5JDfX5bzGS6&a(Vw;QNTlvP7J|GJ2p;^T?3x86?KiWo>W?LxE zeC(<*LF{0}VNW93BV;0?^TbXAJTz$h$J~rYOALQ$I~2=t{L*p;#p^}a*;0liX_w`{ z0N=EdUI-iB=@;L#v3=#p{EJrP6eC)i;(HL3;=ZL-(Km@UsN8prSB~xbWkEb;0OD{2 zz<^&CLwkd{1=sayCqq=eRa`;0Nb0l!xS4>qu0EGi0O^%U5QggbJ`cS953SYdVBhI? zsugE=Co~1PFm~92MNEJu3!;ROp)er5R z?g&*lFLqV5J1Az-1?7nz9yM%VS&A4tbB~#{3Q9DkjavFW0gJtckCez-08{2{25D=h zp(kpq4(pNJvBLQ2>~P0Ttw^&e`6EZ-8>aJ2l69WZRQOBzjvV?VSv9_{9fNv&lM|oJ^xHD-~wwP8{ zHD%AIKnb$XF9fseh>_0NLH2!)5AgS*+3v|dk|DcRBv9@Zz)&gqMk|tQ%8Hx=b8FkY zJlub23iPXpFH{*Ys)>sLqkgy~&9XmcqjKxxqolC!yU#a6HD|C*gf6!ozW3WJV)_tB z=DcrZf(_@=(<#kSZ?=>fMfi#OGsms$H1L#%)es1S5Vy$LFFKiW$)Afs;p`ITDTxzR z*t5wwm;TqVb`Ux5CGSR3f)A+^;GHq!7BNPwMj>Wca&Y08{fUDW=VI9H;H?SW2D?@D z)@Y^~cloo= zy`-(=zc_xQVFG5ebJ+dxyAbXb4yiD@u|A%fwU^<+Rp;yqv^MX180v%3eLXj z`n;nId5P_)0&mWcJMU4(AO)8OUbAb^OA5`!p`arw{ta30VE#Ks_8O-aE4^HN9 zoz!xE$OFlUPl{@;nuFwp;+Eae@H_pLNexGR20MxPJ$CDnK9)Xvm~=YV#F8dd`Bmn9 zEzZ^i|4$mP{OM%I^LQW1eZSQLW8q4vfc??kd;d$5(7R+{yTL=CiV0$aW@p1DH;}xR zMef;?qa}sBq7gdhqMm<={moKOyLuvx+-d`%p@em@)-d)i*7qggju?K#ufQ7Z8O=KL zrMiFn88p*3*@I{RWS(>?c&gUVex`CfMrqN1@KAEbmGaKq#eY1td>FpGRb=>Q^VOn_ z(9M)Wi-od!ol4aTXt?do`k=4zTEo7%wWZN%=KHmEeEA;KbWUc)nYC2X(6SDd-?pHtPKH^*BIqm#x9zd82wKedrigTHA1B8#= z720^Vj2#tk)#KQ>D`mS;wl|I8o3ApqgnKrhGZt3>gE$N*IpgOOBgxkWw>%Y@7l7S} z7-ZP9tk_21Ina&==F^P%lS=RXecqj5_R7{l=xgj1A>&n@XWCFy`ir%B^!b;hS&@lt zH)P0rxqj*&YzUnjA{Lr`B~P4=8!RFl72TP&md{CQNRGI=YvpE^CK zN-Bq#!7GR8Gn+OVV;9(M&5 z#09K@OeDcM2Yg-y&zt=Cjhwxqw!-^F#AbV|8M-rR{SHoxmF(?JD1 zt-FuTx}M+mh#Z^gmwC1HyDJCq1i%!Xd7}cWO6~a2WNlYBoxRU}ln!}BY~$0Gr+RtC znAeDGk*QeT_uEG7XM}iDlOn4@IzIHE?}3i#H!yE`&B2m4~$RrUXs&r`$NT!VIovlSdE>L@nEC4v_F7$>9uU{Ml~uTud_9l zKG$*Ne&03(OaURM;VtGd=ksS=R?W9!td-;cEpiGP8HMytaKt3J z#OWkb*_Dl2N*wPM6<=Pj!4XDPK=;8~<5gif&B@&qQP(d?&RD|!=HYQt+C-KbN01TM zjyan51n@FVjN#IJejVYfj&es5&eb*;YTCw*OBy+&j13R8C*$e#S#MvHh_S0n5sQHK zRi6)sz4u=6j4>hyk#%}|>)n`mu1mcPFK?$Jmz?`8rg@tdvtDcu{L>#D0-?J!Wb&Us zeb|7s{?mpT5=25R|G7B+0$|HO*N+z@@RoG_-w*$9dH(NE{QsihlU{8(VX2kMk@k-G zk0?b-0HG1R{UKOEwXW1{>zlRZt81j6H|+sO3Hq-Wse)x*0E=LU=9wr>wMa2$2A7(?i6f%I463Sy2DSSn42=LU@}0 zaS^Kh4dW6I`FV z{&~Bw0HBrRXA63(%8ztjHb`5aES?qJjE>B9FESZ(H>docn=zB%;nZ{R#XiXj3ToG@ zAIzVvoGPE6I9VA@DxXvU!%4tZOro~lbs}V;m}k=a>sdhxQai1CM526!3nq1x>S3V! zDC?h9HTIXMfrQCwP@K70k93MV@D?XdAHQ{8m?iL8SL%TQB{Z>v1ym; zx0pZO#2L|Y5e*jcL$R1RY5#T7t(z7})5Y02HmJ^ukZEgcF+`Ipinls5VPXIYmv&u@ zR2%)zJH*zLHu)mYj2&7%Ca2CDJ~B^;A@-!Gag^1f^t;o@V6RcNK_xdxH+{f)TL!{# zsiCt&R(vYh7NmVNg6c+=s_hUvCMj4X_DP9!n41tnT`8})_Ltlgr(=A%pc~mqb2Rr#F|;Pyo`Ll92mJ9;5DwqOWjyNXPeMru&DUbQ zxEgO}kNC-19a}D;n4Fa>_n&2cX&4mwjSJGW5%#s~3jXv{p>BUpFmtun#7Al5(h&h< zNX%?uqDy_}5O{5FR8g72*~O3<2tTK^$pc@ULDB1n{#M)?@l4l6uNrU#vHJai$|+6+ zxvc&=8e8I|fUpm8o`cY}*D%7Sj#uZy&kzl%S>kzrCE02>J~7FEakO6MA?($W=h*6h zJtg%m#OI4GdN5zDsMCeG5z=@^*+!0DgX4yF^F~Avo7M+w8FEn6bbK6;?Wsgw64(W? zV*>)rkyg-6TI=Z}!@E`wE+IXy}o z=~ZbVL!t+s6nwhxFg=$64_87 zJ^mG8G3mjpW<7c#rX0`Z^^&>^=(g{KgH}#v(W6NR*iI9*{%LYeIUBnBB7}+7;8p9~ zzTO@WWp=~T8Bf*r>=c=gCTVgi-Groakvg?pmUpqpaHQB|KTu1d_tAU>d$Dm#TGt@_ z5fZMGLh^r0dtwJuS9p2555eTi*rR}W0S_)v9<60m2c~SX|8pGb><)NbevwZNzY_M+ zR6TCo)~y8DkL8c()cZ!_-h>tNF=Lq#Fd5KaJf`toU-QvSK?wYoLc%$!dY!I2(Scmc zXF_vV@b8wg7^`{6APS^=KHB}rQ`Ju9>pUZ+E>yhnUON4S!Aq7Y`VZTN#82(fhAx!a z7a*eO3*Eep@7?<=iMiq1$FC?uekV`fN8w~CO-yRAqYNXEStpV_%1 zvcXO&h#|?9@ww=PM(pf-_p~y2HC5-00&RA+t(oJkTWABToXhfQ4L0(5f)Yo_K9tje zpw@+^=Oi&P<5;3Xm*r)n`=_+&NvS~2x=K{tEVSf%GmB2N__%m<9+02;{j8t}m#VL59GUa47|jF;@#YIf(`N6%LJJV@pLq`bh3?Y4##9zE7lTTe!HyNsR3}(LVo5Hp=`}!q zla<=p2WlQ&nqnT}ZjB6)xlG~yeCzK2;STZ9fbS^gvmp|kN4?72D-&;b zT^q2TjhzVMn(Vg3P(`cY5_4}A*j_c2d6f~Vbq-<-_tOf({Mm>u6wW$=&G1)wESy(k z#RsU}qt~{9N*T z5|Sr%;DgAdiiIj^u~S8w6)8yK7g##Pl&N6c&Zx1>rY#1%1LcdoHkDX5Xh}6bZbC)Y z199@V;4B1kf3-0>-%4g8wYYa}+VxR0qdXTV-#CuxN9zJ->4h^}j}w%O}Y#%!mTnbzA8|dsLr-Oz%C^ zrWN0a#zX(;9=PS5Gfg8g^zG>mw7u;SBfdN&EU~;bG8HWZ^7S)2rTf|Hl8~pIyGyjX zsyj3GD$Z#`%0m1a9#%0fR2SF1OW$sUqDkkaRT3DPoV$zTQ{Pu2{9}xT%U~NskusR| zQpuU8F+3QPH{m7T9pky4xCK88yK@P`z=zO3Y3_fyGjUqMDeKYo7?triL&UVYneD+a z{7iX}zR`Xuz$9bl@aC$~IZ-+i&ot3Iq-lprx32~iREMvH4Dvg^l|LR`zcp}2x;h;* z8LsgR()1b!-55E&8_b8DFQ48rNfO>=150SrVPdwO18rbk+b3?u`jVEBWMN+^bd(r` zZa0qR$H!kjmf}ZRAF%^f!@P;ijmMvVTz6%4y^x+iBq2kTrd`hfP^#OO8 zdzFqlO^8<8Zg*iQ%xygqkML~&>>V*p?;}fMqbfClTA&KJR$p~J`&8uDt`h2AiZrP9 z&h>B;Vqj)|zcGB!%GQAr!jT73*&*AU88Q7#<5+WF5hiM&!U%c(WbVIuZ@vPmjx-A_ z5@adi+qruCNz>|@F87dQkE`oEo0}DOFqVN*ioiW>UF3Z?EuD_Q^=DCS7p2`6Wya;- zyym3UbJ7PgbQmzS@jv(ZOwVVSqUOpbEvEGd7iZQ$Ot>zys$)FdPUXG=w>@cNSur}9 z0fRc#uOVz2Fp0TF8?eMt;@hY{Znazf8zP|dMc_r;^q>-^uC|ENAWIf;t;vb`hqb1`q?IMIp6OcG-H z+k5O3)EU3{%wkc!HKna6WLH1gZP7}t#d9(h znB1^*eFVaa%r1ba=9=+&M`5 zIyHs#Nh`L2u_#6O@iJkq}#8%jVGG(uAnp8OP) zk+Z9R+j!O5dck1(_WlUM6PqQ}`N~b*T^FJX<+%bR|NY$z4S|IHu{cX&WhQ=&;zG^b zLUKuczRQPxLLSznr}{i~!Bq8wHmb{z`oY@Kk&))jKkOD5DE?tHqv~@YMk*>WuQci5 zpQmS)3GndA3t--t9S3Mr3n63p{1Q99eX5xf)wM^B0+Kge$>i;>!q15NU2C52ly?>4 zIx#sq;(kwZx1ZvP$qA5mRX|wm`b6(2?jfs^&RBoW=Mz|0p9=-AiQTEGrY+R)k%~%| zV;?@~tEko8awfvYSl%}ykz%M`uO%2jM$Y=&ywsz2YWpZ9Pu0ma_p<79%M7u~YzIQ% z%iPV(+Yq~pf-I0GRtNdnk6}T2luKWVh`Fjxx7rUFfKBUqS7mKG7C>FY<6mUnxIgpVed*w~*t0yhkq^!#pEhnd zNg|}c$7{i=IjfL!841&MTYV-#_+5o=7y?Tj_Eo9VcJg4T&(-S9ieolzzms;l14@~_ zEly`kh`u&lAbE^U`8~b|;on0Kl-HW;d(ZIAOyb%#b1tiD{h}>FWi=dx!RuXT6oOBm z9~MEFNTX9{pBhDcxXE0Qh$MM}i%&2a$B<p?A01kHG_EIpC3zk~$rwYE zpM-7=$C6S`2op(zifRp#PkHA!U^dlRv1{wJ^|}DUe(qe4E}Za>>R0pVACml7%a@2e z>a)xhfV^Z<<7=1|KcFrq{sxxtS>8ul?LXH_>f8sWw|67^4S%jh-vontneH3|M6Nw- zHmDl0rY#gzGq=MtNo=Pkb8Ja>;Qk157@**C`&M2oF1VWJtQEU~Xd5Pn*!@IhBOK&E zt)A^q{T`(rIo>(Yq)Ft+&6#hF&)mXsTM)ZzPzZcNiN{+YUQ|#taC(|@@18{98qkPA zb~YhAibelV*;;uM$0a)uMOHfyb{p6IrSAxzA*)S?dXwmwAc-r@que)7Psxx2lf)jk zh)o}PIlDAc0YKD2nunD^m zac#Zw2qKtzy-`4ynowTeDAKQa19;l!n#8t^+*J-D$CK+;oM48_{rBm(d};5~YaimQ z_r)#hk5gtUu$3tx_{)EQ6hF`rzvOde_E)dS1R2*#0jM*8y?@M7B`~p|59kbm31o0- zT+=+aTGk+B_8K+cS%+L1PFPy3uC6d@mNNbR!hWZUbGLV-L!d25^fpOD-^1=S6H8*; zZ3wL^7$K@HiVc^K zzNT8gCCxEeoUppGc3SKdS=E%(V_wE*J6D@>3mHj=#rYxv|K(bEzdm+IP7+~2lDklh zrc1Pn8cR+h(X>Yw`^iyc=9g6tL|umYwY#~pD4N(RCYhi!{9AlV>tg!-^?U*NaLU=P z!Ld}mr=f@+a0@gIM1Z}tTPG)+&Y@~s#~y2&*Ljy8{?WV%DiB{GhdDrw6#(YOt5hP0 zQLRuF?#a=gx49r8>CVc!i~&9M`A?>?DZ!`|F*MYox`!_P!5UR3$@SRe!7)o(Pl*JO zTo2Mz)L2s;o0?Rw4io$mdL+0iBXl+=C9}3S1aLIsG=b*PU+K-(DKc;=49vUGbYh7AOvGTw%=L7_NkAO! z&}ElVUh%US1FQKvNVgwLUAOb7AZ9yXCc0s-r?7`fpj`Oz`%1-U{CUQ)r^!eVNi}*t zLs8;#E<>24NqQZ~4NR(LuAd#@>1Nh`fJ{U;q*lI80Bukb0=X=9R;g651Gp;u`U971 z5W1O9%0=&Um7Kg0lTBe&+U??$T)qSE@_0)M=OXU_i>#AUg^kWuvS=asivRCGx4W1R zuo&zhr1Yiuj0yH=#s$j>;I(yo?h5`3YirSZJ-6N#;d2|-EA{l)?}qN zoa6Fk^9<{5a8{*a~v1 zN}c>Ruz*9WrM`w1rtL%cpD@3#d24I5`G+!_>0}{>F%SdVcX42JdbdQi9xW)}zx6*h zu<4%NK!Cv}s8Tc=Du+*lCIfQ#$=5U*k14mgOk7VoiS8C{dentbBl@@001x%BA>3z4 z7%5v)qj-{nFyLp@3>N!z>-$)9m)n5s(h!l|`h+>{HiW-R@~@br^FEpiyAd~)-!T`Ya#6^d+MnJ+;$SYfK`Ay)zc|(eRM*K5H4y}} zu5D4}4`y*NIBRgcRqLH6$kIC^>76~ivCWkRWtnv)B$G2)OS0tPK?`;57)gp^Xc3Fl zNxnaxFY!iCTid(Khamj_0{)Si8KX1hvK?)}VzF|rX#g#OA98D0Tt~h zAZu9Yo5n9ByICAR26___#`-2*#`u)IKmAK5wj-O+FiVpLS1{&4CD_B{z4J{0vr>)Z z!ko7X_)fAXExpo;j2}I8ZEDvb;xrKBt>#SKzUY$8OveQSX-Vt%24eKjO6VTTGUX(q zki}NhhX&|niu`6On*$q>`2RLypho|2 z?mmm2RN+o*O5ZkmIA>xsw$X39WB8@QyVEQw#0b29f{@@bkqdc{5O~w5u^yC~W(JHm zM%RwBQiIjm$~PAMS>--3_Dz2F=1trBX}x?`lHIV{AOW1JcR-w@0}bb`J)F!11BF0b zsf>T!=R+$4f}+;G_{_jMSrw#GomY4ga;dL>jwd2>5)lKo5>YF^glj*Iien`Bps%@6=ce)#>R_5wlR+8AALe z6EVkbqrQfAMxZSM=e+@9%IbIh)?K@y>G)RS1fx~g3-e8BW(jP0X~sg0TOk=?Ke+38 zyBf_XW%H{`*$3T55gh?hhp-=^#Kav zw^{JXP@|2!uY4>>8%3Pp3@AgF;5}ykCPQ-tG?=<+#bi?)@77&cRfuO3XY?6D&$#bJ zY2v7e)_`HQmb&@1&peBPyUsfLkR>OccvQ~riVHfjo)7bW^sn8XSBX7o@udc#0mu== zKdI)HNaicax6#iUl6Kau(jlVCrOz6I;b)1q^gihl^@l-aUGwOaTty~t<)J@~pFxO1 z7ji{;gWJ8#|UW0WimfZ z_%5m?jGKGM@8B`Lb zX?U{rEX1;JrHQ1(8)JrlJ>{h8>S@avwI|ejEP!vcjoL#9b$cwvfaL61bT%iKa>D66 zr*UFYF(q42UtJd4AcO$SRS<{bJBACy{Q!!^Dn+Iine~8lht?CUFxLN7FxV898@{ z^sjE-hh&1FOj|HdLsD8|ZP$dw7K%8%^Kp}ZWsjqRgctowxqpNC(IzLK)AOvIwcyA2-5x01sQ=tK)B3aRNbArS zwL}AzPk~Z~H^mL`B}rc}ftOfL z=Qop8h|{DJX|DSn8_Warakn=pg(~FmQSg+CqoNc?QwRe$KngGU){I+neMhr^?i~{O zye=Ke+WgEK+h3v~nPO zRc^D`n1B3M9Km#uT$=9Kjk)0jyHUf!rlT1p`Yqm8wApmold$lc?E{Fl6 z{W^hB4SA4Mw?kZAbRGDY>Ds$8LyCtyvA?4z#7$0S+TMQ7#17GL-7t zG+!XAo(#Bcg%F^@zt*0GcKy)G2=$rLMwM37xu52hjm?}+W$;`iSqM_nX7>4#;j{v^ zR!^O9@hxe?Ny4yApVOH$kv59LkV;qb_hYp0!dq5%bO@XOBW-NJNtcV#f?nFds98-NAU% z$|CcMJbH(nq9B&jWyK`5l=ad?dm&2z*GAHmUcMkS02qEI0cS!pVu&FXM$smpFIxo7 zBFZRp9I?#ir-z(#efp!Xj4s%HMgOiJk-xo`Fwv))JE5o61YA8x1FM|+{>zXnmnqbn z5k|VRGM^yJejxC5ch}A-7*)~(mtQiKQ*z+x$Y}9^_HDH{uq)7(X5nKA^`cg`R1N7jS1QAZ{P^xHazfC{V^KM~z5bO+Tq1gUHf zW`i30(9Y&7AxX}K`RAuS*XN(|5{gQ-b_}>RBr7Uf0wuLBtJ>#)Zoa0iQzq0nE>OU& zB66e=A@cOURi-XeRcDom*ICH@u4on^>diz(Rcb3*bKU3o5ewaS`W`(7C7erFBtbD2 z-?CFb1-FP{%<|Jq@-vg>`CVv>tXAy~9?Io_8O^BGCz(<%KR{<$E-f zDe9n+s3z`>lh#^f_?LVnO_)iIJIEQyrQxF8j2QdKEz;vH3}~&Y4#^nz0Xf41WC%9~ z<#(kxN2ruXGy&=y?D*$=JIrWf-N!1yJg+?Kl0yqi&P$gDMAz)}hq<2LSN0!?y^y0< zgpW(9H`tA(?(4Bg!G=_zT1&5k6~HIQy|z0C;m>-gva>}YWc+=oo+yCyz^|{n20n@~ zHjyhuea^tG801M6i%*?>0m^{H%-r+P*Tt{O@G4#kOAtw^t`?YZbl%!cmDB#hi?m3P z`F_Lyp-&$nWA<-q%I&nTC=5%e$DL(miV&wZ18G zZL7w6vZ*gR=v}zAz-D6xyAAcJ^>@(3<<29MRu;!vSVQhD+(T_tokNSW9+ln8%fNX8 zz0oYIujb0hOF296r${sij8y%2GW`m~yINd+UrhPc4Mbl*f}2@lhr?55Tqus=;xzwK zN?$5+W+c0Ha-DNA9u_W8u{yR1vzO)m4AU=0m%anda(elE1xjOkm-bf6F}uOQ6F^hF zA){EdXlx(*H^5tnniLkireGSF(LmRf|DnhEnmPE`Z*f)F?MVZ%0ZZgt2M|~>TpPAH z*5NZgu9T!UR+5uHN3v*dK{Ds5Vl`l);~F)KYXqXNcsb{KViu0R$ZmJ;Pon)p1PT!f zDhIQD@%78z{XdKMO*}q@dIX$}9A~0G;{2~OipucQydTUvc$dyX*@n{9$~v{szF#NH z%U%4wl2a?8m6pE*^wg33S?oSHrcpGzrF8-FK;%E>&CXn=vB0GF#8u^Wu!+FkDx9Vx zbpyXy>GpJ__&rVepI;r_C_sIyY|HdMB`170qJYNLt~Ef&ei~vI6nMk<^c+lTug{dV zp@3~fMEq;$Wv`lQP@c-gMZpdLF$V7%0FxbgHMg-?8a3AG+8DMJUX-W!?>#q+`@^?G zoo(!{`u@ktjK#5yc*VmJkz7kFz|*}9xc1dm5`gpXoGlS?(=pz|q;JWMH@z-Jzh;M z3Fdyn2J!jnKR%;ZVD%;6x!yc1Fsgi#F;OFy$G?Hbo;jIFIhOKCOGroFvdZ}ak1TtC z{y}ht_`SNjLu8ZPS<|Pqaq< z4{rlZCrK;@$+JZz#o;$DTVYp!jT`3@9w&uPP^$paAFX}AcEfifr$|Zp71ZGUH_&Pm zdq{TMfp3(rj&qHQIIeNjpmh;6B%8T(A(cYqXQQEa)XBV`^UMq0Exc8=GXk}|E> zz))W|wDpQ}Rg|!A?i-k!$LP|QQte$eb0dO6Kgv_^`0lTbT14lF5U)7#h6$^EG~Z2= z)o%6;*|=1$mY&*cf*_Nl*bBAbpnFhAN`Huy+pdMZ#1>_`63gqi+KlrAF8>P^{eIB6 zWNo11#unFH{P;J zv1iJz@P{)__;YzeZc|lf&+72bC_3qlhe`7oBZ~*wHg&S(IpopPa&60xMgZL@Sb*bOT!8n(u_3%9o!SDtR@>*iNxMsAd< z7v)(LS{P8)YUem4Okf*5-zxqsJ~i9RE<4ww?sH7Ldpaop)I~0f>JD#$m%(FoY%7IG z!5k{3ME<`$086$mK%^Mcx>tvI1V{mHgsGplv0`DtuS`L$LTwA?EAj#Jk?tL(8d>p! z_!XbbwZQ$n<4c;FWEoZ~|6hAo8VKdyzNehR*y^BC;i&A4Wo#uaqlxUxj3s+zikcy7 z_EVulDNDAojI3iAyO|6jvXjJ+Y$^LP%1+|_={-x%`|bbX|0!R_r{|gZt@nN1*LB_4 zVF@Cokqtc-bZlO-+eTkj`7y(SqE(tMn{IGAbYHNDZtOmzo^<+*JR6(U+KlCs_;>*^ z_I4@#C8di--v-aYUOT2&7lws&1BH>QYRh$NSH_qHAw%NRjxvJYDh1c;h-TsYG9G!I zuCd~ORj)mB5+>PRD0lc<*tR_MzY_KLBnc^W>}`E77$b~5iz6VQd(^3Y>hA2x+ON0H zD=V3W4pv@af`6*7eL>D)*EQ4i7V?ZN5BGm4LogeWOh0^j4Rs>?2Fbd~seXY~Umi43hK&O(N$Y8XWpPr4u9BsW> zZ>N2O`4(E$8Mp;M7g}QlTt(7b`_VC4ZjFL&oI4DDmM&Wy#z0U8WA#x!tvc1R#kktm zGIn?xpNU=v`5xjoj-!NaK7eCPNnLX$8T1@lNnF{`XC^kQr2Uw>a#z0S27=*SR{ONA zjzenB9VMImbedI)*i|XOKJ6YYhQk7crsqeYG}YLi{`h;C6U8v6fb*^^W~Af-UPWMH zP(^n9mN|8}fQPIhF|{ju>VAuIUXxxX{u?9x$utQ~eDmFoQi}>*B9-Kz9ZV)-%=0e6 zKgchXCL>6%u^9E>=!Gehm!nE>oYR?Xu&Kj-=Qspbd#E4%p?5hVj0+j|rd{Tp|3OLh zSm=-EEEwXB4gZc&L1LJ|YJ2^#pKH#qR;~9Wg)%XJRE)*!87MHmC`*vrn5~PAk3VB+5GG_y--|^H7V)~j1F~^oPR-+JBBrGW6}~QcOf)d2kXKkVP?lGGA%?^o zxX{7|hCkyZR@ zy1~;#vcsNi;>o&S5n2%u_{K{>feJO={}w2I#Cgyx&$NXCwJ(RJvQ&|Yz&!w6suO!m zI$tE+hS$R&!s9};he5Q*xl(BY#^OBk-5EMX4UgSx>2Zc=5tM>C=nIpalgq8>vmaxp z#=G-jF1jX|1H5A4;$E#Qt+yXm+Fte6r&p*3`_c(7oI7>RNk;c}oY;#qP8a~~YSro` z(-jJ~Za!2^PCAb~+GWFvWEpLAfdDgj9svCEFBlm<*?6&Uerr?5YqFikE{9Ztvbr1! zlSaobYqzkoJk!h;Gtv~2LPsHvnq#Yt+_fb_rGo&;GY5}#MEr5w;x}oe*CguFexv;e z2|QMugeBoic<2-!;PHR#iIjCp#m5S*i1|^|-+0#Eo<)QnKkJhoa_uFP?S?rC2KbyU zW3|!7TQ7dI3i$dVI3bv*mF=%0i`ngb{bk2$rx`POMsoODgBdWryD1k)bs`(tD+@ea7W=*QVOp(Ir{ zIlW4ki|AwPGK#hQ;|d(Jd0ZnOCD6Md*BxaD@lza1Sbp~I0hcj~jgvX!CfYHE6Cy=`mpqf^yIw8(qC9a9#? z%G-II4fY~eoU&4txiohJbW1@NONZ`;2y04^8YcySKc*&sUfj3OwkgXGTl#RPFW8HG ze7*e)ooxke^|U4^vvJZ18#*Po*0U1Im8=I8N>tCGAt{R&{G!Jm2ghiv*V2cIvF&uxNOYEsK3F-XeO&!;lwp$cI(`6(dw< zdYVI7?et9E>ZF$i4wohowGHb1T_griINh)K^{P8PD0wR>dC(7Io+@+n64wpz9YSR$ zIs2Gi(k__ZnOac4i=QKuuXQ&Nn@_0!7?Ftj9?|DY@~xZEELl;7f2AZ_B~Q6dQ-E)u z@gc||q>&-=ylY6H>J@?92CqXR|{dCEGcbl~TRGEHK@DZ^L8BsEQ*EY6IbkUhUs2(CABJ5nc31 z??mYQaIGYUvqD8RoL?l6>343~k$gGO8>f$l1HC1Z^HmUJByC5CP!RrB7yd=65cQQ* zT#;G-ta`lcRWxt*Ahm~6(2=CMTp$MI$>(f{LPMiBr)HLvPRDRw@TUP{X&(`~xm`l} zn>(SmYC-~DBbbZGqVZ|>TITj#9k=KQ@`mXBzJt4~rwe(}>^_ohcMWC@OwpZ8%+Ro* z=U2wv9}w9$w-eGIW`o={P&G1@fo^&|r@%Gq?Sm|8n3i`9ZBAu}fOhINMv8XXva*3{axlZabw$M&8Q17s>lidk4j9(HT9B)tx^8vcSF4K6c|IiytC_35(ou*w$&}%`vH};y70IPd?;~bY)rrX2FqdeDxixmAAj%RhD;4ox=` z84+HBl@tkj84c!t!(R+O!TJ4ckTr}WX`iUD$F!QpPlW1x>kQAI4**F?UomQLL)gx# zQ8L_)LB`Rds+IjJ&$EOh8J^|26}EPuhI=CD*ex_Sh-8-M&DHrw;f%+7NtIQ;wP8L) zPQ4Atb{zKKU9QqHHF(x7TDPzJAdz5`%(t%Ny0z@t#VL3NJmzr}0Nn>kdzjbnFL7n` zM-1U%E4b{&T@p-?xYj=tt@t&i{c2s_v%Z9qK>-l<;U?@qeBp3vZTCX zCx1LmcuYJ%{?q)XT)t1TO|Qq*N6ogV9Yex8BvPa?v@RncJ-8&NPuhCa>=tknsFq0} z+DMg$Xd&NnQuVdj(k!{mQq{ICS4d; zmE^XHzH4denZO5SvTX$yXCxz>f5}wTTRkiRbbuL3E}hLI81p@1{r6*Bw<2>KcbC1Z z>T2K$Al`QNyiW}`K{>Dm)$u`iIwFufD7$P}2Y3A8IatE-t8*#K3F9RL8%OCc-w8Yd z7tr6-2@pXwO(e(Aqj84BW%Dw)`s7Qt!(TlUFRS{#17av1?e9loV!0ovC_Tuf-Xfz) z)MHW?VM7JMM~trA`u8xE4-pnaGQ36B8Md^!eiCZ#BYwD+_pW6k6H_&-_K{t^+&4m3 zka#6wzX%ODemvic{$jF*G986t{h1 z!3nMeG0FZKLka<0G!I#W9=cOkp5TGu@df*r2{P|j7lcUnBX5h zVZ&0#DV=|5xs_$)3eE=htSt9*-LB7EpfCdZHzavHmzB?0wYAAbTPFiPwI!jL zg&*wrW~;$z<>jM?>5^<)JdNyD9V#VTt@RU|^0CpzJmNveR%e(+;Mqh3RHz76HN&c0 z2k2AnoL_TrZ4;I5l1h0(*&3{Z6~6wvehh>@*Kc$44Q}PsfDGC%sOxJ>Rg;5Gl4a$`Qn(2cn2)B*r^OJoC9Z&CDiNR{}-5qD6&8-3N&&8wBchh!6IIKg? z8v>Tzb(58rSCC@x)z{7;Uo=2?kg{F<(M(CAuN4lB9Oqsn?j#)ONNk z!O1UXs=9DT+#2X~h@T6#Ho^ByXR(NMp~t7$SWPh*ad~AlO5&jc{wl4vsy5W_L0*4F;jVJYFYVqduI1Tx~H@>;UW! z_Fz0G=KiP*=jFRuk#CF1w&fJdqVd=l0NWGTd0BB>og1!;C5$(*C-F&~hz%<00FzTA zc!_IucbN+F3E5^4IReNW@t$8xbYS@9^Zlp8T^N}H3>UuuJ5(uACZGLB&MZYS_@8rTNv(1oEip#@rl9^bPKU?2}4%kh3a zZ>qN6(~F_H6+~Du6xMOv@ym-io<4S$7L;7!`Ssuhc_u*?`?Lke;JzaOsE3VaU_$B+ z{~mB6Xny6(X+Y_$H2CD)YSGKP5_2};^96>=wmpWi@P}xp!)LT1DkXnWQUjgDq*qGv zmL1-b3^VvW5_*w1c(GJmNU}-v1l}fTf(7VDIWK?Uy;7-_quSrEHj|Ijrl~)Cd z=~AI5(OaUPLZz>;m~qf;A*j+fwT7S_i0BofDictOeW?a<`&?+ICr(Eo-g4_@^glCe z=0BDA_P#|i&B=Ih)ZYaZ*gcGeZ3F+c51cE3Z(PU6c3~L%SnAy3_{Xq_R)bPyf;_uq z4zTG~Y(0uZGy$h&5L7!j1}Al@neIwxS_H|4U{y@e+8+ipj_o@RFy)b8Th5e&)wZ>QGj*nVIf*d|?mDQWdn8 z!;MHrx@>X);i%)EsJ6;UCJ`zyi_UX3U!&fEPIiK-$kEuOeD-UfmIi(0Kgz*zvGJX1 zK~EX&qP&1m!=4WmGxqhP#ZUlpO%3|iv%CWJ2l)8B`?yu5A79&&rJi9={yXpSyM{hS zud8-J;w=A(n3=3^Vy8(iK!^sbZ7w~G@gT_%@B)o>nZLjb<)6fROqy7CVvPaL1xzX4 zqzki*i71KlfZ!Fh(>b6JTYwr+QmlpD2##L7@GB^8-FJv}3b6L19&~Gu$z^<705Ten z1DkVz9?wJoMtF%lVOwbSZT}y8u=s)*ueVpJ780C*z zM2#8Y@o#D;pY9LE_`ZDnsILl+{bdtFs>g|U`Hef#3VmjjA1^q8wTAv@t^FQh)>G7+ z#Zs&jEiVB_d#jb{PX%++Z3U_r)pcl#D(B(VI~LkxV-N7617IP5>TiJ=LfT( zauT&16r3jiHX(8o)_2`a(%R3-+I6mR#Htn{CO%NWjo=NrhhevQzDZkL#VU*gUkn}6 zKiI*pH2Z-fx=E3P!YLop zRNh24`*^FJFW-usJ^L_rgzeMD5g>x5|4CtWUiY(=+Hf2crOz8&p~M^F70hpRNf)1| zwrUN$Hl3iDxo4z!1Z!vNQ3yt%-<)*c4>)|Fez6ctPoL&8_?m@ltPk6Cw@6JLR5ZFfQ*}3RATiErQzBwg$VEe{hdK zNwpj84~}=8^f-^sAhU?`qTeC5ai-AYThcse;6p18V${*blL;;-DxzcvjW0IFKaQR? zP3LKVpVAZppku7SWaDwo(dezsuLSMvZ5mWK!f$d&!}>0&YwN2M0Ii51A#)(X;8{NN zUIS5Z^l^(fVJK_Y2A#G;5;rc|oQHc$wbA1{`XI z=tw8upkz2w$Twoh#2B(8a9N1Sm;(JXT>&&Hg=_)XF$FDcpY8n?we&pW24F@8W6=+L zLl2blkcYZ0`7=}J4k9Yt@=HxkHCT|j@9qqYm@VD=zL`w_*-Q{oiym5YnpO^Cf2vL) z*@aH2!IvBh4L^^L+fP?&QS2mjVd3e0CXM#vyGd9tltX!7I1OV#!z2V_5@5QQ@yD>b z(J`48nR$JgBuxuGyH!k;Z&OzGR18W1L@S*}B^6}HOfu2Sq611v<&{FWn~?;R6-`@F zi_gi9_bH@?Tj;RMp@)lkvF}Wt#*wGwEQt3Je~bWzi_Y@8_7C&0Et7|wyG?xh{T~3* zZ~{@p_rIV1H9zfrewrHn+zMa>ei~T)e;QbQ-YUM@@ZC%2{svj2Fkf~z#P-;CE3uy+ tKSu)CxBOfTKZoG|unM*vqPDh}AeU1ktD%FCvhAzw5>oF%9>VtCe*l1OqJ01W literal 0 HcmV?d00001 diff --git a/resources/meshes/tank_m.obj b/resources/meshes/tank_m.obj new file mode 100644 index 0000000000..c84c1e3efa --- /dev/null +++ b/resources/meshes/tank_m.obj @@ -0,0 +1,60 @@ +v 200 200 0 +v 200 -200 0 +v 200 -200 -4 +v 200 200 -4 +v -200 200 0 +v -200 200 -4 +v -200 -200 0 +v -200 -200 -4 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 0 +vt 1 0 +vt 0 1 +vt 1 1 +vt 0 0 +vt 1 0 +vt 0 1 +vt 1 1 +f 1/1 2/2 4/3 +f 4/3 2/2 3/4 +f 5/5 1/6 6/7 +f 6/7 1/6 4/8 +f 7/9 5/10 8/11 +f 8/11 5/10 6/12 +f 2/13 7/14 3/15 +f 3/15 7/14 8/16 +f 6/21 4/22 3/24 8/23 +v -50 270.7 70.7 +v 50 270.7 70.7 +v 50 200 0 +v -50 200 0 +v -50 270.7 66.7 +v 50 270.7 66.7 +v 50 200 -4 +v -50 200 -4 +vt 0 1 +vt 0 0 +vt 1 0 +vt 1 1 +vt 0 1 +f 10/1 11/2 15/3 14/4 +f 9/4 10/8 14/7 13/8 +f 12/9 9/10 13/11 16/12 +f 11/13 12/14 16/15 15/16 +f 12/26 11/27 10/28 9/25 +f 13/13 14/14 15/15 16/16 \ No newline at end of file diff --git a/resources/quality/tank_m_base_global_draft.inst.cfg b/resources/quality/tank_m_base_global_draft.inst.cfg new file mode 100644 index 0000000000..cd5d1a23c0 --- /dev/null +++ b/resources/quality/tank_m_base_global_draft.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Draft Quality +definition = tank_m_base + +[metadata] +setting_version = 20 +type = quality +quality_type = draft +global_quality = True + +[values] +layer_height = 0.24 +layer_height_0 = 0.24 +top_bottom_thickness = =layer_height_0+layer_height*3 +wall_thickness = =line_width*2 +support_interface_height = =layer_height*4 diff --git a/resources/quality/tank_m_base_global_high.inst.cfg b/resources/quality/tank_m_base_global_high.inst.cfg new file mode 100644 index 0000000000..26af4239b1 --- /dev/null +++ b/resources/quality/tank_m_base_global_high.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Super Quality +definition = tank_m_base + +[metadata] +setting_version = 20 +type = quality +quality_type = high +weight = -1 +global_quality = True + +[values] +layer_height = 0.12 +layer_height_0 = 0.12 +top_bottom_thickness = =layer_height_0+layer_height*6 +wall_thickness = =line_width*3 +support_interface_height = =layer_height*8 diff --git a/resources/quality/tank_m_base_global_standard.inst.cfg b/resources/quality/tank_m_base_global_standard.inst.cfg new file mode 100644 index 0000000000..eb7984c7ec --- /dev/null +++ b/resources/quality/tank_m_base_global_standard.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Standard Quality +definition = tank_m_base + +[metadata] +setting_version = 20 +type = quality +quality_type = standard +weight = -3 +global_quality = True + +[values] +layer_height = 0.2 +layer_height_0 = 0.2 +top_bottom_thickness = =layer_height_0+layer_height*3 +wall_thickness = =line_width*2 +support_interface_height = =layer_height*4 From 2d3ad84167236aea48e9a92ab72073d4736a792d Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Mon, 5 Sep 2022 14:26:11 +0200 Subject: [PATCH 28/58] Fix extruders enabled button not updating The `numberExtrudersEnabled` property was never updated, as such the checks if the property changed based on the new value being different from this value didn't work. CURA-8463 --- cura/Settings/MachineManager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index d091ab9f6f..ca45cdc4b9 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -904,7 +904,7 @@ class MachineManager(QObject): if self._global_container_stack is None \ or self._global_container_stack.getProperty(setting_key, "value") == new_value \ - or self.numberExtrudersEnabled < 2: + or self._global_container_stack.definitionChanges.getProperty("extruders_enabled_count", "value") < 2: return user_changes_container = self._global_container_stack.userChanges @@ -1009,7 +1009,7 @@ class MachineManager(QObject): for position, extruder in enumerate(self._global_container_stack.extruderList): if extruder.isEnabled and int(position) < machine_extruder_count: extruder_count += 1 - if self.numberExtrudersEnabled != extruder_count: + if self._global_container_stack.definitionChanges.getProperty("extruders_enabled_count", "value") != extruder_count: definition_changes_container.setProperty("extruders_enabled_count", "value", extruder_count) self.numberExtrudersEnabledChanged.emit() From b6a461bd08d0e5f5a471586e1e1212e0187439f6 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Mon, 5 Sep 2022 17:32:23 +0200 Subject: [PATCH 29/58] Revert "Prevent abstract machines from being deleted in the config menu" This reverts commit 27fc11b8404ed84a9b95b2fdddab239d2cd3c93b. --- cura/Machines/Models/GlobalStacksModel.py | 3 +-- resources/qml/Preferences/MachinesPage.qml | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/cura/Machines/Models/GlobalStacksModel.py b/cura/Machines/Models/GlobalStacksModel.py index 62b470daee..69f2ec3822 100644 --- a/cura/Machines/Models/GlobalStacksModel.py +++ b/cura/Machines/Models/GlobalStacksModel.py @@ -172,7 +172,6 @@ class GlobalStacksModel(ListModel): "metadata": container_stack.getMetaData().copy(), "discoverySource": section_name, "removalWarning": removal_warning, - "isOnline": is_online, - "isAbstractMachine": is_abstract_machine}) + "isOnline": is_online}) items.sort(key=lambda i: (not i["hasRemoteConnection"], i["name"])) self.setItems(items) diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml index 16f144cf85..258b45292e 100644 --- a/resources/qml/Preferences/MachinesPage.qml +++ b/resources/qml/Preferences/MachinesPage.qml @@ -17,7 +17,7 @@ UM.ManagementPage title: catalog.i18nc("@title:tab", "Printers") detailsPlaneCaption: base.currentItem && base.currentItem.name ? base.currentItem.name : "" - model: Cura.GlobalStacksModel { } + model: Cura.GlobalStacksModel { filterAbstractMachines: false } sectionRole: "discoverySource" @@ -139,7 +139,7 @@ UM.ManagementPage Cura.MenuItem { text: catalog.i18nc("@action:button", "Remove") - enabled: base.currentItem != null && model.count > 1 && !base.currentItem.isAbstractMachine + enabled: base.currentItem != null && model.count > 1 onTriggered: confirmDialog.open() } Cura.MenuItem From f30fd519b74351bf090310e4358a2d54659b58db Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Mon, 5 Sep 2022 19:37:34 +0200 Subject: [PATCH 30/58] PrintInformation.py Use warning method with Logger Use f-string and warning method with Logger instead of "Old Style string formatting --- cura/UI/PrintInformation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cura/UI/PrintInformation.py b/cura/UI/PrintInformation.py index 2b8e13b09f..e16037c603 100644 --- a/cura/UI/PrintInformation.py +++ b/cura/UI/PrintInformation.py @@ -186,7 +186,7 @@ class PrintInformation(QObject): if time != time: # Check for NaN. Engine can sometimes give us weird values. duration.setDuration(0) - Logger.log("w", "Received NaN for print duration message") + Logger.warning("Received NaN for print duration message") continue total_estimated_time += time @@ -368,7 +368,7 @@ class PrintInformation(QObject): mime_type = MimeTypeDatabase.getMimeTypeForFile(name) data = mime_type.stripExtension(name) except MimeTypeNotFoundError: - Logger.log("w", "Unsupported Mime Type Database file extension %s", name) + Logger.warning(f"Unsupported Mime Type Database file extension {name}") if data is not None and check_name is not None: self._base_name = data From 699a9c053062a3835f4ea88b6b8086258a2b8eed Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 6 Sep 2022 10:13:45 +0200 Subject: [PATCH 31/58] Remove unneeded excluded materials These machines are 1.75mm, so there is no need to add the UM materials as excluded --- resources/definitions/alya3dp.def.json | 2 +- resources/definitions/alyanx3dp.def.json | 2 +- resources/definitions/artillery_base.def.json | 49 ---------- .../atmat_signal_pro_base.def.json | 98 ------------------- resources/definitions/creality_base.def.json | 49 ---------- .../definitions/flyingbear_base.def.json | 49 ---------- .../imade3d_jellybox_root.def.json | 49 ---------- resources/definitions/kupido.def.json | 2 +- resources/definitions/mingda_base.def.json | 49 ---------- resources/definitions/rigid3d_base.def.json | 10 -- resources/definitions/rigid3d_hobby.def.json | 49 ---------- resources/definitions/rigid3d_mucit.def.json | 49 ---------- resources/definitions/rigid3d_zero.def.json | 49 ---------- resources/definitions/tizyx_evy.def.json | 2 +- resources/definitions/tizyx_k25.def.json | 2 +- .../definitions/trimaker_cosmosII.def.json | 49 ---------- .../definitions/trimaker_nebula.def.json | 49 ---------- resources/definitions/uni_base.def.json | 49 ---------- resources/definitions/voron2_base.def.json | 52 +--------- resources/definitions/zav_base.def.json | 57 +---------- 20 files changed, 10 insertions(+), 756 deletions(-) diff --git a/resources/definitions/alya3dp.def.json b/resources/definitions/alya3dp.def.json index f335285cfb..4b800226cf 100644 --- a/resources/definitions/alya3dp.def.json +++ b/resources/definitions/alya3dp.def.json @@ -10,7 +10,7 @@ "file_formats": "text/x-gcode", "platform": "alya_platform.3mf", "platform_offset": [-60, -45, 75 ], - "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_abs", "generic_abs_175", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "generic_tpu_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "ultimaker_abs_black", "ultimaker_abs_blue", "ultimaker_abs_green", "ultimaker_abs_grey", "ultimaker_abs_orange", "ultimaker_abs_pearl-gold", "ultimaker_abs_red", "ultimaker_abs_silver-metallic", "ultimaker_abs_white", "ultimaker_abs_yellow", "ultimaker_bam", "ultimaker_cpe_black", "ultimaker_cpe_blue", "ultimaker_cpe_dark-grey", "ultimaker_cpe_green", "ultimaker_cpe_light-grey", "ultimaker_cpe_plus_black", "ultimaker_cpe_plus_transparent", "ultimaker_cpe_plus_white", "ultimaker_cpe_red", "ultimaker_cpe_transparent", "ultimaker_cpe_white", "ultimaker_cpe_yellow", "ultimaker_nylon_black", "ultimaker_nylon_transparent", "ultimaker_pc_black", "ultimaker_pc_transparent", "ultimaker_pc_white", "ultimaker_pla_black", "ultimaker_pla_blue", "ultimaker_pla_green", "ultimaker_pla_magenta", "ultimaker_pla_orange", "ultimaker_pla_pearl-white", "ultimaker_pla_red", "ultimaker_pla_silver-metallic", "ultimaker_pla_transparent", "ultimaker_pla_white", "ultimaker_pla_yellow", "ultimaker_pp_transparent", "ultimaker_pva", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "ultimaker_tpu_black", "ultimaker_tpu_blue", "ultimaker_tpu_red", "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla","tizyx_pla","tizyx_abs","tizyx_pla_bois" ], + "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_abs", "generic_abs_175", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "generic_tpu_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla","tizyx_pla","tizyx_abs","tizyx_pla_bois" ], "preferred_material": "generic_pla", "has_machine_quality": true, "has_materials": true, diff --git a/resources/definitions/alyanx3dp.def.json b/resources/definitions/alyanx3dp.def.json index 76ce87445b..509f252488 100644 --- a/resources/definitions/alyanx3dp.def.json +++ b/resources/definitions/alyanx3dp.def.json @@ -10,7 +10,7 @@ "file_formats": "text/x-gcode", "platform": "alya_nx_platform.3mf", "platform_offset": [-104, 0, 93 ], - "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_abs", "generic_abs_175", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "generic_tpu_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "ultimaker_abs_black", "ultimaker_abs_blue", "ultimaker_abs_green", "ultimaker_abs_grey", "ultimaker_abs_orange", "ultimaker_abs_pearl-gold", "ultimaker_abs_red", "ultimaker_abs_silver-metallic", "ultimaker_abs_white", "ultimaker_abs_yellow", "ultimaker_bam", "ultimaker_cpe_black", "ultimaker_cpe_blue", "ultimaker_cpe_dark-grey", "ultimaker_cpe_green", "ultimaker_cpe_light-grey", "ultimaker_cpe_plus_black", "ultimaker_cpe_plus_transparent", "ultimaker_cpe_plus_white", "ultimaker_cpe_red", "ultimaker_cpe_transparent", "ultimaker_cpe_white", "ultimaker_cpe_yellow", "ultimaker_nylon_black", "ultimaker_nylon_transparent", "ultimaker_pc_black", "ultimaker_pc_transparent", "ultimaker_pc_white", "ultimaker_pla_black", "ultimaker_pla_blue", "ultimaker_pla_green", "ultimaker_pla_magenta", "ultimaker_pla_orange", "ultimaker_pla_pearl-white", "ultimaker_pla_red", "ultimaker_pla_silver-metallic", "ultimaker_pla_transparent", "ultimaker_pla_white", "ultimaker_pla_yellow", "ultimaker_pp_transparent", "ultimaker_pva", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "ultimaker_tpu_black", "ultimaker_tpu_blue", "ultimaker_tpu_red", "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla","tizyx_pla","tizyx_abs","tizyx_pla_bois" ], + "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_abs", "generic_abs_175", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "generic_tpu_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla","tizyx_pla","tizyx_abs","tizyx_pla_bois" ], "preferred_material": "generic_pla", "has_machine_quality": true, "has_materials": true, diff --git a/resources/definitions/artillery_base.def.json b/resources/definitions/artillery_base.def.json index eabe97ba03..1dd22d9f5f 100644 --- a/resources/definitions/artillery_base.def.json +++ b/resources/definitions/artillery_base.def.json @@ -64,55 +64,6 @@ "tizyx_abs", "tizyx_pla", "tizyx_pla_bois", - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", "verbatim_bvoh_175", "zyyx_pro_flex", "zyyx_pro_pla" diff --git a/resources/definitions/atmat_signal_pro_base.def.json b/resources/definitions/atmat_signal_pro_base.def.json index 0d1c5a75c2..d92ea5c468 100644 --- a/resources/definitions/atmat_signal_pro_base.def.json +++ b/resources/definitions/atmat_signal_pro_base.def.json @@ -23,55 +23,6 @@ "supports_usb_connection": false, "supports_network_connection": false, "exclude_materials": [ - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", "chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", @@ -128,55 +79,6 @@ "tizyx_pla", "tizyx_pla_bois", "tizyx_pva", - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", diff --git a/resources/definitions/creality_base.def.json b/resources/definitions/creality_base.def.json index 4d2391f959..9d1c578f81 100644 --- a/resources/definitions/creality_base.def.json +++ b/resources/definitions/creality_base.def.json @@ -68,55 +68,6 @@ "tizyx_abs", "tizyx_pla", "tizyx_pla_bois", - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", "verbatim_bvoh_175", "zyyx_pro_flex", "zyyx_pro_pla" diff --git a/resources/definitions/flyingbear_base.def.json b/resources/definitions/flyingbear_base.def.json index 89da5ecf70..9dc406494e 100644 --- a/resources/definitions/flyingbear_base.def.json +++ b/resources/definitions/flyingbear_base.def.json @@ -88,55 +88,6 @@ "tizyx_pla", "tizyx_pla_bois", "tizyx_pva", - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", diff --git a/resources/definitions/imade3d_jellybox_root.def.json b/resources/definitions/imade3d_jellybox_root.def.json index 5de6d9dae1..6d5025d56a 100644 --- a/resources/definitions/imade3d_jellybox_root.def.json +++ b/resources/definitions/imade3d_jellybox_root.def.json @@ -53,55 +53,6 @@ "tizyx_abs", "tizyx_pla_bois", "tizyx_pla", - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", diff --git a/resources/definitions/kupido.def.json b/resources/definitions/kupido.def.json index 717c85f93b..667f25a1c4 100644 --- a/resources/definitions/kupido.def.json +++ b/resources/definitions/kupido.def.json @@ -9,7 +9,7 @@ "manufacturer": "Kati Hal ARGE", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0], - "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "generic_tpu_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "ultimaker_abs_black", "ultimaker_abs_blue", "ultimaker_abs_green", "ultimaker_abs_grey", "ultimaker_abs_orange", "ultimaker_abs_pearl-gold", "ultimaker_abs_red", "ultimaker_abs_silver-metallic", "ultimaker_abs_white", "ultimaker_abs_yellow", "ultimaker_bam", "ultimaker_cpe_black", "ultimaker_cpe_blue", "ultimaker_cpe_dark-grey", "ultimaker_cpe_green", "ultimaker_cpe_light-grey", "ultimaker_cpe_plus_black", "ultimaker_cpe_plus_transparent", "ultimaker_cpe_plus_white", "ultimaker_cpe_red", "ultimaker_cpe_transparent", "ultimaker_cpe_white", "ultimaker_cpe_yellow", "ultimaker_nylon_black", "ultimaker_nylon_transparent", "ultimaker_pc_black", "ultimaker_pc_transparent", "ultimaker_pc_white", "ultimaker_pla_black", "ultimaker_pla_blue", "ultimaker_pla_green", "ultimaker_pla_magenta", "ultimaker_pla_orange", "ultimaker_pla_pearl-white", "ultimaker_pla_red", "ultimaker_pla_silver-metallic", "ultimaker_pla_transparent", "ultimaker_pla_white", "ultimaker_pla_yellow", "ultimaker_pp_transparent", "ultimaker_pva", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "ultimaker_tpu_black", "ultimaker_tpu_blue", "ultimaker_tpu_red", "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla","tizyx_pla","tizyx_abs","tizyx_pla_bois" ], + "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "generic_tpu_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla","tizyx_pla","tizyx_abs","tizyx_pla_bois" ], "preferred_material": "generic_pla", "has_machine_quality": true, "has_materials": true, diff --git a/resources/definitions/mingda_base.def.json b/resources/definitions/mingda_base.def.json index f59a26fc1a..ce80fda7c4 100644 --- a/resources/definitions/mingda_base.def.json +++ b/resources/definitions/mingda_base.def.json @@ -64,55 +64,6 @@ "tizyx_abs", "tizyx_pla", "tizyx_pla_bois", - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", "verbatim_bvoh_175", "zyyx_pro_flex", "zyyx_pro_pla" diff --git a/resources/definitions/rigid3d_base.def.json b/resources/definitions/rigid3d_base.def.json index bd1995f3dc..8d180872d6 100644 --- a/resources/definitions/rigid3d_base.def.json +++ b/resources/definitions/rigid3d_base.def.json @@ -50,16 +50,6 @@ "redd_abs", "redd_asa", "redd_hips", "redd_nylon", "redd_petg", "redd_pla", "redd_tpe", "structur3d_dap100silicone", "tizyx_abs", "tizyx_flex", "tizyx_petg", "tizyx_pla", "tizyx_pla_bois", "tizyx_pva", - "ultimaker_abs_black", "ultimaker_abs_blue", "ultimaker_abs_green", "ultimaker_abs_grey", "ultimaker_abs_orange", "ultimaker_abs_pearl-gold", "ultimaker_abs_red", "ultimaker_abs_silver-metallic", "ultimaker_abs_white", "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", "ultimaker_cpe_blue", "ultimaker_cpe_dark-grey", "ultimaker_cpe_green", "ultimaker_cpe_light-grey", "ultimaker_cpe_plus_black", "ultimaker_cpe_plus_transparent", "ultimaker_cpe_plus_white", "ultimaker_cpe_red", "ultimaker_cpe_transparent", "ultimaker_cpe_white", "ultimaker_cpe_yellow", - "ultimaker_nylon_black", "ultimaker_nylon_transparent", - "ultimaker_pc_black", "ultimaker_pc_transparent", "ultimaker_pc_white", - "ultimaker_pla_black", "ultimaker_pla_blue", "ultimaker_pla_green", "ultimaker_pla_magenta", "ultimaker_pla_orange", "ultimaker_pla_pearl-white", "ultimaker_pla_red", "ultimaker_pla_silver-metallic", "ultimaker_pla_transparent", "ultimaker_pla_white", "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", - "ultimaker_tpu_black", "ultimaker_tpu_blue", "ultimaker_tpu_red", "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_PLA_Glitter", "Vertex_Delta_PLA_Mat", "Vertex_Delta_PLA_Satin", "Vertex_Delta_PLA_Wood", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla" diff --git a/resources/definitions/rigid3d_hobby.def.json b/resources/definitions/rigid3d_hobby.def.json index 9e62173f1e..19a65f7e1a 100644 --- a/resources/definitions/rigid3d_hobby.def.json +++ b/resources/definitions/rigid3d_hobby.def.json @@ -72,55 +72,6 @@ "tizyx_pla", "tizyx_pla_bois", "tizyx_pva", - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", diff --git a/resources/definitions/rigid3d_mucit.def.json b/resources/definitions/rigid3d_mucit.def.json index 45255579eb..ad0d4c7463 100644 --- a/resources/definitions/rigid3d_mucit.def.json +++ b/resources/definitions/rigid3d_mucit.def.json @@ -74,55 +74,6 @@ "tizyx_pla", "tizyx_pla_bois", "tizyx_pva", - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", diff --git a/resources/definitions/rigid3d_zero.def.json b/resources/definitions/rigid3d_zero.def.json index 678f4bc80c..d4db4f1281 100644 --- a/resources/definitions/rigid3d_zero.def.json +++ b/resources/definitions/rigid3d_zero.def.json @@ -72,55 +72,6 @@ "tizyx_pla", "tizyx_pla_bois", "tizyx_pva", - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", diff --git a/resources/definitions/tizyx_evy.def.json b/resources/definitions/tizyx_evy.def.json index 5032ee16d7..5cbdba0de5 100644 --- a/resources/definitions/tizyx_evy.def.json +++ b/resources/definitions/tizyx_evy.def.json @@ -15,7 +15,7 @@ "preferred_variant_name": "0.4mm", "preferred_material": "tizyx_pla", "preferred_quality_type": "normal", - "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175","generic_pp", "generic_pva", "generic_pva_175", "generic_tpu", "generic_tpu_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "ultimaker_abs_black", "ultimaker_abs_blue", "ultimaker_abs_green", "ultimaker_abs_grey", "ultimaker_abs_orange", "ultimaker_abs_pearl-gold", "ultimaker_abs_red", "ultimaker_abs_silver-metallic", "ultimaker_abs_white", "ultimaker_abs_yellow", "ultimaker_bam", "ultimaker_cpe_black", "ultimaker_cpe_blue", "ultimaker_cpe_dark-grey", "ultimaker_cpe_green", "ultimaker_cpe_light-grey", "ultimaker_cpe_plus_black", "ultimaker_cpe_plus_transparent", "ultimaker_cpe_plus_white", "ultimaker_cpe_red", "ultimaker_cpe_transparent", "ultimaker_cpe_white", "ultimaker_cpe_yellow", "ultimaker_nylon_black", "ultimaker_nylon_transparent", "ultimaker_pc_black", "ultimaker_pc_transparent", "ultimaker_pc_white", "ultimaker_pla_black", "ultimaker_pla_blue", "ultimaker_pla_green", "ultimaker_pla_magenta", "ultimaker_pla_orange", "ultimaker_pla_pearl-white", "ultimaker_pla_red", "ultimaker_pla_silver-metallic", "ultimaker_pla_transparent", "ultimaker_pla_white", "ultimaker_pla_yellow", "ultimaker_pp_transparent", "ultimaker_pva", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "ultimaker_tpu_black", "ultimaker_tpu_blue", "ultimaker_tpu_red", "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla" ], + "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175","generic_pp", "generic_pva", "generic_pva_175", "generic_tpu", "generic_tpu_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla" ], "machine_extruder_trains": { diff --git a/resources/definitions/tizyx_k25.def.json b/resources/definitions/tizyx_k25.def.json index 9f65d67313..14a9d3e410 100644 --- a/resources/definitions/tizyx_k25.def.json +++ b/resources/definitions/tizyx_k25.def.json @@ -10,7 +10,7 @@ "file_formats": "text/x-gcode", "platform": "tizyx_k25_platform.3mf", "platform_offset": [0, -4, 0], - "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_abs", "generic_abs_175", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pla", "generic_pla_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "generic_tpu_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "ultimaker_abs_black", "ultimaker_abs_blue", "ultimaker_abs_green", "ultimaker_abs_grey", "ultimaker_abs_orange", "ultimaker_abs_pearl-gold", "ultimaker_abs_red", "ultimaker_abs_silver-metallic", "ultimaker_abs_white", "ultimaker_abs_yellow", "ultimaker_bam", "ultimaker_cpe_black", "ultimaker_cpe_blue", "ultimaker_cpe_dark-grey", "ultimaker_cpe_green", "ultimaker_cpe_light-grey", "ultimaker_cpe_plus_black", "ultimaker_cpe_plus_transparent", "ultimaker_cpe_plus_white", "ultimaker_cpe_red", "ultimaker_cpe_transparent", "ultimaker_cpe_white", "ultimaker_cpe_yellow", "ultimaker_nylon_black", "ultimaker_nylon_transparent", "ultimaker_pc_black", "ultimaker_pc_transparent", "ultimaker_pc_white", "ultimaker_pla_black", "ultimaker_pla_blue", "ultimaker_pla_green", "ultimaker_pla_magenta", "ultimaker_pla_orange", "ultimaker_pla_pearl-white", "ultimaker_pla_red", "ultimaker_pla_silver-metallic", "ultimaker_pla_transparent", "ultimaker_pla_white", "ultimaker_pla_yellow", "ultimaker_pp_transparent", "ultimaker_pva", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "ultimaker_tpu_black", "ultimaker_tpu_blue", "ultimaker_tpu_red", "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla" ], + "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_abs", "generic_abs_175", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pla", "generic_pla_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "generic_tpu_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla" ], "preferred_material": "tizyx_pla", "has_machine_quality": true, "has_materials": true, diff --git a/resources/definitions/trimaker_cosmosII.def.json b/resources/definitions/trimaker_cosmosII.def.json index 45072df1b1..0866582f18 100644 --- a/resources/definitions/trimaker_cosmosII.def.json +++ b/resources/definitions/trimaker_cosmosII.def.json @@ -89,55 +89,6 @@ "tizyx_pla", "tizyx_pla_bois", "tizyx_pva", - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", diff --git a/resources/definitions/trimaker_nebula.def.json b/resources/definitions/trimaker_nebula.def.json index dd8e3a565c..c475bc074b 100644 --- a/resources/definitions/trimaker_nebula.def.json +++ b/resources/definitions/trimaker_nebula.def.json @@ -89,55 +89,6 @@ "tizyx_pla", "tizyx_pla_bois", "tizyx_pva", - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", diff --git a/resources/definitions/uni_base.def.json b/resources/definitions/uni_base.def.json index 82b05f3366..1eadbc015f 100644 --- a/resources/definitions/uni_base.def.json +++ b/resources/definitions/uni_base.def.json @@ -65,55 +65,6 @@ "tizyx_pla", "tizyx_pla_bois", "tizyx_pva", - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", diff --git a/resources/definitions/voron2_base.def.json b/resources/definitions/voron2_base.def.json index 850a75ef28..e735a6290f 100644 --- a/resources/definitions/voron2_base.def.json +++ b/resources/definitions/voron2_base.def.json @@ -17,57 +17,7 @@ "preferred_variant_name": "V6 0.40mm", "machine_extruder_trains": { "0": "voron2_extruder_0" }, "preferred_material": "generic_abs", - "exclude_materials": [ - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white" - ] + "exclude_materials": [] }, "overrides": { diff --git a/resources/definitions/zav_base.def.json b/resources/definitions/zav_base.def.json index 9f73419d46..5e20b849f5 100644 --- a/resources/definitions/zav_base.def.json +++ b/resources/definitions/zav_base.def.json @@ -74,55 +74,6 @@ "tizyx_pla", "tizyx_pla_bois", "tizyx_pva", - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", @@ -150,10 +101,10 @@ "machine_center_is_zero": {"default_value": false}, "machine_gcode_flavor": {"default_value": "RepRap (Marlin/Sprinter)"}, "machine_head_with_fans_polygon": {"default_value": [ - [-26,41], - [-26,-21], - [36,-21], - [36,41] + [-26, 41], + [-26, -21], + [36, -21], + [36, 41] ] }, "gantry_height": {"value": 999999}, From 9d12ee841bd3d313a64a282fd3a7a282d1d9cd5a Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 6 Sep 2022 10:21:21 +0200 Subject: [PATCH 32/58] Remove unneeded values from machine profiles --- resources/definitions/SV02.def.json | 1 - resources/definitions/atom3.def.json | 73 ++++++++------------ resources/definitions/hms434.def.json | 3 +- resources/definitions/koonovo_base.def.json | 1 - resources/definitions/koonovo_kn3.def.json | 1 - resources/definitions/koonovo_kn5.def.json | 1 - resources/definitions/mp_mini_delta.def.json | 1 - resources/definitions/rigid3d_base.def.json | 2 +- resources/definitions/tank_m_base.def.json | 3 +- 9 files changed, 30 insertions(+), 56 deletions(-) diff --git a/resources/definitions/SV02.def.json b/resources/definitions/SV02.def.json index b718f19a9a..ab2ad8439e 100644 --- a/resources/definitions/SV02.def.json +++ b/resources/definitions/SV02.def.json @@ -29,7 +29,6 @@ "gantry_height": { "value": "30" }, "speed_print": { "default_value": 50 }, "default_material_print_temperature": { "value": 195 }, - "material_print_temperature_layer_0": { "value": "material_print_temperature" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": 195 }, "machine_max_feedrate_x": { "value": 500 }, diff --git a/resources/definitions/atom3.def.json b/resources/definitions/atom3.def.json index 2483b81155..62d6c23577 100644 --- a/resources/definitions/atom3.def.json +++ b/resources/definitions/atom3.def.json @@ -2,7 +2,8 @@ "version": 2, "name": "Atom 3", "inherits": "fdmprinter", - "metadata": { + "metadata": + { "visible": true, "author": "Daniel Kurth", "manufacturer": "Layer One", @@ -22,10 +23,8 @@ }, - - - "overrides": { - + "overrides": + { "machine_name": { "default_value": "Atom 3" }, "machine_show_variants": { "default_value": true}, "machine_shape": { "default_value": "elliptic" }, @@ -48,45 +47,36 @@ "machine_gcode_flavor": { "RepRap (Marlin/Sprinter)": "Marlin" }, "machine_heated_bed": { "default_value": true }, "material_diameter": { "default_value": 1.75}, - "machine_start_gcode": { + "machine_start_gcode": + { "default_value": ";MACHINE START CODE\nG21 ;metric values\nG90 ;absolute positioning\nG28 ;home\nG1 Z5 F9000\n;MACHINE START CODE" }, - "machine_end_gcode": { + "machine_end_gcode": + { "default_value": ";MACHINE END CODE\nG91 ;relative positioning\nG1 E-1 F300 ;retract filament release pressure\nG1 Z+1.0 E-5 F9000 ;move up a and retract more\nG90 ;absolute positioning\nG28; home\nM84 ;steppers off\n;MACHINE END CODE" }, - - - "layer_height": {"default_value": 0.2 }, - "layer_height_0": { + "layer_height_0": + { "default_value": 0.2, "value": "layer_height" }, "line_width": { "value": "machine_nozzle_size"}, - "infill_line_width": { "value":"line_width"}, + "initial_layer_line_width_factor": { "default_value": 100}, - - - "top_bottom_thickness": { "default_value": 1.0}, - - - "infill_sparse_density": { "default_value": 17}, "infill_before_walls": { "value": false}, "zig_zaggify_infill": { "value": true}, - - - "default_material_print_temperature": { "default_value": 200 }, - "material_print_temperature_layer_0": { "value": "material_print_temperature + 0"}, "material_initial_print_temperature": { "value": "material_print_temperature_layer_0"}, "material_final_print_temperature": { "value": "material_print_temperature"}, - "default_material_bed_temperature": { + "default_material_bed_temperature": + { "default_value": 60, "minimum_value": "0", "minimum_value_warning": "build_volume_temperature", @@ -95,16 +85,13 @@ }, "material_bed_temperature": { - "value": "round(default_material_bed_temperature-((-0.202*default_material_bed_temperature)+7.16)) if default_material_bed_temperature > 40 else default_material_bed_temperature", + "value": "round(default_material_bed_temperature-(-0.202 * default_material_bed_temperature + 7.16)) if default_material_bed_temperature > 40 else default_material_bed_temperature", "minimum_value": "0", "minimum_value_warning": "build_volume_temperature", "maximum_value_warning": "115", "maximum_value": "120" }, - - - "speed_print": { "default_value": 40}, "speed_wall": { "value": "speed_print * 0.75"}, "speed_wall_0": { "value": "speed_print * 0.5"}, @@ -112,48 +99,42 @@ "speed_layer_0": { "value": "20"}, "speed_slowdown_layers": { "default_value": 1}, - - - - "retraction_amount": { + "retraction_amount": + { "default_value": 7, - "maximum_value_warning": 9 }, - "retraction_speed": { + "maximum_value_warning": 9 + }, + "retraction_speed": + { "default_value": 70, "maximum_value_warning": 80 }, "retraction_hop_enabled": { "default_value": true}, "retraction_hop": { "default_value": 0.5}, - - - "cool_min_layer_time": { "default_value": 5}, "cool_min_speed": { "default_value": 10}, "cool_lift_head": { "default_value": false}, - - - "support_type": { "default_value": "everywhere"}, "support_angle": { "default_value": 60}, "support_z_distance": { "value": "layer_height"}, "support_xy_distance_overhang":{"value": "machine_nozzle_size"}, - - "adhesion_type": { "default_value": "skirt"}, - "skirt_brim_minimal_length": { + "skirt_brim_minimal_length": + { "default_value": 750, - "value": "60/(layer_height_0*line_width)", + "value": "60 / (layer_height_0 * line_width)", "minimum_value": "0", "minimum_value_warning": "25", "maximum_value_warning": "4000" }, - "skirt_gap": { - "default_value": "1`", - "value": "3*wall_line_width_0" + "skirt_gap": + { + "default_value": 1, + "value": "3 * wall_line_width_0" } } } \ No newline at end of file diff --git a/resources/definitions/hms434.def.json b/resources/definitions/hms434.def.json index bf5a601dbd..584a642ceb 100644 --- a/resources/definitions/hms434.def.json +++ b/resources/definitions/hms434.def.json @@ -108,8 +108,7 @@ "default_material_print_temperature": {"maximum_value": "401" }, "material_print_temperature": {"maximum_value": "401" }, - "material_print_temperature_layer_0": {"value": "material_print_temperature", - "maximum_value": "401" }, + "material_print_temperature_layer_0": {"maximum_value": "401" }, "material_initial_print_temperature": {"value": "material_print_temperature", "maximum_value_warning": "material_print_temperature + 15", "maximum_value": "401" }, diff --git a/resources/definitions/koonovo_base.def.json b/resources/definitions/koonovo_base.def.json index c2713c7a44..3b3ab06fff 100644 --- a/resources/definitions/koonovo_base.def.json +++ b/resources/definitions/koonovo_base.def.json @@ -59,7 +59,6 @@ "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, "default_material_print_temperature": { "value": "195" }, - "material_print_temperature_layer_0": { "value": "material_print_temperature" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, "material_bed_temperature": { "value": "55" }, diff --git a/resources/definitions/koonovo_kn3.def.json b/resources/definitions/koonovo_kn3.def.json index 485190958d..c67209805d 100644 --- a/resources/definitions/koonovo_kn3.def.json +++ b/resources/definitions/koonovo_kn3.def.json @@ -76,7 +76,6 @@ "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, "default_material_print_temperature": { "value": "195" }, - "material_print_temperature_layer_0": { "value": "material_print_temperature" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, "default_material_bed_temperature": { "value": "55" }, diff --git a/resources/definitions/koonovo_kn5.def.json b/resources/definitions/koonovo_kn5.def.json index 8b517a232a..7cd82a61aa 100644 --- a/resources/definitions/koonovo_kn5.def.json +++ b/resources/definitions/koonovo_kn5.def.json @@ -78,7 +78,6 @@ "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, "default_material_print_temperature": { "value": "195" }, - "material_print_temperature_layer_0": { "value": "material_print_temperature" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, diff --git a/resources/definitions/mp_mini_delta.def.json b/resources/definitions/mp_mini_delta.def.json index eda45bb413..b003bb3853 100644 --- a/resources/definitions/mp_mini_delta.def.json +++ b/resources/definitions/mp_mini_delta.def.json @@ -48,7 +48,6 @@ }, "material_bed_temperature": { "value": 40 }, "line_width": { "value": "round(machine_nozzle_size, 2)" }, - "material_print_temperature_layer_0": { "value": "material_print_temperature" }, "material_bed_temperature_layer_0": { "value": "material_bed_temperature" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_max_feedrate_x": { "default_value": 150 }, diff --git a/resources/definitions/rigid3d_base.def.json b/resources/definitions/rigid3d_base.def.json index 8d180872d6..b205f03cc8 100644 --- a/resources/definitions/rigid3d_base.def.json +++ b/resources/definitions/rigid3d_base.def.json @@ -112,7 +112,7 @@ "retraction_combing": { "value": "'noskin'" }, "travel_avoid_other_parts": { "value": "False" }, - "support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height*2" }, + "support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height * 2" }, "support_interface_enable": { "value": "True" }, "support_interface_density": { "value": 70 }, "minimum_interface_area": { "value": 5.0 }, diff --git a/resources/definitions/tank_m_base.def.json b/resources/definitions/tank_m_base.def.json index e4f465d39e..41387fad7e 100644 --- a/resources/definitions/tank_m_base.def.json +++ b/resources/definitions/tank_m_base.def.json @@ -58,8 +58,7 @@ "infill_sparse_density": { "value": "15" }, "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, - "material_print_temperature": { "value": "195" }, - "material_print_temperature_layer_0": { "value": "material_print_temperature" }, + "material_print_temperature": { "value": "195" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, "material_bed_temperature": { "value": "55" }, From 767f6e7e61ae24eb42c02e3ac17bd21a6f29fbb4 Mon Sep 17 00:00:00 2001 From: Joey de l'Arago Date: Tue, 6 Sep 2022 10:25:14 +0200 Subject: [PATCH 33/58] Add CMakeLists.txt back for translation scripts. CURA-9483 --- CMakeLists.txt | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000..61c6d1cf41 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,32 @@ +# Copyright (c) 2022 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +# NOTE: This is only being used for translation scripts. + +# For MSVC flags, will be ignored on non-Windows OS's and this project in general. Only needed for cura-build-environment. +cmake_policy(SET CMP0091 NEW) +project(cura) +cmake_minimum_required(VERSION 3.18) + +include(GNUInstallDirs) + +list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) + +set(URANIUM_DIR "${CMAKE_SOURCE_DIR}/../Uranium" CACHE PATH "The location of the Uranium repository") +set(URANIUM_SCRIPTS_DIR "${URANIUM_DIR}/scripts" CACHE PATH "The location of the scripts directory of the Uranium repository") + +option(GENERATE_TRANSLATIONS "Should the translations be generated?" ON) + +if(NOT ${URANIUM_DIR} STREQUAL "") + set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${URANIUM_DIR}/cmake") +endif() +if(NOT ${URANIUM_SCRIPTS_DIR} STREQUAL "") + list(APPEND CMAKE_MODULE_PATH ${URANIUM_DIR}/cmake) + include(UraniumTranslationTools) + # Extract Strings + add_custom_target(extract-messages ${URANIUM_SCRIPTS_DIR}/extract-messages ${CMAKE_SOURCE_DIR} cura) + # Build Translations + if(${GENERATE_TRANSLATIONS}) + CREATE_TRANSLATION_TARGETS() + endif() +endif() \ No newline at end of file From 328b32ee6bd2378e985588cacccff8c83f8ad955 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 6 Sep 2022 10:29:19 +0200 Subject: [PATCH 34/58] Remove a bunch of duplicate settings from artillery base --- resources/definitions/artillery_base.def.json | 28 ++++++------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/resources/definitions/artillery_base.def.json b/resources/definitions/artillery_base.def.json index 1dd22d9f5f..a6da7e7d96 100644 --- a/resources/definitions/artillery_base.def.json +++ b/resources/definitions/artillery_base.def.json @@ -106,35 +106,25 @@ "jerk_enabled": { "value": false }, "speed_print": { "value": 60.0 } , - "speed_infill": { "value": "speed_print" }, - "speed_wall": { "value": "speed_print / 2" }, - "speed_wall_0": { "value": "speed_wall" }, "speed_wall_x": { "value": "speed_wall" }, - "speed_topbottom": { "value": "speed_print / 2" }, - "speed_roofing": { "value": "speed_topbottom" }, "speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" }, "speed_layer_0": { "value": 20.0 }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_support": { "value": "speed_wall_0" }, "speed_support_interface": { "value": "speed_topbottom" }, "speed_z_hop": { "value": 5 }, - "skirt_brim_speed": { "value": "speed_layer_0" }, - "line_width": { "value": "machine_nozzle_size * 1.1" }, - "optimize_wall_printing_order": { "value": "True" }, + "optimize_wall_printing_order": { "value": true }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, - "material_flow": { "value": 100 }, "z_seam_type": { "value": "'back'" }, "z_seam_corner": { "value": "'z_seam_corner_none'" }, - - "infill_sparse_density": { "value": "20" }, + "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, "infill_before_walls": { "value": false }, "infill_overlap": { "value": 30.0 }, @@ -144,15 +134,18 @@ "fill_outline_gaps": { "value": false }, - "retraction_speed": { + "retraction_speed": + { "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value": 200 }, - "retraction_retract_speed": { + "retraction_retract_speed": + { "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value": 200 }, - "retraction_prime_speed": { + "retraction_prime_speed": + { "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value": 200 }, @@ -172,7 +165,6 @@ "retraction_min_travel": { "value": 1.5 }, "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, - "cool_fan_enabled": { "value": true }, "cool_min_layer_time": { "value": 10 }, "adhesion_type": { "value": "'none' if support_enable else 'skirt'" }, @@ -187,14 +179,13 @@ "meshfix_maximum_travel_resolution": { "value": "meshfix_maximum_resolution" }, "support_angle": { "value": "math.floor(math.degrees(math.atan(line_width / 2.0 / layer_height)))" }, - "support_pattern": { "value": "'zigzag'" }, + "support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" }, "support_use_towers": { "value": false }, "support_xy_distance": { "value": "wall_line_width_0 * 2" }, "support_xy_distance_overhang": { "value": "wall_line_width_0" }, "support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height * 2" }, "support_xy_overrides_z": { "value": "'xy_overrides_z'" }, - "support_wall_count": { "value": 1 }, "support_brim_enable": { "value": true }, "support_brim_width": { "value": 4 }, @@ -207,7 +198,6 @@ "minimum_interface_area": { "value": 10 }, "top_bottom_thickness": {"value": "layer_height_0 + layer_height * 3" }, "wall_thickness": {"value": "line_width * 2" } - } } From 3654b303c996bde48af8391e177f101a439a144b Mon Sep 17 00:00:00 2001 From: Joey de l'Arago Date: Tue, 6 Sep 2022 11:26:17 +0200 Subject: [PATCH 35/58] Remove unused files CURA-9483 --- GitVersion.yml | 55 -------------------------------- pytest.ini | 4 --- run_coverage.py | 22 ------------- run_mypy.py | 85 ------------------------------------------------- 4 files changed, 166 deletions(-) delete mode 100644 GitVersion.yml delete mode 100644 pytest.ini delete mode 100644 run_coverage.py delete mode 100644 run_mypy.py diff --git a/GitVersion.yml b/GitVersion.yml deleted file mode 100644 index 6f94c14540..0000000000 --- a/GitVersion.yml +++ /dev/null @@ -1,55 +0,0 @@ -mode: ContinuousDelivery -next-version: 5.1 -branches: - main: - regex: ^main$ - mode: ContinuousDelivery - tag: alpha - increment: None - prevent-increment-of-merged-branch-version: true - track-merge-target: false - source-branches: [ ] - tracks-release-branches: false - is-release-branch: false - is-mainline: true - pre-release-weight: 55000 - develop: - regex: ^CURA-.*$ - mode: ContinuousDelivery - tag: alpha - increment: None - prevent-increment-of-merged-branch-version: false - track-merge-target: true - source-branches: [ 'main' ] - tracks-release-branches: true - is-release-branch: false - is-mainline: false - pre-release-weight: 0 - release: - regex: ^[\d]+\.[\d]+$ - mode: ContinuousDelivery - tag: beta - increment: None - prevent-increment-of-merged-branch-version: true - track-merge-target: false - source-branches: [ 'main' ] - tracks-release-branches: false - is-release-branch: true - is-mainline: false - pre-release-weight: 30000 - pull-request-main: - regex: ^(pull|pull\-requests|pr)[/-] - mode: ContinuousDelivery - tag: alpha+ - increment: Inherit - prevent-increment-of-merged-branch-version: true - tag-number-pattern: '[/-](?\d+)[-/]' - track-merge-target: true - source-branches: [ 'main' ] - tracks-release-branches: false - is-release-branch: false - is-mainline: false - pre-release-weight: 30000 -ignore: - sha: [ ] -merge-message-formats: { } diff --git a/pytest.ini b/pytest.ini deleted file mode 100644 index de6e8797fb..0000000000 --- a/pytest.ini +++ /dev/null @@ -1,4 +0,0 @@ -[pytest] -testpaths = tests -python_files = Test*.py -python_classes = Test diff --git a/run_coverage.py b/run_coverage.py deleted file mode 100644 index 2fd60f9342..0000000000 --- a/run_coverage.py +++ /dev/null @@ -1,22 +0,0 @@ -import pytest -from pathlib import Path - -# Small helper script to run the coverage of main code & all plugins - -path = Path("plugins") -args = ["--cov" ,"cura" , "--cov-report", "html"] -all_paths = [] -for p in path.glob('**/*'): - if p.is_dir(): - if p.name in ["__pycache__", "tests"]: - continue - args.append("--cov") - args.append(str(p)) - all_paths.append(str(p)) - -for path in all_paths: - args.append(path) -args.append(".") -args.append("-x") -pytest.main(args) - diff --git a/run_mypy.py b/run_mypy.py deleted file mode 100644 index 4486085064..0000000000 --- a/run_mypy.py +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env python -import os -import sys -from multiprocessing.dummy import Pool -from functools import partial -from subprocess import call - -# A quick Python implementation of unix 'where' command. -def where(exe_name: str, search_path: str = os.getenv("PATH")) -> str: - if search_path is None: - search_path = "" - paths = search_path.split(os.pathsep) - result = "" - print(" -> sys.executable location: %s" % sys.executable) - sys_exec_dir = os.path.dirname(sys.executable) - root_dir = os.path.dirname(sys_exec_dir) - paths += [sys_exec_dir, - os.path.join(root_dir, "bin"), - os.path.join(root_dir, "scripts"), - ] - paths = set(paths) - - for path in sorted(paths): - print(" -> Searching %s" % path) - candidate_path = os.path.join(path, exe_name) - if os.path.exists(candidate_path): - result = candidate_path - break - return result - - -def findModules(path): - result = [] - for entry in os.scandir(path): - if entry.is_dir() and os.path.exists(os.path.join(path, entry.name, "__init__.py")): - result.append(entry.name) - return result - - -def main(): - # Find Uranium via the PYTHONPATH var - uraniumUMPath = where("UM", os.getenv("PYTHONPATH")) - if uraniumUMPath is None: - uraniumUMPath = os.path.join("..", "Uranium") - uraniumPath = os.path.dirname(uraniumUMPath) - - mypy_path_parts = [".", os.path.join(".", "plugins"), os.path.join(".", "plugins", "VersionUpgrade"), - uraniumPath, os.path.join(uraniumPath, "stubs")] - if sys.platform == "win32": - os.putenv("MYPYPATH", ";".join(mypy_path_parts)) - else: - os.putenv("MYPYPATH", ":".join(mypy_path_parts)) - - # Mypy really needs to be run via its Python script otherwise it can't find its data files. - mypy_exe_name = "mypy.exe" if sys.platform == "win32" else "mypy" - mypy_exe_dir = where(mypy_exe_name) - mypy_module = os.path.join(os.path.dirname(mypy_exe_dir), mypy_exe_name) - print("Found mypy exe path: %s" % mypy_exe_dir) - print("Found mypy module path: %s" % mypy_module) - - plugins = findModules("plugins") - plugins.sort() - - mods = ["cura"] + plugins + findModules("plugins/VersionUpgrade") - success_code = 0 - - pool = Pool(2) # Run two commands at once - - if sys.platform == "win32": - commands = ["%s -p %s --ignore-missing-imports" % (mypy_module, mod) for mod in mods] - else: - commands = ["%s %s -p %s --ignore-missing-imports" % (sys.executable, mypy_module, mod) for mod in mods] - - for i, returncode in enumerate(pool.imap(partial(call, shell=True), commands)): - if returncode != 0: - print("\nCommand {command} failed checking (code {errcode}). :(".format(command = commands[i], errcode = returncode)) - success_code = 1 - if success_code: - print("MYPY check was completed, but did not pass") - else: - print("MYPY check was completed and passed with flying colors") - return success_code - -if __name__ == "__main__": - sys.exit(main()) \ No newline at end of file From 59d9bfde99864c341f900f25a00c5c4b34ca6a1f Mon Sep 17 00:00:00 2001 From: jelle Spijker Date: Tue, 6 Sep 2022 11:33:18 +0200 Subject: [PATCH 36/58] Use umbase 0.1.7 This will now set the version by default if not defined at the cmd line to the first entry in the conandata.yml --- conandata.yml | 107 +------------------------------------------------- conanfile.py | 26 ++++++------ 2 files changed, 16 insertions(+), 117 deletions(-) diff --git a/conandata.yml b/conandata.yml index 4b9d8dd612..83f45a2056 100644 --- a/conandata.yml +++ b/conandata.yml @@ -1,5 +1,5 @@ --- -# Usage: defaults to None +# Usage: defaults to the first entry in this conandata.yml file # If you're on a release branch create an entry for that **version** e.q.: `5.1.0` update the requirements (use pinned versions, not latest) # also create a beta entry for that **version** e.q.: `5.1.0-beta`, update the requirements (use the /(latest)@ultimaker/stable) # @@ -10,111 +10,6 @@ # requirements (use the /(latest)@ultimaker/testing) # # Subject to change in the future! -"None": - requirements: - - "pyarcus/(latest)@ultimaker/testing" - - "curaengine/(latest)@ultimaker/testing" - - "pysavitar/(latest)@ultimaker/testing" - - "pynest2d/(latest)@ultimaker/testing" - - "uranium/(latest)@ultimaker/testing" - - "fdm_materials/(latest)@ultimaker/testing" - - "cura_binary_data/(latest)@ultimaker/testing" - - "cpython/3.10.4" - internal_requirements: - - "fdm_materials_private/(latest)@ultimaker/testing" - - "cura_private_data/(latest)@ultimaker/testing" - runinfo: - entrypoint: "cura_app.py" - pyinstaller: - datas: - cura_plugins: - package: "cura" - src: "plugins" - dst: "share/cura/plugins" - cura_resources: - package: "cura" - src: "resources" - dst: "share/cura/resources" - cura_private_data: - package: "cura_private_data" - src: "resources" - dst: "share/cura/resources" - internal: true - uranium_plugins: - package: "uranium" - src: "plugins" - dst: "share/uranium/plugins" - uranium_resources: - package: "uranium" - src: "resources" - dst: "share/uranium/resources" - uranium_um_qt_qml_um: - package: "uranium" - src: "site-packages/UM/Qt/qml/UM" - dst: "PyQt6/Qt6/qml/UM" - cura_binary_data: - package: "cura_binary_data" - src: "resources/cura/resources" - dst: "share/cura/resources" - uranium_binary_data: - package: "cura_binary_data" - src: "resources/uranium/resources" - dst: "share/uranium/resources" - windows_binary_data: - package: "cura_binary_data" - src: "windows" - dst: "share/windows" - fdm_materials: - package: "fdm_materials" - src: "materials" - dst: "share/cura/resources/materials" - fdm_materials_private: - package: "fdm_materials_private" - src: "resources/materials" - dst: "share/cura/resources/materials" - internal: true - tcl: - package: "tcl" - src: "lib/tcl8.6" - dst: "tcl" - tk: - package: "tk" - src: "lib/tk8.6" - dst: "tk" - binaries: - curaengine: - package: "curaengine" - src: "bin" - dst: "." - binary: "CuraEngine" - hiddenimports: - - "pySavitar" - - "pyArcus" - - "pynest2d" - - "PyQt6" - - "PyQt6.QtNetwork" - - "PyQt6.sip" - - "logging.handlers" - - "zeroconf" - - "fcntl" - - "stl" - - "serial" - collect_all: - - "cura" - - "UM" - - "serial" - - "Charon" - - "sqlite3" - - "trimesh" - - "win32ctypes" - - "PyQt6" - - "PyQt6.QtNetwork" - - "PyQt6.sip" - - "stl" - icon: - Windows: "./icons/Cura.ico" - Macos: "./icons/cura.icns" - Linux: "./icons/cura-128.png" "5.2.0-alpha": requirements: - "pyarcus/(latest)@ultimaker/testing" diff --git a/conanfile.py b/conanfile.py index bcdaeda5d9..c5f584ed16 100644 --- a/conanfile.py +++ b/conanfile.py @@ -3,13 +3,13 @@ from pathlib import Path from jinja2 import Template -from conans import tools from conan import ConanFile -from conan.tools import files +from conan.tools.files import copy, rmdir, save from conan.tools.env import VirtualRunEnv, Environment +from conan.tools.scm import Version from conan.errors import ConanInvalidConfiguration -required_conan_version = ">=1.48.0" +required_conan_version = ">=1.50.0" class CuraConan(ConanFile): @@ -26,7 +26,7 @@ class CuraConan(ConanFile): # FIXME: Remove specific branch once merged to main # Extending the conanfile with the UMBaseConanfile https://github.com/Ultimaker/conan-ultimaker-index/tree/CURA-9177_Fix_CI_CD/recipes/umbase - python_requires = "umbase/0.1.5@ultimaker/testing" + python_requires = "umbase/[>=0.1.7]@ultimaker/stable" python_requires_extend = "umbase.UMBaseConanfile" options = { @@ -135,7 +135,7 @@ class CuraConan(ConanFile): def _site_packages(self): if self.settings.os == "Windows": return self._base_dir.joinpath("Lib", "site-packages") - py_version = tools.Version(self.deps_cpp_info["cpython"].version) + py_version = Version(self.deps_cpp_info["cpython"].version) return self._base_dir.joinpath("lib", f"python{py_version.major}.{py_version.minor}", "site-packages") @property @@ -151,7 +151,7 @@ class CuraConan(ConanFile): cura_version = self.version if self.options.internal: - version = tools.Version(self.version) + version = Version(self.version) cura_version = f"{version.major}.{version.minor}.{version.patch}-{version.prerelease.replace('+', '+internal_')}" with open(Path(location, "CuraVersion.py"), "w") as f: @@ -220,7 +220,7 @@ class CuraConan(ConanFile): with open(Path(__file__).parent.joinpath("Ultimaker-Cura.spec.jinja"), "r") as f: pyinstaller = Template(f.read()) - cura_version = tools.Version(self.version) if self.version else tools.Version("0.0.0") + cura_version = Version(self.version) if self.version else Version("0.0.0") with open(Path(location, "Ultimaker-Cura.spec"), "w") as f: f.write(pyinstaller.render( @@ -243,6 +243,10 @@ class CuraConan(ConanFile): short_version = f"'{cura_version.major}.{cura_version.minor}.{cura_version.patch}'", )) + def set_version(self): + if self.version is None: + self.version = self._umdefault_version() + def configure(self): self.options["pyarcus"].shared = True self.options["pysavitar"].shared = True @@ -250,7 +254,7 @@ class CuraConan(ConanFile): self.options["cpython"].shared = True def validate(self): - if self.version and tools.Version(self.version) <= tools.Version("4"): + if self.version and Version(self.version) <= Version("4"): raise ConanInvalidConfiguration("Only versions 5+ are support") def requirements(self): @@ -293,7 +297,7 @@ class CuraConan(ConanFile): self.copy("CuraEngine.exe", root_package = "curaengine", src = "@bindirs", dst = "", keep_path = False) self.copy("CuraEngine", root_package = "curaengine", src = "@bindirs", dst = "", keep_path = False) - files.rmdir(self, "resources/materials") + rmdir(self, os.path.join(self.source_folder, "resources", "materials")) self.copy("*.fdm_material", root_package = "fdm_materials", src = "@resdirs", dst = "resources/materials", keep_path = False) self.copy("*.sig", root_package = "fdm_materials", src = "@resdirs", dst = "resources/materials", keep_path = False) @@ -377,7 +381,7 @@ class CuraConan(ConanFile): self.copy("*.txt", src = self.cpp_info.resdirs[-1], dst = self._base_dir.joinpath("pip_requirements")) # Generate the GitHub Action version info Environment - cura_version = tools.Version(self.version) + cura_version = Version(self.version) env_prefix = "Env:" if self.settings.os == "Windows" else "" activate_github_actions_version_env = Template(r"""echo "CURA_VERSION_MAJOR={{ cura_version_major }}" >> ${{ env_prefix }}GITHUB_ENV echo "CURA_VERSION_MINOR={{ cura_version_minor }}" >> ${{ env_prefix }}GITHUB_ENV @@ -392,7 +396,7 @@ echo "CURA_VERSION_FULL={{ cura_version_full }}" >> ${{ env_prefix }}GITHUB_ENV env_prefix = env_prefix) ext = ".sh" if self.settings.os != "Windows" else ".ps1" - files.save(self, self._script_dir.joinpath(f"activate_github_actions_version_env{ext}"), activate_github_actions_version_env) + save(self, self._script_dir.joinpath(f"activate_github_actions_version_env{ext}"), activate_github_actions_version_env) self._generate_cura_version(Path(self._site_packages, "cura")) From 2c331604e82cc4a6d2d2fbbf592d41f51c68f169 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 6 Sep 2022 11:39:08 +0200 Subject: [PATCH 37/58] Clean up a lot of duplicate settings from machine profiles These were errors that were copy pasted from other definitions. So leaving them as is would continue to decrease the quality of third party profiles. --- .../definitions/Mark2_for_Ultimaker2.def.json | 3 - resources/definitions/SV01.def.json | 6 +- resources/definitions/SV03.def.json | 6 +- resources/definitions/anet3d.def.json | 37 ++++------ resources/definitions/anycubic_4max.def.json | 1 - .../definitions/anycubic_i3_mega_s.def.json | 11 +-- .../definitions/anycubic_mega_zero.def.json | 1 - resources/definitions/artillery_base.def.json | 2 +- resources/definitions/biqu_base.def.json | 12 +--- .../definitions/blv_mgn_cube_base.def.json | 3 - .../builder_premium_large.def.json | 1 - .../builder_premium_medium.def.json | 1 - .../builder_premium_small.def.json | 1 - resources/definitions/cartesio.def.json | 1 - resources/definitions/creality_base.def.json | 35 ++++----- .../dagoma_pro_430_bowden.def.json | 1 - .../definitions/deltacomb_dc20flux.def.json | 2 +- .../definitions/deltacomb_dc21flux.def.json | 2 +- resources/definitions/dxu.def.json | 3 - resources/definitions/eryone_er20.def.json | 3 - resources/definitions/eryone_thinker.def.json | 3 - .../definitions/flyingbear_base.def.json | 8 --- resources/definitions/goofoo_base.def.json | 20 ++---- .../definitions/hctech_hc300-m1&m1h.def.json | 3 - .../definitions/hctech_hc300-m2h.def.json | 2 - .../definitions/hctech_hc300-m3.def.json | 2 - resources/definitions/hms434.def.json | 6 +- resources/definitions/inat_base.def.json | 11 --- resources/definitions/kingroon_base.def.json | 9 +-- resources/definitions/koonovo_base.def.json | 13 +--- resources/definitions/koonovo_kn3.def.json | 10 --- resources/definitions/koonovo_kn5.def.json | 13 +--- resources/definitions/liquid.def.json | 3 +- resources/definitions/longer_base.def.json | 16 +---- resources/definitions/lotmaxx_sc10.def.json | 72 +++++++++---------- resources/definitions/lotmaxx_sc20.def.json | 3 - resources/definitions/malyan_m200.def.json | 2 - resources/definitions/mingda_base.def.json | 9 +-- .../definitions/mixware_hyper_s.def.json | 9 --- resources/definitions/rigid3d_base.def.json | 2 +- ...tur3d_discov3ry1_complete_um2plus.def.json | 3 - resources/definitions/tank_m_base.def.json | 11 --- .../definitions/trimaker_nebula_plus.def.json | 1 - resources/definitions/tronxy_x.def.json | 16 ++--- resources/definitions/two_trees_base.def.json | 18 +---- .../ultimaker2_plus_connect.def.json | 2 - resources/definitions/ultimaker3.def.json | 1 - resources/definitions/ultimaker_s3.def.json | 1 - resources/definitions/ultimaker_s5.def.json | 1 - resources/definitions/weedo_x40.def.json | 16 +---- resources/definitions/winbo_dragonl4.def.json | 26 ++++--- resources/definitions/winbo_mini2.def.json | 16 ++--- .../definitions/winbo_superhelper105.def.json | 21 +++--- 53 files changed, 122 insertions(+), 359 deletions(-) diff --git a/resources/definitions/Mark2_for_Ultimaker2.def.json b/resources/definitions/Mark2_for_Ultimaker2.def.json index 68498db423..2418445a26 100644 --- a/resources/definitions/Mark2_for_Ultimaker2.def.json +++ b/resources/definitions/Mark2_for_Ultimaker2.def.json @@ -63,9 +63,6 @@ "machine_heated_bed": { "default_value": true }, - "speed_infill": { - "value": "speed_print" - }, "speed_wall_x": { "value": "speed_wall" }, diff --git a/resources/definitions/SV01.def.json b/resources/definitions/SV01.def.json index 439ced7d38..bd7773de6f 100644 --- a/resources/definitions/SV01.def.json +++ b/resources/definitions/SV01.def.json @@ -45,16 +45,12 @@ "acceleration_enabled": { "value": false }, "jerk_enabled": { "value": false }, "speed_print": { "value": 50.0 } , - "speed_infill": { "value": "speed_print" }, "skirt_brim_speed": { "value": "speed_layer_0" }, - "line_width": { "value": "machine_nozzle_size" }, "optimize_wall_printing_order": { "value": "True" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, - "material_flow": { "value": 100 }, "z_seam_type": { "value": "'back'" }, - "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, - "infill_sparse_density": { "value": "20" }, + "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, "infill_pattern": { "value": "'lines'" }, "infill_before_walls": { "value": false }, "infill_overlap": { "value": 30.0 }, diff --git a/resources/definitions/SV03.def.json b/resources/definitions/SV03.def.json index 5968a82c0d..b056175b27 100644 --- a/resources/definitions/SV03.def.json +++ b/resources/definitions/SV03.def.json @@ -45,16 +45,12 @@ "acceleration_enabled": { "value": false }, "jerk_enabled": { "value": false }, "speed_print": { "value": 50.0 } , - "speed_infill": { "value": "speed_print" }, "skirt_brim_speed": { "value": "speed_layer_0" }, - "line_width": { "value": "machine_nozzle_size" }, "optimize_wall_printing_order": { "value": "True" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, - "material_flow": { "value": 100 }, "z_seam_type": { "value": "'back'" }, - "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, - "infill_sparse_density": { "value": "20" }, + "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, , "infill_pattern": { "value": "'lines'" }, "infill_before_walls": { "value": false }, "infill_overlap": { "value": 30.0 }, diff --git a/resources/definitions/anet3d.def.json b/resources/definitions/anet3d.def.json index 59ad93416c..1946b81bc0 100644 --- a/resources/definitions/anet3d.def.json +++ b/resources/definitions/anet3d.def.json @@ -51,14 +51,11 @@ "speed_print": { "value": 50.0 } , "speed_infill": { "value": "speed_print * 2" }, - "speed_wall": { "value": "speed_print / 2" }, - "speed_wall_0": { "value": "speed_wall" }, + "speed_wall_x": { "value": "speed_wall" }, - "speed_topbottom": { "value": "speed_print / 2" }, "speed_roofing": { "value": "speed_topbottom" }, "speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" }, "speed_layer_0": { "value": "speed_print / 2" }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, "speed_prime_tower": { "value": "speed_print" }, "speed_support": { "value": "speed_print" }, @@ -67,18 +64,14 @@ "skirt_brim_speed": { "value": "speed_layer_0" }, - "line_width": { "value": "machine_nozzle_size" }, - "optimize_wall_printing_order": { "value": true }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, - "material_flow": { "value": 100 }, "z_seam_type": { "value": "'back'" }, "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, - - "infill_sparse_density": { "value": "20" }, + "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, "infill_before_walls": { "value": true }, "infill_overlap": { "value": 30.0 }, @@ -88,34 +81,34 @@ "fill_outline_gaps": { "value": false }, - "retraction_speed": { + "retraction_speed": + { "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value": 200 }, - "retraction_retract_speed": { + "retraction_retract_speed": + { "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value": 200 }, - "retraction_prime_speed": { + "retraction_prime_speed": + { "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value": 200 }, - - "retraction_hop_enabled": { "value": "False" }, + "retraction_hop": { "value": 1 }, "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'noskin'" }, "retraction_combing_max_distance": { "value": 30 }, "travel_avoid_other_parts": { "value": true }, "travel_avoid_supports": { "value": true }, "travel_retract_before_outer_wall": { "value": true }, - - "retraction_enable": { "value": true }, + "retraction_count_max": { "value": 100 }, "retraction_extrusion_window": { "value": 10 }, "retraction_min_travel": { "value": 1.5 }, "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, - "cool_fan_enabled": { "value": true }, "cool_min_layer_time": { "value": 10 }, "adaptive_layer_height_variation": { "value": 0.04 }, @@ -133,16 +126,12 @@ "extruder_prime_pos_y":{"minimum_value": "0","maximum_value": "machine_depth"}, "extruder_prime_pos_x":{"minimum_value": "0","maximum_value": "machine_width"}, - "relative_extrusion":{"value": false,"enabled": false}, + "relative_extrusion":{"value": false, "enabled": false}, "machine_use_extruder_offset_to_offset_coords": {"default_value": true}, "machine_gcode_flavor": {"default_value": "RepRap (Marlin/Sprinter)"}, - "machine_center_is_zero": { - "default_value": false - }, - "gantry_height": { - "value": "0" - } + "machine_center_is_zero": { "default_value": false }, + "gantry_height": { "value": "0"} } } diff --git a/resources/definitions/anycubic_4max.def.json b/resources/definitions/anycubic_4max.def.json index 6d6c20e8f5..838c81f991 100644 --- a/resources/definitions/anycubic_4max.def.json +++ b/resources/definitions/anycubic_4max.def.json @@ -51,7 +51,6 @@ "gantry_height": { "value": "25.0" }, "skin_overlap": { "value": "10" }, - "acceleration_enabled": { "value": "True" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, "acceleration_print": { "value": "900" }, diff --git a/resources/definitions/anycubic_i3_mega_s.def.json b/resources/definitions/anycubic_i3_mega_s.def.json index 2e972c78b6..54fa459946 100644 --- a/resources/definitions/anycubic_i3_mega_s.def.json +++ b/resources/definitions/anycubic_i3_mega_s.def.json @@ -53,8 +53,6 @@ "material_bed_temperature": { "maximum_value_warning": 110 }, "material_bed_temperature_layer_0": { "maximum_value_warning": 110 }, - "material_flow": { "value": 100 }, - "top_bottom_thickness": { "value": "layer_height_0 + layer_height * math.floor(1.2 / layer_height)" }, "wall_thickness": { "value": "line_width * 3 if line_width < 0.6 else line_width * 2" }, @@ -70,15 +68,11 @@ "jerk_enabled": { "value": true }, "speed_print": { "value": 50.0 } , - "speed_infill": { "value": "speed_print" }, - "speed_wall": { "value": "speed_print / 2" }, - "speed_wall_0": { "value": "speed_wall" }, + "speed_wall_x": { "value": "speed_wall" }, - "speed_topbottom": { "value": "speed_print / 2" }, "speed_roofing": { "value": "speed_topbottom" }, "speed_travel": { "value": 100.0, "maximum_value_warning": 150.0, "maximum_value": 200.0 }, "speed_layer_0": { "value": "speed_topbottom if speed_topbottom < 20 else 20" }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": "speed_travel" }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_support": { "value": "speed_wall_0" }, @@ -101,7 +95,7 @@ "retraction_hop": { "value": 0.075 }, "retraction_hop_only_when_collides": { "value": true }, "retraction_amount": { "value": 6 }, - "retraction_enable": { "value": true }, + "retraction_min_travel": { "value": 1.5 }, "retraction_combing": { "value": "'off'" }, "retraction_combing_max_distance": { "value": 30 }, @@ -114,7 +108,6 @@ "cool_fan_speed": { "value": 100 }, "cool_fan_speed_0": { "value": 30 }, - "cool_fan_enabled": { "value": true }, "cool_min_layer_time": { "value": 10 }, "adhesion_type": { "value": "'none' if support_enable else 'skirt'" }, diff --git a/resources/definitions/anycubic_mega_zero.def.json b/resources/definitions/anycubic_mega_zero.def.json index 5f71d243ab..c483a4ad09 100644 --- a/resources/definitions/anycubic_mega_zero.def.json +++ b/resources/definitions/anycubic_mega_zero.def.json @@ -99,7 +99,6 @@ "travel_avoid_supports": { "value": true }, "travel_retract_before_outer_wall": { "value": true }, - "retraction_enable": { "value": true }, "retraction_speed": { "value": 30 }, "retraction_amount": { "value": 7 }, "retraction_count_max": { "value": 100 }, diff --git a/resources/definitions/artillery_base.def.json b/resources/definitions/artillery_base.def.json index a6da7e7d96..171ac4a524 100644 --- a/resources/definitions/artillery_base.def.json +++ b/resources/definitions/artillery_base.def.json @@ -159,7 +159,7 @@ "travel_retract_before_outer_wall": { "value": true }, "retraction_amount": { "value": 2 }, - "retraction_enable": { "value": true }, + "retraction_count_max": { "value": 100 }, "retraction_extrusion_window": { "value": 10 }, "retraction_min_travel": { "value": 1.5 }, diff --git a/resources/definitions/biqu_base.def.json b/resources/definitions/biqu_base.def.json index 82ee71dd7a..44a582e545 100755 --- a/resources/definitions/biqu_base.def.json +++ b/resources/definitions/biqu_base.def.json @@ -59,15 +59,11 @@ "jerk_enabled": { "value": false }, "speed_print": { "value": 50.0 } , - "speed_infill": { "value": "speed_print" }, - "speed_wall": { "value": "speed_print / 2" }, - "speed_wall_0": { "value": "speed_wall" }, + "speed_wall_x": { "value": "speed_wall" }, - "speed_topbottom": { "value": "speed_print / 2" }, "speed_roofing": { "value": "speed_topbottom" }, "speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" }, "speed_layer_0": { "value": 20.0 }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_support": { "value": "speed_wall_0" }, @@ -76,19 +72,16 @@ "skirt_brim_speed": { "value": "speed_layer_0" }, - "line_width": { "value": "machine_nozzle_size" }, "optimize_wall_printing_order": { "value": "True" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, - "material_flow": { "value": 100 }, "z_seam_type": { "value": "'sharpest_corner'" }, "z_seam_corner": { "value": "'z_seam_corner_inner'" }, "infill_line_width": { "value": "line_width * 1.2" }, - "infill_sparse_density": { "value": "20" }, "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, "infill_before_walls": { "value": false }, "infill_overlap": { "value": 30.0 }, @@ -111,7 +104,6 @@ "maximum_value": 200 }, - "retraction_hop_enabled": { "value": "False" }, "retraction_hop": { "value": 0.2 }, "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'noskin'" }, "retraction_combing_max_distance": { "value": 30 }, @@ -119,13 +111,11 @@ "travel_avoid_supports": { "value": true }, "travel_retract_before_outer_wall": { "value": true }, - "retraction_enable": { "value": true }, "retraction_count_max": { "value": 100 }, "retraction_extrusion_window": { "value": 10 }, "retraction_min_travel": { "value": 1.5 }, "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, - "cool_fan_enabled": { "value": true }, "cool_min_layer_time": { "value": 10 }, "adhesion_type": { "value": "'skirt'" }, diff --git a/resources/definitions/blv_mgn_cube_base.def.json b/resources/definitions/blv_mgn_cube_base.def.json index 2c73b80cfc..84c585e016 100644 --- a/resources/definitions/blv_mgn_cube_base.def.json +++ b/resources/definitions/blv_mgn_cube_base.def.json @@ -165,9 +165,6 @@ "skin_overlap": { "value": 10.0 }, - "speed_infill": { - "value": "speed_print" - }, "speed_travel_layer_0": { "value": "math.ceil(speed_travel * 0.4)" }, diff --git a/resources/definitions/builder_premium_large.def.json b/resources/definitions/builder_premium_large.def.json index f0e64921e7..8f49efedb2 100644 --- a/resources/definitions/builder_premium_large.def.json +++ b/resources/definitions/builder_premium_large.def.json @@ -54,7 +54,6 @@ "prime_blob_enable": { "enabled": true }, - "acceleration_enabled": { "value": "True" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, "acceleration_print": { "value": "3000" }, diff --git a/resources/definitions/builder_premium_medium.def.json b/resources/definitions/builder_premium_medium.def.json index e85c654fa2..c87e3f70c4 100644 --- a/resources/definitions/builder_premium_medium.def.json +++ b/resources/definitions/builder_premium_medium.def.json @@ -54,7 +54,6 @@ "prime_blob_enable": { "enabled": true }, - "acceleration_enabled": { "value": "True" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, "acceleration_print": { "value": "3000" }, diff --git a/resources/definitions/builder_premium_small.def.json b/resources/definitions/builder_premium_small.def.json index c89b01566b..8a7969ec50 100644 --- a/resources/definitions/builder_premium_small.def.json +++ b/resources/definitions/builder_premium_small.def.json @@ -53,7 +53,6 @@ "prime_blob_enable": { "enabled": true }, - "acceleration_enabled": { "value": "True" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, "acceleration_print": { "value": "3000" }, diff --git a/resources/definitions/cartesio.def.json b/resources/definitions/cartesio.def.json index 631f947324..996e03ef0a 100644 --- a/resources/definitions/cartesio.def.json +++ b/resources/definitions/cartesio.def.json @@ -41,7 +41,6 @@ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "material_print_temp_wait": { "default_value": false }, "material_bed_temp_wait": { "default_value": false }, - "prime_tower_enable": { "default_value": false }, "prime_tower_min_volume": { "value": "0.7" }, "prime_tower_size": { "value": 24.0 }, "prime_tower_position_x": { "value": "125" }, diff --git a/resources/definitions/creality_base.def.json b/resources/definitions/creality_base.def.json index 9d1c578f81..a947369de7 100644 --- a/resources/definitions/creality_base.def.json +++ b/resources/definitions/creality_base.def.json @@ -73,7 +73,8 @@ "zyyx_pro_pla" ] }, - "overrides": { + "overrides": + { "machine_name": { "default_value": "Creawsome Base Printer" }, "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n" }, "machine_end_gcode": { "default_value": "G91 ;Relative positioning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z more\nG90 ;Absolute positioning\n\nG1 X0 Y{machine_depth} ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z\n" }, @@ -109,36 +110,25 @@ "acceleration_enabled": { "value": false }, "jerk_enabled": { "value": false }, - "speed_print": { "value": 50.0 } , - "speed_infill": { "value": "speed_print" }, - "speed_wall": { "value": "speed_print / 2" }, - "speed_wall_0": { "value": "speed_wall" }, + "speed_print": { "value": 50.0 }, "speed_wall_x": { "value": "speed_wall" }, - "speed_topbottom": { "value": "speed_print / 2" }, "speed_roofing": { "value": "speed_topbottom" }, "speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" }, "speed_layer_0": { "value": 20.0 }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_support": { "value": "speed_wall_0" }, "speed_support_interface": { "value": "speed_topbottom" }, "speed_z_hop": { "value": 5 }, - "skirt_brim_speed": { "value": "speed_layer_0" }, - - "line_width": { "value": "machine_nozzle_size" }, - "optimize_wall_printing_order": { "value": "True" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, - "material_flow": { "value": 100 }, "z_seam_type": { "value": "'back'" }, "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, - - "infill_sparse_density": { "value": "20" }, + "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, "infill_before_walls": { "value": false }, "infill_overlap": { "value": 30.0 }, @@ -148,34 +138,33 @@ "fill_outline_gaps": { "value": false }, - "retraction_speed": { + "retraction_speed": + { "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value": 200 }, - "retraction_retract_speed": { + "retraction_retract_speed": + { "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value": 200 }, - "retraction_prime_speed": { + "retraction_prime_speed": + { "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value": 200 }, - - "retraction_hop_enabled": { "value": "False" }, "retraction_hop": { "value": 0.2 }, "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'noskin'" }, "retraction_combing_max_distance": { "value": 30 }, "travel_avoid_other_parts": { "value": true }, "travel_avoid_supports": { "value": true }, "travel_retract_before_outer_wall": { "value": true }, - - "retraction_enable": { "value": true }, + "retraction_count_max": { "value": 100 }, "retraction_extrusion_window": { "value": 10 }, "retraction_min_travel": { "value": 1.5 }, "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, - "cool_fan_enabled": { "value": true }, "cool_min_layer_time": { "value": 10 }, "adhesion_type": { "value": "'skirt'" }, @@ -189,7 +178,7 @@ "meshfix_maximum_resolution": { "value": "0.25" }, "meshfix_maximum_travel_resolution": { "value": "meshfix_maximum_resolution" }, - "support_angle": { "value": "math.floor(math.degrees(math.atan(line_width/2.0/layer_height)))" }, + "support_angle": { "value": "math.floor(math.degrees(math.atan(line_width / 2.0 /layer_height)))" }, "support_pattern": { "value": "'zigzag'" }, "support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" }, "support_use_towers": { "value": false }, diff --git a/resources/definitions/dagoma_pro_430_bowden.def.json b/resources/definitions/dagoma_pro_430_bowden.def.json index 7ed1adb0b7..5a2608d4d8 100644 --- a/resources/definitions/dagoma_pro_430_bowden.def.json +++ b/resources/definitions/dagoma_pro_430_bowden.def.json @@ -25,7 +25,6 @@ "machine_max_jerk_e": { "value": 5 }, "machine_max_feedrate_e": { "default_value": 200 }, "machine_steps_per_mm_e": { "default_value": 139.5 }, - "acceleration_enabled": { "value": "True" }, "acceleration_print": { "value": "1250", "maximum_value": 1500 }, "acceleration_layer_0": { "value": "acceleration_topbottom", "maximum_value": 1500 }, "acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1000 / 1250)", "maximum_value": 1500 }, diff --git a/resources/definitions/deltacomb_dc20flux.def.json b/resources/definitions/deltacomb_dc20flux.def.json index fa6fdb0ca7..f907649312 100644 --- a/resources/definitions/deltacomb_dc20flux.def.json +++ b/resources/definitions/deltacomb_dc20flux.def.json @@ -25,7 +25,7 @@ "machine_end_gcode": { "default_value": ";---------------------------------------\n;Deltacomb end script\n;---------------------------------------\nG91 ;relative positioning\nG1 X8.0 E-10 F6000 ;wipe filament+material retraction\nG1 Z2 E9 ;Lift and start filament shaping\nG1 E-9\nG1 E8\nG1 E-8\nG1 E-10 F110\nG1 E-40 F5000 ; move to park position\nG28 ;home all axes (max endstops)\nM84 ;steppers off" }, "switch_extruder_retraction_amount": { "value": "0" }, "prime_tower_min_volume": { "value": "50" }, - "prime_tower_enable": { "value": "1" }, + "prime_tower_enable": { "value": true }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" } diff --git a/resources/definitions/deltacomb_dc21flux.def.json b/resources/definitions/deltacomb_dc21flux.def.json index f2b7941518..42e1851ab0 100644 --- a/resources/definitions/deltacomb_dc21flux.def.json +++ b/resources/definitions/deltacomb_dc21flux.def.json @@ -25,7 +25,7 @@ "machine_end_gcode": { "default_value": ";---------------------------------------\n;Deltacomb end script\n;---------------------------------------\nG91 ;relative positioning\nG1 X8.0 E-10 F6000 ;wipe filament+material retraction\nG1 Z2 E9 ;Lift and start filament shaping\nG1 E-9\nG1 E8\nG1 E-8\nG1 E-10 F110\nG1 E-40 F5000 ; move to park position\nG28 ;home all axes (max endstops)\nM84 ;steppers off" }, "switch_extruder_retraction_amount": { "value": "0" }, "prime_tower_min_volume": { "value": "50" }, - "prime_tower_enable": { "value": "1" }, + "prime_tower_enable": { "value": true }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" } diff --git a/resources/definitions/dxu.def.json b/resources/definitions/dxu.def.json index 4d7c3eb446..e810506fea 100644 --- a/resources/definitions/dxu.def.json +++ b/resources/definitions/dxu.def.json @@ -70,9 +70,6 @@ "machine_heated_bed": { "default_value": true }, - "speed_infill": { - "value": "speed_print" - }, "speed_wall_x": { "value": "speed_wall" }, diff --git a/resources/definitions/eryone_er20.def.json b/resources/definitions/eryone_er20.def.json index c19a8b1035..f9fe209151 100644 --- a/resources/definitions/eryone_er20.def.json +++ b/resources/definitions/eryone_er20.def.json @@ -156,9 +156,6 @@ "skirt_line_count": { "value": 3 }, - "speed_infill": { - "value": "speed_print" - }, "speed_topbottom": { "value": "math.ceil(speed_print * 20 / 50)" }, diff --git a/resources/definitions/eryone_thinker.def.json b/resources/definitions/eryone_thinker.def.json index e2dbd44215..e48803e368 100644 --- a/resources/definitions/eryone_thinker.def.json +++ b/resources/definitions/eryone_thinker.def.json @@ -143,9 +143,6 @@ "material_bed_temperature_layer_0": { "value": "material_bed_temperature" }, - "speed_infill": { - "value": "speed_print" - }, "speed_wall": { "value": "speed_print" }, diff --git a/resources/definitions/flyingbear_base.def.json b/resources/definitions/flyingbear_base.def.json index 9dc406494e..68c709a630 100644 --- a/resources/definitions/flyingbear_base.def.json +++ b/resources/definitions/flyingbear_base.def.json @@ -116,7 +116,6 @@ "material_diameter": { "default_value": 1.75 }, "layer_height_0": { "value": 0.2 }, - "line_width": { "value": "machine_nozzle_size" }, "skin_line_width": { "value": "machine_nozzle_size" }, "infill_line_width": { "value": "line_width + 0.1" }, "skirt_brim_line_width": { "value": "line_width + 0.1" }, @@ -140,25 +139,19 @@ "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, - "material_flow": { "value": 100 }, - "retraction_enable": { "value": true }, "retraction_min_travel": { "value": 1.5 }, "retraction_count_max": { "value": 100 }, "retraction_extrusion_window": { "value": 10 }, "speed_print": { "value": 60 } , "speed_infill": { "value": "speed_print * 1.5" }, - "speed_wall": { "value": "speed_print / 2" }, - "speed_wall_0": { "value": "speed_wall" }, "speed_wall_x": { "value": "speed_print" }, "speed_roofing": { "value": "speed_topbottom" }, - "speed_topbottom": { "value": "speed_print / 2" }, "speed_support": { "value": "speed_print" }, "speed_support_interface": { "value": "speed_topbottom" }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" }, "speed_layer_0": { "value": "speed_print / 2" }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, "skirt_brim_speed": { "value": "speed_layer_0" }, "speed_z_hop": { "value": 5 }, @@ -171,7 +164,6 @@ "retraction_hop_enabled": { "value": false }, "retraction_hop": { "value": 0.2 }, - "cool_fan_enabled": { "value": true }, "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, "cool_min_layer_time": { "value": 10 }, diff --git a/resources/definitions/goofoo_base.def.json b/resources/definitions/goofoo_base.def.json index 05f34bf8fe..65c0b9067c 100644 --- a/resources/definitions/goofoo_base.def.json +++ b/resources/definitions/goofoo_base.def.json @@ -59,16 +59,13 @@ "acceleration_enabled": { "value": false }, "jerk_enabled": { "value": false }, - "speed_print": { "value": 40.0 } , - "speed_infill": { "value": "speed_print" }, + "speed_print": { "value": 40.0 }, "speed_wall": { "value": "speed_print" }, - "speed_wall_0": { "value": "speed_wall" }, "speed_wall_x": { "value": "speed_wall" }, "speed_topbottom": { "value": "speed_print" }, "speed_roofing": { "value": "speed_topbottom" }, "speed_travel": { "value": "80" }, "speed_layer_0": { "value": 20.0 }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": "60" }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_support": { "value": "speed_wall_0" }, @@ -77,18 +74,15 @@ "skirt_brim_speed": { "value": "speed_layer_0" }, - "line_width": { "value": "machine_nozzle_size" }, "optimize_wall_printing_order": { "value": "True" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, - "material_flow": { "value": 100 }, "z_seam_type": { "value": "'back'" }, "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, - - "infill_sparse_density": { "value": "20" }, + "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, "infill_before_walls": { "value": false }, "infill_overlap": { "value": 30.0 }, @@ -110,26 +104,20 @@ "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value": 200 }, - - "retraction_hop_enabled": { "value": "False" }, + "retraction_hop": { "value": 0.2 }, "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'noskin'" }, "retraction_combing_max_distance": { "value": 30 }, "travel_avoid_other_parts": { "value": true }, "travel_avoid_supports": { "value": true }, "travel_retract_before_outer_wall": { "value": true }, - - "retraction_enable": { "value": true }, + "retraction_count_max": { "value": 100 }, "retraction_extrusion_window": { "value": 10 }, "retraction_min_travel": { "value": 1.5 }, "cool_fan_full_at_height": { "value": "3 * layer_height" }, - "cool_fan_enabled": { "value": true }, "cool_min_layer_time": { "value": 10 }, - - - "top_bottom_thickness": {"value": "layer_height_0 + layer_height * 3" }, "wall_thickness": {"value": "line_width * 2" } diff --git a/resources/definitions/hctech_hc300-m1&m1h.def.json b/resources/definitions/hctech_hc300-m1&m1h.def.json index 188ed3e7e7..7a311975e6 100644 --- a/resources/definitions/hctech_hc300-m1&m1h.def.json +++ b/resources/definitions/hctech_hc300-m1&m1h.def.json @@ -36,7 +36,6 @@ "retraction_speed": { "default_value": 35}, "travel_avoid_supports": { "value": true }, "travel_retract_before_outer_wall": { "value": true }, - "retraction_enable": { "value": true }, "gantry_height": { "value": "55" }, "speed_print": { "default_value": 60.0 } , @@ -48,8 +47,6 @@ "machine_end_gcode": { "default_value": "G91 ;Relative positioning\nG1 E-1 F2700 ;Retract a bit\nG1 Z1 E-1 F2400 ;Retract and raise Z\nG1 Z2 ;Raise Z\nG90 ;Absolute positioning\nG12 P1;clean nozzle\nG1 X5 Y300 ;Return to Start Point\nM106 S0 ;Switch off part cooling fan\nM104 S0 ;turn off temperature\nM140 S0 ;turn off Heated Bed\nM84 X Y E ;Disable all steppers but Z\nM81 ;turn-off power" }, "cool_fan_speed": { "value": 75 }, - "cool_fan_enabled": { "value": true }, - "line_width": { "value": 0.38 }, "travel_avoid_distance": { "value": 1 }, "infill_before_walls": { "value": false } diff --git a/resources/definitions/hctech_hc300-m2h.def.json b/resources/definitions/hctech_hc300-m2h.def.json index d08258c7c6..651af04ec6 100644 --- a/resources/definitions/hctech_hc300-m2h.def.json +++ b/resources/definitions/hctech_hc300-m2h.def.json @@ -37,7 +37,6 @@ "retraction_speed": { "default_value": 35}, "travel_avoid_supports": { "value": true }, "travel_retract_before_outer_wall": { "value": true }, - "retraction_enable": { "value": true }, "gantry_height": { "value": "55" }, "speed_print": { "default_value": 60.0 } , @@ -49,7 +48,6 @@ "machine_end_gcode": { "default_value": "G91 ;Relative positioning\nG1 E-1 F2700 ;Retract a bit\nG1 Z1 E-1 F2400 ;Retract and raise Z\nG1 Z2 ;Raise Z\nG90 ;Absolute positioning\nG12 ;clean nozzle\nG1 X5 Y319 ;Return to Start Point\nM106 S0 ;Switch off part cooling fan\nM104 S0 ;turn off temperature\nM140 S0 ;turn off Heated Bed\nM84 X Y E ;Disable all steppers but Z\nM81 ;turn-off power" }, "cool_fan_speed": { "value": 75 }, - "cool_fan_enabled": { "value": true }, "line_width": { "value": 0.38 }, "travel_avoid_distance": { "value": 1 }, diff --git a/resources/definitions/hctech_hc300-m3.def.json b/resources/definitions/hctech_hc300-m3.def.json index cbbae35cfa..10fea4272b 100644 --- a/resources/definitions/hctech_hc300-m3.def.json +++ b/resources/definitions/hctech_hc300-m3.def.json @@ -38,7 +38,6 @@ "retraction_speed": { "default_value": 35}, "travel_avoid_supports": { "value": true }, "travel_retract_before_outer_wall": { "value": true }, - "retraction_enable": { "value": true }, "gantry_height": { "value": "55" }, "speed_print": { "default_value": 60.0 } , @@ -49,7 +48,6 @@ "machine_end_gcode": { "default_value": "G91 ;Relative positioning\nG1 E-2 F2700 ;Retract a bit\nG1 Z1 E-2 F2400 ;Retract and raise Z\nG1 Z2 ;Raise Z\nG90 ;Absolute positioning\nG1 X5 Y290 ;Return to Start Point\nM106 S0 ;Switch off part cooling fan\nM104 S0 ;turn off temperature\nM140 S0 ;turn off Heated Bed\nM84 X Y E ;Disable all steppers but Z" }, "cool_fan_speed": { "value": 75 }, - "cool_fan_enabled": { "value": true }, "line_width": { "value": 0.38 }, "travel_avoid_distance": { "value": 1 }, diff --git a/resources/definitions/hms434.def.json b/resources/definitions/hms434.def.json index 584a642ceb..9f9183c99e 100644 --- a/resources/definitions/hms434.def.json +++ b/resources/definitions/hms434.def.json @@ -124,10 +124,9 @@ "switch_extruder_prime_speed": {"value": "(retraction_prime_speed)"}, "speed_print": {"value": "50"}, - "speed_infill": {"value": "speed_print"}, - "speed_wall": {"value": "(speed_print/5*3) if speed_print > 45 else speed_print"}, + "speed_wall": {"value": "(speed_print/ 5 * 3) if speed_print > 45 else speed_print"}, "speed_wall_x": {"value": "speed_wall"}, - "speed_layer_0": {"value": "(speed_print/5*4) if speed_print > 45 else speed_print"}, + "speed_layer_0": {"value": "(speed_print / 5 * 4) if speed_print > 45 else speed_print"}, "speed_topbottom": {"value": "speed_layer_0"}, "speed_travel": {"value": "250"}, "speed_travel_layer_0": {"value": "speed_travel"}, @@ -165,7 +164,6 @@ "skirt_gap": {"value": 1}, "skirt_brim_minimal_length": {"value": 50}, - "prime_tower_enable": {"value": false }, "prime_tower_size": {"value": 20.6 }, "prime_tower_position_x": {"value": 125 }, "prime_tower_position_y": {"value": 70 }, diff --git a/resources/definitions/inat_base.def.json b/resources/definitions/inat_base.def.json index 61a543c9cc..42a71ee149 100644 --- a/resources/definitions/inat_base.def.json +++ b/resources/definitions/inat_base.def.json @@ -151,43 +151,32 @@ "value": "4" }, "default_material_print_temperature": { - "maximum_value_warning": "470", "maximum_value": "470" }, "material_print_temperature": { - "maximum_value_warning": "470", "maximum_value": "470" }, "material_print_temperature_layer_0": { "value": "material_print_temperature", - "maximum_value_warning": "470", "maximum_value": "470" }, "material_initial_print_temperature": { "value": "material_print_temperature", - "maximum_value_warning": "470", "maximum_value": "470" }, "material_final_print_temperature": { "value": "material_print_temperature", - "maximum_value_warning": "470", "maximum_value": "470" }, "default_material_bed_temperature": { - "maximum_value_warning": "150", "maximum_value": "150" }, "material_bed_temperature": { - "maximum_value_warning": "150", "maximum_value": "150" }, "material_bed_temperature_layer_0": { - "maximum_value_warning": "150", "maximum_value": "150" }, - "speed_infill": { - "value": "speed_print" - }, "speed_wall": { "value": "speed_print" }, diff --git a/resources/definitions/kingroon_base.def.json b/resources/definitions/kingroon_base.def.json index 4ea97f2527..c78f1fc31a 100644 --- a/resources/definitions/kingroon_base.def.json +++ b/resources/definitions/kingroon_base.def.json @@ -170,15 +170,11 @@ "default_material_bed_temperature": { "maximum_value": "150" }, "speed_print": { "value": 60.0 } , - "speed_infill": { "value": "speed_print" }, - "speed_wall": { "value": "speed_print / 2" }, - "speed_wall_0": { "value": "speed_wall" }, + "speed_wall_x": { "value": "speed_wall" }, - "speed_topbottom": { "value": "speed_print / 2" }, "speed_roofing": { "value": "speed_topbottom" }, "speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" }, "speed_layer_0": { "value": 20.0 }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_support": { "value": "speed_wall_0" }, @@ -193,7 +189,6 @@ "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, - "material_flow": { "value": 100 }, "z_seam_type": { "value": "'back'" }, "z_seam_corner": { "value": "'z_seam_corner_none'" }, @@ -230,13 +225,11 @@ "travel_retract_before_outer_wall": { "value": true }, "retraction_amount": { "value": 2 }, - "retraction_enable": { "value": true }, "retraction_count_max": { "value": 100 }, "retraction_extrusion_window": { "value": 2 }, "retraction_min_travel": { "value": 1.5 }, "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, - "cool_fan_enabled": { "value": true }, "cool_min_layer_time": { "value": 10 }, "adhesion_type": { "value": "'none' if support_enable else 'skirt'" }, diff --git a/resources/definitions/koonovo_base.def.json b/resources/definitions/koonovo_base.def.json index 3b3ab06fff..868129109e 100644 --- a/resources/definitions/koonovo_base.def.json +++ b/resources/definitions/koonovo_base.def.json @@ -49,7 +49,6 @@ "acceleration_print": { "value": 500 }, "acceleration_travel": { "value": 500 }, - "line_width": { "value": "machine_nozzle_size" }, "wall_thickness": {"value": "line_width * 2" }, @@ -63,33 +62,23 @@ "material_final_print_temperature": { "value": "material_print_temperature" }, "material_bed_temperature": { "value": "55" }, "material_bed_temperature_layer_0": { "value": "material_bed_temperature" }, - "material_flow": { "value": 100 }, "material_standby_temperature": { "value": "material_print_temperature" }, - "speed_print": { "value": 50.0 } , - "speed_infill": { "value": "speed_print" }, - "speed_wall": { "value": "speed_print / 2" }, - "speed_wall_0": { "value": "speed_wall" }, + "speed_wall_x": { "value": "speed_wall" }, - "speed_topbottom": { "value": "speed_print / 2" }, "speed_travel": { "value": "120.0 if speed_print < 60 else 180.0 if speed_print > 100 else speed_print * 2.2" }, "speed_layer_0": { "value": 25.0 }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 25 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_support": { "value": "speed_wall_0" }, "speed_z_hop": { "value": 5 }, - - "retraction_enable": { "value": true }, "retraction_amount": { "value": 2.5 }, "retraction_speed": { "value": 40 }, "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, - "cool_fan_enabled": { "value": true }, "cool_min_layer_time": { "value": 10 }, - "support_brim_enable": { "value": true }, "support_angle": { "value": "math.floor(math.degrees(math.atan(line_width/2.0/layer_height)))" }, "support_pattern": { "value": "'zigzag'" }, diff --git a/resources/definitions/koonovo_kn3.def.json b/resources/definitions/koonovo_kn3.def.json index c67209805d..2f8ba71ecf 100644 --- a/resources/definitions/koonovo_kn3.def.json +++ b/resources/definitions/koonovo_kn3.def.json @@ -66,7 +66,6 @@ "acceleration_print": { "value": 500 }, "acceleration_travel": { "value": 500 }, - "line_width": { "value": "machine_nozzle_size" }, "wall_thickness": {"value": "line_width * 2" }, @@ -79,30 +78,21 @@ "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, "default_material_bed_temperature": { "value": "55" }, - "material_flow": { "value": 100 }, "material_standby_temperature": { "value": "material_print_temperature" }, - "speed_print": { "value": 50.0 } , - "speed_infill": { "value": "speed_print" }, - "speed_wall": { "value": "speed_print / 2" }, - "speed_wall_0": { "value": "speed_wall" }, "speed_wall_x": { "value": "speed_wall" }, - "speed_topbottom": { "value": "speed_print / 2" }, "speed_travel": { "value": "120.0 if speed_print < 60 else 180.0 if speed_print > 100 else speed_print * 2.2" }, "speed_layer_0": { "value": 25.0 }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 25 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_support": { "value": "speed_wall_0" }, "speed_z_hop": { "value": 5 }, - "retraction_enable": { "value": true }, "retraction_amount": { "value": 2.5 }, "retraction_speed": { "value": 40 }, "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, - "cool_fan_enabled": { "value": true }, "cool_min_layer_time": { "value": 10 }, diff --git a/resources/definitions/koonovo_kn5.def.json b/resources/definitions/koonovo_kn5.def.json index 7cd82a61aa..d206c9b87a 100644 --- a/resources/definitions/koonovo_kn5.def.json +++ b/resources/definitions/koonovo_kn5.def.json @@ -67,8 +67,6 @@ "acceleration_print": { "value": 500 }, "acceleration_travel": { "value": 500 }, - - "line_width": { "value": "machine_nozzle_size" }, "wall_thickness": {"value": "line_width * 2" }, @@ -82,31 +80,22 @@ "material_final_print_temperature": { "value": "material_print_temperature" }, "material_standby_temperature": { "value": "material_print_temperature" }, "default_material_bed_temperature": { "value": "45" }, - "material_flow": { "value": 100 }, - "speed_print": { "value": 50.0 } , - "speed_infill": { "value": "speed_print" }, - "speed_wall": { "value": "speed_print / 2" }, - "speed_wall_0": { "value": "speed_wall" }, + "speed_print": { "value": 50.0 } , , "speed_wall_x": { "value": "speed_wall" }, - "speed_topbottom": { "value": "speed_print / 2" }, "speed_travel": { "value": "120.0 if speed_print < 60 else 180.0 if speed_print > 100 else speed_print * 2.2" }, "speed_layer_0": { "value": 25.0 }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 25 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_support": { "value": "speed_wall_0" }, "speed_z_hop": { "value": 5 }, - "retraction_enable": { "value": true }, "retraction_amount": { "value": 2.5 }, "retraction_speed": { "value": 40 }, "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, - "cool_fan_enabled": { "value": true }, "cool_min_layer_time": { "value": 10 }, - "support_brim_enable": { "value": true }, "support_angle": { "value": "math.floor(math.degrees(math.atan(line_width/2.0/layer_height)))" }, "support_pattern": { "value": "'zigzag'" }, diff --git a/resources/definitions/liquid.def.json b/resources/definitions/liquid.def.json index 0fc0f3c9ca..0d0d5f0a43 100644 --- a/resources/definitions/liquid.def.json +++ b/resources/definitions/liquid.def.json @@ -87,8 +87,7 @@ "value": true, "enabled": true }, - - "acceleration_enabled": { "value": "True" }, + "acceleration_layer_0": { "value": "acceleration_topbottom" }, "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, "acceleration_print": { "value": "4000" }, diff --git a/resources/definitions/longer_base.def.json b/resources/definitions/longer_base.def.json index 2a2e6f5867..435b3000ab 100644 --- a/resources/definitions/longer_base.def.json +++ b/resources/definitions/longer_base.def.json @@ -60,15 +60,10 @@ "jerk_enabled": { "value": false }, "speed_print": { "value": 50.0 } , - "speed_infill": { "value": "speed_print" }, - "speed_wall": { "value": "speed_print / 2" }, - "speed_wall_0": { "value": "speed_wall" }, "speed_wall_x": { "value": "speed_wall" }, - "speed_topbottom": { "value": "speed_print / 2" }, "speed_roofing": { "value": "speed_topbottom" }, "speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" }, "speed_layer_0": { "value": 20.0 }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_support": { "value": "speed_wall_0" }, @@ -77,18 +72,15 @@ "skirt_brim_speed": { "value": "speed_layer_0" }, - "line_width": { "value": "machine_nozzle_size" }, "optimize_wall_printing_order": { "value": "True" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, - "material_flow": { "value": 100 }, "z_seam_type": { "value": "'back'" }, "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, - - "infill_sparse_density": { "value": "20" }, + "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, "infill_before_walls": { "value": false }, "infill_overlap": { "value": 30.0 }, @@ -112,8 +104,7 @@ "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value": 200 }, - - "retraction_hop_enabled": { "value": "False" }, + "retraction_hop": { "value": 0.2 }, "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'noskin'" }, "retraction_combing_max_distance": { "value": 30 }, @@ -121,13 +112,12 @@ "travel_avoid_supports": { "value": true }, "travel_retract_before_outer_wall": { "value": true }, - "retraction_enable": { "value": true }, + "retraction_count_max": { "value": 100 }, "retraction_extrusion_window": { "value": 10 }, "retraction_min_travel": { "value": 1.5 }, "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, - "cool_fan_enabled": { "value": true }, "cool_min_layer_time": { "value": 10 }, "adhesion_type": { "value": "'raft'" }, diff --git a/resources/definitions/lotmaxx_sc10.def.json b/resources/definitions/lotmaxx_sc10.def.json index b94c63533c..6700521b53 100644 --- a/resources/definitions/lotmaxx_sc10.def.json +++ b/resources/definitions/lotmaxx_sc10.def.json @@ -14,7 +14,8 @@ "0": "lotmaxx_sc10_extruder_0" } }, - "overrides": { + "overrides": + { "machine_name": { "default_value": "Lotmaxx SC-10" }, "machine_width": { "default_value": 235 }, "machine_depth": { "default_value": 235 }, @@ -23,42 +24,39 @@ "gantry_height": { "value": 40 }, "machine_start_gcode": { "default_value": "; SC-10 Custom Start G-code\nG28 ; Home all axes\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position\nG1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\n; End of custom start GCode" }, "machine_end_gcode": { "default_value": "; SC-10 Custom End G-code\nG4 ; Wait\nM220 S100 ; Reset Speed factor override percentage to default (100%)\nM221 S100 ; Reset Extrude factor override percentage to default (100%)\nG91 ; Set coordinates to relative\nG1 F1800 E-3 ; Retract filament 3 mm to prevent oozing\nG1 F3000 Z20 ; Move Z Axis up 20 mm to allow filament ooze freely\nG90 ; Set coordinates to absolute\nG1 X0 Y{machine_depth} F1000 ; Move Heat Bed to the front for easy print removal\nM84 ; Disable stepper motors\n; End of custom end GCode" }, - "machine_max_jerk_xy":{ "value":10 }, - "machine_max_jerk_z":{ "value":0.4 }, - "machine_max_jerk_e":{ "value":5 }, - "machine_heated_bed":{ "default_value":true }, - "material_diameter":{ "default_value":1.75 }, - "jerk_print":{ "value":8 }, - "jerk_travel":{ "value":"jerk_print" }, - "jerk_travel_layer_0":{ "value":"jerk_travel" }, - "acceleration_enabled":{ "value":false }, - "jerk_enabled":{ "value":false }, - "speed_print":{ "value":60.0 }, - "speed_infill":{ "value":"speed_print * 2" }, - "speed_wall":{ "value":"speed_print / 2" }, - "speed_wall_0":{ "value":"speed_wall" }, - "speed_wall_x":{ "value":"speed_wall" }, - "speed_topbottom":{ "value":"speed_print / 2" }, - "speed_roofing":{ "value":"speed_topbottom" }, - "speed_travel":{ "value":"150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" }, - "speed_layer_0":{ "value":20.0 }, - "speed_print_layer_0":{ "value":"speed_layer_0" }, - "speed_travel_layer_0":{ "value":"100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, - "speed_prime_tower":{ "value":"speed_topbottom" }, - "speed_support":{ "value":"speed_wall_0" }, - "speed_support_interface":{ "value":"speed_topbottom" }, - "skirt_brim_speed":{ "value":"speed_layer_0" }, - "retraction_enable":{ "value":true }, - "retraction_count_max":{ "value":100 }, - "retraction_extrusion_window":{ "value":10 }, - "retraction_min_travel":{ "value":1.5 }, - "cool_fan_full_at_height":{ "value":"layer_height_0 + 2 * layer_height" }, - "cool_fan_enabled":{ "value":true }, - "cool_min_layer_time":{ "value":10 }, - "meshfix_maximum_resolution":{ "value":"0.25" }, - "meshfix_maximum_travel_resolution":{ "value":"meshfix_maximum_resolution" }, + "machine_max_jerk_xy":{ "value": 10 }, + "machine_max_jerk_z":{ "value": 0.4 }, + "machine_max_jerk_e":{ "value": 5 }, + "machine_heated_bed":{ "default_value": true }, + "material_diameter":{ "default_value": 1.75 }, + "jerk_print":{ "value": 8 }, + "jerk_travel":{ "value": "jerk_print" }, + "jerk_travel_layer_0":{ "value":" jerk_travel" }, + "acceleration_enabled":{ "value": false }, + "jerk_enabled":{ "value": false }, + "speed_print":{ "value": 60.0 }, + "speed_infill":{ "value": "speed_print * 2" }, + "speed_wall_0":{ "value": "speed_wall" }, + "speed_wall_x":{ "value": "speed_wall" }, + "speed_roofing":{ "value": "speed_topbottom" }, + "speed_travel":{ "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" }, + "speed_layer_0":{ "value": 20.0 }, + "speed_travel_layer_0":{ "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, + "speed_prime_tower":{ "value": "speed_topbottom" }, + "speed_support":{ "value": "speed_wall_0" }, + "speed_support_interface":{ "value": "speed_topbottom" }, + "skirt_brim_speed":{ "value": "speed_layer_0" }, + "retraction_enable":{ "value": true }, + "retraction_count_max":{ "value": 100 }, + "retraction_extrusion_window":{ "value": 10 }, + "retraction_min_travel":{ "value": 1.5 }, + "cool_fan_full_at_height":{ "value": "layer_height_0 + 2 * layer_height" }, + "cool_fan_enabled":{ "value": true }, + "cool_min_layer_time":{ "value": 10 }, + "meshfix_maximum_resolution":{ "value": "0.25" }, + "meshfix_maximum_travel_resolution":{ "value": "meshfix_maximum_resolution" }, "adhesion_type": { "value": "'none' if support_enable else 'skirt'" }, - "skirt_gap":{ "value":5.0 }, - "skirt_line_count":{ "value":4 } + "skirt_gap":{ "value": 5.0 }, + "skirt_line_count":{ "value": 4 } } } diff --git a/resources/definitions/lotmaxx_sc20.def.json b/resources/definitions/lotmaxx_sc20.def.json index f96cb0839a..1aa982430d 100644 --- a/resources/definitions/lotmaxx_sc20.def.json +++ b/resources/definitions/lotmaxx_sc20.def.json @@ -35,14 +35,11 @@ "jerk_enabled":{ "value":false }, "speed_print":{ "value":60.0 }, "speed_infill":{ "value":"speed_print * 2" }, - "speed_wall":{ "value":"speed_print / 2" }, "speed_wall_0":{ "value":"speed_wall" }, "speed_wall_x":{ "value":"speed_wall" }, - "speed_topbottom":{ "value":"speed_print / 2" }, "speed_roofing":{ "value":"speed_topbottom" }, "speed_travel":{ "value":"150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" }, "speed_layer_0":{ "value":20.0 }, - "speed_print_layer_0":{ "value":"speed_layer_0" }, "speed_travel_layer_0":{ "value":"100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, "speed_prime_tower":{ "value":"speed_topbottom" }, "speed_support":{ "value":"speed_wall_0" }, diff --git a/resources/definitions/malyan_m200.def.json b/resources/definitions/malyan_m200.def.json index c8eb4eb654..2eeef96cbd 100644 --- a/resources/definitions/malyan_m200.def.json +++ b/resources/definitions/malyan_m200.def.json @@ -28,7 +28,6 @@ "speed_wall_x": { "value": "speed_print" }, "speed_support": { "value": "speed_wall_0" }, "speed_layer_0": { "value": "round(speed_print / 2.0, 2)" }, - "speed_infill": { "value": "speed_print" }, "speed_topbottom": {"value": "speed_print / 2"}, "layer_height": @@ -80,7 +79,6 @@ "retraction_amount" : { "default_value": 4.5}, "retraction_speed" : { "default_value": 40}, "coasting_enable": { "default_value": true }, - "prime_tower_enable": { "default_value": false}, "speed_z_hop": {"default_value": 1.5} } } diff --git a/resources/definitions/mingda_base.def.json b/resources/definitions/mingda_base.def.json index ce80fda7c4..169adc8b85 100644 --- a/resources/definitions/mingda_base.def.json +++ b/resources/definitions/mingda_base.def.json @@ -108,15 +108,10 @@ "jerk_enabled": { "value": false }, "speed_print": { "value": 60.0 } , - "speed_infill": { "value": "speed_print" }, - "speed_wall": { "value": "speed_print / 2" }, - "speed_wall_0": { "value": "speed_wall" }, "speed_wall_x": { "value": "speed_wall" }, - "speed_topbottom": { "value": "speed_print / 2" }, "speed_roofing": { "value": "speed_topbottom" }, "speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" }, "speed_layer_0": { "value": 20.0 }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_support": { "value": "speed_wall_0" }, @@ -131,7 +126,6 @@ "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, - "material_flow": { "value": 100 }, "z_seam_type": { "value": "'back'" }, "z_seam_corner": { "value": "'z_seam_corner_none'" }, @@ -168,13 +162,12 @@ "travel_retract_before_outer_wall": { "value": true }, "retraction_amount": { "value": 2 }, - "retraction_enable": { "value": true }, + "retraction_count_max": { "value": 100 }, "retraction_extrusion_window": { "value": 10 }, "retraction_min_travel": { "value": 1.5 }, "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, - "cool_fan_enabled": { "value": true }, "cool_min_layer_time": { "value": 10 }, "adhesion_type": { "value": "'none' if support_enable else 'skirt'" }, diff --git a/resources/definitions/mixware_hyper_s.def.json b/resources/definitions/mixware_hyper_s.def.json index 12e55444cf..b467f8e98c 100644 --- a/resources/definitions/mixware_hyper_s.def.json +++ b/resources/definitions/mixware_hyper_s.def.json @@ -241,12 +241,6 @@ "skirt_brim_speed": { "value": "speed_layer_0" }, - "speed_infill": { - "value": "speed_print" - }, - "speed_wall": { - "value": "speed_print / 2" - }, "speed_wall_0": { "value": "speed_wall" }, @@ -262,9 +256,6 @@ "speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" }, - "speed_print_layer_0": { - "value": "speed_layer_0" - }, "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, diff --git a/resources/definitions/rigid3d_base.def.json b/resources/definitions/rigid3d_base.def.json index b205f03cc8..bc592ccff8 100644 --- a/resources/definitions/rigid3d_base.def.json +++ b/resources/definitions/rigid3d_base.def.json @@ -113,7 +113,7 @@ "travel_avoid_other_parts": { "value": "False" }, "support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height * 2" }, - "support_interface_enable": { "value": "True" }, + "support_interface_enable": { "value": true }, "support_interface_density": { "value": 70 }, "minimum_interface_area": { "value": 5.0 }, "minimum_support_area": { "value": 5 }, diff --git a/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json b/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json index 6f04cdd93c..6b280a6c7b 100644 --- a/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json +++ b/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json @@ -28,9 +28,6 @@ "overrides": { "machine_name": { "default_value": "Discov3ry Complete (Ultimaker 2+)" }, - "speed_infill": { - "value": "speed_print" - }, "infill_sparse_density": { "value": 100 }, diff --git a/resources/definitions/tank_m_base.def.json b/resources/definitions/tank_m_base.def.json index 41387fad7e..b3e0bcfb86 100644 --- a/resources/definitions/tank_m_base.def.json +++ b/resources/definitions/tank_m_base.def.json @@ -49,7 +49,6 @@ "acceleration_print": { "value": 2500 }, "acceleration_travel": { "value": 2500 }, - "line_width": { "value": "machine_nozzle_size" }, "wall_thickness": {"value": "line_width * 2" }, @@ -63,33 +62,23 @@ "material_final_print_temperature": { "value": "material_print_temperature" }, "material_bed_temperature": { "value": "55" }, "material_bed_temperature_layer_0": { "value": "material_bed_temperature" }, - "material_flow": { "value": 100 }, "material_standby_temperature": { "value": "material_print_temperature" }, - "speed_print": { "value": 50.0 } , - "speed_infill": { "value": "speed_print" }, - "speed_wall": { "value": "speed_print / 2" }, - "speed_wall_0": { "value": "speed_wall" }, "speed_wall_x": { "value": "speed_wall" }, - "speed_topbottom": { "value": "speed_print / 2" }, "speed_travel": { "value": "120.0 if speed_print < 60 else 300.0 if speed_print > 100 else speed_print * 2.2" }, "speed_layer_0": { "value": 25.0 }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 25 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_support": { "value": "speed_wall_0" }, "speed_z_hop": { "value": 5 }, - "retraction_enable": { "value": true }, "retraction_amount": { "value": 1.0 }, "retraction_speed": { "value": 40 }, "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, - "cool_fan_enabled": { "value": true }, "cool_min_layer_time": { "value": 10 }, - "support_brim_enable": { "value": true }, "support_angle": { "value": "math.floor(math.degrees(math.atan(line_width/2.0/layer_height)))" }, "support_pattern": { "value": "'zigzag'" }, diff --git a/resources/definitions/trimaker_nebula_plus.def.json b/resources/definitions/trimaker_nebula_plus.def.json index 71fb729c0f..0a2983e67e 100644 --- a/resources/definitions/trimaker_nebula_plus.def.json +++ b/resources/definitions/trimaker_nebula_plus.def.json @@ -32,7 +32,6 @@ "machine_acceleration": { "default_value": 3000 }, "machine_extruder_count": { "default_value": 1 }, - "acceleration_enabled": { "value": "True" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, "acceleration_print": { "value": "4000" }, "acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, diff --git a/resources/definitions/tronxy_x.def.json b/resources/definitions/tronxy_x.def.json index 9665ca0f4f..488316ded2 100644 --- a/resources/definitions/tronxy_x.def.json +++ b/resources/definitions/tronxy_x.def.json @@ -46,15 +46,12 @@ "jerk_enabled": { "value": false }, "speed_print": { "value": 60.0 } , - "speed_infill": { "value": "speed_print" }, - "speed_wall": { "value": "speed_print *0.75" }, - "speed_wall_0": { "value": "speed_wall" }, + "speed_wall": { "value": "speed_print * 0.75" }, "speed_wall_x": { "value": "speed_wall" }, "speed_topbottom": { "value": "speed_print * 0.5" }, "speed_roofing": { "value": "speed_topbottom" }, "speed_travel": { "value": "60.0 if speed_print < 50 else 120.0 if speed_print > 80 else speed_print * 1.25" }, "speed_layer_0": { "value": 30.0 }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": "45 if speed_layer_0 < 20 else 60 if speed_layer_0 > 30 else speed_layer_0 * 1.5" }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_support": { "value": "speed_wall_0" }, @@ -63,7 +60,6 @@ "skirt_brim_speed": { "value": "speed_layer_0" }, - "line_width": { "value": "machine_nozzle_size" }, "optimize_wall_printing_order": { "value": "True" }, @@ -74,8 +70,7 @@ "z_seam_type": { "value": "'sharpest_corner'" }, "z_seam_corner": { "value": "'z_seam_corner_inner'" }, - - "infill_sparse_density": { "value": "20" }, + "infill_pattern": { "value": "'lines' if infill_sparse_density > 56 else 'cubic'" }, "infill_before_walls": { "value": false }, "infill_overlap": { "value": 30.0 }, @@ -105,8 +100,7 @@ "travel_avoid_other_parts": { "value": false }, "travel_avoid_supports": { "value": true }, "travel_retract_before_outer_wall": { "value": true }, - - "retraction_enable": { "value": true }, + "retract_at_layer_change": { "value": true }, "retraction_count_max": { "value": 100 }, "retraction_extrusion_window": { "value": 5 }, @@ -114,7 +108,6 @@ "retraction_min_travel": { "value": 1.5 }, "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, - "cool_fan_enabled": { "value": true }, "cool_min_layer_time": { "value": 10 }, "adhesion_type": { "value": "'skirt'" }, @@ -140,8 +133,7 @@ "support_wall_count": { "value": 0 }, "support_brim_enable": { "value": true }, "support_brim_width": { "value": 4 }, - - "support_interface_enable": { "value": false }, + , "support_interface_height": { "value": "layer_height * 4" }, "support_interface_density": { "value": 33.333 }, "support_interface_pattern": { "value": "'grid'" }, diff --git a/resources/definitions/two_trees_base.def.json b/resources/definitions/two_trees_base.def.json index b672a2f4cd..f6918c6121 100644 --- a/resources/definitions/two_trees_base.def.json +++ b/resources/definitions/two_trees_base.def.json @@ -32,15 +32,10 @@ "material_diameter": { "default_value": 1.75 }, - "speed_print": { "value": 50.0 } , - "speed_infill": { "value": "speed_print" }, - "speed_wall": { "value": "speed_print / 2" }, - "speed_wall_0": { "value": "speed_wall" }, + "speed_print": { "value": 50.0 }, "speed_wall_x": { "value": "speed_print / 1.5" }, - "speed_topbottom": { "value": "speed_print / 2" }, "speed_roofing": { "value": "speed_topbottom" }, "speed_layer_0": { "value": 20.0 }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_prime_tower": { "value": "speed_topbottom" }, "speed_support": { "value": "speed_wall_0" }, "speed_support_interface": { "value": "speed_topbottom" }, @@ -48,14 +43,12 @@ "skirt_brim_speed": { "value": "speed_layer_0" }, - "line_width": { "value": "machine_nozzle_size" }, "optimize_wall_printing_order": { "value": "True" }, "z_seam_type": { "value": "'sharpest_corner'" }, "z_seam_corner": { "value": "'z_seam_corner_inner'" }, - - "infill_sparse_density": { "value": "20" }, + "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, "infill_before_walls": { "value": false }, "infill_overlap": { "value": 30.0 }, @@ -65,24 +58,20 @@ "fill_outline_gaps": { "value": false }, - "retraction_hop_enabled": { "value": "False" }, "retraction_hop": { "value": 0.2 }, "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'noskin'" }, "retraction_combing_max_distance": { "value": 30 }, "travel_avoid_other_parts": { "value": true }, "travel_avoid_supports": { "value": true }, "travel_retract_before_outer_wall": { "value": true }, - - "retraction_enable": { "value": true }, + "retraction_speed": { "default_value" : 40 }, "retraction_amount": { "default_value" : 7 }, "retraction_count_max": { "value": 100 }, "retraction_extrusion_window": { "value": 10 }, "retraction_min_travel": { "value": 1.5 }, - "cool_fan_full_layer": { "value": "2" }, - "cool_fan_enabled": { "value": true }, "cool_min_layer_time": { "value": 10 }, "adhesion_type": { "value": "'skirt'" }, @@ -108,7 +97,6 @@ "support_brim_enable": { "value": true }, "support_brim_width": { "value": 5 }, - "support_interface_enable": { "value": false }, "support_interface_height": { "value": "layer_height * 4" }, "support_interface_density": { "value": 33.333 }, "support_interface_pattern": { "value": "'grid'" }, diff --git a/resources/definitions/ultimaker2_plus_connect.def.json b/resources/definitions/ultimaker2_plus_connect.def.json index 8ccbd7f380..adb5efadcf 100644 --- a/resources/definitions/ultimaker2_plus_connect.def.json +++ b/resources/definitions/ultimaker2_plus_connect.def.json @@ -57,8 +57,6 @@ "infill_wipe_dist": { "value": "0" }, "infill_overlap": { "value": "0" }, "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)" }, "optimize_wall_printing_order": { "value": "True" }, "zig_zaggify_infill": { "value": "gradual_infill_steps == 0" }, diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index ddb02b7810..97a83c5ee7 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -82,7 +82,6 @@ "prime_blob_enable": { "enabled": true, "default_value": true, "value": "resolveOrValue('print_sequence') != 'one_at_a_time'" }, - "acceleration_enabled": { "value": "True" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 3500)" }, "acceleration_print": { "value": "3500" }, diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json index 5ccbc2c5a0..5d1464396f 100644 --- a/resources/definitions/ultimaker_s3.def.json +++ b/resources/definitions/ultimaker_s3.def.json @@ -75,7 +75,6 @@ "value": "150" }, - "acceleration_enabled": { "value": "True" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 3500)" }, "acceleration_print": { "value": "3500" }, diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index 9eb00e6155..314da546de 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -77,7 +77,6 @@ "value": "150" }, - "acceleration_enabled": { "value": "True" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 3500)" }, "acceleration_print": { "value": "3500" }, diff --git a/resources/definitions/weedo_x40.def.json b/resources/definitions/weedo_x40.def.json index 9fb5cad2d8..305dd8b765 100644 --- a/resources/definitions/weedo_x40.def.json +++ b/resources/definitions/weedo_x40.def.json @@ -215,7 +215,6 @@ "infill_overlap": { "value": 30.0 }, "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, "infill_wipe_dist": { "value": 0.0 }, - "infill_sparse_density": { "value": "20" }, "infill_before_walls": { "value": false }, "jerk_enabled": { "value": false }, "jerk_print": { "value": 11 }, @@ -223,41 +222,32 @@ "jerk_wall": { "value": "jerk_print - 2" }, "jerk_travel": { "value": 18 }, "jerk_travel_layer_0": { "value": "jerk_travel" }, - "layer_height_0": { "value": "round(layer_height * 1.5, 2)" }, - "line_width": { "value": "machine_nozzle_size" }, + "layer_height_0": { "value": "round(layer_height * 1.5, 2)" }, "machine_min_cool_heat_time_window": { "default_value": 360 }, "machine_max_jerk_xy": { "value": 10 }, "machine_max_jerk_z": { "value": 0.4 }, "machine_max_jerk_e": { "value": 5 }, "machine_center_is_zero": { "default_value": false }, "material_diameter": { "default_value": 1.75 }, - "material_flow": { "value": 100 }, "material_standby_temperature": { "value": "100" }, - "material_print_temp_prepend": { "default_value":false }, - "prime_tower_enable": { "default_value": false }, + "material_print_temp_prepend": { "default_value": false }, "raft_airgap": { "default_value": 0.22 }, "raft_base_speed":{ "value": 20 }, "raft_interface_speed": { "value": 33 }, "raft_margin": { "default_value": 8 }, - "retraction_enable": { "value": true }, + "retraction_amount": { "default_value": 4.5 }, "retraction_count_max": { "value": 100 }, "retraction_extrusion_window": { "value": 8 }, "retraction_hop": { "value": 0.5 }, - "retraction_hop_enabled": { "value": "False" }, "retraction_min_travel": { "value": 1.5 }, "skin_overlap": { "value": 10.0 }, "speed_layer_0": { "value": "round(speed_print / 2.5, 2)" }, "speed_print": { "value": 50.0 }, "speed_support": { "value": "speed_wall_0" }, "speed_support_interface": { "value": "speed_print" }, - "speed_topbottom": { "value": "speed_print / 2" }, - "speed_wall": { "value": "speed_print / 2" }, - "speed_wall_0": { "value": "speed_wall" }, "speed_wall_x": { "value": "speed_wall" }, - "speed_infill": { "value": "speed_print" }, "speed_support_infill": { "value": 58.0 }, - "speed_print_layer_0": { "value": "speed_layer_0" }, "speed_travel_layer_0": { "value": 60 }, "speed_support_roof": { "value": 39.0 }, "speed_support_bottom": { "value": 39.0 }, diff --git a/resources/definitions/winbo_dragonl4.def.json b/resources/definitions/winbo_dragonl4.def.json index 746b9ce2fe..d365cb2672 100644 --- a/resources/definitions/winbo_dragonl4.def.json +++ b/resources/definitions/winbo_dragonl4.def.json @@ -40,7 +40,6 @@ "machine_start_gcode": { "default_value": "G21\nG90\nM82\nM107\nM9998\nG28 X0 Y0\nG28 Z0\nG1 F6000 Z0.3\nG92 E0\nG1 F800 X585 E12\nG92 E0" }, "machine_end_gcode": { "default_value": "M104 S0\nM140 S0\nG92 E2\nG1 E0 F200\nG28 X0 Y0\nM84 X Y E" }, "prime_blob_enable": { "enabled": true }, - "acceleration_enabled": { "value": "True" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, "acceleration_print": { "value": "1800" }, @@ -69,11 +68,11 @@ "jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" }, "jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" }, "wall_thickness": { "value": "2.4"}, - "line_width": { "value": "extruderValue(-1,'machine_nozzle_size')" }, + "line_width": { "value": "extruderValue(-1, 'machine_nozzle_size')" }, "wall_0_inset": { "value": "0.05" }, "wall_line_width_x": { "value": "line_width" }, "wall_line_width_0": { "value": "line_width-0.05" }, - "support_line_width": { "value": "max(min(line_width,0.4),line_width/2)" }, + "support_line_width": { "value": "max(min(line_width, 0.4),line_width / 2)" }, "support_interface_line_width": { "value": "support_line_width" }, "machine_min_cool_heat_time_window": { "value": "15" }, "default_material_print_temperature": { "value": "200" }, @@ -99,33 +98,32 @@ "skin_overlap": { "value": "10" }, "speed_layer_0": { "value": "25" }, "speed_print": { "value": "70" }, - "speed_support": { "value": "speed_print*line_width/support_line_width" }, - "speed_support_interface": { "value": "speed_print*line_width/support_interface_line_width" }, - "speed_topbottom": { "value": "speed_print*line_width/skin_line_width" }, + "speed_support": { "value": "speed_print * line_width / support_line_width" }, + "speed_support_interface": { "value": "speed_print * line_width / support_interface_line_width" }, + "speed_topbottom": { "value": "speed_print * line_width / skin_line_width" }, "speed_travel": { "value": "100" }, - "speed_infill": { "value": "speed_print*line_width/infill_line_width" }, - "speed_wall": { "value": "speed_print*wall_line_width_0/line_width" }, + "speed_infill": { "value": "speed_print * line_width / infill_line_width" }, + "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" }, "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)" }, - "support_bottom_distance": { "value": "max(support_z_distance,layer_height*int(0.45/layer_height))" }, - "top_bottom_thickness": { "value": "max(1.2,layer_height*6)" }, + "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)" }, + "support_bottom_distance": { "value": "max(support_z_distance, layer_height * int(0.45 / layer_height))" }, + "top_bottom_thickness": { "value": "max(1.2, layer_height * 6)" }, "travel_avoid_distance": { "value": "3" }, "gradual_support_infill_step_height": { "value": "0.2" }, "gradual_support_infill_steps": { "value": "1" }, - "infill_sparse_density": { "value": "20" }, "gradual_infill_step_height": { "value": "1" }, "initial_layer_line_width_factor": { "value": "120" }, "jerk_travel": { "value": "25" }, "support_bottom_enable": { "value": "True" }, - "support_bottom_height": { "value": "max((0.15 if(0.15%layer_height==0) else layer_height*int((0.15+layer_height)/layer_height)),layer_height)" }, + "support_bottom_height": { "value": "max((0.15 if(0.15 % layer_height == 0) else layer_height * int((0.15 + layer_height) / layer_height)), layer_height)" }, "support_bottom_pattern": { "value": "'zigzag'" }, "support_connect_zigzags": { "value": "False" }, "support_infill_rate": { "value": "8 if support_enable and support_structure == 'normal' else 0 if support_enable and support_structure == 'tree' else 8" }, "support_interface_density": { "value": "80" }, - "support_interface_enable": { "value": "True" }, + "support_interface_enable": { "value": true }, "support_interface_height": { "value": "0.5" }, "support_roof_pattern": { "value": "'concentric'" }, "z_seam_type": { "value": "'shortest'" } diff --git a/resources/definitions/winbo_mini2.def.json b/resources/definitions/winbo_mini2.def.json index 903142010b..73c6562edd 100644 --- a/resources/definitions/winbo_mini2.def.json +++ b/resources/definitions/winbo_mini2.def.json @@ -40,7 +40,6 @@ "machine_start_gcode": { "default_value": "G21\nG90\nM82\nM107\nG28 X0 Y0\nG28 Z0\nG1 F1000 Z3\nG1 F4000 X0\nG1 F4000 Y0\nG1 F1000 Z0.2\nG92 E0\nG1 F1000 X30 E8\nG92 E0\nM117 Printing." }, "machine_end_gcode": { "default_value": "M104 S0\nM140 S0\nG92 E2\nG1 E0 F200\nG28 X0 Y0\nM84 X Y E" }, "prime_blob_enable": { "enabled": true }, - "acceleration_enabled": { "value": "True" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, "acceleration_print": { "value": "2000" }, @@ -99,23 +98,22 @@ "skin_overlap": { "value": "10" }, "speed_layer_0": { "value": "20" }, "speed_print": { "value": "50" }, - "speed_support": { "value": "speed_print*line_width/support_line_width" }, - "speed_support_interface": { "value": "speed_print*line_width/support_interface_line_width" }, - "speed_topbottom": { "value": "speed_print*line_width/skin_line_width" }, + "speed_support": { "value": "speed_print * line_width / support_line_width" }, + "speed_support_interface": { "value": "speed_print * line_width / support_interface_line_width" }, + "speed_topbottom": { "value": "speed_print * line_width / skin_line_width" }, "speed_travel": { "value": "90" }, - "speed_infill": { "value": "speed_print*line_width/infill_line_width" }, - "speed_wall": { "value": "speed_print*wall_line_width_0/line_width" }, + "speed_infill": { "value": "speed_print * line_width / infill_line_width" }, + "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" }, "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)" }, + "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)" }, "support_bottom_distance": { "value": "max(support_z_distance,layer_height*int(0.45/layer_height))" }, "top_bottom_thickness": { "value": "max(1.2,layer_height*6)" }, "travel_avoid_distance": { "value": "3" }, "gradual_support_infill_step_height": { "value": "0.2" }, "gradual_support_infill_steps": { "value": "1" }, - "infill_sparse_density": { "value": "20" }, "gradual_infill_step_height": { "value": "1" }, "initial_layer_line_width_factor": { "value": "120" }, "jerk_travel": { "value": "25" }, @@ -125,7 +123,7 @@ "support_connect_zigzags": { "value": "False" }, "support_infill_rate": { "value": "8 if support_enable and support_structure == 'normal' else 0 if support_enable and support_structure == 'tree' else 8" }, "support_interface_density": { "value": "80" }, - "support_interface_enable": { "value": "True" }, + "support_interface_enable": { "value": true }, "support_interface_height": { "value": "0.5" }, "support_roof_pattern": { "value": "'concentric'" }, "z_seam_type": { "value": "'shortest'" } diff --git a/resources/definitions/winbo_superhelper105.def.json b/resources/definitions/winbo_superhelper105.def.json index 055967f8ab..5fa6fe7eb6 100644 --- a/resources/definitions/winbo_superhelper105.def.json +++ b/resources/definitions/winbo_superhelper105.def.json @@ -88,33 +88,32 @@ "skin_overlap": { "value": "10" }, "speed_layer_0": { "value": "20" }, "speed_print": { "value": "52" }, - "speed_support": { "value": "speed_print*line_width/support_line_width" }, - "speed_support_interface": { "value": "speed_print*line_width/support_interface_line_width" }, - "speed_topbottom": { "value": "speed_print*line_width/skin_line_width" }, + "speed_support": { "value": "speed_print * line_width / support_line_width" }, + "speed_support_interface": { "value": "speed_print * line_width / support_interface_line_width" }, + "speed_topbottom": { "value": "speed_print * line_width / skin_line_width" }, "speed_travel": { "value": "80" }, - "speed_infill": { "value": "speed_print*line_width/infill_line_width" }, - "speed_wall": { "value": "speed_print*wall_line_width_0/line_width" }, + "speed_infill": { "value": "speed_print * line_width / infill_line_width" }, + "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" }, "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)" }, - "support_bottom_distance": { "value": "max(support_z_distance,layer_height*int(0.45/layer_height))" }, + "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)" }, + "support_bottom_distance": { "value": "max(support_z_distance,layer_height * int(0.45 / layer_height))" }, "top_bottom_thickness": { "value": "max(1.2,layer_height*6)" }, "travel_avoid_distance": { "value": "3" }, "gradual_support_infill_step_height": { "value": "0.2" }, "gradual_support_infill_steps": { "value": "1" }, - "infill_sparse_density": { "value": "20" }, "gradual_infill_step_height": { "value": "1" }, "initial_layer_line_width_factor": { "value": "120" }, "jerk_travel": { "value": "25" }, - "support_bottom_enable": { "value": "True" }, + "support_bottom_enable": { "value": true }, "support_bottom_height": { "value": "max((0.15 if(0.15%layer_height==0) else layer_height*int((0.15+layer_height)/layer_height)),layer_height)" }, "support_bottom_pattern": { "value": "'zigzag'" }, - "support_connect_zigzags": { "value": "False" }, + "support_connect_zigzags": { "value": false }, "support_infill_rate": { "value": "8 if support_enable and support_structure == 'normal' else 0 if support_enable and support_structure == 'tree' else 8" }, "support_interface_density": { "value": "80" }, - "support_interface_enable": { "value": "True" }, + "support_interface_enable": { "value": true }, "support_interface_height": { "value": "0.5" }, "support_roof_pattern": { "value": "'concentric'" }, "z_seam_type": { "value": "'shortest'" } From 250c038e037712b1a84befa0b3d5e36d963fc4ab Mon Sep 17 00:00:00 2001 From: digitalfrost Date: Tue, 6 Sep 2022 11:41:50 +0200 Subject: [PATCH 38/58] CuraContainerStack.py: iterate directly over IndexTypeMap (#12988) * CuraContainerStack.py: iterate directly over IndexTypeMap There is no need for range(len Co-authored-by: Jelle Spijker --- cura/Settings/CuraContainerStack.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Settings/CuraContainerStack.py b/cura/Settings/CuraContainerStack.py index a8a1d780ea..41502f8874 100755 --- a/cura/Settings/CuraContainerStack.py +++ b/cura/Settings/CuraContainerStack.py @@ -49,7 +49,7 @@ class CuraContainerStack(ContainerStack): self._empty_material = cura_empty_instance_containers.empty_material_container #type: InstanceContainer self._empty_variant = cura_empty_instance_containers.empty_variant_container #type: InstanceContainer - self._containers = [self._empty_instance_container for i in range(len(_ContainerIndexes.IndexTypeMap))] #type: List[ContainerInterface] + self._containers: List[ContainerInterface] = [self._empty_instance_container for i in _ContainerIndexes.IndexTypeMap] self._containers[_ContainerIndexes.QualityChanges] = self._empty_quality_changes self._containers[_ContainerIndexes.Quality] = self._empty_quality self._containers[_ContainerIndexes.Material] = self._empty_material From 543598a2009c46270f4911ac1b9b127be6a52794 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 6 Sep 2022 11:43:45 +0200 Subject: [PATCH 39/58] Fix typo --- resources/definitions/tronxy_x.def.json | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/definitions/tronxy_x.def.json b/resources/definitions/tronxy_x.def.json index 488316ded2..69525e5f27 100644 --- a/resources/definitions/tronxy_x.def.json +++ b/resources/definitions/tronxy_x.def.json @@ -133,7 +133,6 @@ "support_wall_count": { "value": 0 }, "support_brim_enable": { "value": true }, "support_brim_width": { "value": 4 }, - , "support_interface_height": { "value": "layer_height * 4" }, "support_interface_density": { "value": 33.333 }, "support_interface_pattern": { "value": "'grid'" }, From a5f23939f5c907347eef5a01bd1807f3978d3d1d Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 6 Sep 2022 11:47:33 +0200 Subject: [PATCH 40/58] Fix a few more typos --- resources/definitions/SV03.def.json | 2 +- resources/definitions/koonovo_kn5.def.json | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/resources/definitions/SV03.def.json b/resources/definitions/SV03.def.json index b056175b27..9a550c1960 100644 --- a/resources/definitions/SV03.def.json +++ b/resources/definitions/SV03.def.json @@ -50,7 +50,7 @@ "material_initial_print_temperature": { "value": "material_print_temperature" }, "material_final_print_temperature": { "value": "material_print_temperature" }, "z_seam_type": { "value": "'back'" }, - "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, , + "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, "infill_pattern": { "value": "'lines'" }, "infill_before_walls": { "value": false }, "infill_overlap": { "value": 30.0 }, diff --git a/resources/definitions/koonovo_kn5.def.json b/resources/definitions/koonovo_kn5.def.json index d206c9b87a..3fc8705e52 100644 --- a/resources/definitions/koonovo_kn5.def.json +++ b/resources/definitions/koonovo_kn5.def.json @@ -22,9 +22,9 @@ "preferred_quality_type": "standard", "preferred_material": "generic_pla" }, - - - "overrides": { + + "overrides": + { "machine_name": { "default_value": "Koonovo KN5" }, "machine_width": { "default_value": 420 }, "machine_depth": { "default_value": 420 }, @@ -39,7 +39,6 @@ "gantry_height": { "value": 0 }, - "machine_extruder_count": { "default_value": 2 }, "machine_start_gcode": { @@ -64,7 +63,6 @@ "material_diameter": { "default_value": 1.75 }, - "acceleration_print": { "value": 500 }, "acceleration_travel": { "value": 500 }, @@ -81,7 +79,7 @@ "material_standby_temperature": { "value": "material_print_temperature" }, "default_material_bed_temperature": { "value": "45" }, - "speed_print": { "value": 50.0 } , , + "speed_print": { "value": 50.0 } , "speed_wall_x": { "value": "speed_wall" }, "speed_travel": { "value": "120.0 if speed_print < 60 else 180.0 if speed_print > 100 else speed_print * 2.2" }, "speed_layer_0": { "value": 25.0 }, From d097b7d030c2ce9fb4d0db58402ec6ac254f4c0b Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 6 Sep 2022 11:52:33 +0200 Subject: [PATCH 41/58] Minor codestyle changes to fdmprinter --- resources/definitions/fdmprinter.def.json | 46 +++++++++------------- resources/definitions/koonovo_kn5.def.json | 2 +- 2 files changed, 19 insertions(+), 29 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index c24192b7d0..5b6268a875 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -426,9 +426,7 @@ "label": "Disallowed Areas", "description": "A list of polygons with areas the print head is not allowed to enter.", "type": "polygons", - "default_value": - [ - ], + "default_value": [], "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -438,9 +436,7 @@ "label": "Nozzle Disallowed Areas", "description": "A list of polygons with areas the nozzle is not allowed to enter.", "type": "polygons", - "default_value": - [ - ], + "default_value": [], "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -452,22 +448,10 @@ "type": "polygon", "default_value": [ - [ - -20, - 10 - ], - [ - 10, - 10 - ], - [ - 10, - -10 - ], - [ - -20, - -10 - ] + [ -20, 10 ], + [ 10, 10 ], + [ 10, -10 ], + [ -20, -10 ] ], "settable_per_mesh": false, "settable_per_extruder": false, @@ -1027,7 +1011,8 @@ "settable_per_meshgroup": true, "settable_globally": true, "enabled": "extruders_enabled_count > 1", - "children": { + "children": + { "wall_0_extruder_nr": { "label": "Outer Wall Extruder", @@ -1186,7 +1171,8 @@ "label": "Wall Ordering", "description": "Determines the order in which walls are printed. Printing outer walls earlier helps with dimensional accuracy, as faults from inner walls cannot propagate to the outside. However printing them later allows them to stack better when overhangs are printed. When there is an uneven amount of total innner walls, the 'center last line' is always printed last.", "type": "enum", - "options": { + "options": + { "inside_out": "Inside To Outside", "outside_in": "Outside To Inside" }, @@ -1241,7 +1227,8 @@ } } }, - "fill_outline_gaps": { + "fill_outline_gaps": + { "label": "Print Thin Walls", "description": "Print pieces of the model which are horizontally thinner than the nozzle size.", "type": "bool", @@ -1444,7 +1431,8 @@ "limit_to_extruder": "roofing_extruder_nr", "settable_per_mesh": true, "enabled": "top_layers > 0", - "children": { + "children": + { "roofing_line_width": { "label": "Top Surface Skin Line Width", @@ -4418,7 +4406,8 @@ "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false, - "children": { + "children": + { "support_infill_extruder_nr": { "label": "Support Infill Extruder", @@ -8065,7 +8054,8 @@ "description": "Settings which are only used if CuraEngine isn't called from the Cura frontend.", "type": "category", "enabled": false, - "children": { + "children": + { "center_object": { "description": "Whether to center the object on the middle of the build platform (0,0), instead of using the coordinate system in which the object was saved.", diff --git a/resources/definitions/koonovo_kn5.def.json b/resources/definitions/koonovo_kn5.def.json index 3fc8705e52..e770579487 100644 --- a/resources/definitions/koonovo_kn5.def.json +++ b/resources/definitions/koonovo_kn5.def.json @@ -22,7 +22,7 @@ "preferred_quality_type": "standard", "preferred_material": "generic_pla" }, - + "overrides": { "machine_name": { "default_value": "Koonovo KN5" }, From bc7db5ffa7a142e578d9f61344e9c747d4e2730e Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Tue, 6 Sep 2022 12:58:57 +0200 Subject: [PATCH 42/58] Always run --- .github/workflows/conan-package-create.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/conan-package-create.yml b/.github/workflows/conan-package-create.yml index f753b76e71..4af608b7ac 100644 --- a/.github/workflows/conan-package-create.yml +++ b/.github/workflows/conan-package-create.yml @@ -53,7 +53,6 @@ env: jobs: conan-package-create: - if: ${{ github.event.pull_request.head.repo.full_name == github.repository }} runs-on: ${{ inputs.runs_on }} steps: From 7eb47d450fe8e00ca9c910311cb3211a8fd06da7 Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Tue, 6 Sep 2022 13:00:30 +0200 Subject: [PATCH 43/58] Also use gcc12 for the unittest in case curaengine isn't build --- .github/workflows/unit-test.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 20ea83bdb1..eb2edc09d8 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -103,7 +103,18 @@ jobs: - name: Install Linux system requirements if: ${{ runner.os == 'Linux' }} - run: sudo apt install build-essential checkinstall libegl-dev zlib1g-dev libssl-dev ninja-build autoconf libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xtrans-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev xkb-data libxcb-dri3-dev uuid-dev libxcb-util-dev libxkbcommon-x11-dev -y + run: | + sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y + sudo apt update + sudo apt upgrade + sudo apt install build-essential checkinstall libegl-dev zlib1g-dev libssl-dev ninja-build autoconf libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xtrans-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev xkb-data libxcb-dri3-dev uuid-dev libxcb-util-dev libxkbcommon-x11-dev pkg-config -y + + - name: Install GCC-12 on ubuntu-22.04 + if: ${{ startsWith(inputs.runs_on, 'ubuntu-22.04') }} + run: | + sudo apt install g++-12 gcc-12 -y + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12 + sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 12 - name: Get Conan configuration run: conan config install https://github.com/Ultimaker/conan-config.git From 6253fb2fdc1340a0c457771c7eb6b44f081a5215 Mon Sep 17 00:00:00 2001 From: Casper Lamboo Date: Tue, 6 Sep 2022 13:19:50 +0200 Subject: [PATCH 44/58] Add typing to function argument CURA-9277 Co-authored-by: Joey de l'Arago --- cura/Machines/Models/MachineListModel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Machines/Models/MachineListModel.py b/cura/Machines/Models/MachineListModel.py index ead1061a05..8750da6305 100644 --- a/cura/Machines/Models/MachineListModel.py +++ b/cura/Machines/Models/MachineListModel.py @@ -131,7 +131,7 @@ class MachineListModel(ListModel): for stack in other_machine_stacks: self.addItem(stack, False) - def addItem(self, container_stack: ContainerStack, is_online, machine_count: int = 0) -> None: + def addItem(self, container_stack: ContainerStack, is_online: bool, machine_count: int = 0) -> None: if parseBool(container_stack.getMetaDataEntry("hidden", False)): return From 370d0bcf03707db7d7ae6b7edfb264b1a0fbfac9 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 6 Sep 2022 13:43:14 +0200 Subject: [PATCH 45/58] Add extra BOM numbers to UMs3 and UMs5 --- resources/definitions/ultimaker_s3.def.json | 2 +- resources/definitions/ultimaker_s5.def.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json index 5d1464396f..4bcc9cf8dd 100644 --- a/resources/definitions/ultimaker_s3.def.json +++ b/resources/definitions/ultimaker_s3.def.json @@ -35,7 +35,7 @@ "update_url": "https://ultimaker.com/firmware?utm_source=cura&utm_medium=software&utm_campaign=fw-update" }, "bom_numbers": [ - 213482 + 213482, 213483 ] }, diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index 314da546de..5d4c2616c2 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -36,7 +36,7 @@ "update_url": "https://ultimaker.com/firmware?utm_source=cura&utm_medium=software&utm_campaign=fw-update" }, "bom_numbers": [ - 9051, 214475 + 9051, 214475, 214476 ] }, From 148263a06828e6b5669854a6f0feacba7d4bc2ce Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Tue, 6 Sep 2022 13:52:10 +0200 Subject: [PATCH 46/58] Move `hasNetworkedConnection` to `GlobalStack` From code review CURA-9277 Co-authored-by: Joey --- cura/Machines/Models/MachineListModel.py | 10 +--------- cura/Settings/GlobalStack.py | 6 ++++++ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/cura/Machines/Models/MachineListModel.py b/cura/Machines/Models/MachineListModel.py index 8750da6305..919d593200 100644 --- a/cura/Machines/Models/MachineListModel.py +++ b/cura/Machines/Models/MachineListModel.py @@ -89,15 +89,7 @@ class MachineListModel(ListModel): machines_manager = CuraApplication.getInstance().getMachineManager() online_machine_stacks = machines_manager.getMachinesWithDefinition(definition_id, online_only = True) - def online_machines_has_connection_filter(machine_stack): - # This is required because machines loaded from projects have the is_online="True" but no connection type. - # We want to display them the same way as unconnected printers in this case. - has_connection = False - for connection_type in [ConnectionType.NetworkConnection.value, ConnectionType.CloudConnection.value]: - has_connection |= connection_type in machine_stack.configuredConnectionTypes - return has_connection - - online_machine_stacks = list(filter(online_machines_has_connection_filter, online_machine_stacks)) + online_machine_stacks = list(filter(lambda machine: machine.hasNetworkedConnection(), online_machine_stacks)) other_machine_stacks.remove(abstract_machine) if abstract_machine in online_machine_stacks: diff --git a/cura/Settings/GlobalStack.py b/cura/Settings/GlobalStack.py index b94ca45763..041bd19d3a 100755 --- a/cura/Settings/GlobalStack.py +++ b/cura/Settings/GlobalStack.py @@ -347,6 +347,12 @@ class GlobalStack(CuraContainerStack): nameChanged = pyqtSignal() name = pyqtProperty(str, fget=getName, fset=setName, notify=nameChanged) + def hasNetworkedConnection(self) -> bool: + has_connection = False + for connection_type in [ConnectionType.NetworkConnection.value, ConnectionType.CloudConnection.value]: + has_connection |= connection_type in self.configuredConnectionTypes + return has_connection + ## private: global_stack_mime = MimeType( name = "application/x-cura-globalstack", From f2edc1ac491e1725a8c2f790cfb9b8b246a47040 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 6 Sep 2022 13:56:24 +0200 Subject: [PATCH 47/58] Fix typo --- .../UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py b/plugins/UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py index c875eb183a..caed6ddf91 100644 --- a/plugins/UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py +++ b/plugins/UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py @@ -31,7 +31,7 @@ class RemovedPrintersMessage(Message): super().__init__(title=self.i18n_catalog.i18ncp("info:status", "A cloud connection is not available for a printer", "A cloud connection is not available for some printers", - len(self.removed_devices)), + len(self._removed_devices)), message_type=Message.MessageType.WARNING, text = message_text) From 6c0d76807efbb25b70cc09be12053df3cc5c8189 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 6 Sep 2022 14:43:38 +0200 Subject: [PATCH 48/58] Add trycatch around whatsnew & changelog pages Fixes CURA-4DX (sentry crash) --- cura/UI/WhatsNewPagesModel.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/cura/UI/WhatsNewPagesModel.py b/cura/UI/WhatsNewPagesModel.py index 4fb7802924..1faf9572c7 100644 --- a/cura/UI/WhatsNewPagesModel.py +++ b/cura/UI/WhatsNewPagesModel.py @@ -62,15 +62,21 @@ class WhatsNewPagesModel(WelcomePagesModel): def initialize(self) -> None: self._pages = [] - self._pages.append({"id": "whats_new", - "page_url": self._getBuiltinWelcomePagePath("WhatsNewContent.qml"), - "next_page_button_text": self._catalog.i18nc("@action:button", "Skip"), - "next_page_id": "changelog" - }) - self._pages.append({"id": "changelog", - "page_url": self._getBuiltinWelcomePagePath("ChangelogContent.qml"), - "next_page_button_text": self._catalog.i18nc("@action:button", "Close"), - }) + try: + self._pages.append({"id": "whats_new", + "page_url": self._getBuiltinWelcomePagePath("WhatsNewContent.qml"), + "next_page_button_text": self._catalog.i18nc("@action:button", "Skip"), + "next_page_id": "changelog" + }) + except FileNotFoundError: + Logger.warning("Unable to find what's new page") + try: + self._pages.append({"id": "changelog", + "page_url": self._getBuiltinWelcomePagePath("ChangelogContent.qml"), + "next_page_button_text": self._catalog.i18nc("@action:button", "Close"), + }) + except FileNotFoundError: + Logger.warning("Unable to find changelog page") self.setItems(self._pages) images, max_image = WhatsNewPagesModel._collectOrdinalFiles(Resources.Images, WhatsNewPagesModel.image_formats) From 2f1325259c5044692172d23b75dc1eb75ebe1e8b Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 6 Sep 2022 14:47:32 +0200 Subject: [PATCH 49/58] Fix 3mf workspace reader crashing on certain invalid files CURA-4DP (Sentry crash) --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index c8f7bc8abd..86be2f0380 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -664,10 +664,22 @@ class ThreeMFWorkspaceReader(WorkspaceReader): cura_file_names = [name for name in archive.namelist() if name.startswith("Cura/")] - # Create a shadow copy of the preferences (we don't want all of the preferences, but we do want to re-use its + # Create a shadow copy of the preferences (We don't want all of the preferences, but we do want to re-use its # parsing code. temp_preferences = Preferences() - serialized = archive.open("Cura/preferences.cfg").read().decode("utf-8") + try: + serialized = archive.open("Cura/preferences.cfg").read().decode("utf-8") + except KeyError: + # If there is no preferences file, it's not a workspace, so notify user of failure. + Logger.log("w", "File %s is not a valid workspace.", file_name) + message = Message(i18n_catalog.i18nc("@info:error Don't translate the XML tags or !", + "Project file {0} is corrupt: {1}.", + file_name, str(e)), + title=i18n_catalog.i18nc("@info:title", "Can't Open Project File"), + message_type=Message.MessageType.ERROR) + message.show() + self.setWorkspaceName("") + return [], {} temp_preferences.deserialize(serialized) # Copy a number of settings from the temp preferences to the global From cc403a9a49f45cfee12243a4c66975c22076c7d2 Mon Sep 17 00:00:00 2001 From: jelle Spijker Date: Tue, 6 Sep 2022 15:38:31 +0200 Subject: [PATCH 50/58] Bump up patch version on release branch --- .github/workflows/conan-recipe-version.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/conan-recipe-version.yml b/.github/workflows/conan-recipe-version.yml index 3e86c880a6..701efcc658 100644 --- a/.github/workflows/conan-recipe-version.yml +++ b/.github/workflows/conan-recipe-version.yml @@ -157,8 +157,8 @@ jobs: channel_metadata = f"{channel}_{no_commits}" # FIXME: for when we create a new release branch if latest_branch_version.prerelease == "": - bump_up_minor = int(latest_branch_version.minor) + 1 - actual_version = f"{latest_branch_version.major}.{bump_up_minor}.{latest_branch_version.patch}-alpha+{buildmetadata}{channel_metadata}" + bump_up_patch = int(latest_branch_version.patch) + 1 + actual_version = f"{latest_branch_version.major}.{latest_branch_version.minor}.{bump_up_patch}-alpha+{buildmetadata}{channel_metadata}" else: actual_version = f"{latest_branch_version.major}.{latest_branch_version.minor}.{latest_branch_version.patch}-{latest_branch_version.prerelease.lower()}+{buildmetadata}{channel_metadata}" else: From 3aa2ae27bbed85a2abe309f8f862ba31674e0d98 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 6 Sep 2022 16:20:31 +0200 Subject: [PATCH 51/58] Remove global settings from extruder profiles --- .../dagoma/dagoma_discoeasy200_bicolor_pla_fast.inst.cfg | 1 - .../dagoma/dagoma_discoeasy200_bicolor_pla_fine.inst.cfg | 1 - .../dagoma/dagoma_discoeasy200_bicolor_pla_standard.inst.cfg | 1 - resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg | 1 - resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg | 1 - .../quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg | 1 - .../dagoma/dagoma_discoultimate_bicolor_pla_fast.inst.cfg | 1 - .../dagoma/dagoma_discoultimate_bicolor_pla_fine.inst.cfg | 1 - .../dagoma/dagoma_discoultimate_bicolor_pla_standard.inst.cfg | 1 - resources/quality/dagoma/dagoma_discoultimate_pla_fast.inst.cfg | 1 - resources/quality/dagoma/dagoma_discoultimate_pla_fine.inst.cfg | 1 - .../quality/dagoma/dagoma_discoultimate_pla_standard.inst.cfg | 1 - resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg | 1 - resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg | 1 - resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg | 1 - resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg | 1 - resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg | 1 - resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg | 1 - resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg | 2 -- resources/quality/fabtotum/fabtotum_abs_high.inst.cfg | 2 -- resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg | 2 -- resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg | 2 -- resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg | 2 -- resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg | 2 -- resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg | 2 -- resources/quality/fabtotum/fabtotum_pla_high.inst.cfg | 2 -- resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg | 2 -- resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg | 2 -- resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg | 2 -- resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg | 2 -- resources/quality/fabxpro/fabxpro_abs_draft.inst.cfg | 1 - 31 files changed, 43 deletions(-) diff --git a/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fast.inst.cfg index 63f9920bf3..1073729905 100644 --- a/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fast.inst.cfg @@ -11,7 +11,6 @@ weight = -2 material = chromatik_pla [values] -layer_height = 0.2 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 10 diff --git a/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fine.inst.cfg index c9828cca5a..e3a5c6eac9 100644 --- a/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fine.inst.cfg @@ -11,7 +11,6 @@ weight = 0 material = chromatik_pla [values] -layer_height = 0.1 line_width = =machine_nozzle_size * 0.875 speed_print = 35 diff --git a/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_standard.inst.cfg index 1ac89bfcb6..e1f8934019 100644 --- a/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_standard.inst.cfg @@ -11,7 +11,6 @@ weight = -1 material = chromatik_pla [values] -layer_height = 0.15 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 5 diff --git a/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg index f739b02303..f8635d2cc7 100644 --- a/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg @@ -11,7 +11,6 @@ weight = -2 material = chromatik_pla [values] -layer_height = 0.2 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 10 diff --git a/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg index 3b25824cbc..6c0597409c 100644 --- a/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg @@ -11,7 +11,6 @@ weight = 0 material = chromatik_pla [values] -layer_height = 0.1 line_width = =machine_nozzle_size * 0.875 speed_print = 35 diff --git a/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg index 913af36eb3..5254504da5 100644 --- a/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg @@ -11,7 +11,6 @@ weight = -1 material = chromatik_pla [values] -layer_height = 0.15 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 5 diff --git a/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fast.inst.cfg index 87c089438f..5e4467e5ed 100644 --- a/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fast.inst.cfg @@ -11,7 +11,6 @@ weight = -2 material = chromatik_pla [values] -layer_height = 0.2 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 10 diff --git a/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fine.inst.cfg index e927d2addf..d5d21af6e2 100644 --- a/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fine.inst.cfg @@ -11,7 +11,6 @@ weight = 0 material = chromatik_pla [values] -layer_height = 0.1 line_width = =machine_nozzle_size * 0.875 speed_print = 35 diff --git a/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_standard.inst.cfg index ccbaa8f506..4163399ccc 100644 --- a/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_standard.inst.cfg @@ -11,7 +11,6 @@ weight = -1 material = chromatik_pla [values] -layer_height = 0.15 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 5 diff --git a/resources/quality/dagoma/dagoma_discoultimate_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_discoultimate_pla_fast.inst.cfg index 290d4be38d..90336926f8 100644 --- a/resources/quality/dagoma/dagoma_discoultimate_pla_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoultimate_pla_fast.inst.cfg @@ -11,7 +11,6 @@ weight = -2 material = chromatik_pla [values] -layer_height = 0.2 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 10 diff --git a/resources/quality/dagoma/dagoma_discoultimate_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_discoultimate_pla_fine.inst.cfg index 3c0d4a70ca..4b70708d41 100644 --- a/resources/quality/dagoma/dagoma_discoultimate_pla_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoultimate_pla_fine.inst.cfg @@ -11,7 +11,6 @@ weight = 0 material = chromatik_pla [values] -layer_height = 0.1 line_width = =machine_nozzle_size * 0.875 speed_print = 35 diff --git a/resources/quality/dagoma/dagoma_discoultimate_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_discoultimate_pla_standard.inst.cfg index d7c8fa3360..61b8bb8d2d 100644 --- a/resources/quality/dagoma/dagoma_discoultimate_pla_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoultimate_pla_standard.inst.cfg @@ -11,7 +11,6 @@ weight = -1 material = chromatik_pla [values] -layer_height = 0.15 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 5 diff --git a/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg index be852a2446..3fc2e53381 100644 --- a/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg @@ -11,7 +11,6 @@ weight = -2 material = chromatik_pla [values] -layer_height = 0.2 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 10 diff --git a/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg index cf7f6f6545..ee7fec9712 100644 --- a/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg @@ -11,7 +11,6 @@ weight = 0 material = chromatik_pla [values] -layer_height = 0.1 line_width = =machine_nozzle_size * 0.875 speed_print = 30 diff --git a/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg index 0ad63679ec..6d5890a74c 100644 --- a/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg @@ -11,7 +11,6 @@ weight = -1 material = chromatik_pla [values] -layer_height = 0.15 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 5 diff --git a/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg index 6d08b2a27e..d1b723fe0a 100644 --- a/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg @@ -11,7 +11,6 @@ weight = -2 material = chromatik_pla [values] -layer_height = 0.2 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 10 diff --git a/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg index 96d0a51d95..a57a833f5c 100644 --- a/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg @@ -11,7 +11,6 @@ weight = 0 material = chromatik_pla [values] -layer_height = 0.1 line_width = =machine_nozzle_size * 0.875 speed_print = 30 diff --git a/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg index f24ae61f71..c63ec93a63 100644 --- a/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg @@ -11,7 +11,6 @@ weight = -1 material = chromatik_pla [values] -layer_height = 0.15 line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 5 diff --git a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg index aa36a94cbd..641a52be30 100644 --- a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg @@ -14,8 +14,6 @@ variant = Lite 0.4 mm [values] adhesion_type = raft speed_print = 80 -layer_height = 0.2 -layer_height_0 = 0.2 cool_fan_enabled = False cool_fan_full_at_height = 0.4 cool_fan_speed = 50 diff --git a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg index 8afdd25424..a4e802f37a 100644 --- a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg @@ -14,8 +14,6 @@ variant = Lite 0.4 mm [values] adhesion_type = raft speed_print = 45 -layer_height = 0.1 -layer_height_0 = 0.1 cool_fan_enabled = False cool_fan_full_at_height = 0.2 cool_fan_speed = 50 diff --git a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg index 5b4501657f..99f8ec4e56 100644 --- a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg @@ -14,8 +14,6 @@ variant = Lite 0.4 mm [values] adhesion_type = raft speed_print = 60 -layer_height = 0.15 -layer_height_0 = 0.15 cool_fan_enabled = False cool_fan_full_at_height = 0.3 cool_fan_speed = 50 diff --git a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg index a2f97e6fdc..9a61677c9d 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg @@ -23,8 +23,6 @@ cool_min_layer_time = 5 cool_min_speed = 0 infill_overlap = 15 infill_sparse_density = 24 -layer_height = 0.20 -layer_height_0 = 0.15 line_width = =machine_nozzle_size material_flow = 100 raft_airgap = 0.22 diff --git a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg index 6d8ebac406..1d1eedf3f4 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg @@ -23,8 +23,6 @@ cool_min_layer_time = 5 cool_min_speed = 0 infill_overlap = 15 infill_sparse_density = 24 -layer_height = 0.10 -layer_height_0 = 0.10 line_width = =machine_nozzle_size material_flow = 100 raft_airgap = 0.22 diff --git a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg index b29dd370f5..4920f1750f 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg @@ -23,8 +23,6 @@ cool_min_layer_time = 5 cool_min_speed = 0 infill_overlap = 15 infill_sparse_density = 24 -layer_height = 0.15 -layer_height_0 = 0.10 line_width = =machine_nozzle_size material_flow = 100 raft_airgap = 0.22 diff --git a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg index 0df61d9b21..5247ca4719 100644 --- a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg @@ -14,8 +14,6 @@ variant = Lite 0.4 mm [values] adhesion_type = skirt speed_print = 80 -layer_height = 0.2 -layer_height_0 = 0.2 cool_fan_enabled = True cool_fan_full_at_height = 0.4 cool_fan_speed = 100 diff --git a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg index e20a86e503..20a2340870 100644 --- a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg @@ -14,8 +14,6 @@ variant = Lite 0.4 mm [values] adhesion_type = skirt speed_print = 45 -layer_height = 0.1 -layer_height_0 = 0.1 cool_fan_enabled = True cool_fan_full_at_height = 0.2 cool_fan_speed = 100 diff --git a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg index 70cb0d7f67..ea267e88ac 100644 --- a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg @@ -14,8 +14,6 @@ variant = Lite 0.4 mm [values] adhesion_type = skirt speed_print = 60 -layer_height = 0.15 -layer_height_0 = 0.15 cool_fan_enabled = True cool_fan_full_at_height = 0.3 cool_fan_speed = 100 diff --git a/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg index cdd814e02d..ddad87e2d1 100644 --- a/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg @@ -14,8 +14,6 @@ weight = -1 [values] adhesion_type = skirt speed_print = 80 -layer_height = 0.2 -layer_height_0 = 0.2 cool_fan_enabled = True cool_fan_full_at_height = 0.4 cool_fan_speed = 100 diff --git a/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg index 1f287605ee..5db8f1172e 100644 --- a/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg @@ -13,8 +13,6 @@ weight = 1 [values] adhesion_type = skirt -layer_height = 0.1 -layer_height_0 = 0.1 cool_fan_enabled = True cool_fan_full_at_height = 0.2 cool_fan_speed = 100 diff --git a/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg index f146a41ef2..3f09c8ea16 100644 --- a/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg @@ -14,8 +14,6 @@ weight = 0 [values] adhesion_type = skirt speed_print = 80 -layer_height = 0.15 -layer_height_0 = 0.15 cool_fan_enabled = True cool_fan_full_at_height = 0.3 cool_fan_speed = 100 diff --git a/resources/quality/fabxpro/fabxpro_abs_draft.inst.cfg b/resources/quality/fabxpro/fabxpro_abs_draft.inst.cfg index b944d37e6d..cf71e68d00 100644 --- a/resources/quality/fabxpro/fabxpro_abs_draft.inst.cfg +++ b/resources/quality/fabxpro/fabxpro_abs_draft.inst.cfg @@ -11,7 +11,6 @@ weight = -2 material = redd_abs global_quality = True - [values] layer_height = 0.3 layer_height_0 = 0.35 From 8f2dc5c6e064a9926d2afca1434e76744930d3b0 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 6 Sep 2022 16:31:25 +0200 Subject: [PATCH 52/58] Fix mistake with abax printers They weren't using the machine specific settings. --- resources/definitions/abax_pri3.def.json | 1 + resources/definitions/abax_pri5.def.json | 1 + resources/quality/abax_pri3/apri3_pla_fast.inst.cfg | 1 - resources/quality/abax_pri3/apri3_pla_high.inst.cfg | 1 - resources/quality/abax_pri3/apri3_pla_normal.inst.cfg | 1 - resources/quality/abax_pri5/apri5_pla_fast.inst.cfg | 1 - resources/quality/abax_pri5/apri5_pla_high.inst.cfg | 1 - resources/quality/abax_pri5/apri5_pla_normal.inst.cfg | 1 - 8 files changed, 2 insertions(+), 6 deletions(-) diff --git a/resources/definitions/abax_pri3.def.json b/resources/definitions/abax_pri3.def.json index 914dc4d3e0..7f73bea678 100644 --- a/resources/definitions/abax_pri3.def.json +++ b/resources/definitions/abax_pri3.def.json @@ -7,6 +7,7 @@ "author": "Abax 3D Technologies", "manufacturer": "Abax 3D Technologies", "file_formats": "text/x-gcode", + "has_machine_quality": "true", "machine_extruder_trains": { "0": "abax_pri3_extruder_0" diff --git a/resources/definitions/abax_pri5.def.json b/resources/definitions/abax_pri5.def.json index cb6566e08c..e97994bd61 100644 --- a/resources/definitions/abax_pri5.def.json +++ b/resources/definitions/abax_pri5.def.json @@ -7,6 +7,7 @@ "author": "Abax 3D Technologies", "manufacturer": "Abax 3D Technologies", "file_formats": "text/x-gcode", + "has_machine_quality": "true", "machine_extruder_trains": { "0": "abax_pri5_extruder_0" diff --git a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg index 58141d7ac9..3e8e09032d 100644 --- a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg @@ -11,7 +11,6 @@ weight = 0 material = generic_pla [values] -layer_height = 0.2 wall_thickness = 1.05 top_bottom_thickness = 0.8 infill_sparse_density = 20 diff --git a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg index 4051885819..808ec25a37 100644 --- a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg @@ -11,7 +11,6 @@ weight = 1 material = generic_pla [values] -layer_height = 0.1 wall_thickness = 1.05 top_bottom_thickness = 0.8 infill_sparse_density = 20 diff --git a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg index d76eac4014..526493b90b 100644 --- a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg @@ -11,7 +11,6 @@ weight = 0 material = generic_pla [values] -layer_height = 0.2 wall_thickness = 1.05 top_bottom_thickness = 0.8 infill_sparse_density = 20 diff --git a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg index ef6ec00ede..f582449a8e 100644 --- a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg @@ -11,7 +11,6 @@ weight = 0 material = generic_pla [values] -layer_height = 0.2 wall_thickness = 1.05 top_bottom_thickness = 0.8 infill_sparse_density = 20 diff --git a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg index 00c5a67cf9..08d86375c9 100644 --- a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg @@ -11,7 +11,6 @@ weight = 1 material = generic_pla [values] -layer_height = 0.1 wall_thickness = 1.05 top_bottom_thickness = 0.8 infill_sparse_density = 20 diff --git a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg index 1934b4af25..6bb5667a30 100644 --- a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg @@ -11,7 +11,6 @@ weight = 0 material = generic_pla [values] -layer_height = 0.2 wall_thickness = 1.05 top_bottom_thickness = 0.8 infill_sparse_density = 20 From 5f2256f2d9ada56c8035684896ed5cdeee10308a Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Tue, 6 Sep 2022 17:33:09 +0200 Subject: [PATCH 53/58] allow conan 1.52.0 to be used --- .github/workflows/requirements-conan-package.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/requirements-conan-package.txt b/.github/workflows/requirements-conan-package.txt index bd19974dd9..fcc1379cfa 100644 --- a/.github/workflows/requirements-conan-package.txt +++ b/.github/workflows/requirements-conan-package.txt @@ -1,2 +1,2 @@ -conan!=1.51.0,!=1.51.1,!=1.51.2,!=1.51.3,!=1.52.0 +conan!=1.51.0,!=1.51.1,!=1.51.2,!=1.51.3 sip From 25aabfb031cfa3c3679f8c7663727a62762244e2 Mon Sep 17 00:00:00 2001 From: jelle Spijker Date: Wed, 7 Sep 2022 07:49:21 +0200 Subject: [PATCH 54/58] Allow specifying version with conan conf By setting the `user.cura:version` in the configuration of Conan that version string is used preferred over the actual version This should be usefully for releases Contributes to CURA-8831 --- conanfile.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/conanfile.py b/conanfile.py index c5f584ed16..17cd0260a6 100644 --- a/conanfile.py +++ b/conanfile.py @@ -149,9 +149,9 @@ class CuraConan(ConanFile): with open(Path(__file__).parent.joinpath("CuraVersion.py.jinja"), "r") as f: cura_version_py = Template(f.read()) - cura_version = self.version + cura_version = self.conf_info.get("user.cura:version", default = self.version, check_type = str) if self.options.internal: - version = Version(self.version) + version = Version(cura_version) cura_version = f"{version.major}.{version.minor}.{version.patch}-{version.prerelease.replace('+', '+internal_')}" with open(Path(location, "CuraVersion.py"), "w") as f: @@ -220,7 +220,8 @@ class CuraConan(ConanFile): with open(Path(__file__).parent.joinpath("Ultimaker-Cura.spec.jinja"), "r") as f: pyinstaller = Template(f.read()) - cura_version = Version(self.version) if self.version else Version("0.0.0") + version = self.conf_info.get("user.cura:version", default = self.version, check_type = str) + cura_version = Version(version) with open(Path(location, "Ultimaker-Cura.spec"), "w") as f: f.write(pyinstaller.render( @@ -239,7 +240,7 @@ class CuraConan(ConanFile): strip = False, # This should be possible on Linux and MacOS but, it can also cause issues on some distributions. Safest is to disable it for now target_arch = "'x86_64'" if self.settings.os == "Macos" else "None", # FIXME: Make this dependent on the settings.arch_target macos = self.settings.os == "Macos", - version = f"'{self.version}'", + version = f"'{version}'", short_version = f"'{cura_version.major}.{cura_version.minor}.{cura_version.patch}'", )) @@ -254,7 +255,8 @@ class CuraConan(ConanFile): self.options["cpython"].shared = True def validate(self): - if self.version and Version(self.version) <= Version("4"): + version = self.conf_info.get("user.cura:version", default = self.version, check_type = str) + if version and Version(version) <= Version("4"): raise ConanInvalidConfiguration("Only versions 5+ are support") def requirements(self): @@ -381,7 +383,8 @@ class CuraConan(ConanFile): self.copy("*.txt", src = self.cpp_info.resdirs[-1], dst = self._base_dir.joinpath("pip_requirements")) # Generate the GitHub Action version info Environment - cura_version = Version(self.version) + version = self.conf_info.get("user.cura:version", default = self.version, check_type = str) + cura_version = Version(version) env_prefix = "Env:" if self.settings.os == "Windows" else "" activate_github_actions_version_env = Template(r"""echo "CURA_VERSION_MAJOR={{ cura_version_major }}" >> ${{ env_prefix }}GITHUB_ENV echo "CURA_VERSION_MINOR={{ cura_version_minor }}" >> ${{ env_prefix }}GITHUB_ENV From 0fcbcf6a5f2b093d03ccf826719cc10d7f510a52 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 7 Sep 2022 09:52:57 +0200 Subject: [PATCH 55/58] Fix crash on layer polygon --- cura/LayerPolygon.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py index 5cc576cb21..e31e85b485 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -42,11 +42,11 @@ class LayerPolygon: self._extruder = extruder self._types = line_types - unknown_types = np.where(self_types >= self_number_of_types) + unknown_types = numpy.where(self._types >= self.__number_of_types) if unknown_types: # Got faulty line data from the engine. for idx in unknown_types: - Logger.warn(f"Found an unknown line type at: {idx}") + Logger.warning(f"Found an unknown line type at: {idx}") self._types[idx] = self.NoneType self._data = data self._line_widths = line_widths From a8f0e330ad278949b2d6e3f9fc8cb3e45b54fa7b Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 7 Sep 2022 09:55:19 +0200 Subject: [PATCH 56/58] Fix logspam in layerpolygon --- cura/LayerPolygon.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py index e31e85b485..07f6660388 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -42,7 +42,7 @@ class LayerPolygon: self._extruder = extruder self._types = line_types - unknown_types = numpy.where(self._types >= self.__number_of_types) + unknown_types = numpy.where(self._types >= self.__number_of_types, self._types) if unknown_types: # Got faulty line data from the engine. for idx in unknown_types: From 094d176c4535f6e83720012615c0936d05b1735e Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 7 Sep 2022 15:32:51 +0200 Subject: [PATCH 57/58] Fix LayerPolygon --- cura/LayerPolygon.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py index 07f6660388..103703e594 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -42,8 +42,8 @@ class LayerPolygon: self._extruder = extruder self._types = line_types - unknown_types = numpy.where(self._types >= self.__number_of_types, self._types) - if unknown_types: + unknown_types = numpy.where(self._types >= self.__number_of_types, self._types, None) + if unknown_types.any(): # Got faulty line data from the engine. for idx in unknown_types: Logger.warning(f"Found an unknown line type at: {idx}") From 9645f66df744e2928ad71011b58d0dbb34d986e3 Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Wed, 7 Sep 2022 15:51:08 +0200 Subject: [PATCH 58/58] Removed Appdata and desktop config No longer used since our current files reside reside in the packaging folder Contribute to CURA-9482 --- com.ultimaker.cura.appdata.xml | 34 ---------------------------------- com.ultimaker.cura.desktop.in | 19 ------------------- 2 files changed, 53 deletions(-) delete mode 100644 com.ultimaker.cura.appdata.xml delete mode 100644 com.ultimaker.cura.desktop.in diff --git a/com.ultimaker.cura.appdata.xml b/com.ultimaker.cura.appdata.xml deleted file mode 100644 index 3af0e9c352..0000000000 --- a/com.ultimaker.cura.appdata.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - com.ultimaker.cura.desktop - CC0-1.0 - LGPL-3.0 and CC-BY-SA-4.0 - Cura - The world's most advanced 3d printer software - -

- Cura creates a seamless integration between hardware, software and - materials for the best 3D printing experience around. - Cura supports the 3MF, OBJ and STL file formats and is available on - Windows, Mac and Linux. -

-
    -
  • Novices can start printing right away
  • -
  • Experts are able to customize 300 settings to achieve the best results
  • -
  • Optimized profiles for Ultimaker materials
  • -
  • Supported by a global network of Ultimaker certified service partners
  • -
  • Print multiple objects at once with different settings for each object
  • -
  • Cura supports STL, 3MF and OBJ file formats
  • -
  • Open source and completely free
  • -
-
- - - https://raw.githubusercontent.com/Ultimaker/Cura/main/cura-logo.PNG - - - https://ultimaker.com/software/ultimaker-cura?utm_source=cura&utm_medium=software&utm_campaign=cura-update-linux - Cura - -
diff --git a/com.ultimaker.cura.desktop.in b/com.ultimaker.cura.desktop.in deleted file mode 100644 index 1e17e30f4e..0000000000 --- a/com.ultimaker.cura.desktop.in +++ /dev/null @@ -1,19 +0,0 @@ -[Desktop Entry] -Name=Ultimaker Cura -Name[de]=Ultimaker Cura -Name[nl]=Ultimaker Cura -GenericName=3D Printing Software -GenericName[de]=3D-Druck-Software -GenericName[nl]=3D-printsoftware -Comment=Cura converts 3D models into paths for a 3D printer. It prepares your print for maximum accuracy, minimum printing time and good reliability with many extra features that make your print come out great. -Comment[de]=Cura wandelt 3D-Modelle in Pfade für einen 3D-Drucker um. Es bereitet Ihren Druck für maximale Genauigkeit, minimale Druckzeit und guter Zuverlässigkeit mit vielen zusätzlichen Funktionen vor, damit Ihr Druck großartig wird. -Comment[nl]=Cura converteert 3D-modellen naar paden voor een 3D printer. Het bereidt je print voor om zeer precies, snel en betrouwbaar te kunnen printen, met veel extra functionaliteit om je print er goed uit te laten komen. -Exec=@CMAKE_INSTALL_FULL_BINDIR@/cura %F -TryExec=@CMAKE_INSTALL_FULL_BINDIR@/cura -Icon=cura-icon -Terminal=false -Type=Application -MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;image/bmp;image/gif;image/jpeg;image/png;text/x-gcode;application/x-amf;application/x-ply;application/x-ctm;model/vnd.collada+xml;model/gltf-binary;model/gltf+json;model/vnd.collada+xml+zip; -Categories=Graphics; -Keywords=3D;Printing;Slicer; -StartupWMClass=cura.real