From ee61854981b88de9c843ae6cb6d7e08f1be45869 Mon Sep 17 00:00:00 2001 From: GregValiant <64202104+GregValiant@users.noreply.github.com> Date: Wed, 23 Oct 2024 06:57:10 -0400 Subject: [PATCH 01/21] Re-write of Search and Replace Added some options: - Replace the 'First Instance Only' of the Search term. - Limit the Search to a layer range. - 'Ignore StartUp G-code' and 'Ignore Ending G-code' --- .../scripts/SearchAndReplace.py | 176 ++++++++++++++++-- 1 file changed, 157 insertions(+), 19 deletions(-) diff --git a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py index dabc6b725a..264531de59 100644 --- a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py +++ b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py @@ -1,16 +1,16 @@ # Copyright (c) 2017 Ghostkeeper # The PostProcessingPlugin is released under the terms of the LGPLv3 or higher. +# Altered by GregValiant (Greg Foresi) February, 2023. +# Added an option to replace the 'First Instance Only' +# Added option to limit the Search to a layer range. +# Added 'Ignore StartUp G-code' and 'Ignore Ending G-code' options -import re # To perform the search and replace. - +import re from ..Script import Script - +from UM.Application import Application class SearchAndReplace(Script): - """Performs a search-and-replace on all g-code. - - Due to technical limitations, the search can't cross the border between - layers. + """Performs a search-and-replace on the g-code. """ def getSettingDataString(self): @@ -23,37 +23,175 @@ class SearchAndReplace(Script): { "search": { - "label": "Search", - "description": "All occurrences of this text will get replaced by the replacement text.", + "label": "Search for:", + "description": "All occurrences of this text (within the search range) will be replaced by the 'Replace with' text. The search string is CASE SPECIFIC so 'LAYER' is not the same as 'layer'.", "type": "str", "default_value": "" }, "replace": { - "label": "Replace", - "description": "The search text will get replaced by this text.", + "label": "Replace with:", + "description": "The 'Search For' text will get replaced by this text. For Multi-Line insertions use the newline character 'backslash plus n' as the delimiter. Also for multi-line insertions the last character must be 'backslash plus n'", "type": "str", "default_value": "" }, "is_regex": { "label": "Use Regular Expressions", - "description": "When enabled, the search text will be interpreted as a regular expression.", + "description": "When disabled the search string is treated as a simple text string. When enabled, the search text will be re-compiled as a 'regular' python expression.", "type": "bool", "default_value": false + }, + "enable_layer_search": + { + "label": "Enable search within a Layer Range:", + "description": "When enabled, You can choose a Start and End layer for the search. When 'Layer Search' is enabled the StartUp and Ending g-codes are always ignored.", + "type": "bool", + "default_value": false, + "enabled": true + }, + "search_start": + { + "label": "Start S&R at Layer:", + "description": "Use the Cura Preview layer numbering. The Start Layer will be included. Enter '1' to start with gcode ';LAYER:0'. Enter ''-6'' to start with the first layer of a raft.", + "type": "int", + "default_value": 1, + "minimum_value": -6, + "enabled": "enable_layer_search" + }, + "search_end": + { + "label": "Stop S&R at end of Layer:", + "description": "Use the Cura Preview layer numbering. Enter '-1' to search and replace to the end of the file. Enter any other layer number and the replacements will conclude at the end of that layer. If the End Layer is equal to the Start Layer then only that single layer is searched.", + "type": "int", + "default_value": -1, + "minimum_value": -1, + "enabled": "enable_layer_search" + }, + "first_instance_only": + { + "label": "Replace first instance only:", + "description": "When enabled only the first instance is replaced.", + "type": "bool", + "default_value": false, + "enabled": true + }, + "ignore_start": + { + "label": "Ignore StartUp G-code:", + "description": "When enabled the StartUp G-code is unaffected. The StartUp G-code is everything from ';generated with Cura...' to ';LAYER_COUNT:' inclusive.", + "type": "bool", + "default_value": true, + "enabled": "not enable_layer_search" + }, + "ignore_end": + { + "label": "Ignore Ending G-code:", + "description": "When enabled the Ending G-code is unaffected.", + "type": "bool", + "default_value": true, + "enabled": "not enable_layer_search" } } }""" def execute(self, data): + curaApp = Application.getInstance().getGlobalContainerStack() + extruder = curaApp.extruderList + retract_enabled = bool(extruder[0].getProperty("retraction_enable", "value")) + # If retractions are enabled then the CuraEngine inserts a single data item for the retraction at the end of the last layer + # 'top_layer' accounts for that + if retract_enabled: + top_layer = 2 + else: + top_layer = 1 search_string = self.getSettingValueByKey("search") - if not self.getSettingValueByKey("is_regex"): - search_string = re.escape(search_string) #Need to search for the actual string, not as a regex. - search_regex = re.compile(search_string) - replace_string = self.getSettingValueByKey("replace") + is_regex = self.getSettingValueByKey("is_regex") + enable_layer_search = self.getSettingValueByKey("enable_layer_search") + start_layer = self.getSettingValueByKey("search_start") + end_layer = self.getSettingValueByKey("search_end") + ignore_start = self.getSettingValueByKey("ignore_start") + ignore_end = self.getSettingValueByKey("ignore_end") + if enable_layer_search: + ignore_start = True + ignore_end = True + first_instance_only = bool(self.getSettingValueByKey("first_instance_only")) - for layer_number, layer in enumerate(data): - data[layer_number] = re.sub(search_regex, replace_string, layer) #Replace all. + #Find the raft and layer:0 indexes-------------------------------------------------------------------------- + raft_start_index = 0 + layer_0_index = 0 + start_index = 1 + end_index = len(data) + try: + for l_num in range(2,12,1): + layer = data[l_num] + if ";LAYER:-" in layer and raft_start_index == 0: + raft_start_index = l_num + if ";LAYER:0" in layer: + layer_0_index = l_num + break + if raft_start_index == 0: + raft_start_index = layer_0_index + raft_layers = 0 + elif raft_start_index < layer_0_index: + raft_layers = layer_0_index - raft_start_index + else: + raft_layers = 0 + except: + pass + #Determine the actual start and end indexes of the data---------------------------------------------------- + try: + if not enable_layer_search: + if ignore_start: + start_index = 2 + else: + start_index = 1 + if ignore_end: + end_index = len(data) - top_layer + else: + end_index = len(data) + elif enable_layer_search: + if start_layer < 1 and start_layer != -6: + start_index = layer_0_index - raft_layers + elif start_layer == -6: + start_index = 2 + else: + start_index = raft_start_index + start_layer - 1 + if end_layer == -1: + end_index = len(data) - top_layer + else: + end_index = raft_start_index + int(end_layer) + if end_index > len(data) - 1: end_index = len(data) - 1 #For possible user input error + if int(end_index) < int(start_index): end_index = start_index #For possible user input error + except: + start_index = 2 + end_index = len(data) - top_layer - return data \ No newline at end of file + # If "first_instance_only" is enabled: + replaceone = False + if first_instance_only: + if not is_regex: + search_string = re.escape(search_string) + search_regex = re.compile(search_string) + for num in range(start_index, end_index, 1): + layer = data[num] + if re.search(search_regex, layer) and replaceone == False: + data[num] = re.sub(search_regex, replace_string, data[num], 1) + replaceone = True + break + if replaceone: break + return data + + # For all the replacements + if not is_regex: + search_string = re.escape(search_string) + search_regex = re.compile(search_string) + if end_index > start_index: + for index in range(start_index, end_index, 1): + layer = data[index] + data[index] = re.sub(search_regex, replace_string, layer) + elif end_index == start_index: + layer = data[start_index] + data[start_index] = re.sub(search_regex, replace_string, layer) + return data From 349c5284a9e79a082e48ac7f5e22bead4b10aaa4 Mon Sep 17 00:00:00 2001 From: GregValiant <64202104+GregValiant@users.noreply.github.com> Date: Wed, 13 Nov 2024 09:14:47 -0500 Subject: [PATCH 02/21] Update SearchAndReplace.py Update a description Update SearchAndReplace.py Fixed the "descriptions". Cura didn't like the dashes or backslashes. --- .../scripts/SearchAndReplace.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py index 264531de59..f3261633d0 100644 --- a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py +++ b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py @@ -1,8 +1,7 @@ # Copyright (c) 2017 Ghostkeeper # The PostProcessingPlugin is released under the terms of the LGPLv3 or higher. # Altered by GregValiant (Greg Foresi) February, 2023. -# Added an option to replace the 'First Instance Only' -# Added option to limit the Search to a layer range. +# Added option for a layer search with a Start Layer and an End layer. # Added 'Ignore StartUp G-code' and 'Ignore Ending G-code' options import re @@ -31,21 +30,21 @@ class SearchAndReplace(Script): "replace": { "label": "Replace with:", - "description": "The 'Search For' text will get replaced by this text. For Multi-Line insertions use the newline character 'backslash plus n' as the delimiter. Also for multi-line insertions the last character must be 'backslash plus n'", + "description": "The 'Search For' text will get replaced by this text. For MultiLine insertions use the newline character 'backslash plus n' as the delimiter. If your Search term ends with a 'newline' remember to add 'newline' to the end of this Replace term.", "type": "str", "default_value": "" }, "is_regex": { "label": "Use Regular Expressions", - "description": "When disabled the search string is treated as a simple text string. When enabled, the search text will be re-compiled as a 'regular' python expression.", + "description": "When disabled the search string is treated as a simple text string. When enabled, the search text will be recompiled as a 'regular' python expression.", "type": "bool", "default_value": false }, "enable_layer_search": { "label": "Enable search within a Layer Range:", - "description": "When enabled, You can choose a Start and End layer for the search. When 'Layer Search' is enabled the StartUp and Ending g-codes are always ignored.", + "description": "When enabled, You can choose a Start and End layer for the search. When 'Layer Search' is enabled the StartUp and Ending gcodes are always ignored.", "type": "bool", "default_value": false, "enabled": true @@ -79,7 +78,7 @@ class SearchAndReplace(Script): "ignore_start": { "label": "Ignore StartUp G-code:", - "description": "When enabled the StartUp G-code is unaffected. The StartUp G-code is everything from ';generated with Cura...' to ';LAYER_COUNT:' inclusive.", + "description": "When enabled the StartUp Gcode is unaffected. The StartUp Gcode is everything from ';generated with Cura...' to ';LAYER_COUNT:' inclusive.", "type": "bool", "default_value": true, "enabled": "not enable_layer_search" @@ -87,7 +86,7 @@ class SearchAndReplace(Script): "ignore_end": { "label": "Ignore Ending G-code:", - "description": "When enabled the Ending G-code is unaffected.", + "description": "When enabled the Ending Gcode is unaffected.", "type": "bool", "default_value": true, "enabled": "not enable_layer_search" From be509b66962ecc69374a766011007bec277754d0 Mon Sep 17 00:00:00 2001 From: GregValiant <64202104+GregValiant@users.noreply.github.com> Date: Tue, 7 Jan 2025 12:20:21 -0500 Subject: [PATCH 03/21] Update SearchAndReplace.py Update SearchAndReplace.py Changed comments. Revised code below line 170. Changed 'curaApp' to 'cura_app' --- .../scripts/SearchAndReplace.py | 49 +++++++++---------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py index f3261633d0..5f440a67e9 100644 --- a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py +++ b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py @@ -1,6 +1,7 @@ # Copyright (c) 2017 Ghostkeeper # The PostProcessingPlugin is released under the terms of the LGPLv3 or higher. # Altered by GregValiant (Greg Foresi) February, 2023. +# Added option for "first instance only" # Added option for a layer search with a Start Layer and an End layer. # Added 'Ignore StartUp G-code' and 'Ignore Ending G-code' options @@ -23,7 +24,7 @@ class SearchAndReplace(Script): "search": { "label": "Search for:", - "description": "All occurrences of this text (within the search range) will be replaced by the 'Replace with' text. The search string is CASE SPECIFIC so 'LAYER' is not the same as 'layer'.", + "description": "CASE SPECIFIC. 'LAYER' is not the same as 'Layer'. All occurrences of this text (within the search range) will be replaced by the 'Replace with' string.", "type": "str", "default_value": "" }, @@ -95,8 +96,8 @@ class SearchAndReplace(Script): }""" def execute(self, data): - curaApp = Application.getInstance().getGlobalContainerStack() - extruder = curaApp.extruderList + cura_app = Application.getInstance().getGlobalContainerStack() + extruder = cura_app.extruderList retract_enabled = bool(extruder[0].getProperty("retraction_enable", "value")) # If retractions are enabled then the CuraEngine inserts a single data item for the retraction at the end of the last layer # 'top_layer' accounts for that @@ -117,7 +118,7 @@ class SearchAndReplace(Script): ignore_end = True first_instance_only = bool(self.getSettingValueByKey("first_instance_only")) - #Find the raft and layer:0 indexes-------------------------------------------------------------------------- + #Find the raft and layer:0 indexes raft_start_index = 0 layer_0_index = 0 start_index = 1 @@ -139,7 +140,7 @@ class SearchAndReplace(Script): raft_layers = 0 except: pass - #Determine the actual start and end indexes of the data---------------------------------------------------- + #Determine the actual start and end indexes of the data try: if not enable_layer_search: if ignore_start: @@ -167,30 +168,24 @@ class SearchAndReplace(Script): start_index = 2 end_index = len(data) - top_layer - # If "first_instance_only" is enabled: + # Make replacements replaceone = False - if first_instance_only: - if not is_regex: - search_string = re.escape(search_string) - search_regex = re.compile(search_string) - for num in range(start_index, end_index, 1): - layer = data[num] + if not is_regex: + search_string = re.escape(search_string) + search_regex = re.compile(search_string) + for num in range(start_index, end_index, 1): + layer = data[num] + # First_instance only + if first_instance_only: if re.search(search_regex, layer) and replaceone == False: data[num] = re.sub(search_regex, replace_string, data[num], 1) replaceone = True break - if replaceone: break - return data - - # For all the replacements - if not is_regex: - search_string = re.escape(search_string) - search_regex = re.compile(search_string) - if end_index > start_index: - for index in range(start_index, end_index, 1): - layer = data[index] - data[index] = re.sub(search_regex, replace_string, layer) - elif end_index == start_index: - layer = data[start_index] - data[start_index] = re.sub(search_regex, replace_string, layer) - return data + # All + else: + if end_index > start_index: + data[num] = re.sub(search_regex, replace_string, layer) + elif end_index == start_index: + layer = data[start_index] + data[start_index] = re.sub(search_regex, replace_string, layer) + return data \ No newline at end of file From 5678c64f1899375e2d9409dc01778404f586bcb9 Mon Sep 17 00:00:00 2001 From: GregValiant <64202104+GregValiant@users.noreply.github.com> Date: Sun, 12 Jan 2025 10:04:39 -0500 Subject: [PATCH 04/21] Update SearchAndReplace.py Change variable name from cura_app to global_stack. --- plugins/PostProcessingPlugin/scripts/SearchAndReplace.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py index 5f440a67e9..4d81b9f98d 100644 --- a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py +++ b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py @@ -96,8 +96,8 @@ class SearchAndReplace(Script): }""" def execute(self, data): - cura_app = Application.getInstance().getGlobalContainerStack() - extruder = cura_app.extruderList + global_stack = Application.getInstance().getGlobalContainerStack() + extruder = global_stack.extruderList retract_enabled = bool(extruder[0].getProperty("retraction_enable", "value")) # If retractions are enabled then the CuraEngine inserts a single data item for the retraction at the end of the last layer # 'top_layer' accounts for that @@ -140,6 +140,7 @@ class SearchAndReplace(Script): raft_layers = 0 except: pass + #Determine the actual start and end indexes of the data try: if not enable_layer_search: From a6c9531932c28dfe62c48f4ba32ad92586e73cb0 Mon Sep 17 00:00:00 2001 From: Alan Bjorklund Date: Tue, 21 Jan 2025 16:22:27 -0500 Subject: [PATCH 05/21] PC-ABS & PC-ABS-FR 175 Updates Add PC-ABS & PC-ABS-FR intent and quality files for Method X & Method XL. These materials pair with 1C, 1XA and Labs extruders. Exclude PC-ABS and PC-ABS-FR from sketch printers and Method. PP-550 --- .../definitions/ultimaker_method.def.json | 2 + .../definitions/ultimaker_sketch.def.json | 2 + .../ultimaker_sketch_sprint.def.json | 2 + ...hodx_1c_um-pc-abs-175_0.2mm_solid.inst.cfg | 22 +++++++ ...x_1c_um-pc-abs-fr-175_0.2mm_solid.inst.cfg | 22 +++++++ ...odx_1xa_um-pc-abs-175_0.2mm_solid.inst.cfg | 22 +++++++ ..._1xa_um-pc-abs-fr-175_0.2mm_solid.inst.cfg | 22 +++++++ ...dx_labs_um-pc-abs-175_0.2mm_solid.inst.cfg | 22 +++++++ ...labs_um-pc-abs-fr-175_0.2mm_solid.inst.cfg | 22 +++++++ ...odxl_1c_um-pc-abs-175_0.2mm_solid.inst.cfg | 22 +++++++ ...l_1c_um-pc-abs-fr-175_0.2mm_solid.inst.cfg | 22 +++++++ ...dxl_1xa_um-pc-abs-175_0.2mm_solid.inst.cfg | 22 +++++++ ..._1xa_um-pc-abs-fr-175_0.2mm_solid.inst.cfg | 22 +++++++ ...xl_labs_um-pc-abs-175_0.2mm_solid.inst.cfg | 22 +++++++ ...labs_um-pc-abs-fr-175_0.2mm_solid.inst.cfg | 22 +++++++ ...um_methodx_1c_um-pc-abs-175_0.2mm.inst.cfg | 66 +++++++++++++++++++ ...methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg | 66 +++++++++++++++++++ ...m_methodx_1xa_um-pc-abs-175_0.2mm.inst.cfg | 66 +++++++++++++++++++ ...ethodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg | 66 +++++++++++++++++++ ..._methodx_labs_um-pc-abs-175_0.2mm.inst.cfg | 66 +++++++++++++++++++ ...thodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg | 66 +++++++++++++++++++ ...m_methodxl_1c_um-pc-abs-175_0.2mm.inst.cfg | 65 ++++++++++++++++++ ...ethodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg | 65 ++++++++++++++++++ ..._methodxl_1xa_um-pc-abs-175_0.2mm.inst.cfg | 65 ++++++++++++++++++ ...thodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg | 65 ++++++++++++++++++ ...methodxl_labs_um-pc-abs-175_0.2mm.inst.cfg | 65 ++++++++++++++++++ ...hodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg | 65 ++++++++++++++++++ 27 files changed, 1056 insertions(+) create mode 100644 resources/intent/ultimaker_methodx/um_methodx_1c_um-pc-abs-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodx/um_methodx_1xa_um-pc-abs-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodx/um_methodx_labs_um-pc-abs-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-175_0.2mm_solid.inst.cfg create mode 100644 resources/intent/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm_solid.inst.cfg create mode 100644 resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-175_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg diff --git a/resources/definitions/ultimaker_method.def.json b/resources/definitions/ultimaker_method.def.json index 5e78c3f630..d2813ea8a3 100644 --- a/resources/definitions/ultimaker_method.def.json +++ b/resources/definitions/ultimaker_method.def.json @@ -59,6 +59,8 @@ "zyyx_pro_", "octofiber_", "fiberlogy_", + "ultimaker_pc-abs", + "ultimaker_pc-abs-fr", "ultimaker_metallic_pla_175" ], "has_machine_materials": true, diff --git a/resources/definitions/ultimaker_sketch.def.json b/resources/definitions/ultimaker_sketch.def.json index 2f96b52397..9cbe75910a 100644 --- a/resources/definitions/ultimaker_sketch.def.json +++ b/resources/definitions/ultimaker_sketch.def.json @@ -60,6 +60,8 @@ "ultimaker_sr30", "ultimaker_petg", "ultimaker_pva", + "ultimaker_pc-abs", + "ultimaker_pc-abs-fr", "ultimaker_metallic_pla" ], "has_machine_quality": true, diff --git a/resources/definitions/ultimaker_sketch_sprint.def.json b/resources/definitions/ultimaker_sketch_sprint.def.json index cde655e70f..bee97ae0d8 100644 --- a/resources/definitions/ultimaker_sketch_sprint.def.json +++ b/resources/definitions/ultimaker_sketch_sprint.def.json @@ -54,6 +54,8 @@ "ultimaker_rapidrinse", "ultimaker_sr30", "ultimaker_petg", + "ultimaker_pc-abs", + "ultimaker_pc-abs-fr", "ultimaker_metallic_pla" ], "has_machine_quality": true, diff --git a/resources/intent/ultimaker_methodx/um_methodx_1c_um-pc-abs-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodx/um_methodx_1c_um-pc-abs-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..5dd610ba77 --- /dev/null +++ b/resources/intent/ultimaker_methodx/um_methodx_1c_um-pc-abs-175_0.2mm_solid.inst.cfg @@ -0,0 +1,22 @@ +[general] +definition = ultimaker_methodx +name = Solid +version = 4 + +[metadata] +intent_category = solid +material = ultimaker_pc-abs_175 +quality_type = draft +setting_version = 24 +type = intent +variant = 1C + +[values] +bottom_thickness = =top_bottom_thickness +infill_angles = [45,135] +infill_material_flow = 97 +infill_pattern = zigzag +infill_sparse_density = 99 +top_bottom_thickness = =layer_height * 2 +top_thickness = =top_bottom_thickness + diff --git a/resources/intent/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..57e1072c16 --- /dev/null +++ b/resources/intent/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm_solid.inst.cfg @@ -0,0 +1,22 @@ +[general] +definition = ultimaker_methodx +name = Solid +version = 4 + +[metadata] +intent_category = solid +material = ultimaker_pc-abs-fr_175 +quality_type = draft +setting_version = 24 +type = intent +variant = 1C + +[values] +bottom_thickness = =top_bottom_thickness +infill_angles = [45,135] +infill_material_flow = 97 +infill_pattern = zigzag +infill_sparse_density = 99 +top_bottom_thickness = =layer_height * 2 +top_thickness = =top_bottom_thickness + diff --git a/resources/intent/ultimaker_methodx/um_methodx_1xa_um-pc-abs-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodx/um_methodx_1xa_um-pc-abs-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..2e11986e66 --- /dev/null +++ b/resources/intent/ultimaker_methodx/um_methodx_1xa_um-pc-abs-175_0.2mm_solid.inst.cfg @@ -0,0 +1,22 @@ +[general] +definition = ultimaker_methodx +name = Solid +version = 4 + +[metadata] +intent_category = solid +material = ultimaker_pc-abs_175 +quality_type = draft +setting_version = 24 +type = intent +variant = 1XA + +[values] +bottom_thickness = =top_bottom_thickness +infill_angles = [45,135] +infill_material_flow = 97 +infill_pattern = zigzag +infill_sparse_density = 99 +top_bottom_thickness = =layer_height * 2 +top_thickness = =top_bottom_thickness + diff --git a/resources/intent/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..fac9316dcf --- /dev/null +++ b/resources/intent/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm_solid.inst.cfg @@ -0,0 +1,22 @@ +[general] +definition = ultimaker_methodx +name = Solid +version = 4 + +[metadata] +intent_category = solid +material = ultimaker_pc-abs-fr_175 +quality_type = draft +setting_version = 24 +type = intent +variant = 1XA + +[values] +bottom_thickness = =top_bottom_thickness +infill_angles = [45,135] +infill_material_flow = 97 +infill_pattern = zigzag +infill_sparse_density = 99 +top_bottom_thickness = =layer_height * 2 +top_thickness = =top_bottom_thickness + diff --git a/resources/intent/ultimaker_methodx/um_methodx_labs_um-pc-abs-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodx/um_methodx_labs_um-pc-abs-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..656156ce4d --- /dev/null +++ b/resources/intent/ultimaker_methodx/um_methodx_labs_um-pc-abs-175_0.2mm_solid.inst.cfg @@ -0,0 +1,22 @@ +[general] +definition = ultimaker_methodx +name = Solid +version = 4 + +[metadata] +intent_category = solid +material = ultimaker_pc-abs_175 +quality_type = draft +setting_version = 24 +type = intent +variant = LABS + +[values] +bottom_thickness = =top_bottom_thickness +infill_angles = [45,135] +infill_material_flow = 97 +infill_pattern = zigzag +infill_sparse_density = 99 +top_bottom_thickness = =layer_height * 2 +top_thickness = =top_bottom_thickness + diff --git a/resources/intent/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..39aba071c9 --- /dev/null +++ b/resources/intent/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm_solid.inst.cfg @@ -0,0 +1,22 @@ +[general] +definition = ultimaker_methodx +name = Solid +version = 4 + +[metadata] +intent_category = solid +material = ultimaker_pc-abs-fr_175 +quality_type = draft +setting_version = 24 +type = intent +variant = LABS + +[values] +bottom_thickness = =top_bottom_thickness +infill_angles = [45,135] +infill_material_flow = 97 +infill_pattern = zigzag +infill_sparse_density = 99 +top_bottom_thickness = =layer_height * 2 +top_thickness = =top_bottom_thickness + diff --git a/resources/intent/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..b1a70679de --- /dev/null +++ b/resources/intent/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-175_0.2mm_solid.inst.cfg @@ -0,0 +1,22 @@ +[general] +definition = ultimaker_methodxl +name = Solid +version = 4 + +[metadata] +intent_category = solid +material = ultimaker_pc-abs_175 +quality_type = draft +setting_version = 24 +type = intent +variant = 1C + +[values] +bottom_thickness = =top_bottom_thickness +infill_angles = [45,135] +infill_material_flow = 97 +infill_pattern = zigzag +infill_sparse_density = 99 +top_bottom_thickness = =layer_height * 2 +top_thickness = =top_bottom_thickness + diff --git a/resources/intent/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..ac0f34ef58 --- /dev/null +++ b/resources/intent/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm_solid.inst.cfg @@ -0,0 +1,22 @@ +[general] +definition = ultimaker_methodxl +name = Solid +version = 4 + +[metadata] +intent_category = solid +material = ultimaker_pc-abs-fr_175 +quality_type = draft +setting_version = 24 +type = intent +variant = 1C + +[values] +bottom_thickness = =top_bottom_thickness +infill_angles = [45,135] +infill_material_flow = 97 +infill_pattern = zigzag +infill_sparse_density = 99 +top_bottom_thickness = =layer_height * 2 +top_thickness = =top_bottom_thickness + diff --git a/resources/intent/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..64199ae86f --- /dev/null +++ b/resources/intent/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-175_0.2mm_solid.inst.cfg @@ -0,0 +1,22 @@ +[general] +definition = ultimaker_methodxl +name = Solid +version = 4 + +[metadata] +intent_category = solid +material = ultimaker_pc-abs_175 +quality_type = draft +setting_version = 24 +type = intent +variant = 1XA + +[values] +bottom_thickness = =top_bottom_thickness +infill_angles = [45,135] +infill_material_flow = 97 +infill_pattern = zigzag +infill_sparse_density = 99 +top_bottom_thickness = =layer_height * 2 +top_thickness = =top_bottom_thickness + diff --git a/resources/intent/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..59f7930e89 --- /dev/null +++ b/resources/intent/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm_solid.inst.cfg @@ -0,0 +1,22 @@ +[general] +definition = ultimaker_methodxl +name = Solid +version = 4 + +[metadata] +intent_category = solid +material = ultimaker_pc-abs-fr_175 +quality_type = draft +setting_version = 24 +type = intent +variant = 1XA + +[values] +bottom_thickness = =top_bottom_thickness +infill_angles = [45,135] +infill_material_flow = 97 +infill_pattern = zigzag +infill_sparse_density = 99 +top_bottom_thickness = =layer_height * 2 +top_thickness = =top_bottom_thickness + diff --git a/resources/intent/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..2c8d67e0f0 --- /dev/null +++ b/resources/intent/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-175_0.2mm_solid.inst.cfg @@ -0,0 +1,22 @@ +[general] +definition = ultimaker_methodxl +name = Solid +version = 4 + +[metadata] +intent_category = solid +material = ultimaker_pc-abs_175 +quality_type = draft +setting_version = 24 +type = intent +variant = LABS + +[values] +bottom_thickness = =top_bottom_thickness +infill_angles = [45,135] +infill_material_flow = 97 +infill_pattern = zigzag +infill_sparse_density = 99 +top_bottom_thickness = =layer_height * 2 +top_thickness = =top_bottom_thickness + diff --git a/resources/intent/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm_solid.inst.cfg b/resources/intent/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm_solid.inst.cfg new file mode 100644 index 0000000000..164f7c7575 --- /dev/null +++ b/resources/intent/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm_solid.inst.cfg @@ -0,0 +1,22 @@ +[general] +definition = ultimaker_methodxl +name = Solid +version = 4 + +[metadata] +intent_category = solid +material = ultimaker_pc-abs-fr_175 +quality_type = draft +setting_version = 24 +type = intent +variant = LABS + +[values] +bottom_thickness = =top_bottom_thickness +infill_angles = [45,135] +infill_material_flow = 97 +infill_pattern = zigzag +infill_sparse_density = 99 +top_bottom_thickness = =layer_height * 2 +top_thickness = =top_bottom_thickness + diff --git a/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..bc2275eea0 --- /dev/null +++ b/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-175_0.2mm.inst.cfg @@ -0,0 +1,66 @@ +[general] +definition = ultimaker_methodx +name = Fast +version = 4 + +[metadata] +material = ultimaker_pc-abs_175 +quality_type = draft +setting_version = 24 +type = quality +variant = 1C +weight = -2 + +[values] +cool_fan_enabled = =extruder_nr == support_extruder_nr +cool_fan_speed = 75 +cool_fan_speed_0 = 0 +cool_fan_speed_max = 100 +cool_min_layer_time = 10 +cool_min_layer_time_fan_speed_max = 8 +cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) +cool_min_temperature = 250 +infill_sparse_density = 15 +material_final_print_temperature = =material_print_temperature - 5 +material_initial_print_temperature = =material_print_temperature - 5 +raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_thickness = =0.6 if extruder_nr == support_extruder_nr else 0.8 +raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 +skin_overlap = 10 +speed_layer_0 = =speed_print * 7/24 +speed_prime_tower = =speed_print * 1/4 +speed_print = 120.0 +speed_roofing = =speed_print * 13/24 +speed_support = =speed_print * 5/6 +speed_support_bottom = 25 +speed_support_interface = =speed_print * 15/24 +speed_topbottom = =speed_print * 11/24 +speed_wall = =speed_print * 5/24 +speed_wall_0 = =speed_print * 1/6 +support_angle = 50 +support_bottom_angles = [135] +support_bottom_density = 15 +support_bottom_distance = 0.1 +support_bottom_enable = True +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] +support_infill_rate = 15.0 +support_interface_density = 85 +support_interface_enable = True +support_interface_pattern = zigzag +support_line_width = 0.3 +support_material_flow = 95 +support_pattern = zigzag +support_roof_density = 85 +support_roof_wall_count = 1 +support_supported_skin_fan_speed = 60.0 +support_top_distance = =support_z_distance +support_xy_distance = 0.35 +support_xy_distance_overhang = 0.25 +support_xy_overrides_z = xy_overrides_z +support_z_distance = 0.203 +top_skin_expand_distance = 2.4 +wall_overhang_angle = 30 +wall_overhang_speed_factor = 40 + diff --git a/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..93e06d031f --- /dev/null +++ b/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -0,0 +1,66 @@ +[general] +definition = ultimaker_methodx +name = Fast +version = 4 + +[metadata] +material = ultimaker_pc-abs-fr_175 +quality_type = draft +setting_version = 24 +type = quality +variant = 1C +weight = -2 + +[values] +cool_fan_enabled = =extruder_nr == support_extruder_nr +cool_fan_speed = 75 +cool_fan_speed_0 = 0 +cool_fan_speed_max = 100 +cool_min_layer_time = 10 +cool_min_layer_time_fan_speed_max = 8 +cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) +cool_min_temperature = 250 +infill_sparse_density = 15 +material_final_print_temperature = =material_print_temperature - 5 +material_initial_print_temperature = =material_print_temperature - 5 +raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_thickness = =0.6 if extruder_nr == support_extruder_nr else 0.8 +raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 +skin_overlap = 10 +speed_layer_0 = =speed_print * 7/24 +speed_prime_tower = =speed_print * 1/4 +speed_print = 120.0 +speed_roofing = =speed_print * 13/24 +speed_support = =speed_print * 5/6 +speed_support_bottom = 25 +speed_support_interface = =speed_print * 15/24 +speed_topbottom = =speed_print * 11/24 +speed_wall = =speed_print * 5/24 +speed_wall_0 = =speed_print * 1/6 +support_angle = 50 +support_bottom_angles = [135] +support_bottom_density = 15 +support_bottom_distance = 0.1 +support_bottom_enable = True +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] +support_infill_rate = 15.0 +support_interface_density = 85 +support_interface_enable = True +support_interface_pattern = zigzag +support_line_width = 0.3 +support_material_flow = 95 +support_pattern = zigzag +support_roof_density = 85 +support_roof_wall_count = 1 +support_supported_skin_fan_speed = 60.0 +support_top_distance = =support_z_distance +support_xy_distance = 0.35 +support_xy_distance_overhang = 0.25 +support_xy_overrides_z = xy_overrides_z +support_z_distance = 0.203 +top_skin_expand_distance = 2.4 +wall_overhang_angle = 30 +wall_overhang_speed_factor = 40 + diff --git a/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..4ceab63942 --- /dev/null +++ b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-175_0.2mm.inst.cfg @@ -0,0 +1,66 @@ +[general] +definition = ultimaker_methodx +name = Fast +version = 4 + +[metadata] +material = ultimaker_pc-abs_175 +quality_type = draft +setting_version = 24 +type = quality +variant = 1XA +weight = -2 + +[values] +cool_fan_enabled = =extruder_nr == support_extruder_nr +cool_fan_speed = 75 +cool_fan_speed_0 = 0 +cool_fan_speed_max = 100 +cool_min_layer_time = 10 +cool_min_layer_time_fan_speed_max = 8 +cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) +cool_min_temperature = 250 +infill_sparse_density = 15 +material_final_print_temperature = =material_print_temperature - 5 +material_initial_print_temperature = =material_print_temperature - 5 +raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_thickness = =0.6 if extruder_nr == support_extruder_nr else 0.8 +raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 +skin_overlap = 10 +speed_layer_0 = =speed_print * 7/24 +speed_prime_tower = =speed_print * 1/4 +speed_print = 120.0 +speed_roofing = =speed_print * 13/24 +speed_support = =speed_print * 5/6 +speed_support_bottom = 25 +speed_support_interface = =speed_print * 15/24 +speed_topbottom = =speed_print * 11/24 +speed_wall = =speed_print * 5/24 +speed_wall_0 = =speed_print * 1/6 +support_angle = 50 +support_bottom_angles = [135] +support_bottom_density = 15 +support_bottom_distance = 0.1 +support_bottom_enable = True +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] +support_infill_rate = 15.0 +support_interface_density = 85 +support_interface_enable = True +support_interface_pattern = zigzag +support_line_width = 0.3 +support_material_flow = 95 +support_pattern = zigzag +support_roof_density = 85 +support_roof_wall_count = 1 +support_supported_skin_fan_speed = 60.0 +support_top_distance = =support_z_distance +support_xy_distance = 0.35 +support_xy_distance_overhang = 0.25 +support_xy_overrides_z = xy_overrides_z +support_z_distance = 0.203 +top_skin_expand_distance = 2.4 +wall_overhang_angle = 30 +wall_overhang_speed_factor = 40 + diff --git a/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..f92b600d51 --- /dev/null +++ b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -0,0 +1,66 @@ +[general] +definition = ultimaker_methodx +name = Fast +version = 4 + +[metadata] +material = ultimaker_pc-abs-fr_175 +quality_type = draft +setting_version = 24 +type = quality +variant = 1XA +weight = -2 + +[values] +cool_fan_enabled = =extruder_nr == support_extruder_nr +cool_fan_speed = 75 +cool_fan_speed_0 = 0 +cool_fan_speed_max = 100 +cool_min_layer_time = 10 +cool_min_layer_time_fan_speed_max = 8 +cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) +cool_min_temperature = 250 +infill_sparse_density = 15 +material_final_print_temperature = =material_print_temperature - 5 +material_initial_print_temperature = =material_print_temperature - 5 +raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_thickness = =0.6 if extruder_nr == support_extruder_nr else 0.8 +raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 +skin_overlap = 10 +speed_layer_0 = =speed_print * 7/24 +speed_prime_tower = =speed_print * 1/4 +speed_print = 120.0 +speed_roofing = =speed_print * 13/24 +speed_support = =speed_print * 5/6 +speed_support_bottom = 25 +speed_support_interface = =speed_print * 15/24 +speed_topbottom = =speed_print * 11/24 +speed_wall = =speed_print * 5/24 +speed_wall_0 = =speed_print * 1/6 +support_angle = 50 +support_bottom_angles = [135] +support_bottom_density = 15 +support_bottom_distance = 0.1 +support_bottom_enable = True +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] +support_infill_rate = 15.0 +support_interface_density = 85 +support_interface_enable = True +support_interface_pattern = zigzag +support_line_width = 0.3 +support_material_flow = 95 +support_pattern = zigzag +support_roof_density = 85 +support_roof_wall_count = 1 +support_supported_skin_fan_speed = 60.0 +support_top_distance = =support_z_distance +support_xy_distance = 0.35 +support_xy_distance_overhang = 0.25 +support_xy_overrides_z = xy_overrides_z +support_z_distance = 0.203 +top_skin_expand_distance = 2.4 +wall_overhang_angle = 30 +wall_overhang_speed_factor = 40 + diff --git a/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..52de6aa0a6 --- /dev/null +++ b/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-175_0.2mm.inst.cfg @@ -0,0 +1,66 @@ +[general] +definition = ultimaker_methodx +name = Fast +version = 4 + +[metadata] +material = ultimaker_pc-abs_175 +quality_type = draft +setting_version = 24 +type = quality +variant = LABS +weight = -2 + +[values] +cool_fan_enabled = =extruder_nr == support_extruder_nr +cool_fan_speed = 75 +cool_fan_speed_0 = 0 +cool_fan_speed_max = 100 +cool_min_layer_time = 10 +cool_min_layer_time_fan_speed_max = 8 +cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) +cool_min_temperature = 250 +infill_sparse_density = 15 +material_final_print_temperature = =material_print_temperature - 5 +material_initial_print_temperature = =material_print_temperature - 5 +raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_thickness = =0.6 if extruder_nr == support_extruder_nr else 0.8 +raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 +skin_overlap = 10 +speed_layer_0 = =speed_print * 7/24 +speed_prime_tower = =speed_print * 1/4 +speed_print = 120.0 +speed_roofing = =speed_print * 13/24 +speed_support = =speed_print * 5/6 +speed_support_bottom = 25 +speed_support_interface = =speed_print * 15/24 +speed_topbottom = =speed_print * 11/24 +speed_wall = =speed_print * 5/24 +speed_wall_0 = =speed_print * 1/6 +support_angle = 50 +support_bottom_angles = [135] +support_bottom_density = 15 +support_bottom_distance = 0.1 +support_bottom_enable = True +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] +support_infill_rate = 15.0 +support_interface_density = 85 +support_interface_enable = True +support_interface_pattern = zigzag +support_line_width = 0.3 +support_material_flow = 95 +support_pattern = zigzag +support_roof_density = 85 +support_roof_wall_count = 1 +support_supported_skin_fan_speed = 60.0 +support_top_distance = =support_z_distance +support_xy_distance = 0.35 +support_xy_distance_overhang = 0.25 +support_xy_overrides_z = xy_overrides_z +support_z_distance = 0.203 +top_skin_expand_distance = 2.4 +wall_overhang_angle = 30 +wall_overhang_speed_factor = 40 + diff --git a/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..797f6a1c69 --- /dev/null +++ b/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -0,0 +1,66 @@ +[general] +definition = ultimaker_methodx +name = Fast +version = 4 + +[metadata] +material = ultimaker_pc-abs-fr_175 +quality_type = draft +setting_version = 24 +type = quality +variant = LABS +weight = -2 + +[values] +cool_fan_enabled = =extruder_nr == support_extruder_nr +cool_fan_speed = 75 +cool_fan_speed_0 = 0 +cool_fan_speed_max = 100 +cool_min_layer_time = 10 +cool_min_layer_time_fan_speed_max = 8 +cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) +cool_min_temperature = 250 +infill_sparse_density = 15 +material_final_print_temperature = =material_print_temperature - 5 +material_initial_print_temperature = =material_print_temperature - 5 +raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_thickness = =0.6 if extruder_nr == support_extruder_nr else 0.8 +raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 +skin_overlap = 10 +speed_layer_0 = =speed_print * 7/24 +speed_prime_tower = =speed_print * 1/4 +speed_print = 120.0 +speed_roofing = =speed_print * 13/24 +speed_support = =speed_print * 5/6 +speed_support_bottom = 25 +speed_support_interface = =speed_print * 15/24 +speed_topbottom = =speed_print * 11/24 +speed_wall = =speed_print * 5/24 +speed_wall_0 = =speed_print * 1/6 +support_angle = 50 +support_bottom_angles = [135] +support_bottom_density = 15 +support_bottom_distance = 0.1 +support_bottom_enable = True +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] +support_infill_rate = 15.0 +support_interface_density = 85 +support_interface_enable = True +support_interface_pattern = zigzag +support_line_width = 0.3 +support_material_flow = 95 +support_pattern = zigzag +support_roof_density = 85 +support_roof_wall_count = 1 +support_supported_skin_fan_speed = 60.0 +support_top_distance = =support_z_distance +support_xy_distance = 0.35 +support_xy_distance_overhang = 0.25 +support_xy_overrides_z = xy_overrides_z +support_z_distance = 0.203 +top_skin_expand_distance = 2.4 +wall_overhang_angle = 30 +wall_overhang_speed_factor = 40 + diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..ca9c1719bc --- /dev/null +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-175_0.2mm.inst.cfg @@ -0,0 +1,65 @@ +[general] +definition = ultimaker_methodxl +name = Fast +version = 4 + +[metadata] +material = ultimaker_pc-abs_175 +quality_type = draft +setting_version = 24 +type = quality +variant = 1C +weight = -2 + +[values] +cool_fan_enabled = =extruder_nr == support_extruder_nr +cool_fan_speed = 75 +cool_fan_speed_0 = 0 +cool_fan_speed_max = 100 +cool_min_layer_time = 10 +cool_min_layer_time_fan_speed_max = 8 +cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) +cool_min_temperature = 250 +infill_sparse_density = 15 +material_final_print_temperature = =material_print_temperature - 5 +material_initial_print_temperature = =material_print_temperature - 5 +raft_airgap = =0.12 if extruder_nr == support_extruder_nr else 0 +raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 +skin_overlap = 10 +speed_layer_0 = =speed_print * 7/24 +speed_prime_tower = =speed_print * 1/4 +speed_print = 120.0 +speed_roofing = =speed_print * 13/24 +speed_support = =speed_print * 5/6 +speed_support_bottom = 25 +speed_support_interface = =speed_print * 15/24 +speed_topbottom = =speed_print * 11/24 +speed_wall = =speed_print * 5/24 +speed_wall_0 = =speed_print * 1/6 +support_angle = 50 +support_bottom_angles = [135] +support_bottom_density = 15 +support_bottom_distance = 0.1 +support_bottom_enable = True +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] +support_infill_rate = 15.0 +support_interface_density = 85 +support_interface_enable = True +support_interface_pattern = zigzag +support_line_width = 0.3 +support_material_flow = 95 +support_pattern = zigzag +support_roof_density = 85 +support_roof_wall_count = 1 +support_supported_skin_fan_speed = 60.0 +support_top_distance = =support_z_distance +support_xy_distance = 0.35 +support_xy_distance_overhang = 0.25 +support_xy_overrides_z = xy_overrides_z +support_z_distance = 0.203 +top_skin_expand_distance = 2.4 +wall_overhang_angle = 30 +wall_overhang_speed_factor = 40 + diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..49e6da212c --- /dev/null +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -0,0 +1,65 @@ +[general] +definition = ultimaker_methodxl +name = Fast +version = 4 + +[metadata] +material = ultimaker_pc-abs-fr_175 +quality_type = draft +setting_version = 24 +type = quality +variant = 1C +weight = -2 + +[values] +cool_fan_enabled = =extruder_nr == support_extruder_nr +cool_fan_speed = 75 +cool_fan_speed_0 = 0 +cool_fan_speed_max = 100 +cool_min_layer_time = 10 +cool_min_layer_time_fan_speed_max = 8 +cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) +cool_min_temperature = 250 +infill_sparse_density = 15 +material_final_print_temperature = =material_print_temperature - 5 +material_initial_print_temperature = =material_print_temperature - 5 +raft_airgap = =0.12 if extruder_nr == support_extruder_nr else 0 +raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 +skin_overlap = 10 +speed_layer_0 = =speed_print * 7/24 +speed_prime_tower = =speed_print * 1/4 +speed_print = 120.0 +speed_roofing = =speed_print * 13/24 +speed_support = =speed_print * 5/6 +speed_support_bottom = 25 +speed_support_interface = =speed_print * 15/24 +speed_topbottom = =speed_print * 11/24 +speed_wall = =speed_print * 5/24 +speed_wall_0 = =speed_print * 1/6 +support_angle = 50 +support_bottom_angles = [135] +support_bottom_density = 15 +support_bottom_distance = 0.1 +support_bottom_enable = True +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] +support_infill_rate = 15.0 +support_interface_density = 85 +support_interface_enable = True +support_interface_pattern = zigzag +support_line_width = 0.3 +support_material_flow = 95 +support_pattern = zigzag +support_roof_density = 85 +support_roof_wall_count = 1 +support_supported_skin_fan_speed = 60.0 +support_top_distance = =support_z_distance +support_xy_distance = 0.35 +support_xy_distance_overhang = 0.25 +support_xy_overrides_z = xy_overrides_z +support_z_distance = 0.203 +top_skin_expand_distance = 2.4 +wall_overhang_angle = 30 +wall_overhang_speed_factor = 40 + diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..20fbd4217e --- /dev/null +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-175_0.2mm.inst.cfg @@ -0,0 +1,65 @@ +[general] +definition = ultimaker_methodxl +name = Fast +version = 4 + +[metadata] +material = ultimaker_pc-abs_175 +quality_type = draft +setting_version = 24 +type = quality +variant = 1XA +weight = -2 + +[values] +cool_fan_enabled = =extruder_nr == support_extruder_nr +cool_fan_speed = 75 +cool_fan_speed_0 = 0 +cool_fan_speed_max = 100 +cool_min_layer_time = 10 +cool_min_layer_time_fan_speed_max = 8 +cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) +cool_min_temperature = 250 +infill_sparse_density = 15 +material_final_print_temperature = =material_print_temperature - 5 +material_initial_print_temperature = =material_print_temperature - 5 +raft_airgap = =0.12 if extruder_nr == support_extruder_nr else 0 +raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 +skin_overlap = 10 +speed_layer_0 = =speed_print * 7/24 +speed_prime_tower = =speed_print * 1/4 +speed_print = 120.0 +speed_roofing = =speed_print * 13/24 +speed_support = =speed_print * 5/6 +speed_support_bottom = 25 +speed_support_interface = =speed_print * 15/24 +speed_topbottom = =speed_print * 11/24 +speed_wall = =speed_print * 5/24 +speed_wall_0 = =speed_print * 1/6 +support_angle = 50 +support_bottom_angles = [135] +support_bottom_density = 15 +support_bottom_distance = 0.1 +support_bottom_enable = True +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] +support_infill_rate = 15.0 +support_interface_density = 85 +support_interface_enable = True +support_interface_pattern = zigzag +support_line_width = 0.3 +support_material_flow = 95 +support_pattern = zigzag +support_roof_density = 85 +support_roof_wall_count = 1 +support_supported_skin_fan_speed = 60.0 +support_top_distance = =support_z_distance +support_xy_distance = 0.35 +support_xy_distance_overhang = 0.25 +support_xy_overrides_z = xy_overrides_z +support_z_distance = 0.203 +top_skin_expand_distance = 2.4 +wall_overhang_angle = 30 +wall_overhang_speed_factor = 40 + diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..0a640bd42b --- /dev/null +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -0,0 +1,65 @@ +[general] +definition = ultimaker_methodxl +name = Fast +version = 4 + +[metadata] +material = ultimaker_pc-abs-fr_175 +quality_type = draft +setting_version = 24 +type = quality +variant = 1XA +weight = -2 + +[values] +cool_fan_enabled = =extruder_nr == support_extruder_nr +cool_fan_speed = 75 +cool_fan_speed_0 = 0 +cool_fan_speed_max = 100 +cool_min_layer_time = 10 +cool_min_layer_time_fan_speed_max = 8 +cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) +cool_min_temperature = 250 +infill_sparse_density = 15 +material_final_print_temperature = =material_print_temperature - 5 +material_initial_print_temperature = =material_print_temperature - 5 +raft_airgap = =0.12 if extruder_nr == support_extruder_nr else 0 +raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 +skin_overlap = 10 +speed_layer_0 = =speed_print * 7/24 +speed_prime_tower = =speed_print * 1/4 +speed_print = 120.0 +speed_roofing = =speed_print * 13/24 +speed_support = =speed_print * 5/6 +speed_support_bottom = 25 +speed_support_interface = =speed_print * 15/24 +speed_topbottom = =speed_print * 11/24 +speed_wall = =speed_print * 5/24 +speed_wall_0 = =speed_print * 1/6 +support_angle = 50 +support_bottom_angles = [135] +support_bottom_density = 15 +support_bottom_distance = 0.1 +support_bottom_enable = True +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] +support_infill_rate = 15.0 +support_interface_density = 85 +support_interface_enable = True +support_interface_pattern = zigzag +support_line_width = 0.3 +support_material_flow = 95 +support_pattern = zigzag +support_roof_density = 85 +support_roof_wall_count = 1 +support_supported_skin_fan_speed = 60.0 +support_top_distance = =support_z_distance +support_xy_distance = 0.35 +support_xy_distance_overhang = 0.25 +support_xy_overrides_z = xy_overrides_z +support_z_distance = 0.203 +top_skin_expand_distance = 2.4 +wall_overhang_angle = 30 +wall_overhang_speed_factor = 40 + diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..b677bd5a0a --- /dev/null +++ b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-175_0.2mm.inst.cfg @@ -0,0 +1,65 @@ +[general] +definition = ultimaker_methodxl +name = Fast +version = 4 + +[metadata] +material = ultimaker_pc-abs_175 +quality_type = draft +setting_version = 24 +type = quality +variant = LABS +weight = -2 + +[values] +cool_fan_enabled = =extruder_nr == support_extruder_nr +cool_fan_speed = 75 +cool_fan_speed_0 = 0 +cool_fan_speed_max = 100 +cool_min_layer_time = 10 +cool_min_layer_time_fan_speed_max = 8 +cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) +cool_min_temperature = 250 +infill_sparse_density = 15 +material_final_print_temperature = =material_print_temperature - 5 +material_initial_print_temperature = =material_print_temperature - 5 +raft_airgap = =0.12 if extruder_nr == support_extruder_nr else 0 +raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 +skin_overlap = 10 +speed_layer_0 = =speed_print * 7/24 +speed_prime_tower = =speed_print * 1/4 +speed_print = 120.0 +speed_roofing = =speed_print * 13/24 +speed_support = =speed_print * 5/6 +speed_support_bottom = 25 +speed_support_interface = =speed_print * 15/24 +speed_topbottom = =speed_print * 11/24 +speed_wall = =speed_print * 5/24 +speed_wall_0 = =speed_print * 1/6 +support_angle = 50 +support_bottom_angles = [135] +support_bottom_density = 15 +support_bottom_distance = 0.1 +support_bottom_enable = True +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] +support_infill_rate = 15.0 +support_interface_density = 85 +support_interface_enable = True +support_interface_pattern = zigzag +support_line_width = 0.3 +support_material_flow = 95 +support_pattern = zigzag +support_roof_density = 85 +support_roof_wall_count = 1 +support_supported_skin_fan_speed = 60.0 +support_top_distance = =support_z_distance +support_xy_distance = 0.35 +support_xy_distance_overhang = 0.25 +support_xy_overrides_z = xy_overrides_z +support_z_distance = 0.203 +top_skin_expand_distance = 2.4 +wall_overhang_angle = 30 +wall_overhang_speed_factor = 40 + diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg new file mode 100644 index 0000000000..ed17070ffc --- /dev/null +++ b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -0,0 +1,65 @@ +[general] +definition = ultimaker_methodxl +name = Fast +version = 4 + +[metadata] +material = ultimaker_pc-abs-fr_175 +quality_type = draft +setting_version = 24 +type = quality +variant = LABS +weight = -2 + +[values] +cool_fan_enabled = =extruder_nr == support_extruder_nr +cool_fan_speed = 75 +cool_fan_speed_0 = 0 +cool_fan_speed_max = 100 +cool_min_layer_time = 10 +cool_min_layer_time_fan_speed_max = 8 +cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) +cool_min_temperature = 250 +infill_sparse_density = 15 +material_final_print_temperature = =material_print_temperature - 5 +material_initial_print_temperature = =material_print_temperature - 5 +raft_airgap = =0.12 if extruder_nr == support_extruder_nr else 0 +raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 +skin_overlap = 10 +speed_layer_0 = =speed_print * 7/24 +speed_prime_tower = =speed_print * 1/4 +speed_print = 120.0 +speed_roofing = =speed_print * 13/24 +speed_support = =speed_print * 5/6 +speed_support_bottom = 25 +speed_support_interface = =speed_print * 15/24 +speed_topbottom = =speed_print * 11/24 +speed_wall = =speed_print * 5/24 +speed_wall_0 = =speed_print * 1/6 +support_angle = 50 +support_bottom_angles = [135] +support_bottom_density = 15 +support_bottom_distance = 0.1 +support_bottom_enable = True +support_bottom_line_width = 0.6 +support_bottom_stair_step_height = 0 +support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] +support_infill_rate = 15.0 +support_interface_density = 85 +support_interface_enable = True +support_interface_pattern = zigzag +support_line_width = 0.3 +support_material_flow = 95 +support_pattern = zigzag +support_roof_density = 85 +support_roof_wall_count = 1 +support_supported_skin_fan_speed = 60.0 +support_top_distance = =support_z_distance +support_xy_distance = 0.35 +support_xy_distance_overhang = 0.25 +support_xy_overrides_z = xy_overrides_z +support_z_distance = 0.203 +top_skin_expand_distance = 2.4 +wall_overhang_angle = 30 +wall_overhang_speed_factor = 40 + From 5068529e2894bb8aa56497b0827863ff1be77a1f Mon Sep 17 00:00:00 2001 From: Alan Bjorklund Date: Tue, 21 Jan 2025 17:16:02 -0500 Subject: [PATCH 06/21] Improve PC-ABS-FR Self Support Reduce the print speed and increase the flow for PC-ABS-FR self support. This is intended to prevent under-extrusion and improve adhesion. PP-550 --- .../um_methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg | 4 ++-- .../um_methodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg | 4 ++-- .../um_methodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg | 4 ++-- .../um_methodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg | 4 ++-- .../um_methodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg | 4 ++-- .../um_methodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg index 93e06d031f..72b4750e55 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -31,7 +31,7 @@ speed_layer_0 = =speed_print * 7/24 speed_prime_tower = =speed_print * 1/4 speed_print = 120.0 speed_roofing = =speed_print * 13/24 -speed_support = =speed_print * 5/6 +speed_support = =speed_print * 1/2 speed_support_bottom = 25 speed_support_interface = =speed_print * 15/24 speed_topbottom = =speed_print * 11/24 @@ -50,7 +50,7 @@ support_interface_density = 85 support_interface_enable = True support_interface_pattern = zigzag support_line_width = 0.3 -support_material_flow = 95 +support_material_flow = 100 support_pattern = zigzag support_roof_density = 85 support_roof_wall_count = 1 diff --git a/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg index f92b600d51..17062adace 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -31,7 +31,7 @@ speed_layer_0 = =speed_print * 7/24 speed_prime_tower = =speed_print * 1/4 speed_print = 120.0 speed_roofing = =speed_print * 13/24 -speed_support = =speed_print * 5/6 +speed_support = =speed_print * 1/2 speed_support_bottom = 25 speed_support_interface = =speed_print * 15/24 speed_topbottom = =speed_print * 11/24 @@ -50,7 +50,7 @@ support_interface_density = 85 support_interface_enable = True support_interface_pattern = zigzag support_line_width = 0.3 -support_material_flow = 95 +support_material_flow = 100 support_pattern = zigzag support_roof_density = 85 support_roof_wall_count = 1 diff --git a/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg index 797f6a1c69..976506fc59 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -31,7 +31,7 @@ speed_layer_0 = =speed_print * 7/24 speed_prime_tower = =speed_print * 1/4 speed_print = 120.0 speed_roofing = =speed_print * 13/24 -speed_support = =speed_print * 5/6 +speed_support = =speed_print * 1/2 speed_support_bottom = 25 speed_support_interface = =speed_print * 15/24 speed_topbottom = =speed_print * 11/24 @@ -50,7 +50,7 @@ support_interface_density = 85 support_interface_enable = True support_interface_pattern = zigzag support_line_width = 0.3 -support_material_flow = 95 +support_material_flow = 100 support_pattern = zigzag support_roof_density = 85 support_roof_wall_count = 1 diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg index 49e6da212c..7c67d5afc3 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -30,7 +30,7 @@ speed_layer_0 = =speed_print * 7/24 speed_prime_tower = =speed_print * 1/4 speed_print = 120.0 speed_roofing = =speed_print * 13/24 -speed_support = =speed_print * 5/6 +speed_support = =speed_print * 1/2 speed_support_bottom = 25 speed_support_interface = =speed_print * 15/24 speed_topbottom = =speed_print * 11/24 @@ -49,7 +49,7 @@ support_interface_density = 85 support_interface_enable = True support_interface_pattern = zigzag support_line_width = 0.3 -support_material_flow = 95 +support_material_flow = 100 support_pattern = zigzag support_roof_density = 85 support_roof_wall_count = 1 diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg index 0a640bd42b..4aef80925c 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -30,7 +30,7 @@ speed_layer_0 = =speed_print * 7/24 speed_prime_tower = =speed_print * 1/4 speed_print = 120.0 speed_roofing = =speed_print * 13/24 -speed_support = =speed_print * 5/6 +speed_support = =speed_print * 1/2 speed_support_bottom = 25 speed_support_interface = =speed_print * 15/24 speed_topbottom = =speed_print * 11/24 @@ -49,7 +49,7 @@ support_interface_density = 85 support_interface_enable = True support_interface_pattern = zigzag support_line_width = 0.3 -support_material_flow = 95 +support_material_flow = 100 support_pattern = zigzag support_roof_density = 85 support_roof_wall_count = 1 diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg index ed17070ffc..7d4a6ac29d 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -30,7 +30,7 @@ speed_layer_0 = =speed_print * 7/24 speed_prime_tower = =speed_print * 1/4 speed_print = 120.0 speed_roofing = =speed_print * 13/24 -speed_support = =speed_print * 5/6 +speed_support = =speed_print * 1/2 speed_support_bottom = 25 speed_support_interface = =speed_print * 15/24 speed_topbottom = =speed_print * 11/24 @@ -49,7 +49,7 @@ support_interface_density = 85 support_interface_enable = True support_interface_pattern = zigzag support_line_width = 0.3 -support_material_flow = 95 +support_material_flow = 100 support_pattern = zigzag support_roof_density = 85 support_roof_wall_count = 1 From 9830cb580472d9232d866165595804aa354e8861 Mon Sep 17 00:00:00 2001 From: Alan Bjorklund Date: Mon, 27 Jan 2025 16:24:31 -0500 Subject: [PATCH 07/21] Improvements to PC-ABS 175 self support PC-ABS & PC-ABS-FR 175 profile adjustments for self support to prevent under-extrusion while still printing a delicate support structure that is easy to remove. These changes include fan speeds, line widths, material flow settings, and print speeds. PP-550 --- .../um_methodx_1c_um-pc-abs-175_0.2mm.inst.cfg | 6 +++--- .../um_methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg | 9 +++++---- .../um_methodx_1xa_um-pc-abs-175_0.2mm.inst.cfg | 6 +++--- .../um_methodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg | 9 +++++---- .../um_methodx_labs_um-pc-abs-175_0.2mm.inst.cfg | 6 +++--- .../um_methodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg | 9 +++++---- .../um_methodxl_1c_um-pc-abs-175_0.2mm.inst.cfg | 8 ++++---- .../um_methodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg | 11 ++++++----- .../um_methodxl_1xa_um-pc-abs-175_0.2mm.inst.cfg | 8 ++++---- .../um_methodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg | 11 ++++++----- .../um_methodxl_labs_um-pc-abs-175_0.2mm.inst.cfg | 8 ++++---- .../um_methodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg | 11 ++++++----- 12 files changed, 54 insertions(+), 48 deletions(-) diff --git a/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-175_0.2mm.inst.cfg index bc2275eea0..5c58684f3d 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-175_0.2mm.inst.cfg @@ -13,9 +13,8 @@ weight = -2 [values] cool_fan_enabled = =extruder_nr == support_extruder_nr -cool_fan_speed = 75 cool_fan_speed_0 = 0 -cool_fan_speed_max = 100 +cool_fan_speed_max = 80 cool_min_layer_time = 10 cool_min_layer_time_fan_speed_max = 8 cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) @@ -24,6 +23,7 @@ infill_sparse_density = 15 material_final_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_infill_overlap = 20 raft_base_thickness = =0.6 if extruder_nr == support_extruder_nr else 0.8 raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 skin_overlap = 10 @@ -50,7 +50,7 @@ support_interface_density = 85 support_interface_enable = True support_interface_pattern = zigzag support_line_width = 0.3 -support_material_flow = 95 +support_material_flow = 100 support_pattern = zigzag support_roof_density = 85 support_roof_wall_count = 1 diff --git a/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg index 72b4750e55..72864b1f7e 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -13,9 +13,8 @@ weight = -2 [values] cool_fan_enabled = =extruder_nr == support_extruder_nr -cool_fan_speed = 75 cool_fan_speed_0 = 0 -cool_fan_speed_max = 100 +cool_fan_speed_max = 80 cool_min_layer_time = 10 cool_min_layer_time_fan_speed_max = 8 cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) @@ -24,6 +23,7 @@ infill_sparse_density = 15 material_final_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_infill_overlap = 20 raft_base_thickness = =0.6 if extruder_nr == support_extruder_nr else 0.8 raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 skin_overlap = 10 @@ -32,7 +32,7 @@ speed_prime_tower = =speed_print * 1/4 speed_print = 120.0 speed_roofing = =speed_print * 13/24 speed_support = =speed_print * 1/2 -speed_support_bottom = 25 +speed_support_bottom = =speed_support * 1/4 speed_support_interface = =speed_print * 15/24 speed_topbottom = =speed_print * 11/24 speed_wall = =speed_print * 5/24 @@ -42,7 +42,8 @@ support_bottom_angles = [135] support_bottom_density = 15 support_bottom_distance = 0.1 support_bottom_enable = True -support_bottom_line_width = 0.6 +support_bottom_line_distance = =support_line_distance +support_bottom_line_width = 0.8 support_bottom_stair_step_height = 0 support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] support_infill_rate = 15.0 diff --git a/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-175_0.2mm.inst.cfg index 4ceab63942..7e624a2771 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-175_0.2mm.inst.cfg @@ -13,9 +13,8 @@ weight = -2 [values] cool_fan_enabled = =extruder_nr == support_extruder_nr -cool_fan_speed = 75 cool_fan_speed_0 = 0 -cool_fan_speed_max = 100 +cool_fan_speed_max = 80 cool_min_layer_time = 10 cool_min_layer_time_fan_speed_max = 8 cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) @@ -24,6 +23,7 @@ infill_sparse_density = 15 material_final_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_infill_overlap = 20 raft_base_thickness = =0.6 if extruder_nr == support_extruder_nr else 0.8 raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 skin_overlap = 10 @@ -50,7 +50,7 @@ support_interface_density = 85 support_interface_enable = True support_interface_pattern = zigzag support_line_width = 0.3 -support_material_flow = 95 +support_material_flow = 100 support_pattern = zigzag support_roof_density = 85 support_roof_wall_count = 1 diff --git a/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg index 17062adace..13e42a1006 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -13,9 +13,8 @@ weight = -2 [values] cool_fan_enabled = =extruder_nr == support_extruder_nr -cool_fan_speed = 75 cool_fan_speed_0 = 0 -cool_fan_speed_max = 100 +cool_fan_speed_max = 80 cool_min_layer_time = 10 cool_min_layer_time_fan_speed_max = 8 cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) @@ -24,6 +23,7 @@ infill_sparse_density = 15 material_final_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_infill_overlap = 20 raft_base_thickness = =0.6 if extruder_nr == support_extruder_nr else 0.8 raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 skin_overlap = 10 @@ -32,7 +32,7 @@ speed_prime_tower = =speed_print * 1/4 speed_print = 120.0 speed_roofing = =speed_print * 13/24 speed_support = =speed_print * 1/2 -speed_support_bottom = 25 +speed_support_bottom = =speed_support * 1/4 speed_support_interface = =speed_print * 15/24 speed_topbottom = =speed_print * 11/24 speed_wall = =speed_print * 5/24 @@ -42,7 +42,8 @@ support_bottom_angles = [135] support_bottom_density = 15 support_bottom_distance = 0.1 support_bottom_enable = True -support_bottom_line_width = 0.6 +support_bottom_line_distance = =support_line_distance +support_bottom_line_width = 0.8 support_bottom_stair_step_height = 0 support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] support_infill_rate = 15.0 diff --git a/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-175_0.2mm.inst.cfg index 52de6aa0a6..47db7bee53 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-175_0.2mm.inst.cfg @@ -13,9 +13,8 @@ weight = -2 [values] cool_fan_enabled = =extruder_nr == support_extruder_nr -cool_fan_speed = 75 cool_fan_speed_0 = 0 -cool_fan_speed_max = 100 +cool_fan_speed_max = 80 cool_min_layer_time = 10 cool_min_layer_time_fan_speed_max = 8 cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) @@ -24,6 +23,7 @@ infill_sparse_density = 15 material_final_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_infill_overlap = 20 raft_base_thickness = =0.6 if extruder_nr == support_extruder_nr else 0.8 raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 skin_overlap = 10 @@ -50,7 +50,7 @@ support_interface_density = 85 support_interface_enable = True support_interface_pattern = zigzag support_line_width = 0.3 -support_material_flow = 95 +support_material_flow = 100 support_pattern = zigzag support_roof_density = 85 support_roof_wall_count = 1 diff --git a/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg index 976506fc59..6bba6de819 100644 --- a/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -13,9 +13,8 @@ weight = -2 [values] cool_fan_enabled = =extruder_nr == support_extruder_nr -cool_fan_speed = 75 cool_fan_speed_0 = 0 -cool_fan_speed_max = 100 +cool_fan_speed_max = 80 cool_min_layer_time = 10 cool_min_layer_time_fan_speed_max = 8 cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) @@ -24,6 +23,7 @@ infill_sparse_density = 15 material_final_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_infill_overlap = 20 raft_base_thickness = =0.6 if extruder_nr == support_extruder_nr else 0.8 raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 skin_overlap = 10 @@ -32,7 +32,7 @@ speed_prime_tower = =speed_print * 1/4 speed_print = 120.0 speed_roofing = =speed_print * 13/24 speed_support = =speed_print * 1/2 -speed_support_bottom = 25 +speed_support_bottom = =speed_support * 1/4 speed_support_interface = =speed_print * 15/24 speed_topbottom = =speed_print * 11/24 speed_wall = =speed_print * 5/24 @@ -42,7 +42,8 @@ support_bottom_angles = [135] support_bottom_density = 15 support_bottom_distance = 0.1 support_bottom_enable = True -support_bottom_line_width = 0.6 +support_bottom_line_distance = =support_line_distance +support_bottom_line_width = 0.8 support_bottom_stair_step_height = 0 support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] support_infill_rate = 15.0 diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-175_0.2mm.inst.cfg index ca9c1719bc..a072415f8f 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-175_0.2mm.inst.cfg @@ -13,9 +13,8 @@ weight = -2 [values] cool_fan_enabled = =extruder_nr == support_extruder_nr -cool_fan_speed = 75 cool_fan_speed_0 = 0 -cool_fan_speed_max = 100 +cool_fan_speed_max = 80 cool_min_layer_time = 10 cool_min_layer_time_fan_speed_max = 8 cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) @@ -23,7 +22,8 @@ cool_min_temperature = 250 infill_sparse_density = 15 material_final_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 -raft_airgap = =0.12 if extruder_nr == support_extruder_nr else 0 +raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_infill_overlap = 20 raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 skin_overlap = 10 speed_layer_0 = =speed_print * 7/24 @@ -49,7 +49,7 @@ support_interface_density = 85 support_interface_enable = True support_interface_pattern = zigzag support_line_width = 0.3 -support_material_flow = 95 +support_material_flow = 100 support_pattern = zigzag support_roof_density = 85 support_roof_wall_count = 1 diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg index 7c67d5afc3..272c94e581 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -13,9 +13,8 @@ weight = -2 [values] cool_fan_enabled = =extruder_nr == support_extruder_nr -cool_fan_speed = 75 cool_fan_speed_0 = 0 -cool_fan_speed_max = 100 +cool_fan_speed_max = 80 cool_min_layer_time = 10 cool_min_layer_time_fan_speed_max = 8 cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) @@ -23,7 +22,8 @@ cool_min_temperature = 250 infill_sparse_density = 15 material_final_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 -raft_airgap = =0.12 if extruder_nr == support_extruder_nr else 0 +raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_infill_overlap = 20 raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 skin_overlap = 10 speed_layer_0 = =speed_print * 7/24 @@ -31,7 +31,7 @@ speed_prime_tower = =speed_print * 1/4 speed_print = 120.0 speed_roofing = =speed_print * 13/24 speed_support = =speed_print * 1/2 -speed_support_bottom = 25 +speed_support_bottom = =speed_support * 1/4 speed_support_interface = =speed_print * 15/24 speed_topbottom = =speed_print * 11/24 speed_wall = =speed_print * 5/24 @@ -41,7 +41,8 @@ support_bottom_angles = [135] support_bottom_density = 15 support_bottom_distance = 0.1 support_bottom_enable = True -support_bottom_line_width = 0.6 +support_bottom_line_distance = =support_line_distance +support_bottom_line_width = 0.8 support_bottom_stair_step_height = 0 support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] support_infill_rate = 15.0 diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-175_0.2mm.inst.cfg index 20fbd4217e..2bb4fae463 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-175_0.2mm.inst.cfg @@ -13,9 +13,8 @@ weight = -2 [values] cool_fan_enabled = =extruder_nr == support_extruder_nr -cool_fan_speed = 75 cool_fan_speed_0 = 0 -cool_fan_speed_max = 100 +cool_fan_speed_max = 80 cool_min_layer_time = 10 cool_min_layer_time_fan_speed_max = 8 cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) @@ -23,7 +22,8 @@ cool_min_temperature = 250 infill_sparse_density = 15 material_final_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 -raft_airgap = =0.12 if extruder_nr == support_extruder_nr else 0 +raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_infill_overlap = 20 raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 skin_overlap = 10 speed_layer_0 = =speed_print * 7/24 @@ -49,7 +49,7 @@ support_interface_density = 85 support_interface_enable = True support_interface_pattern = zigzag support_line_width = 0.3 -support_material_flow = 95 +support_material_flow = 100 support_pattern = zigzag support_roof_density = 85 support_roof_wall_count = 1 diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg index 4aef80925c..53498a3408 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -13,9 +13,8 @@ weight = -2 [values] cool_fan_enabled = =extruder_nr == support_extruder_nr -cool_fan_speed = 75 cool_fan_speed_0 = 0 -cool_fan_speed_max = 100 +cool_fan_speed_max = 80 cool_min_layer_time = 10 cool_min_layer_time_fan_speed_max = 8 cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) @@ -23,7 +22,8 @@ cool_min_temperature = 250 infill_sparse_density = 15 material_final_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 -raft_airgap = =0.12 if extruder_nr == support_extruder_nr else 0 +raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_infill_overlap = 20 raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 skin_overlap = 10 speed_layer_0 = =speed_print * 7/24 @@ -31,7 +31,7 @@ speed_prime_tower = =speed_print * 1/4 speed_print = 120.0 speed_roofing = =speed_print * 13/24 speed_support = =speed_print * 1/2 -speed_support_bottom = 25 +speed_support_bottom = =speed_support * 1/4 speed_support_interface = =speed_print * 15/24 speed_topbottom = =speed_print * 11/24 speed_wall = =speed_print * 5/24 @@ -41,7 +41,8 @@ support_bottom_angles = [135] support_bottom_density = 15 support_bottom_distance = 0.1 support_bottom_enable = True -support_bottom_line_width = 0.6 +support_bottom_line_distance = =support_line_distance +support_bottom_line_width = 0.8 support_bottom_stair_step_height = 0 support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] support_infill_rate = 15.0 diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-175_0.2mm.inst.cfg index b677bd5a0a..ef9005a45f 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-175_0.2mm.inst.cfg @@ -13,9 +13,8 @@ weight = -2 [values] cool_fan_enabled = =extruder_nr == support_extruder_nr -cool_fan_speed = 75 cool_fan_speed_0 = 0 -cool_fan_speed_max = 100 +cool_fan_speed_max = 80 cool_min_layer_time = 10 cool_min_layer_time_fan_speed_max = 8 cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) @@ -23,7 +22,8 @@ cool_min_temperature = 250 infill_sparse_density = 15 material_final_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 -raft_airgap = =0.12 if extruder_nr == support_extruder_nr else 0 +raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_infill_overlap = 20 raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 skin_overlap = 10 speed_layer_0 = =speed_print * 7/24 @@ -49,7 +49,7 @@ support_interface_density = 85 support_interface_enable = True support_interface_pattern = zigzag support_line_width = 0.3 -support_material_flow = 95 +support_material_flow = 100 support_pattern = zigzag support_roof_density = 85 support_roof_wall_count = 1 diff --git a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg index 7d4a6ac29d..3b5a15e0ec 100644 --- a/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg @@ -13,9 +13,8 @@ weight = -2 [values] cool_fan_enabled = =extruder_nr == support_extruder_nr -cool_fan_speed = 75 cool_fan_speed_0 = 0 -cool_fan_speed_max = 100 +cool_fan_speed_max = 80 cool_min_layer_time = 10 cool_min_layer_time_fan_speed_max = 8 cool_min_speed = =round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5) @@ -23,7 +22,8 @@ cool_min_temperature = 250 infill_sparse_density = 15 material_final_print_temperature = =material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 -raft_airgap = =0.12 if extruder_nr == support_extruder_nr else 0 +raft_airgap = =0.1 if extruder_nr == support_extruder_nr else 0 +raft_base_infill_overlap = 20 raft_surface_speed = =speed_print * 3/4 if extruder_nr == support_extruder_nr else 50 skin_overlap = 10 speed_layer_0 = =speed_print * 7/24 @@ -31,7 +31,7 @@ speed_prime_tower = =speed_print * 1/4 speed_print = 120.0 speed_roofing = =speed_print * 13/24 speed_support = =speed_print * 1/2 -speed_support_bottom = 25 +speed_support_bottom = =speed_support * 1/4 speed_support_interface = =speed_print * 15/24 speed_topbottom = =speed_print * 11/24 speed_wall = =speed_print * 5/24 @@ -41,7 +41,8 @@ support_bottom_angles = [135] support_bottom_density = 15 support_bottom_distance = 0.1 support_bottom_enable = True -support_bottom_line_width = 0.6 +support_bottom_line_distance = =support_line_distance +support_bottom_line_width = 0.8 support_bottom_stair_step_height = 0 support_infill_angles = [45,45,45,45,45,45,45,45,45,45,135,135,135,135,135,135,135,135,135,135] support_infill_rate = 15.0 From d18f64922127df1c2012ffe84e7e8e6a8933da6d Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Wed, 5 Feb 2025 14:22:23 +0100 Subject: [PATCH 08/21] Add missing Sketch printers extruders name mapping CURA-12401 --- cura/PrinterOutput/FormatMaps.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cura/PrinterOutput/FormatMaps.py b/cura/PrinterOutput/FormatMaps.py index 3bb6263a28..1974f4c08c 100644 --- a/cura/PrinterOutput/FormatMaps.py +++ b/cura/PrinterOutput/FormatMaps.py @@ -25,7 +25,10 @@ class FormatMaps: "mk14_c": "1C", "mk14": "1A", "mk14_s": "2A", - "mk14_e": "LABS" + "mk14_e": "LABS", + "sketch_extruder": "0.4mm", + "sketch_l_extruder": "0.4mm", + "sketch_sprint_extruder": "0.4mm", } # A map from the material-name in their native file-formats to some info, including the internal name we use. From dbb994b6c1dfd8fc56156a4cddbd8b8a83482efe Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Thu, 6 Feb 2025 08:35:56 +0100 Subject: [PATCH 09/21] Use the material alternative GUID if not found CURA-12401 --- .../src/Models/Http/ClusterPrinterConfigurationMaterial.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py index 6f2992a03b..4c6d4a15b9 100644 --- a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py @@ -40,6 +40,9 @@ class ClusterPrinterConfigurationMaterial(BaseModel): container_registry = ContainerRegistry.getInstance() same_guid = container_registry.findInstanceContainersMetadata(GUID = self.guid) + if not same_guid: + same_guid = container_registry.findInstanceContainersMetadata(alternative_GUID = self.guid) + if same_guid: read_only = sorted(filter(lambda metadata: container_registry.isReadOnly(metadata["id"]), same_guid), key = lambda metadata: metadata["name"]) if read_only: @@ -48,10 +51,11 @@ class ClusterPrinterConfigurationMaterial(BaseModel): material_metadata = min(same_guid, key = lambda metadata: metadata["name"]) else: material_metadata = { + "GUID": self.guid, "color_code": self.color, "brand": self.brand, "material": self.material, "name": "Empty" if self.material == "empty" else "Unknown" } - return MaterialOutputModel(guid = self.guid, type = material_metadata["material"], brand = material_metadata["brand"], color = material_metadata.get("color_code", "#ffc924"), name = material_metadata["name"]) + return MaterialOutputModel(guid = material_metadata["GUID"], type = material_metadata["material"], brand = material_metadata["brand"], color = material_metadata.get("color_code", "#ffc924"), name = material_metadata["name"]) From 25c2e75f345306a5e4fd72c03ec3fb1cc58e03cb Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Thu, 6 Feb 2025 15:53:22 +0100 Subject: [PATCH 10/21] Revert "Use the material alternative GUID if not found" This reverts commit dbb994b6c1dfd8fc56156a4cddbd8b8a83482efe. --- .../src/Models/Http/ClusterPrinterConfigurationMaterial.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py index 4c6d4a15b9..6f2992a03b 100644 --- a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py @@ -40,9 +40,6 @@ class ClusterPrinterConfigurationMaterial(BaseModel): container_registry = ContainerRegistry.getInstance() same_guid = container_registry.findInstanceContainersMetadata(GUID = self.guid) - if not same_guid: - same_guid = container_registry.findInstanceContainersMetadata(alternative_GUID = self.guid) - if same_guid: read_only = sorted(filter(lambda metadata: container_registry.isReadOnly(metadata["id"]), same_guid), key = lambda metadata: metadata["name"]) if read_only: @@ -51,11 +48,10 @@ class ClusterPrinterConfigurationMaterial(BaseModel): material_metadata = min(same_guid, key = lambda metadata: metadata["name"]) else: material_metadata = { - "GUID": self.guid, "color_code": self.color, "brand": self.brand, "material": self.material, "name": "Empty" if self.material == "empty" else "Unknown" } - return MaterialOutputModel(guid = material_metadata["GUID"], type = material_metadata["material"], brand = material_metadata["brand"], color = material_metadata.get("color_code", "#ffc924"), name = material_metadata["name"]) + return MaterialOutputModel(guid = self.guid, type = material_metadata["material"], brand = material_metadata["brand"], color = material_metadata.get("color_code", "#ffc924"), name = material_metadata["name"]) From 686b404a952fa39a3df4a4cbe159cf866c7e0e51 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Fri, 7 Feb 2025 15:56:30 +0100 Subject: [PATCH 11/21] Set support page to be opened on core incompatibility CURA-12393 --- .../Menus/ConfigurationMenu/ConfigurationItem.qml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml b/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml index f76e1c6ef7..f822dad933 100644 --- a/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml +++ b/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml @@ -166,8 +166,8 @@ Button } mismatchedCores = "" + mismatchedCores + "" - var draftResult = catalog.i18nc("@label", "This configuration is not available because there is a mismatch or other problem with core-type %1. Please visit %2 to check which cores this printer-type supports w.r.t. new slices."); - return draftResult.arg(mismatchedCores).arg("" + catalog.i18nc("@label","WEBSITE") + " ") + var draftResult = catalog.i18nc("@label", "This configuration is not available because there is a mismatch or other problem with core-type %1. Please visit the support page to check which cores this printer-type supports w.r.t. new slices."); + return draftResult.arg(mismatchedCores).arg("https://support.ultimaker.com/s/article/1667411313529") } text: @@ -199,9 +199,16 @@ Button wrapMode: Text.WordWrap - onLinkActivated: + onLinkActivated: (link) => { - Cura.Actions.browsePackages.trigger() + if(link.trim().length === 0) + { + Cura.Actions.browsePackages.trigger(); + } + else + { + Qt.openUrlExternally(link); + } } } From 36141b082c4b516850ada98ed9bec67ab43c2a15 Mon Sep 17 00:00:00 2001 From: GregValiant <64202104+GregValiant@users.noreply.github.com> Date: Fri, 7 Feb 2025 18:40:19 -0500 Subject: [PATCH 12/21] Update SearchAndReplace.py Replaced the complex method of dealing with rafts to something simpler. Update SearchAndReplace.py Update --- .../scripts/SearchAndReplace.py | 107 +++++++----------- 1 file changed, 41 insertions(+), 66 deletions(-) diff --git a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py index 4d81b9f98d..0ad90b4de2 100644 --- a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py +++ b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py @@ -24,14 +24,14 @@ class SearchAndReplace(Script): "search": { "label": "Search for:", - "description": "CASE SPECIFIC. 'LAYER' is not the same as 'Layer'. All occurrences of this text (within the search range) will be replaced by the 'Replace with' string.", + "description": "All occurrences of this text (within the search range) will be replaced by the 'Replace with' string. The search string is 'Case Specific' and 'Layer' is not the same as 'layer'.", "type": "str", "default_value": "" }, "replace": { "label": "Replace with:", - "description": "The 'Search For' text will get replaced by this text. For MultiLine insertions use the newline character 'backslash plus n' as the delimiter. If your Search term ends with a 'newline' remember to add 'newline' to the end of this Replace term.", + "description": "The 'Search For' text will get replaced by this text. For MultiLine insertions use the newline character 'backslash n' as the delimiter. If your Search term ends with a 'newline' remember to add 'newline' to the end of this Replace term.", "type": "str", "default_value": "" }, @@ -53,19 +53,19 @@ class SearchAndReplace(Script): "search_start": { "label": "Start S&R at Layer:", - "description": "Use the Cura Preview layer numbering. The Start Layer will be included. Enter '1' to start with gcode ';LAYER:0'. Enter ''-6'' to start with the first layer of a raft.", + "description": "Use the Cura Preview layer numbering.", "type": "int", "default_value": 1, - "minimum_value": -6, + "minimum_value": 1, "enabled": "enable_layer_search" }, "search_end": { "label": "Stop S&R at end of Layer:", - "description": "Use the Cura Preview layer numbering. Enter '-1' to search and replace to the end of the file. Enter any other layer number and the replacements will conclude at the end of that layer. If the End Layer is equal to the Start Layer then only that single layer is searched.", + "description": "Use the Cura Preview layer numbering. The replacements will conclude at the end of this layer. If the End Layer is equal to the Start Layer then only that single layer is searched.", "type": "int", - "default_value": -1, - "minimum_value": -1, + "default_value": 2, + "minimum_value": 1, "enabled": "enable_layer_search" }, "first_instance_only": @@ -99,12 +99,6 @@ class SearchAndReplace(Script): global_stack = Application.getInstance().getGlobalContainerStack() extruder = global_stack.extruderList retract_enabled = bool(extruder[0].getProperty("retraction_enable", "value")) - # If retractions are enabled then the CuraEngine inserts a single data item for the retraction at the end of the last layer - # 'top_layer' accounts for that - if retract_enabled: - top_layer = 2 - else: - top_layer = 1 search_string = self.getSettingValueByKey("search") replace_string = self.getSettingValueByKey("replace") is_regex = self.getSettingValueByKey("is_regex") @@ -118,71 +112,52 @@ class SearchAndReplace(Script): ignore_end = True first_instance_only = bool(self.getSettingValueByKey("first_instance_only")) - #Find the raft and layer:0 indexes - raft_start_index = 0 - layer_0_index = 0 + # Account for missing layer numbers when a raft is used start_index = 1 - end_index = len(data) - try: - for l_num in range(2,12,1): - layer = data[l_num] - if ";LAYER:-" in layer and raft_start_index == 0: - raft_start_index = l_num - if ";LAYER:0" in layer: - layer_0_index = l_num - break - if raft_start_index == 0: - raft_start_index = layer_0_index - raft_layers = 0 - elif raft_start_index < layer_0_index: - raft_layers = layer_0_index - raft_start_index + end_index = len(data) - 1 + data_list = [0,1] + layer_list = [-1,0] + lay_num = 1 + for index, layer in enumerate(data): + if re.search(";LAYER:(-?\d+)", layer): + data_list.append(index) + layer_list.append(lay_num) + lay_num += 1 + + # Get the start and end indexes within the data + if not enable_layer_search: + if ignore_start: + start_index = 2 else: - raft_layers = 0 - except: - pass - - #Determine the actual start and end indexes of the data - try: - if not enable_layer_search: - if ignore_start: - start_index = 2 - else: - start_index = 1 - if ignore_end: - end_index = len(data) - top_layer - else: - end_index = len(data) - elif enable_layer_search: - if start_layer < 1 and start_layer != -6: - start_index = layer_0_index - raft_layers - elif start_layer == -6: - start_index = 2 - else: - start_index = raft_start_index + start_layer - 1 - if end_layer == -1: - end_index = len(data) - top_layer - else: - end_index = raft_start_index + int(end_layer) - if end_index > len(data) - 1: end_index = len(data) - 1 #For possible user input error - if int(end_index) < int(start_index): end_index = start_index #For possible user input error - except: - start_index = 2 - end_index = len(data) - top_layer + start_index = 1 + + if ignore_end: + end_index = data_list[len(data_list) - 1] + else: + # Account for the extra data item when retraction is enabled + end_index = data_list[len(data_list) - 1] + (2 if retract_enabled else 1) + + elif enable_layer_search: + for index, num in enumerate(layer_list): + if num == start_layer: + start_index = data_list[index] + if num == end_layer: + end_index = data_list[index] # Make replacements - replaceone = False + replace_one = False if not is_regex: search_string = re.escape(search_string) search_regex = re.compile(search_string) - for num in range(start_index, end_index, 1): + for num in range(start_index, end_index + 1, 1): layer = data[num] # First_instance only if first_instance_only: - if re.search(search_regex, layer) and replaceone == False: + if re.search(search_regex, layer) and replace_one == False: data[num] = re.sub(search_regex, replace_string, data[num], 1) - replaceone = True + replace_one = True break - # All + # All instances else: if end_index > start_index: data[num] = re.sub(search_regex, replace_string, layer) From e1bd4baed226af595306fb413d8d791444a08060 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Mon, 10 Feb 2025 10:36:44 +0100 Subject: [PATCH 13/21] Adjust settings descriptions --- .../PostProcessingPlugin/scripts/SearchAndReplace.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py index 0ad90b4de2..aeda053b56 100644 --- a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py +++ b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py @@ -14,7 +14,7 @@ class SearchAndReplace(Script): """ def getSettingDataString(self): - return """{ + return r"""{ "name": "Search and Replace", "key": "SearchAndReplace", "metadata": {}, @@ -24,21 +24,21 @@ class SearchAndReplace(Script): "search": { "label": "Search for:", - "description": "All occurrences of this text (within the search range) will be replaced by the 'Replace with' string. The search string is 'Case Specific' and 'Layer' is not the same as 'layer'.", + "description": "All occurrences of this text (within the search range) will be replaced by the 'Replace with' string. The search string is 'Case Sensitive' and 'Layer' is not the same as 'layer'.", "type": "str", "default_value": "" }, "replace": { "label": "Replace with:", - "description": "The 'Search For' text will get replaced by this text. For MultiLine insertions use the newline character 'backslash n' as the delimiter. If your Search term ends with a 'newline' remember to add 'newline' to the end of this Replace term.", + "description": "The 'Search For' text will get replaced by this text. For MultiLine insertions use the newline character '\\n' as the delimiter. If your Search term ends with a '\\n' remember to add '\\n' to the end of this Replace term.", "type": "str", "default_value": "" }, "is_regex": { "label": "Use Regular Expressions", - "description": "When disabled the search string is treated as a simple text string. When enabled, the search text will be recompiled as a 'regular' python expression.", + "description": "When disabled the search string is treated as a simple text string. When enabled, the search text will be interpreted as a Python regular expression.", "type": "bool", "default_value": false }, @@ -119,7 +119,7 @@ class SearchAndReplace(Script): layer_list = [-1,0] lay_num = 1 for index, layer in enumerate(data): - if re.search(";LAYER:(-?\d+)", layer): + if re.search(r";LAYER:(-?\d+)", layer): data_list.append(index) layer_list.append(lay_num) lay_num += 1 From 80fa6aabc343e928f9a8eb1f865fa83b967aebfb Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Mon, 10 Feb 2025 13:38:15 +0100 Subject: [PATCH 14/21] Update altered year --- plugins/PostProcessingPlugin/scripts/SearchAndReplace.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py index aeda053b56..db062f4084 100644 --- a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py +++ b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py @@ -1,6 +1,6 @@ # Copyright (c) 2017 Ghostkeeper # The PostProcessingPlugin is released under the terms of the LGPLv3 or higher. -# Altered by GregValiant (Greg Foresi) February, 2023. +# Altered by GregValiant (Greg Foresi) February, 2025. # Added option for "first instance only" # Added option for a layer search with a Start Layer and an End layer. # Added 'Ignore StartUp G-code' and 'Ignore Ending G-code' options @@ -164,4 +164,4 @@ class SearchAndReplace(Script): elif end_index == start_index: layer = data[start_index] data[start_index] = re.sub(search_regex, replace_string, layer) - return data \ No newline at end of file + return data From 1c92704eda95046c0fc2a3a47b2bb14926a6dd24 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Tue, 11 Feb 2025 12:26:26 +0100 Subject: [PATCH 15/21] Add correct 3MF mime-type to .desktop launcher See https://gitlab.freedesktop.org/xdg/shared-mime-info/-/commit/26a3e2f8dc0fd32526a4ad930cadb5d2cae52e74 --- packaging/AppImage/cura.desktop.jinja | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/AppImage/cura.desktop.jinja b/packaging/AppImage/cura.desktop.jinja index 1230d4ff5c..8b645c826e 100644 --- a/packaging/AppImage/cura.desktop.jinja +++ b/packaging/AppImage/cura.desktop.jinja @@ -9,7 +9,7 @@ Exec=UltiMaker-Cura %F 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; +MimeType=model/stl;application/vnd.ms-3mfdocument;model/3mf;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; X-AppImage-Version={{ cura_version }} From 0a68c861f0eff5756473d35995d43b17f0ad1c6e Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Tue, 11 Feb 2025 12:28:03 +0100 Subject: [PATCH 16/21] Fix "Open in Cura" button on Thingiverse MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make the "Open in Cura" button on Thingiverse work by informing the system that Cura is the application to handle URLs with the cura scheme, and that it can handle URLs, not just local files. This fixes this error message visible in Firefox' console when clicking the button on the website: Prevented navigation to “cura://open?file=https%3A%2F%2Fwww.thingiverse.com%2Fdownload%3A14134689” due to an unknown protocol. See https://github.com/bambulab/BambuStudio/commit/62006bba30f39 --- packaging/AppImage/cura.desktop.jinja | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/AppImage/cura.desktop.jinja b/packaging/AppImage/cura.desktop.jinja index 8b645c826e..dc6cddcc03 100644 --- a/packaging/AppImage/cura.desktop.jinja +++ b/packaging/AppImage/cura.desktop.jinja @@ -5,11 +5,11 @@ GenericName=3D Printing Software GenericName[de]=3D-Druck-Software GenericName[nl]=3D-Print Software 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. -Exec=UltiMaker-Cura %F +Exec=UltiMaker-Cura %U Icon=cura-icon Terminal=false Type=Application -MimeType=model/stl;application/vnd.ms-3mfdocument;model/3mf;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; +MimeType=model/stl;application/vnd.ms-3mfdocument;model/3mf;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;x-scheme-handler/cura; Categories=Graphics; Keywords=3D;Printing; X-AppImage-Version={{ cura_version }} From a92d15b79be8dbebc3c922d0397bb5045a66121c Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Wed, 12 Feb 2025 08:12:43 +0100 Subject: [PATCH 17/21] Update UltiMaker printers images with up-to-date branding CURA-12409 --- .../images/Ultimaker2PlusConnectbackplate.png | Bin 7020 -> 24548 bytes .../images/UltimakerFactor4Backplate.png | Bin 11822 -> 14992 bytes resources/images/UltimakerS3backplate.png | Bin 3793 -> 13714 bytes resources/images/UltimakerS5backplate.png | Bin 4024 -> 14430 bytes resources/images/UltimakerS7backplate.png | Bin 10378 -> 13976 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/images/Ultimaker2PlusConnectbackplate.png b/resources/images/Ultimaker2PlusConnectbackplate.png index 789a48e8874089cbc7722f5befce3bc82c82b2f3..c03e28936bb9013fc3c0c8d08239b877b4c235c5 100644 GIT binary patch literal 24548 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 F{tsiErJ(=- literal 7020 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 V?U&@KJiYCQsj=1N(u?l@{tr+9G!p;- diff --git a/resources/images/UltimakerFactor4Backplate.png b/resources/images/UltimakerFactor4Backplate.png index c22d88776669e3cdc3d2615e21d655475d34c613..f209c98feea3bbee3aaf13de20c097324809bf78 100644 GIT binary patch literal 14992 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 F{{eAn%3A;c literal 11822 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 diff --git a/resources/images/UltimakerS3backplate.png b/resources/images/UltimakerS3backplate.png index 486c2829341ce20260b5a7d1f80643e1b54ffb3e..f4a9cf478efdc5c32e3966ca1fa3bbdf1d9dafbc 100644 GIT binary patch literal 13714 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%0AA7tirK&rw9Df-2CW zjpDAWcaNkaw)e((-xg`&5>=~OMs$l8Bg{}3_8j_X-!1e-z$y_=F2pjzF?Cb>`Rf+R zu^w`kx_(J8t^?JbY3vZV%)SH&@f@{4hJX18&1G}nt?DguczbD_b52 zO7%x`MmRO(+Uf}U4J{45c-3JM!^WC$yNhjP2g8k}S8Y)n<=8tS=dSQl!5b5wyxLU} z&anRt{l^-+#BaUI%BgVQ?<+6aCsg#7w4hGj^4&ogqA8auay>c~4VY9^j)rCri8ZVZ zCkzd1=<%gh3!-i^VO~D`H!k=X(!MqDK`Fq*C)I2F6Zy`Gw4i+c8@9yFUaq7bJv{rB zoH~yQ?GHrv*M`A!yw)z9|FBq@Q>{M1e#~YA<@nF!fMz9Yf2^(W3!4O71?fgtxLl+e zZ`M$WBzexj+jDBcu%$@HO5f5cd_pfj;x6yq3GQZ6gZ$#*^j}>Yp zhZ*JLt8EmV$1`=lFR(qN*d5hV!LtcP8rpqp)4TdIyH&g}de$OKo|Kf28W5hlz69W* z?m4xNn9h}$^RcX0B~n;qtc9+p1b4)vyWu1+SfFDlNZ|>UgGQn`# zOVg-z?qDh*1?it4>(ae4_!F%%x>3fK7Je!TuO3eZh%$<+;DD|luIu#k> zGW>U2>LZ>e54XFH zJK#7PhMi#8)q~6*G-cq)b0{+sX&vpgb6KZ6(gSsexx0%x+YUH{3HL^|{oNc$4LP{e zF3l1zw2Cdu<872L=4}{huCIyMM-W2@dhIPy4tQcQP?>kWQ2o(NzRcSKRAekl#FiXh zea4inp;97qmw+UlO0KeuzLfkhyH>TRFvUxBzxJ%akXMJxDqm-v-CPXuU*S=~+zr5F z+@18Ok9cN&HHA@ghV>I1#DKfp{H^F9vSdk%uTt^SOEw0t{pCrvg>ISPE1dtEs9(lk zz<4icIHI>)Jx6VE#p(M;o?f^P45r%(ucG6cH;5@tKOB?qQ3MJAtS9hpniQT*mUF#yUWJXOc1Bv~`EjBop0+Kbgm=_u%xB->{?m}rI>S+tGLK&CwZm?cuDXU+vfCTCIFPZSY#RB)SFbuW!Q4~koIMb#7^AB(t7ouNx!PMx z)MhBJ1)fu&R~bkRWzsmIU1-EvC0Iw9+)f*5ylUCQD6;~+kEy9nw;M9E=ykL9Io?9K zS1AP@l!rn+m*|L{%j>R8M6H~@g~%2~MeC{!#_F;V7a01(hx>W{00;Uh{%*{r;4jS- z@IZoGRJ1XUHa(SGQv`%+RvGrJFAhp;lIAMCz~g8`z*=S;vt+~4a%vAmo8C~sj}D9N z5(N)S7R+)k=qyH-N@L0wMFAK?^7~dzY@M{%n(_JeFldo_4kF~5@FFk8u#yGU2_J2j z9X-qqr5ko~Z=eHuuHrs-m`6D>QJf_-_cI8~m$}H~V;^%<^&*wYn-nGI-%=asBv5+( zd%C~bhIm}r)FJ=A{%il|hyP;WzZm%c5(ASP+f?2LdpFiiZaxeJxqj933dz7V{{I01 CDsB@1 literal 3793 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 ARR910 diff --git a/resources/images/UltimakerS5backplate.png b/resources/images/UltimakerS5backplate.png index cb37c296a431fbbc3400c81e460e2b8c99cbb01b..cda59e4b23a32184b1e3e3edbfa4eebe9bfb60a0 100644 GIT binary patch literal 14430 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 XIBfXZ{oHQi@26)^UpPfIb&daj(TY^E literal 4024 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 Z6&lTAo)SWB)AquEvOt@c{d(i^{{gPBz$gF! diff --git a/resources/images/UltimakerS7backplate.png b/resources/images/UltimakerS7backplate.png index c35f819d7da31cd264eb00bd5c18a8d2e4ce9b1f..5cef95e7a4597a8a2f90300cb345d24d27e78dde 100644 GIT binary patch literal 13976 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 literal 10378 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 Date: Wed, 12 Feb 2025 15:57:45 +0100 Subject: [PATCH 18/21] [PP-535] Publish S8 profiles --- resources/definitions/ultimaker_s8.def.json | 406 ++++++++++++++++++ .../ultimaker_s8_extruder_left.def.json | 31 ++ .../ultimaker_s8_extruder_right.def.json | 31 ++ resources/images/UltimakerS8backplate.png | Bin 0 -> 24586 bytes ...aa_plus_0.4_abs_0.2mm_engineering.inst.cfg | 18 + ...aa_plus_0.4_cpe_0.2mm_engineering.inst.cfg | 18 + ..._plus_0.4_nylon_0.2mm_engineering.inst.cfg | 18 + ...a_plus_0.4_petg_0.2mm_engineering.inst.cfg | 18 + ...aa_plus_0.4_pla_0.2mm_engineering.inst.cfg | 18 + ...s_0.4_tough-pla_0.2mm_engineering.inst.cfg | 18 + ...us_0.4_cpe-plus_0.2mm_engineering.inst.cfg | 18 + ..._cc_plus_0.4_pc_0.2mm_engineering.inst.cfg | 18 + ..._plus_0.4_petcf_0.2mm_engineering.inst.cfg | 18 + .../um_s8_aa_plus_0.4_abs_0.2mm.inst.cfg | 21 + .../um_s8_aa_plus_0.4_cpe_0.2mm.inst.cfg | 20 + .../um_s8_aa_plus_0.4_nylon_0.2mm.inst.cfg | 20 + .../um_s8_aa_plus_0.4_petg_0.2mm.inst.cfg | 17 + .../um_s8_aa_plus_0.4_pla_0.1mm.inst.cfg | 17 + .../um_s8_aa_plus_0.4_pla_0.2mm.inst.cfg | 17 + .../um_s8_aa_plus_0.4_pp_0.2mm.inst.cfg | 45 ++ ...um_s8_aa_plus_0.4_tough-pla_0.1mm.inst.cfg | 17 + ...um_s8_aa_plus_0.4_tough-pla_0.2mm.inst.cfg | 17 + .../um_s8_aa_plus_0.4_tpu_0.2mm.inst.cfg | 53 +++ .../um_s8_bb0.4_bam_0.15mm.inst.cfg | 32 ++ .../um_s8_bb0.4_bam_0.1mm.inst.cfg | 28 ++ .../um_s8_bb0.4_bam_0.2mm.inst.cfg | 31 ++ .../um_s8_bb0.4_bam_0.3mm.inst.cfg | 31 ++ .../um_s8_bb0.4_pva_0.15mm.inst.cfg | 29 ++ .../um_s8_bb0.4_pva_0.1mm.inst.cfg | 30 ++ .../um_s8_bb0.4_pva_0.2mm.inst.cfg | 29 ++ .../um_s8_bb0.4_pva_0.3mm.inst.cfg | 30 ++ .../um_s8_cc_plus_0.4_cpe-plus_0.2mm.inst.cfg | 15 + .../um_s8_cc_plus_0.4_pc_0.2mm.inst.cfg | 19 + .../um_s8_cc_plus_0.4_petcf_0.2mm.inst.cfg | 15 + .../um_s8_global_Draft_Quality.inst.cfg | 15 + .../um_s8_global_Fast_Quality.inst.cfg | 15 + .../um_s8_global_High_Quality.inst.cfg | 15 + .../um_s8_global_Normal_Quality.inst.cfg | 15 + .../um_s8_global_Superdraft_Quality.inst.cfg | 15 + .../um_s8_global_Verydraft_Quality.inst.cfg | 15 + .../variants/ultimaker_s8_aa_plus04.inst.cfg | 17 + resources/variants/ultimaker_s8_bb04.inst.cfg | 19 + .../variants/ultimaker_s8_cc_plus04.inst.cfg | 17 + resources/variants/ultimaker_s8_dd04.inst.cfg | 17 + 44 files changed, 1323 insertions(+) create mode 100644 resources/definitions/ultimaker_s8.def.json create mode 100644 resources/extruders/ultimaker_s8_extruder_left.def.json create mode 100644 resources/extruders/ultimaker_s8_extruder_right.def.json create mode 100644 resources/images/UltimakerS8backplate.png create mode 100644 resources/intent/ultimaker_s8/um_s8_aa_plus_0.4_abs_0.2mm_engineering.inst.cfg create mode 100644 resources/intent/ultimaker_s8/um_s8_aa_plus_0.4_cpe_0.2mm_engineering.inst.cfg create mode 100644 resources/intent/ultimaker_s8/um_s8_aa_plus_0.4_nylon_0.2mm_engineering.inst.cfg create mode 100644 resources/intent/ultimaker_s8/um_s8_aa_plus_0.4_petg_0.2mm_engineering.inst.cfg create mode 100644 resources/intent/ultimaker_s8/um_s8_aa_plus_0.4_pla_0.2mm_engineering.inst.cfg create mode 100644 resources/intent/ultimaker_s8/um_s8_aa_plus_0.4_tough-pla_0.2mm_engineering.inst.cfg create mode 100644 resources/intent/ultimaker_s8/um_s8_cc_plus_0.4_cpe-plus_0.2mm_engineering.inst.cfg create mode 100644 resources/intent/ultimaker_s8/um_s8_cc_plus_0.4_pc_0.2mm_engineering.inst.cfg create mode 100644 resources/intent/ultimaker_s8/um_s8_cc_plus_0.4_petcf_0.2mm_engineering.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_abs_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_cpe_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_nylon_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_petg_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_pla_0.1mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_pla_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_pp_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_tough-pla_0.1mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_tough-pla_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_tpu_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.15mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.1mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.3mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.15mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.1mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.3mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_cpe-plus_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_pc_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_petcf_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_global_Draft_Quality.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_global_Fast_Quality.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_global_High_Quality.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_global_Normal_Quality.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_global_Superdraft_Quality.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_global_Verydraft_Quality.inst.cfg create mode 100644 resources/variants/ultimaker_s8_aa_plus04.inst.cfg create mode 100644 resources/variants/ultimaker_s8_bb04.inst.cfg create mode 100644 resources/variants/ultimaker_s8_cc_plus04.inst.cfg create mode 100644 resources/variants/ultimaker_s8_dd04.inst.cfg diff --git a/resources/definitions/ultimaker_s8.def.json b/resources/definitions/ultimaker_s8.def.json new file mode 100644 index 0000000000..2dbf2073d2 --- /dev/null +++ b/resources/definitions/ultimaker_s8.def.json @@ -0,0 +1,406 @@ +{ + "version": 2, + "name": "Ultimaker S8", + "inherits": "ultimaker_s7", + "metadata": + { + "visible": true, + "author": "Ultimaker", + "manufacturer": "Ultimaker B.V.", + "file_formats": "application/x-ufp;text/x-gcode", + "platform": "ultimaker_s7_platform.obj", + "bom_numbers": [ + 10600 + ], + "firmware_update_info": + { + "check_urls": [ "https://software.ultimaker.com/releases/firmware/5078167/stable/um-update.swu.version" ], + "id": 5078167, + "update_url": "https://ultimaker.com/firmware?utm_source=cura&utm_medium=software&utm_campaign=fw-update" + }, + "first_start_actions": [ "DiscoverUM3Action" ], + "has_machine_quality": true, + "has_materials": true, + "has_variants": true, + "machine_extruder_trains": + { + "0": "ultimaker_s8_extruder_left", + "1": "ultimaker_s8_extruder_right" + }, + "nozzle_offsetting_for_disallowed_areas": false, + "platform_offset": [ + 0, + 0, + 0 + ], + "platform_texture": "UltimakerS8backplate.png", + "preferred_material": "ultimaker_pla_blue", + "preferred_quality_type": "draft", + "preferred_variant_name": "AA+ 0.4", + "quality_definition": "ultimaker_s8", + "supported_actions": [ "DiscoverUM3Action" ], + "supports_material_export": true, + "supports_network_connection": true, + "supports_usb_connection": false, + "variants_name": "Print Core", + "variants_name_has_translation": true, + "weight": -2 + }, + "overrides": + { + "acceleration_infill": { "value": "acceleration_print" }, + "acceleration_layer_0": { "value": 2000 }, + "acceleration_prime_tower": { "value": "acceleration_print" }, + "acceleration_print": { "value": 20000 }, + "acceleration_print_layer_0": { "value": "acceleration_layer_0" }, + "acceleration_roofing": { "value": "acceleration_wall_0" }, + "acceleration_skirt_brim": { "value": "acceleration_layer_0" }, + "acceleration_support": { "value": "acceleration_print" }, + "acceleration_support_bottom": { "value": "acceleration_support_interface" }, + "acceleration_support_infill": { "value": "acceleration_support" }, + "acceleration_support_interface": { "value": "acceleration_support" }, + "acceleration_support_roof": { "value": "acceleration_support_interface" }, + "acceleration_topbottom": { "value": "acceleration_print" }, + "acceleration_travel": { "value": 10000 }, + "acceleration_travel_enabled": { "value": true }, + "acceleration_travel_layer_0": { "value": "acceleration_layer_0" }, + "acceleration_wall": { "value": "acceleration_print/8" }, + "acceleration_wall_0": { "value": "acceleration_wall" }, + "acceleration_wall_0_roofing": { "value": "acceleration_wall_0" }, + "acceleration_wall_x": { "value": "acceleration_print" }, + "acceleration_wall_x_roofing": { "value": "acceleration_wall" }, + "adhesion_type": { "value": "'skirt'" }, + "bottom_thickness": { "value": "3*layer_height if top_layers==4 else top_bottom_thickness" }, + "bridge_skin_material_flow": { "value": 200 }, + "bridge_skin_speed": + { + "unit": "mm/s", + "value": "bridge_wall_speed" + }, + "bridge_sparse_infill_max_density": { "value": 50 }, + "bridge_wall_material_flow": { "value": "bridge_skin_material_flow" }, + "bridge_wall_min_length": { "value": 10 }, + "bridge_wall_speed": + { + "unit": "mm/s", + "value": 50 + }, + "cool_min_layer_time": { "value": 5 }, + "cool_min_layer_time_overhang": { "value": 9 }, + "cool_min_layer_time_overhang_min_segment_length": { "value": 2 }, + "cool_min_speed": { "value": 6 }, + "cool_min_temperature": { "value": "material_print_temperature-15" }, + "default_material_print_temperature": { "maximum_value_warning": 320 }, + "extra_infill_lines_to_support_skins": { "value": "'walls_and_lines'" }, + "gradual_flow_enabled": { "value": false }, + "hole_xy_offset": { "value": 0.075 }, + "infill_overlap": { "value": 10 }, + "infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'grid'" }, + "infill_sparse_density": { "value": 15 }, + "infill_wall_line_count": { "value": "1 if infill_sparse_density > 80 else 0" }, + "initial_bottom_layers": { "value": 2 }, + "jerk_infill": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_print" + }, + "jerk_layer_0": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_print/2" + }, + "jerk_prime_tower": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_print" + }, + "jerk_print": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "10000" + }, + "jerk_print_layer_0": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_layer_0" + }, + "jerk_roofing": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_wall_0" + }, + "jerk_skirt_brim": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_layer_0" + }, + "jerk_support": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_print" + }, + "jerk_support_bottom": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_support_interface" + }, + "jerk_support_infill": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_support" + }, + "jerk_support_interface": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_support" + }, + "jerk_support_roof": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_support_interface" + }, + "jerk_topbottom": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_print" + }, + "jerk_travel": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": 10000 + }, + "jerk_travel_enabled": { "value": true }, + "jerk_travel_layer_0": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_travel" + }, + "jerk_wall": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_print/5" + }, + "jerk_wall_0": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_wall" + }, + "jerk_wall_0_roofing": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_wall_0" + }, + "jerk_wall_x": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_print" + }, + "jerk_wall_x_roofing": + { + "maximum_value_warning": "machine_max_jerk_xy / 2", + "unit": "m/s\u00b3", + "value": "jerk_wall_0" + }, + "machine_gcode_flavor": { "default_value": "Cheetah" }, + "machine_max_feedrate_x": { "default_value": 500 }, + "machine_max_feedrate_y": { "default_value": 500 }, + "machine_max_jerk_e": + { + "default_value": 20000, + "unit": "m/s\u00b3", + "value": "20000 if machine_gcode_flavor == 'Cheetah' else 100" + }, + "machine_max_jerk_xy": + { + "default_value": 1000000, + "unit": "m/s\u00b3", + "value": "1000000 if machine_gcode_flavor == 'Cheetah' else 500" + }, + "machine_max_jerk_z": + { + "default_value": 20000, + "unit": "m/s\u00b3", + "value": "20000 if machine_gcode_flavor == 'Cheetah' else 100" + }, + "machine_name": { "default_value": "Ultimaker S8" }, + "machine_nozzle_cool_down_speed": { "default_value": 1.3 }, + "machine_nozzle_heat_up_speed": { "default_value": 0.6 }, + "machine_start_gcode": { "default_value": "M213 U0.1 ;undercut 0.1mm" }, + "material_extrusion_cool_down_speed": { "value": 0 }, + "material_final_print_temperature": { "value": "material_print_temperature - 5" }, + "material_initial_print_temperature": { "value": "material_print_temperature - 5" }, + "material_pressure_advance_factor": + { + "enabled": true, + "value": 0.5 + }, + "material_print_temperature_layer_0": { "maximum_value_warning": 320 }, + "max_flow_acceleration": { "value": 8.0 }, + "max_skin_angle_for_expansion": { "value": 45 }, + "meshfix_maximum_resolution": { "value": 0.4 }, + "min_infill_area": { "default_value": 10 }, + "optimize_wall_printing_order": { "value": false }, + "prime_tower_brim_enable": { "value": true }, + "prime_tower_min_volume": { "value": 10 }, + "retraction_amount": { "value": 6.5 }, + "retraction_combing_avoid_distance": { "value": 1.2 }, + "retraction_combing_max_distance": { "value": 100 }, + "retraction_hop": { "value": 0.2 }, + "retraction_hop_after_extruder_switch_height": { "value": 2 }, + "retraction_hop_enabled": { "value": true }, + "retraction_min_travel": { "value": "5 if support_enable and support_structure=='tree' else line_width * 2" }, + "retraction_prime_speed": { "value": 15 }, + "skin_edge_support_thickness": { "value": 0 }, + "skin_material_flow": { "value": 95 }, + "skin_overlap": { "value": 0 }, + "skin_preshrink": { "value": 0 }, + "skirt_line_count": { "value": 5 }, + "small_skin_on_surface": { "value": false }, + "small_skin_width": { "value": 4 }, + "speed_infill": + { + "maximum_value_warning": 300, + "value": "speed_print" + }, + "speed_ironing": + { + "maximum_value_warning": 300, + "value": 20 + }, + "speed_layer_0": + { + "maximum_value_warning": 300, + "value": "speed_wall" + }, + "speed_prime_tower": + { + "maximum_value_warning": 300, + "value": "speed_wall" + }, + "speed_print": + { + "maximum_value_warning": 300, + "value": 150 + }, + "speed_print_layer_0": + { + "maximum_value_warning": 300, + "value": "speed_layer_0" + }, + "speed_roofing": + { + "maximum_value_warning": 300, + "value": "speed_wall" + }, + "speed_skirt_brim": + { + "maximum_value_warning": 300, + "value": "speed_layer_0" + }, + "speed_support": + { + "maximum_value_warning": 300, + "value": "speed_wall_0" + }, + "speed_support_bottom": + { + "maximum_value_warning": 300, + "value": "speed_support_interface" + }, + "speed_support_infill": + { + "maximum_value_warning": 300, + "value": "speed_support" + }, + "speed_support_interface": + { + "maximum_value_warning": 300, + "value": 50 + }, + "speed_support_roof": + { + "maximum_value_warning": 300, + "value": "speed_support_interface" + }, + "speed_topbottom": + { + "maximum_value_warning": 300, + "value": "speed_print" + }, + "speed_travel": + { + "maximum_value": 500, + "value": 500 + }, + "speed_travel_layer_0": + { + "maximum_value": 500, + "value": 150 + }, + "speed_wall": + { + "maximum_value_warning": 300, + "value": "speed_print*2/3" + }, + "speed_wall_0": + { + "maximum_value_warning": 300, + "value": "speed_wall" + }, + "speed_wall_0_roofing": + { + "maximum_value_warning": 300, + "value": "speed_wall" + }, + "speed_wall_x": + { + "maximum_value_warning": 300, + "value": "speed_print" + }, + "speed_wall_x_roofing": + { + "maximum_value_warning": 300, + "value": "speed_wall" + }, + "support_brim_line_count": { "value": 5 }, + "support_density": { "value": "15 if support_structure == 'tree' else 20" }, + "support_infill_rate": { "value": "80 if gradual_support_infill_steps != 0 else 15" }, + "support_interface_enable": { "value": true }, + "support_pattern": { "value": "'gyroid' if support_structure == 'tree' else 'lines'" }, + "support_structure": { "value": "'normal'" }, + "support_z_distance": { "value": "0.4*material_shrinkage_percentage_z/100.0" }, + "top_bottom_thickness": { "value": "round(4*layer_height, 2)" }, + "travel_avoid_other_parts": { "value": false }, + "wall_0_acceleration": { "value": 1000 }, + "wall_0_deceleration": { "value": 1000 }, + "wall_0_end_speed_ratio": { "value": 100 }, + "wall_0_speed_split_distance": { "value": 0.2 }, + "wall_0_start_speed_ratio": { "value": 100 }, + "wall_0_wipe_dist": { "value": 0 }, + "wall_material_flow": { "value": 95 }, + "wall_overhang_angle": { "value": 45 }, + "wall_x_material_flow": { "value": 100 }, + "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, + "z_seam_position": { "value": "'backright'" }, + "z_seam_type": { "value": "'sharpest_corner'" } + } +} \ No newline at end of file diff --git a/resources/extruders/ultimaker_s8_extruder_left.def.json b/resources/extruders/ultimaker_s8_extruder_left.def.json new file mode 100644 index 0000000000..cd2c34d16f --- /dev/null +++ b/resources/extruders/ultimaker_s8_extruder_left.def.json @@ -0,0 +1,31 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": + { + "machine": "ultimaker_s8", + "position": "0" + }, + "overrides": + { + "extruder_nr": + { + "default_value": 0, + "maximum_value": "1" + }, + "extruder_prime_pos_x": { "default_value": -3 }, + "extruder_prime_pos_y": { "default_value": 6 }, + "extruder_prime_pos_z": { "default_value": 2 }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "default_value": 330 }, + "machine_extruder_end_pos_y": { "default_value": 237 }, + "machine_extruder_start_code": { "value": "\"M214 K{material_pressure_advance_factor} R0.04\"" }, + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "default_value": 330 }, + "machine_extruder_start_pos_y": { "default_value": 237 }, + "machine_nozzle_head_distance": { "default_value": 2.7 }, + "machine_nozzle_offset_x": { "default_value": 0 }, + "machine_nozzle_offset_y": { "default_value": 0 } + } +} \ No newline at end of file diff --git a/resources/extruders/ultimaker_s8_extruder_right.def.json b/resources/extruders/ultimaker_s8_extruder_right.def.json new file mode 100644 index 0000000000..7bab64fa67 --- /dev/null +++ b/resources/extruders/ultimaker_s8_extruder_right.def.json @@ -0,0 +1,31 @@ +{ + "version": 2, + "name": "Extruder 2", + "inherits": "fdmextruder", + "metadata": + { + "machine": "ultimaker_s8", + "position": "1" + }, + "overrides": + { + "extruder_nr": + { + "default_value": 1, + "maximum_value": "1" + }, + "extruder_prime_pos_x": { "default_value": 333 }, + "extruder_prime_pos_y": { "default_value": 6 }, + "extruder_prime_pos_z": { "default_value": 2 }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "default_value": 330 }, + "machine_extruder_end_pos_y": { "default_value": 219 }, + "machine_extruder_start_code": { "value": "\"M214 K{material_pressure_advance_factor} R0.04\"" }, + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "default_value": 330 }, + "machine_extruder_start_pos_y": { "default_value": 219 }, + "machine_nozzle_head_distance": { "default_value": 4.2 }, + "machine_nozzle_offset_x": { "default_value": 22 }, + "machine_nozzle_offset_y": { "default_value": 0 } + } +} \ No newline at end of file diff --git a/resources/images/UltimakerS8backplate.png b/resources/images/UltimakerS8backplate.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a4488a739ad913f62d080249871cf60e5b6916 GIT binary patch literal 24586 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 80 else 'gyroid' +speed_print = 100 +speed_wall_0 = =speed_print +support_interface_enable = True + diff --git a/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_nylon_0.2mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_nylon_0.2mm.inst.cfg new file mode 100644 index 0000000000..ccc625a05d --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_nylon_0.2mm.inst.cfg @@ -0,0 +1,20 @@ +[general] +definition = ultimaker_s8 +name = Fast +version = 4 + +[metadata] +material = generic_nylon +quality_type = draft +setting_version = 24 +type = quality +variant = AA+ 0.4 +weight = -2 + +[values] +cool_min_layer_time = 6 +cool_min_layer_time_fan_speed_max = 11 +material_print_temperature = =default_material_print_temperature + 5 +raft_airgap = 0.4 +retraction_prime_speed = 15 + diff --git a/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_petg_0.2mm.inst.cfg new file mode 100644 index 0000000000..2698357d08 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_petg_0.2mm.inst.cfg @@ -0,0 +1,17 @@ +[general] +definition = ultimaker_s8 +name = Fast +version = 4 + +[metadata] +material = generic_petg +quality_type = draft +setting_version = 24 +type = quality +variant = AA+ 0.4 +weight = -2 + +[values] +cool_min_layer_time = 4 +material_print_temperature = =default_material_print_temperature + 5 + diff --git a/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_pla_0.1mm.inst.cfg new file mode 100644 index 0000000000..b6013b8316 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_pla_0.1mm.inst.cfg @@ -0,0 +1,17 @@ +[general] +definition = ultimaker_s8 +name = Fine +version = 4 + +[metadata] +material = generic_pla +quality_type = normal +setting_version = 24 +type = quality +variant = AA+ 0.4 +weight = 0 + +[values] +retraction_prime_speed = =retraction_speed +support_structure = tree + diff --git a/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_pla_0.2mm.inst.cfg new file mode 100644 index 0000000000..e9c3b1fb98 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_pla_0.2mm.inst.cfg @@ -0,0 +1,17 @@ +[general] +definition = ultimaker_s8 +name = Fast +version = 4 + +[metadata] +material = generic_pla +quality_type = draft +setting_version = 24 +type = quality +variant = AA+ 0.4 +weight = -2 + +[values] +retraction_prime_speed = =retraction_speed +support_structure = tree + diff --git a/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_pp_0.2mm.inst.cfg new file mode 100644 index 0000000000..817dcb00f4 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_pp_0.2mm.inst.cfg @@ -0,0 +1,45 @@ +[general] +definition = ultimaker_s8 +name = Fast +version = 4 + +[metadata] +material = generic_pp +quality_type = draft +setting_version = 24 +type = quality +variant = AA+ 0.4 +weight = -2 + +[values] +brim_width = 20 +infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' +infill_wipe_dist = 0.1 +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 10 +material_print_temperature = =default_material_print_temperature + 8 +multiple_mesh_overlap = 0 +prime_tower_enable = False +prime_tower_size = 16 +prime_tower_wipe_enabled = True +retraction_count_max = 15 +retraction_extra_prime_amount = 0.8 +retraction_hop = 2 +retraction_hop_only_when_collides = True +speed_print = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 25) +speed_wall = =math.ceil(speed_print * 25 / 25) +speed_wall_0 = =math.ceil(speed_wall * 25 / 25) +support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = 0.3 +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +wall_0_inset = 0 + diff --git a/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_tough-pla_0.1mm.inst.cfg new file mode 100644 index 0000000000..faefa8932d --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_tough-pla_0.1mm.inst.cfg @@ -0,0 +1,17 @@ +[general] +definition = ultimaker_s8 +name = Fine +version = 4 + +[metadata] +material = generic_tough_pla +quality_type = normal +setting_version = 24 +type = quality +variant = AA+ 0.4 +weight = 0 + +[values] +retraction_prime_speed = =retraction_speed +support_structure = tree + diff --git a/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_tough-pla_0.2mm.inst.cfg new file mode 100644 index 0000000000..31da96735d --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_tough-pla_0.2mm.inst.cfg @@ -0,0 +1,17 @@ +[general] +definition = ultimaker_s8 +name = Fast +version = 4 + +[metadata] +material = generic_tough_pla +quality_type = draft +setting_version = 24 +type = quality +variant = AA+ 0.4 +weight = -2 + +[values] +retraction_prime_speed = =retraction_speed +support_structure = tree + diff --git a/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_tpu_0.2mm.inst.cfg new file mode 100644 index 0000000000..bc7e0a4548 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_aa_plus_0.4_tpu_0.2mm.inst.cfg @@ -0,0 +1,53 @@ +[general] +definition = ultimaker_s8 +name = Fast +version = 4 + +[metadata] +material = generic_tpu +quality_type = draft +setting_version = 24 +type = quality +variant = AA+ 0.4 +weight = -2 + +[values] +bridge_skin_material_flow = 200 +bridge_skin_speed = =bridge_wall_speed +bridge_sparse_infill_max_density = 50 +bridge_wall_material_flow = =bridge_skin_material_flow +bridge_wall_speed = 10 +brim_width = 8.75 +gradual_infill_step_height = =5 * layer_height +infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' +infill_sparse_density = 10 +infill_wipe_dist = 0.1 +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.5 +machine_nozzle_heat_up_speed = 2.5 +material_final_print_temperature = =material_print_temperature - 10 +material_flow = 106 +material_initial_print_temperature = =material_print_temperature - 10 +multiple_mesh_overlap = 0 +prime_tower_wipe_enabled = True +retraction_count_max = 15 +retraction_extra_prime_amount = 0.8 +retraction_hop_only_when_collides = True +retraction_prime_speed = 15 +skin_line_width = =round(line_width / 0.8, 2) +speed_print = 30 +speed_topbottom = =math.ceil(speed_print * 0.8) +speed_wall = =math.ceil(speed_print * 25 / 25) +speed_wall_0 = =math.ceil(speed_wall * 25 / 25) +support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +top_bottom_thickness = =layer_height * 6 +travel_avoid_distance = 1.5 +wall_0_inset = 0 + diff --git a/resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.15mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.15mm.inst.cfg new file mode 100644 index 0000000000..b21e40a210 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.15mm.inst.cfg @@ -0,0 +1,32 @@ +[general] +definition = ultimaker_s8 +name = Normal +version = 4 + +[metadata] +material = generic_bam +quality_type = fast +setting_version = 24 +type = quality +variant = BB 0.4 +weight = -1 + +[values] +brim_replaces_support = False +build_volume_temperature = =50 if extruders_enabled_count > 1 else 24 +default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +speed_print = 80 +speed_topbottom = =math.ceil(speed_print * 30 / 80) +speed_wall = =math.ceil(speed_print * 40 / 80) +speed_wall_0 = =math.ceil(speed_wall * 30 / 40) +support_angle = 45 +support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_infill_sparse_thickness = =2 * layer_height +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_enable = True +support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 1) * layer_height +top_bottom_thickness = 1 + diff --git a/resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.1mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.1mm.inst.cfg new file mode 100644 index 0000000000..aab9405379 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.1mm.inst.cfg @@ -0,0 +1,28 @@ +[general] +definition = ultimaker_s8 +name = Fine +version = 4 + +[metadata] +material = generic_bam +quality_type = normal +setting_version = 24 +type = quality +variant = BB 0.4 +weight = 0 + +[values] +brim_replaces_support = False +build_volume_temperature = =50 if extruders_enabled_count > 1 else 24 +default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +support_angle = 45 +support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_infill_sparse_thickness = =2 * layer_height +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_enable = True +support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 1) * layer_height +top_bottom_thickness = 1 + diff --git a/resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.2mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.2mm.inst.cfg new file mode 100644 index 0000000000..2dabc84da0 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.2mm.inst.cfg @@ -0,0 +1,31 @@ +[general] +definition = ultimaker_s8 +name = Fast +version = 4 + +[metadata] +material = generic_bam +quality_type = draft +setting_version = 24 +type = quality +variant = BB 0.4 +weight = -2 + +[values] +brim_replaces_support = False +build_volume_temperature = =50 if extruders_enabled_count > 1 else 24 +default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature + 5 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +speed_topbottom = =math.ceil(speed_print * 35 / 70) +speed_wall = =math.ceil(speed_print * 50 / 70) +speed_wall_0 = =math.ceil(speed_wall * 35 / 50) +support_angle = 45 +support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_enable = True +support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +top_bottom_thickness = 1 + diff --git a/resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.3mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.3mm.inst.cfg new file mode 100644 index 0000000000..faca26af70 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_bb0.4_bam_0.3mm.inst.cfg @@ -0,0 +1,31 @@ +[general] +definition = ultimaker_s8 +name = Extra Fast +version = 4 + +[metadata] +material = generic_bam +quality_type = verydraft +setting_version = 24 +type = quality +variant = BB 0.4 +weight = -3 + +[values] +brim_replaces_support = False +build_volume_temperature = =50 if extruders_enabled_count > 1 else 24 +default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature + 5 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +speed_topbottom = =math.ceil(speed_print * 35 / 70) +speed_wall = =math.ceil(speed_print * 50 / 70) +speed_wall_0 = =math.ceil(speed_wall * 35 / 50) +support_angle = 45 +support_bottom_distance = 0.3 +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_enable = True +support_top_distance = 0.3 +top_bottom_thickness = 1 + diff --git a/resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.15mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.15mm.inst.cfg new file mode 100644 index 0000000000..11018f2d0d --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.15mm.inst.cfg @@ -0,0 +1,29 @@ +[general] +definition = ultimaker_s8 +name = Normal +version = 4 + +[metadata] +material = generic_pva +quality_type = fast +setting_version = 24 +type = quality +variant = BB 0.4 +weight = -1 + +[values] +acceleration_prime_tower = 1500 +brim_replaces_support = False +build_volume_temperature = =70 if extruders_enabled_count > 1 else 35 +cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) +default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60 +initial_layer_line_width_factor = 150 +minimum_support_area = 4 +retraction_count_max = 5 +skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) +speed_prime_tower = 25 +speed_support = 50 +support_infill_sparse_thickness = =2 * layer_height +support_interface_enable = True +support_z_distance = 0 + diff --git a/resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.1mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.1mm.inst.cfg new file mode 100644 index 0000000000..04288783c0 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.1mm.inst.cfg @@ -0,0 +1,30 @@ +[general] +definition = ultimaker_s8 +name = Fine +version = 4 + +[metadata] +material = generic_pva +quality_type = normal +setting_version = 24 +type = quality +variant = BB 0.4 +weight = 0 + +[values] +acceleration_prime_tower = 1500 +brim_replaces_support = False +build_volume_temperature = =70 if extruders_enabled_count > 1 else 35 +cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) +default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60 +initial_layer_line_width_factor = 150 +material_print_temperature = =default_material_print_temperature - 5 +minimum_support_area = 4 +retraction_count_max = 5 +skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) +speed_prime_tower = 25 +speed_support = 50 +support_infill_sparse_thickness = =2 * layer_height +support_interface_enable = True +support_z_distance = 0 + diff --git a/resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.2mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.2mm.inst.cfg new file mode 100644 index 0000000000..b46377615c --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.2mm.inst.cfg @@ -0,0 +1,29 @@ +[general] +definition = ultimaker_s8 +name = Fast +version = 4 + +[metadata] +material = generic_pva +quality_type = draft +setting_version = 24 +type = quality +variant = BB 0.4 +weight = -2 + +[values] +acceleration_prime_tower = 1500 +brim_replaces_support = False +build_volume_temperature = =70 if extruders_enabled_count > 1 else 35 +cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) +default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60 +initial_layer_line_width_factor = 150 +material_print_temperature = =default_material_print_temperature + 5 +minimum_support_area = 4 +retraction_count_max = 5 +skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) +speed_prime_tower = 25 +speed_support = 50 +support_interface_enable = True +support_z_distance = 0 + diff --git a/resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.3mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.3mm.inst.cfg new file mode 100644 index 0000000000..aeee8fce19 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_bb0.4_pva_0.3mm.inst.cfg @@ -0,0 +1,30 @@ +[general] +definition = ultimaker_s8 +name = Extra Fast +version = 4 + +[metadata] +material = generic_pva +quality_type = verydraft +setting_version = 24 +type = quality +variant = BB 0.4 +weight = -3 + +[values] +acceleration_prime_tower = 1500 +brim_replaces_support = False +build_volume_temperature = =70 if extruders_enabled_count > 1 else 35 +cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr)) +default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60 +initial_layer_line_width_factor = 150 +material_print_temperature = =default_material_print_temperature - 5 +minimum_support_area = 4 +retraction_count_max = 5 +skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width)) +speed_prime_tower = 25 +speed_support = 50 +support_infill_sparse_thickness = 0.3 +support_interface_enable = True +support_z_distance = 0 + diff --git a/resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_cpe-plus_0.2mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_cpe-plus_0.2mm.inst.cfg new file mode 100644 index 0000000000..527d67fe42 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_cpe-plus_0.2mm.inst.cfg @@ -0,0 +1,15 @@ +[general] +definition = ultimaker_s8 +name = Fast +version = 4 + +[metadata] +material = generic_cpe_plus +quality_type = draft +setting_version = 24 +type = quality +variant = CC+ 0.4 +weight = -2 + +[values] + diff --git a/resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_pc_0.2mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_pc_0.2mm.inst.cfg new file mode 100644 index 0000000000..f7b6ee2dd3 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_pc_0.2mm.inst.cfg @@ -0,0 +1,19 @@ +[general] +definition = ultimaker_s8 +name = Fast +version = 4 + +[metadata] +material = generic_pc +quality_type = draft +setting_version = 24 +type = quality +variant = CC+ 0.4 +weight = -2 + +[values] +cool_min_layer_time = 6 +cool_min_layer_time_fan_speed_max = 12 +retraction_amount = 8 +retraction_prime_speed = 15 + diff --git a/resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_petcf_0.2mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_petcf_0.2mm.inst.cfg new file mode 100644 index 0000000000..6c5d6eb0ee --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_petcf_0.2mm.inst.cfg @@ -0,0 +1,15 @@ +[general] +definition = ultimaker_s8 +name = Fast +version = 4 + +[metadata] +material = generic_petcf +quality_type = draft +setting_version = 24 +type = quality +variant = CC+ 0.4 +weight = -2 + +[values] + diff --git a/resources/quality/ultimaker_s8/um_s8_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker_s8/um_s8_global_Draft_Quality.inst.cfg new file mode 100644 index 0000000000..26b5eb23b0 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_global_Draft_Quality.inst.cfg @@ -0,0 +1,15 @@ +[general] +definition = ultimaker_s8 +name = Fast +version = 4 + +[metadata] +global_quality = True +quality_type = draft +setting_version = 24 +type = quality +weight = -2 + +[values] +layer_height = =round(0.2 * material_shrinkage_percentage_z / 100, 5) + diff --git a/resources/quality/ultimaker_s8/um_s8_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker_s8/um_s8_global_Fast_Quality.inst.cfg new file mode 100644 index 0000000000..8a5c2a9bc8 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_global_Fast_Quality.inst.cfg @@ -0,0 +1,15 @@ +[general] +definition = ultimaker_s8 +name = Normal +version = 4 + +[metadata] +global_quality = True +quality_type = fast +setting_version = 24 +type = quality +weight = -1 + +[values] +layer_height = =round(0.15 * material_shrinkage_percentage_z / 100, 5) + diff --git a/resources/quality/ultimaker_s8/um_s8_global_High_Quality.inst.cfg b/resources/quality/ultimaker_s8/um_s8_global_High_Quality.inst.cfg new file mode 100644 index 0000000000..97fa321038 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_global_High_Quality.inst.cfg @@ -0,0 +1,15 @@ +[general] +definition = ultimaker_s8 +name = Extra Fine +version = 4 + +[metadata] +global_quality = True +quality_type = high +setting_version = 24 +type = quality +weight = 1 + +[values] +layer_height = =round(0.06 * material_shrinkage_percentage_z / 100, 5) + diff --git a/resources/quality/ultimaker_s8/um_s8_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s8/um_s8_global_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..7caa0deaf3 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_global_Normal_Quality.inst.cfg @@ -0,0 +1,15 @@ +[general] +definition = ultimaker_s8 +name = Fine +version = 4 + +[metadata] +global_quality = True +quality_type = normal +setting_version = 24 +type = quality +weight = 0 + +[values] +layer_height = =round(0.1 * material_shrinkage_percentage_z / 100, 5) + diff --git a/resources/quality/ultimaker_s8/um_s8_global_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker_s8/um_s8_global_Superdraft_Quality.inst.cfg new file mode 100644 index 0000000000..b104169fb0 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_global_Superdraft_Quality.inst.cfg @@ -0,0 +1,15 @@ +[general] +definition = ultimaker_s8 +name = Sprint +version = 4 + +[metadata] +global_quality = True +quality_type = superdraft +setting_version = 24 +type = quality +weight = -4 + +[values] +layer_height = =round(0.4 * material_shrinkage_percentage_z / 100, 5) + diff --git a/resources/quality/ultimaker_s8/um_s8_global_Verydraft_Quality.inst.cfg b/resources/quality/ultimaker_s8/um_s8_global_Verydraft_Quality.inst.cfg new file mode 100644 index 0000000000..4729b267c1 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_global_Verydraft_Quality.inst.cfg @@ -0,0 +1,15 @@ +[general] +definition = ultimaker_s8 +name = Extra Fast +version = 4 + +[metadata] +global_quality = True +quality_type = verydraft +setting_version = 24 +type = quality +weight = -3 + +[values] +layer_height = =round(0.3 * material_shrinkage_percentage_z / 100, 5) + diff --git a/resources/variants/ultimaker_s8_aa_plus04.inst.cfg b/resources/variants/ultimaker_s8_aa_plus04.inst.cfg new file mode 100644 index 0000000000..59e1f8963d --- /dev/null +++ b/resources/variants/ultimaker_s8_aa_plus04.inst.cfg @@ -0,0 +1,17 @@ +[general] +definition = ultimaker_s8 +name = AA+ 0.4 +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 24 +type = variant + +[values] +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_id = AA+ 0.4 +machine_nozzle_size = 0.4 +machine_nozzle_tip_outer_diameter = 1.2 +retraction_prime_speed = =retraction_speed + diff --git a/resources/variants/ultimaker_s8_bb04.inst.cfg b/resources/variants/ultimaker_s8_bb04.inst.cfg new file mode 100644 index 0000000000..ba5ca090b6 --- /dev/null +++ b/resources/variants/ultimaker_s8_bb04.inst.cfg @@ -0,0 +1,19 @@ +[general] +definition = ultimaker_s8 +name = BB 0.4 +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 24 +type = variant + +[values] +machine_nozzle_heat_up_speed = 1.5 +machine_nozzle_id = BB 0.4 +machine_nozzle_tip_outer_diameter = 1.0 +retraction_amount = 4.5 +support_bottom_height = =layer_height * 2 +support_interface_enable = True +switch_extruder_retraction_amount = 12 + diff --git a/resources/variants/ultimaker_s8_cc_plus04.inst.cfg b/resources/variants/ultimaker_s8_cc_plus04.inst.cfg new file mode 100644 index 0000000000..caefbaf370 --- /dev/null +++ b/resources/variants/ultimaker_s8_cc_plus04.inst.cfg @@ -0,0 +1,17 @@ +[general] +definition = ultimaker_s8 +name = CC+ 0.4 +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 24 +type = variant + +[values] +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_id = CC+ 0.4 +machine_nozzle_size = 0.4 +machine_nozzle_tip_outer_diameter = 1.2 +retraction_prime_speed = =retraction_speed + diff --git a/resources/variants/ultimaker_s8_dd04.inst.cfg b/resources/variants/ultimaker_s8_dd04.inst.cfg new file mode 100644 index 0000000000..e71b18b81d --- /dev/null +++ b/resources/variants/ultimaker_s8_dd04.inst.cfg @@ -0,0 +1,17 @@ +[general] +definition = ultimaker_s8 +name = DD 0.4 +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 24 +type = variant + +[values] +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_id = DD 0.4 +machine_nozzle_size = 0.4 +machine_nozzle_tip_outer_diameter = 1.2 +retraction_prime_speed = =retraction_speed + From aa52ae24ae83133d0fd7f14b024d36eeba174fdc Mon Sep 17 00:00:00 2001 From: Frederic Meeuwissen <13856291+Frederic98@users.noreply.github.com> Date: Wed, 12 Feb 2025 16:16:02 +0100 Subject: [PATCH 19/21] [PP-535] Publish Nylon CF Slide profiles --- ..._nylon-cf-slide_0.2mm_engineering.inst.cfg | 18 ++++++++++++++ ...cc0.4_nylon-cf-slide_0.2mm_strong.inst.cfg | 19 +++++++++++++++ ..._nylon-cf-slide_0.2mm_engineering.inst.cfg | 18 ++++++++++++++ ...cc0.6_nylon-cf-slide_0.2mm_strong.inst.cfg | 19 +++++++++++++++ ..._nylon-cf-slide_0.2mm_engineering.inst.cfg | 18 ++++++++++++++ ...ht0.6_nylon-cf-slide_0.2mm_strong.inst.cfg | 19 +++++++++++++++ ..._nylon-cf-slide_0.2mm_engineering.inst.cfg | 24 +++++++++++++++++++ ..._nylon-cf-slide_0.2mm_engineering.inst.cfg | 24 +++++++++++++++++++ ..._nylon-cf-slide_0.2mm_engineering.inst.cfg | 24 +++++++++++++++++++ ..._nylon-cf-slide_0.2mm_engineering.inst.cfg | 24 +++++++++++++++++++ ..._nylon-cf-slide_0.2mm_engineering.inst.cfg | 18 ++++++++++++++ .../um_f4_cc0.4_nylon-cf-slide_0.2mm.inst.cfg | 20 ++++++++++++++++ .../um_f4_cc0.6_nylon-cf-slide_0.2mm.inst.cfg | 20 ++++++++++++++++ .../um_f4_ht0.6_nylon-cf-slide_0.2mm.inst.cfg | 20 ++++++++++++++++ .../um_s3_cc0.4_nylon-cf-slide_0.2mm.inst.cfg | 18 ++++++++++++++ .../um_s3_cc0.6_nylon-cf-slide_0.2mm.inst.cfg | 18 ++++++++++++++ .../um_s5_cc0.4_nylon-cf-slide_0.2mm.inst.cfg | 18 ++++++++++++++ .../um_s5_cc0.6_nylon-cf-slide_0.2mm.inst.cfg | 18 ++++++++++++++ ..._cc_plus_0.4_nylon-cf-slide_0.2mm.inst.cfg | 16 +++++++++++++ 19 files changed, 373 insertions(+) create mode 100644 resources/intent/ultimaker_factor4/um_f4_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg create mode 100644 resources/intent/ultimaker_factor4/um_f4_cc0.4_nylon-cf-slide_0.2mm_strong.inst.cfg create mode 100644 resources/intent/ultimaker_factor4/um_f4_cc0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg create mode 100644 resources/intent/ultimaker_factor4/um_f4_cc0.6_nylon-cf-slide_0.2mm_strong.inst.cfg create mode 100644 resources/intent/ultimaker_factor4/um_f4_ht0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg create mode 100644 resources/intent/ultimaker_factor4/um_f4_ht0.6_nylon-cf-slide_0.2mm_strong.inst.cfg create mode 100644 resources/intent/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg create mode 100644 resources/intent/ultimaker_s3/um_s3_cc0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg create mode 100644 resources/intent/ultimaker_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg create mode 100644 resources/intent/ultimaker_s5/um_s5_cc0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg create mode 100644 resources/intent/ultimaker_s8/um_s8_cc_plus_0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg create mode 100644 resources/quality/ultimaker_factor4/um_f4_cc0.4_nylon-cf-slide_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_factor4/um_f4_cc0.6_nylon-cf-slide_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_factor4/um_f4_ht0.6_nylon-cf-slide_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s3/um_s3_cc0.6_nylon-cf-slide_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s5/um_s5_cc0.6_nylon-cf-slide_0.2mm.inst.cfg create mode 100644 resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_nylon-cf-slide_0.2mm.inst.cfg diff --git a/resources/intent/ultimaker_factor4/um_f4_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg b/resources/intent/ultimaker_factor4/um_f4_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg new file mode 100644 index 0000000000..62554df3da --- /dev/null +++ b/resources/intent/ultimaker_factor4/um_f4_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_factor4 +name = Accurate +version = 4 + +[metadata] +intent_category = engineering +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = intent +variant = CC 0.4 + +[values] +jerk_print = 30 +speed_print = 80 +wall_thickness = =line_width * 3 + diff --git a/resources/intent/ultimaker_factor4/um_f4_cc0.4_nylon-cf-slide_0.2mm_strong.inst.cfg b/resources/intent/ultimaker_factor4/um_f4_cc0.4_nylon-cf-slide_0.2mm_strong.inst.cfg new file mode 100644 index 0000000000..9ba6b62e09 --- /dev/null +++ b/resources/intent/ultimaker_factor4/um_f4_cc0.4_nylon-cf-slide_0.2mm_strong.inst.cfg @@ -0,0 +1,19 @@ +[general] +definition = ultimaker_factor4 +name = Strong +version = 4 + +[metadata] +intent_category = strong +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = intent +variant = CC 0.4 + +[values] +jerk_print = 30 +material_print_temperature = =default_material_print_temperature + 20 +speed_print = 80 +wall_thickness = =line_width * 4 + diff --git a/resources/intent/ultimaker_factor4/um_f4_cc0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg b/resources/intent/ultimaker_factor4/um_f4_cc0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg new file mode 100644 index 0000000000..219381b237 --- /dev/null +++ b/resources/intent/ultimaker_factor4/um_f4_cc0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_factor4 +name = Accurate +version = 4 + +[metadata] +intent_category = engineering +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = intent +variant = CC 0.6 + +[values] +jerk_print = 30 +speed_print = 80 +wall_thickness = =line_width * 3 + diff --git a/resources/intent/ultimaker_factor4/um_f4_cc0.6_nylon-cf-slide_0.2mm_strong.inst.cfg b/resources/intent/ultimaker_factor4/um_f4_cc0.6_nylon-cf-slide_0.2mm_strong.inst.cfg new file mode 100644 index 0000000000..9acf025ee7 --- /dev/null +++ b/resources/intent/ultimaker_factor4/um_f4_cc0.6_nylon-cf-slide_0.2mm_strong.inst.cfg @@ -0,0 +1,19 @@ +[general] +definition = ultimaker_factor4 +name = Strong +version = 4 + +[metadata] +intent_category = strong +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = intent +variant = CC 0.6 + +[values] +jerk_print = 30 +material_print_temperature = =default_material_print_temperature + 20 +speed_print = 80 +wall_thickness = =line_width * 4 + diff --git a/resources/intent/ultimaker_factor4/um_f4_ht0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg b/resources/intent/ultimaker_factor4/um_f4_ht0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg new file mode 100644 index 0000000000..4ea4831a43 --- /dev/null +++ b/resources/intent/ultimaker_factor4/um_f4_ht0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_factor4 +name = Accurate +version = 4 + +[metadata] +intent_category = engineering +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = intent +variant = HT 0.6 + +[values] +jerk_print = 30 +speed_print = 70 +wall_thickness = =line_width * 3 + diff --git a/resources/intent/ultimaker_factor4/um_f4_ht0.6_nylon-cf-slide_0.2mm_strong.inst.cfg b/resources/intent/ultimaker_factor4/um_f4_ht0.6_nylon-cf-slide_0.2mm_strong.inst.cfg new file mode 100644 index 0000000000..486c1ad508 --- /dev/null +++ b/resources/intent/ultimaker_factor4/um_f4_ht0.6_nylon-cf-slide_0.2mm_strong.inst.cfg @@ -0,0 +1,19 @@ +[general] +definition = ultimaker_factor4 +name = Strong +version = 4 + +[metadata] +intent_category = strong +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = intent +variant = HT 0.6 + +[values] +jerk_print = 30 +material_print_temperature = =default_material_print_temperature + 20 +speed_print = 80 +wall_thickness = =line_width * 4 + diff --git a/resources/intent/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg b/resources/intent/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg new file mode 100644 index 0000000000..2d373348d5 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg @@ -0,0 +1,24 @@ +[general] +definition = ultimaker_s3 +name = Accurate +version = 4 + +[metadata] +intent_category = engineering +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = intent +variant = CC 0.4 + +[values] +jerk_print = 30 +speed_infill = =speed_print +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_cc0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg b/resources/intent/ultimaker_s3/um_s3_cc0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg new file mode 100644 index 0000000000..ae8ac6f893 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_cc0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg @@ -0,0 +1,24 @@ +[general] +definition = ultimaker_s3 +name = Accurate +version = 4 + +[metadata] +intent_category = engineering +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = intent +variant = CC 0.6 + +[values] +jerk_print = 30 +speed_infill = =speed_print +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_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg b/resources/intent/ultimaker_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg new file mode 100644 index 0000000000..049616558d --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg @@ -0,0 +1,24 @@ +[general] +definition = ultimaker_s5 +name = Accurate +version = 4 + +[metadata] +intent_category = engineering +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = intent +variant = CC 0.4 + +[values] +jerk_print = 30 +speed_infill = =speed_print +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_s5/um_s5_cc0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg b/resources/intent/ultimaker_s5/um_s5_cc0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg new file mode 100644 index 0000000000..688a5d8f51 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_cc0.6_nylon-cf-slide_0.2mm_engineering.inst.cfg @@ -0,0 +1,24 @@ +[general] +definition = ultimaker_s5 +name = Accurate +version = 4 + +[metadata] +intent_category = engineering +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = intent +variant = CC 0.6 + +[values] +jerk_print = 30 +speed_infill = =speed_print +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_s8/um_s8_cc_plus_0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg b/resources/intent/ultimaker_s8/um_s8_cc_plus_0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg new file mode 100644 index 0000000000..515499980f --- /dev/null +++ b/resources/intent/ultimaker_s8/um_s8_cc_plus_0.4_nylon-cf-slide_0.2mm_engineering.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_s8 +name = Accurate +version = 4 + +[metadata] +intent_category = engineering +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = intent +variant = CC+ 0.4 + +[values] +infill_sparse_density = 20 +top_bottom_thickness = =wall_thickness +wall_thickness = =line_width * 3 + diff --git a/resources/quality/ultimaker_factor4/um_f4_cc0.4_nylon-cf-slide_0.2mm.inst.cfg b/resources/quality/ultimaker_factor4/um_f4_cc0.4_nylon-cf-slide_0.2mm.inst.cfg new file mode 100644 index 0000000000..08eeaa8583 --- /dev/null +++ b/resources/quality/ultimaker_factor4/um_f4_cc0.4_nylon-cf-slide_0.2mm.inst.cfg @@ -0,0 +1,20 @@ +[general] +definition = ultimaker_factor4 +name = Fast +version = 4 + +[metadata] +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = quality +variant = CC 0.4 +weight = -2 + +[values] +gradual_flow_discretisation_step_size = 0.1 +gradual_flow_enabled = True +inset_direction = outside_in +max_flow_acceleration = 1 +skin_material_flow = =material_flow * 0.965 + diff --git a/resources/quality/ultimaker_factor4/um_f4_cc0.6_nylon-cf-slide_0.2mm.inst.cfg b/resources/quality/ultimaker_factor4/um_f4_cc0.6_nylon-cf-slide_0.2mm.inst.cfg new file mode 100644 index 0000000000..f7f929efe0 --- /dev/null +++ b/resources/quality/ultimaker_factor4/um_f4_cc0.6_nylon-cf-slide_0.2mm.inst.cfg @@ -0,0 +1,20 @@ +[general] +definition = ultimaker_factor4 +name = Fast +version = 4 + +[metadata] +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = quality +variant = CC 0.6 +weight = -2 + +[values] +gradual_flow_discretisation_step_size = 0.1 +gradual_flow_enabled = True +inset_direction = outside_in +max_flow_acceleration = 1 +skin_material_flow = =material_flow * 0.965 + diff --git a/resources/quality/ultimaker_factor4/um_f4_ht0.6_nylon-cf-slide_0.2mm.inst.cfg b/resources/quality/ultimaker_factor4/um_f4_ht0.6_nylon-cf-slide_0.2mm.inst.cfg new file mode 100644 index 0000000000..cadc8d2db8 --- /dev/null +++ b/resources/quality/ultimaker_factor4/um_f4_ht0.6_nylon-cf-slide_0.2mm.inst.cfg @@ -0,0 +1,20 @@ +[general] +definition = ultimaker_factor4 +name = Fast +version = 4 + +[metadata] +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = quality +variant = HT 0.6 +weight = -2 + +[values] +gradual_flow_discretisation_step_size = 0.1 +gradual_flow_enabled = True +inset_direction = outside_in +max_flow_acceleration = 1 +skin_material_flow = =material_flow * 0.965 + diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm.inst.cfg new file mode 100644 index 0000000000..ee2493352d --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_nylon-cf-slide_0.2mm.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_s3 +name = Fast +version = 4 + +[metadata] +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = quality +variant = CC 0.4 +weight = -2 + +[values] +support_bottom_distance = =support_z_distance / 2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 + diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_nylon-cf-slide_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_nylon-cf-slide_0.2mm.inst.cfg new file mode 100644 index 0000000000..1fc2f2c8d9 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_nylon-cf-slide_0.2mm.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_s3 +name = Fast +version = 4 + +[metadata] +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = quality +variant = CC 0.6 +weight = -2 + +[values] +support_bottom_distance = =support_z_distance / 2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 + diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm.inst.cfg new file mode 100644 index 0000000000..9b628d1cbb --- /dev/null +++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_nylon-cf-slide_0.2mm.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_s5 +name = Fast +version = 4 + +[metadata] +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = quality +variant = CC 0.4 +weight = -2 + +[values] +support_bottom_distance = =support_z_distance / 2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 + diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_nylon-cf-slide_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_nylon-cf-slide_0.2mm.inst.cfg new file mode 100644 index 0000000000..4331ec48f4 --- /dev/null +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_nylon-cf-slide_0.2mm.inst.cfg @@ -0,0 +1,18 @@ +[general] +definition = ultimaker_s5 +name = Fast +version = 4 + +[metadata] +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = quality +variant = CC 0.6 +weight = -2 + +[values] +support_bottom_distance = =support_z_distance / 2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 + diff --git a/resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_nylon-cf-slide_0.2mm.inst.cfg b/resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_nylon-cf-slide_0.2mm.inst.cfg new file mode 100644 index 0000000000..1d02c32213 --- /dev/null +++ b/resources/quality/ultimaker_s8/um_s8_cc_plus_0.4_nylon-cf-slide_0.2mm.inst.cfg @@ -0,0 +1,16 @@ +[general] +definition = ultimaker_s8 +name = Fast +version = 4 + +[metadata] +material = generic_nylon-cf-slide +quality_type = draft +setting_version = 24 +type = quality +variant = CC+ 0.4 +weight = -2 + +[values] +cool_min_layer_time_fan_speed_max = 11 + From dd742e6c4e0337a07837984766e689a698eb3d3e Mon Sep 17 00:00:00 2001 From: Frederic Meeuwissen <13856291+Frederic98@users.noreply.github.com> Date: Thu, 13 Feb 2025 08:22:21 +0100 Subject: [PATCH 20/21] [PP-535] Correct the BOM number in FW update --- resources/definitions/ultimaker_s8.def.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/definitions/ultimaker_s8.def.json b/resources/definitions/ultimaker_s8.def.json index 2dbf2073d2..55b758b17a 100644 --- a/resources/definitions/ultimaker_s8.def.json +++ b/resources/definitions/ultimaker_s8.def.json @@ -14,8 +14,8 @@ ], "firmware_update_info": { - "check_urls": [ "https://software.ultimaker.com/releases/firmware/5078167/stable/um-update.swu.version" ], - "id": 5078167, + "check_urls": [ "https://software.ultimaker.com/releases/firmware/10600/stable/um-update.swu.version" ], + "id": 10600, "update_url": "https://ultimaker.com/firmware?utm_source=cura&utm_medium=software&utm_campaign=fw-update" }, "first_start_actions": [ "DiscoverUM3Action" ], @@ -403,4 +403,4 @@ "z_seam_position": { "value": "'backright'" }, "z_seam_type": { "value": "'sharpest_corner'" } } -} \ No newline at end of file +} From 0598ebec6f2cdcec9c9b0cee764cc4dc94803d47 Mon Sep 17 00:00:00 2001 From: Frederic98 <13856291+Frederic98@users.noreply.github.com> Date: Thu, 13 Feb 2025 07:23:45 +0000 Subject: [PATCH 21/21] Apply printer-linter format --- resources/definitions/ultimaker_s8.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/ultimaker_s8.def.json b/resources/definitions/ultimaker_s8.def.json index 55b758b17a..c1b7bac66c 100644 --- a/resources/definitions/ultimaker_s8.def.json +++ b/resources/definitions/ultimaker_s8.def.json @@ -403,4 +403,4 @@ "z_seam_position": { "value": "'backright'" }, "z_seam_type": { "value": "'sharpest_corner'" } } -} +} \ No newline at end of file