diff --git a/README.md b/README.md
index 37978a30f9..35cf48ea5e 100644
--- a/README.md
+++ b/README.md
@@ -39,6 +39,8 @@
[![Button Settings]][Settings]
[![Button Localize]][Localize]
+[![Button Libraries]][Libraries]
+
@@ -75,6 +77,7 @@
[Report]: docs/Report.md
[Logo]: resources/images/cura-icon.png
[#]: #
+[Libraries]: https://github.com/Ultimaker/Cura/blob/main/licenses_thirdparty
@@ -90,6 +93,7 @@
[Badge Downloads]: https://img.shields.io/github/downloads-pre/Ultimaker/Cura/latest/total?style=for-the-badge
+
[Button Localize]: https://img.shields.io/badge/Help_Localize-e2467d?style=for-the-badge&logoColor=white&logo=GoogleTranslate
@@ -98,5 +102,6 @@
[Button Building]: https://img.shields.io/badge/Building_Cura-blue?style=for-the-badge&logoColor=white&logo=GitBook
[Button Plugins]: https://img.shields.io/badge/Plugin_Usage-569A31?style=for-the-badge&logoColor=white&logo=ROS
[Button Report]: https://img.shields.io/badge/Report_Issues-C9284D?style=for-the-badge&logoColor=white&logo=Cliqz
+[Button Libraries]: https://img.shields.io/badge/third--party_libraries-b928c9?style=for-the-badge
diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py
index 3ce83d27e3..3181016f69 100755
--- a/cura/Settings/ExtruderManager.py
+++ b/cura/Settings/ExtruderManager.py
@@ -257,6 +257,7 @@ class ExtruderManager(QObject):
limit_to_extruder_feature_list = ["wall_0_extruder_nr",
"wall_x_extruder_nr",
"roofing_extruder_nr",
+ "flooring_extruder_nr",
"top_bottom_extruder_nr",
"infill_extruder_nr",
]
diff --git a/licenses_thirdparty/qt.md b/licenses_thirdparty/qt.md
new file mode 100644
index 0000000000..bf84121a2e
--- /dev/null
+++ b/licenses_thirdparty/qt.md
@@ -0,0 +1,24 @@
+Sources for the Qt modules that Cura uses (links within UltiMaker repositories):
+
+- qtbase: https://github.com/Ultimaker/qtbase
+- qtdeclarative: https://github.com/Ultimaker/qtdeclarative
+- qtsvg: https://github.com/Ultimaker/qtsvg
+- qtshadertools: https://github.com/Ultimaker/qtshadertools
+- qtimageformats: https://github.com/Ultimaker/qtimageformats
+
+Sources for Qt modules that Cura doesn't use (and thus aren't necessary for building or running any part of Cura), but that may be shipped along the product anyway due to our build-process (links to off-site):
+
+- qtsensors: https://github.com/qt/qtsensors
+- qtmultimedia: https://github.com/qt/qtmultimedia
+- qtpositioning: https://github.com/qt/qtpositioning
+- qtremoteobjects: https://github.com/qt/qtremoteobjects
+- qttexttospeech: https://github.com/qt/qtspeech
+- qtwebchannel: https://github.com/qt/qtwebchannel
+- qtwebsockets: https://github.com/qt/qtwebsockets
+- qtserialport: https://github.com/qt/qtserialport
+- qt (5) (linux): https://github.com/qt/qt5
+
+Versions of Qt used in Cura (from 5.9.1 onwards):
+
+- 5.9.x: Qt 6.6.0
+- 5.10.x: Qt 6.6.0
diff --git a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py
index dabc6b725a..db062f4084 100644
--- a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py
+++ b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py
@@ -1,20 +1,20 @@
# Copyright (c) 2017 Ghostkeeper
# The PostProcessingPlugin is released under the terms of the LGPLv3 or higher.
+# 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
-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):
- return """{
+ return r"""{
"name": "Search and Replace",
"key": "SearchAndReplace",
"metadata": {},
@@ -23,37 +23,145 @@ 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' string. The search string is 'Case Sensitive' and '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 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 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 interpreted as a Python regular 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 gcodes 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.",
+ "type": "int",
+ "default_value": 1,
+ "minimum_value": 1,
+ "enabled": "enable_layer_search"
+ },
+ "search_end":
+ {
+ "label": "Stop S&R at end of Layer:",
+ "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": 2,
+ "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 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"
+ },
+ "ignore_end":
+ {
+ "label": "Ignore Ending G-code:",
+ "description": "When enabled the Ending Gcode is unaffected.",
+ "type": "bool",
+ "default_value": true,
+ "enabled": "not enable_layer_search"
}
}
}"""
def execute(self, data):
+ global_stack = Application.getInstance().getGlobalContainerStack()
+ extruder = global_stack.extruderList
+ retract_enabled = bool(extruder[0].getProperty("retraction_enable", "value"))
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.
+ # Account for missing layer numbers when a raft is used
+ start_index = 1
+ 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(r";LAYER:(-?\d+)", layer):
+ data_list.append(index)
+ layer_list.append(lay_num)
+ lay_num += 1
- return data
\ No newline at end of file
+ # Get the start and end indexes within the data
+ if not enable_layer_search:
+ if ignore_start:
+ start_index = 2
+ else:
+ 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
+ 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, 1):
+ layer = data[num]
+ # First_instance only
+ if first_instance_only:
+ if re.search(search_regex, layer) and replace_one == False:
+ data[num] = re.sub(search_regex, replace_string, data[num], 1)
+ replace_one = True
+ break
+ # All instances
+ 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
diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json
index e8d8e94a18..038d2de2f4 100644
--- a/resources/definitions/fdmprinter.def.json
+++ b/resources/definitions/fdmprinter.def.json
@@ -1545,6 +1545,90 @@
}
}
},
+ "flooring_extruder_nr":
+ {
+ "label": "Bottom Surface Skin Extruder",
+ "description": "The extruder train used for printing the bottom most skin. This is used in multi-extrusion.",
+ "type": "optional_extruder",
+ "default_value": "-1",
+ "value": "top_bottom_extruder_nr",
+ "settable_per_mesh": false,
+ "settable_per_extruder": false,
+ "settable_per_meshgroup": true,
+ "settable_globally": true,
+ "enabled": "extruders_enabled_count > 1 and max(extruderValues('flooring_layer_count')) > 0 and max(extruderValues('bottom_layers')) > 0"
+ },
+ "flooring_layer_count":
+ {
+ "label": "Bottom Surface Skin Layers",
+ "description": "The number of bottom most skin layers. Usually only one bottom most layer is sufficient to generate higher quality bottom surfaces.",
+ "default_value": 0,
+ "minimum_value": "0",
+ "maximum_value_warning": "bottom_layers - 1",
+ "type": "int",
+ "maximum_value": "999999",
+ "value": "0",
+ "limit_to_extruder": "flooring_extruder_nr",
+ "settable_per_mesh": true,
+ "enabled": "bottom_layers > 0",
+ "children":
+ {
+ "flooring_line_width":
+ {
+ "label": "Bottom Surface Skin Line Width",
+ "description": "Width of a single line of the areas at the bottom of the print.",
+ "unit": "mm",
+ "minimum_value": "0.001",
+ "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size",
+ "maximum_value_warning": "2 * machine_nozzle_size",
+ "default_value": 0.4,
+ "type": "float",
+ "value": "skin_line_width",
+ "limit_to_extruder": "flooring_extruder_nr",
+ "settable_per_mesh": true,
+ "enabled": "flooring_layer_count > 0 and bottom_layers > 0"
+ },
+ "flooring_pattern":
+ {
+ "label": "Bottom Surface Skin Pattern",
+ "description": "The pattern of the bottom most layers.",
+ "type": "enum",
+ "options":
+ {
+ "lines": "Lines",
+ "concentric": "Concentric",
+ "zigzag": "Zig Zag"
+ },
+ "default_value": "lines",
+ "value": "top_bottom_pattern",
+ "limit_to_extruder": "flooring_extruder_nr",
+ "settable_per_mesh": true,
+ "enabled": "flooring_layer_count > 0 and bottom_layers > 0"
+ },
+ "flooring_monotonic":
+ {
+ "label": "Monotonic Bottom Surface Order",
+ "description": "Print bottom surface lines in an ordering that causes them to always overlap with adjacent lines in a single direction. This takes slightly more time to print, but makes flat surfaces look more consistent.",
+ "type": "bool",
+ "value": true,
+ "default_value": true,
+ "enabled": "flooring_layer_count > 0 and bottom_layers > 0 and flooring_pattern != 'concentric'",
+ "limit_to_extruder": "flooring_extruder_nr",
+ "settable_per_mesh": true
+ },
+ "flooring_angles":
+ {
+ "label": "Bottom Surface Skin Line Directions",
+ "description": "A list of integer line directions to use when the bottom surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees).",
+ "type": "[int]",
+ "default_value": "[ ]",
+ "value": "skin_angles",
+ "enabled": "flooring_pattern != 'concentric' and flooring_layer_count > 0 and bottom_layers > 0",
+ "limit_to_extruder": "flooring_extruder_nr",
+ "settable_per_mesh": true
+ }
+ }
+ },
"top_bottom_extruder_nr":
{
"label": "Top/Bottom Extruder",
@@ -2953,6 +3037,34 @@
"maximum_value_warning": "150",
"limit_to_extruder": "wall_x_extruder_nr",
"settable_per_mesh": true
+ },
+ "wall_0_material_flow_flooring":
+ {
+ "label": "Bottom Surface Outer Wall Flow",
+ "description": "Flow compensation on the bottom surface outermost wall line.",
+ "unit": "%",
+ "type": "float",
+ "default_value": 100,
+ "value": "wall_0_material_flow",
+ "minimum_value": "0.0001",
+ "minimum_value_warning": "50",
+ "maximum_value_warning": "150",
+ "limit_to_extruder": "wall_0_extruder_nr",
+ "settable_per_mesh": true
+ },
+ "wall_x_material_flow_flooring":
+ {
+ "label": "Bottom Surface Inner Wall(s) Flow",
+ "description": "Flow compensation on bottom surface wall lines for all wall lines except the outermost one.",
+ "unit": "%",
+ "type": "float",
+ "default_value": 100,
+ "value": "wall_x_material_flow",
+ "minimum_value": "0.0001",
+ "minimum_value_warning": "50",
+ "maximum_value_warning": "150",
+ "limit_to_extruder": "wall_x_extruder_nr",
+ "settable_per_mesh": true
}
}
},
@@ -2986,6 +3098,21 @@
"settable_per_mesh": true,
"enabled": "roofing_layer_count > 0 and top_layers > 0"
},
+ "flooring_material_flow":
+ {
+ "label": "Bottom Surface Skin Flow",
+ "description": "Flow compensation on lines of the areas at the bottom of the print.",
+ "unit": "%",
+ "type": "float",
+ "default_value": 100,
+ "value": "skin_material_flow",
+ "minimum_value": "0.0001",
+ "minimum_value_warning": "50",
+ "maximum_value_warning": "150",
+ "limit_to_extruder": "flooring_extruder_nr",
+ "settable_per_mesh": true,
+ "enabled": "flooring_layer_count > 0 and bottom_layers > 0"
+ },
"infill_material_flow":
{
"label": "Infill Flow",
@@ -3353,6 +3480,34 @@
"value": "speed_wall_x",
"limit_to_extruder": "wall_x_extruder_nr",
"settable_per_mesh": true
+ },
+ "speed_wall_0_flooring":
+ {
+ "label": "Bottom Surface Outer Wall Speed",
+ "description": "The speed at which the bottom surface outermost wall is printed.",
+ "unit": "mm/s",
+ "type": "float",
+ "minimum_value": "0.1",
+ "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
+ "maximum_value_warning": "150",
+ "default_value": 30,
+ "value": "speed_wall_0",
+ "limit_to_extruder": "wall_0_extruder_nr",
+ "settable_per_mesh": true
+ },
+ "speed_wall_x_flooring":
+ {
+ "label": "Bottom Surface Inner Wall Speed",
+ "description": "The speed at which the bottom surface inner walls are printed.",
+ "unit": "mm/s",
+ "type": "float",
+ "minimum_value": "0.1",
+ "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
+ "maximum_value_warning": "150",
+ "default_value": 60,
+ "value": "speed_wall_x",
+ "limit_to_extruder": "wall_x_extruder_nr",
+ "settable_per_mesh": true
}
}
},
@@ -3371,6 +3526,21 @@
"settable_per_mesh": true,
"enabled": "roofing_layer_count > 0 and top_layers > 0"
},
+ "speed_flooring":
+ {
+ "label": "Bottom Surface Skin Speed",
+ "description": "The speed at which bottom surface skin layers are printed.",
+ "unit": "mm/s",
+ "type": "float",
+ "minimum_value": "0.1",
+ "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
+ "maximum_value_warning": "150",
+ "default_value": 25,
+ "value": "speed_topbottom",
+ "limit_to_extruder": "flooring_extruder_nr",
+ "settable_per_mesh": true,
+ "enabled": "flooring_layer_count > 0 and bottom_layers > 0"
+ },
"speed_topbottom":
{
"label": "Top/Bottom Speed",
@@ -3726,6 +3896,36 @@
"enabled": "resolveOrValue('acceleration_enabled')",
"limit_to_extruder": "wall_x_extruder_nr",
"settable_per_mesh": true
+ },
+ "acceleration_wall_0_flooring":
+ {
+ "label": "Bottom Surface Outer Wall Acceleration",
+ "description": "The acceleration with which the bottom surface outermost walls are printed.",
+ "unit": "mm/s\u00b2",
+ "type": "float",
+ "minimum_value": "0.1",
+ "minimum_value_warning": "100",
+ "maximum_value_warning": "10000",
+ "default_value": 3000,
+ "value": "acceleration_wall_0",
+ "enabled": "resolveOrValue('acceleration_enabled')",
+ "limit_to_extruder": "wall_0_extruder_nr",
+ "settable_per_mesh": true
+ },
+ "acceleration_wall_x_flooring":
+ {
+ "label": "Bottom Surface Inner Wall Acceleration",
+ "description": "The acceleration with which the bottom surface inner walls are printed.",
+ "unit": "mm/s\u00b2",
+ "type": "float",
+ "minimum_value": "0.1",
+ "minimum_value_warning": "100",
+ "maximum_value_warning": "10000",
+ "default_value": 3000,
+ "value": "acceleration_wall_x",
+ "enabled": "resolveOrValue('acceleration_enabled')",
+ "limit_to_extruder": "wall_x_extruder_nr",
+ "settable_per_mesh": true
}
}
},
@@ -3744,6 +3944,21 @@
"limit_to_extruder": "roofing_extruder_nr",
"settable_per_mesh": true
},
+ "acceleration_flooring":
+ {
+ "label": "Bottom Surface Skin Acceleration",
+ "description": "The acceleration with which bottom surface skin layers are printed.",
+ "unit": "mm/s\u00b2",
+ "type": "float",
+ "minimum_value": "0.1",
+ "minimum_value_warning": "100",
+ "maximum_value_warning": "10000",
+ "default_value": 3000,
+ "value": "acceleration_topbottom",
+ "enabled": "resolveOrValue('acceleration_enabled') and flooring_layer_count > 0 and bottom_layers > 0",
+ "limit_to_extruder": "flooring_extruder_nr",
+ "settable_per_mesh": true
+ },
"acceleration_topbottom":
{
"label": "Top/Bottom Acceleration",
@@ -4053,6 +4268,34 @@
"enabled": "resolveOrValue('jerk_enabled')",
"limit_to_extruder": "wall_x_extruder_nr",
"settable_per_mesh": true
+ },
+ "jerk_wall_0_flooring":
+ {
+ "label": "Bottom Surface Outer Wall Jerk",
+ "description": "The maximum instantaneous velocity change with which the bottom surface outermost walls are printed.",
+ "unit": "mm/s",
+ "type": "float",
+ "minimum_value": "0",
+ "maximum_value_warning": "50",
+ "default_value": 20,
+ "value": "jerk_wall_0",
+ "enabled": "resolveOrValue('jerk_enabled')",
+ "limit_to_extruder": "wall_0_extruder_nr",
+ "settable_per_mesh": true
+ },
+ "jerk_wall_x_flooring":
+ {
+ "label": "Bottom Surface Inner Wall Jerk",
+ "description": "The maximum instantaneous velocity change with which the bottom surface inner walls are printed.",
+ "unit": "mm/s",
+ "type": "float",
+ "minimum_value": "0",
+ "maximum_value_warning": "50",
+ "default_value": 20,
+ "value": "jerk_wall_x",
+ "enabled": "resolveOrValue('jerk_enabled')",
+ "limit_to_extruder": "wall_x_extruder_nr",
+ "settable_per_mesh": true
}
}
},
@@ -4070,6 +4313,20 @@
"limit_to_extruder": "roofing_extruder_nr",
"settable_per_mesh": true
},
+ "jerk_flooring":
+ {
+ "label": "Bottom Surface Skin Jerk",
+ "description": "The maximum instantaneous velocity change with which bottom surface skin layers are printed.",
+ "unit": "mm/s",
+ "type": "float",
+ "minimum_value": "0",
+ "maximum_value_warning": "50",
+ "default_value": 20,
+ "value": "jerk_topbottom",
+ "enabled": "resolveOrValue('jerk_enabled') and flooring_layer_count > 0 and bottom_layers > 0",
+ "limit_to_extruder": "flooring_extruder_nr",
+ "settable_per_mesh": true
+ },
"jerk_topbottom":
{
"label": "Top/Bottom Jerk",
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_replicator_plus.def.json b/resources/definitions/ultimaker_replicator_plus.def.json
new file mode 100644
index 0000000000..6616b98143
--- /dev/null
+++ b/resources/definitions/ultimaker_replicator_plus.def.json
@@ -0,0 +1,274 @@
+{
+ "version": 2,
+ "name": "MakerBot Replicator+",
+ "inherits": "ultimaker",
+ "metadata":
+ {
+ "visible": true,
+ "author": "Ultimaker",
+ "manufacturer": "Ultimaker B.V.",
+ "file_formats": "application/x-makerbot-replicator_plus",
+ "platform": "ultimaker_replicator_plus_platform.3MF",
+ "exclude_materials": [
+ "dsm_",
+ "Essentium_",
+ "imade3d_",
+ "chromatik_",
+ "3D-Fuel_",
+ "bestfilament_",
+ "eazao_",
+ "emotiontech_",
+ "eryone_",
+ "eSUN_",
+ "Extrudr_",
+ "fabtotum_",
+ "fdplast_",
+ "filo3d_",
+ "ultimaker_rapidrinse_175",
+ "goofoo_",
+ "ideagen3D_",
+ "imade3d_",
+ "innofill_",
+ "layer_one_",
+ "leapfrog_",
+ "polyflex_pla",
+ "polymax_pla",
+ "polyplus_pla",
+ "polywood_pla",
+ "redd_",
+ "tizyx_",
+ "verbatim_",
+ "Vertex_",
+ "volumic_",
+ "xyzprinting_",
+ "zyyx_pro_",
+ "octofiber_",
+ "fiberlogy_",
+ "generic_",
+ "ultimaker_asa",
+ "ultimaker_abs",
+ "ultimaker_nylon",
+ "ultimaker_pva",
+ "ultimaker_rapidrinse",
+ "ultimaker_sr30",
+ "ultimaker_petg",
+ "basf_",
+ "jabil_",
+ "polymaker_",
+ "lehvoss",
+ "ultimaker_metallic_pla",
+ "ultimaker_pc-abs"
+ ],
+ "has_machine_quality": true,
+ "has_materials": true,
+ "has_variants": true,
+ "machine_extruder_trains": { "0": "ultimaker_replicator_extruder" },
+ "preferred_material": "ultimaker_pla_175",
+ "preferred_quality_type": "draft",
+ "preferred_variant_name": "ultimaker_replicator_smart_extruder_plus",
+ "reference_machine_id": "replicator_b",
+ "supports_network_connection": true,
+ "supports_usb_connection": false,
+ "variants_name": "Extruder",
+ "weight": -1
+ },
+ "overrides":
+ {
+ "acceleration_enabled":
+ {
+ "enabled": false,
+ "value": false
+ },
+ "adhesion_type": { "value": "'raft'" },
+ "brim_width": { "value": "3" },
+ "cool_during_extruder_switch":
+ {
+ "enabled": false,
+ "value": false
+ },
+ "cool_fan_full_at_height": { "value": "layer_height + layer_height_0" },
+ "cool_fan_speed": { "value": 100 },
+ "cool_fan_speed_0": { "value": 0 },
+ "cool_min_layer_time": { "value": 5 },
+ "extruder_prime_pos_abs": { "default_value": true },
+ "fill_outline_gaps": { "value": true },
+ "gantry_height": { "value": "60" },
+ "gradual_support_infill_steps": { "value": 0 },
+ "infill_angles": { "value": "[45,45,45,45,45,135,135,135,135,135]" },
+ "infill_before_walls": { "value": false },
+ "infill_overlap": { "value": 0 },
+ "infill_pattern": { "value": "'zigzag'" },
+ "infill_sparse_density": { "value": 10 },
+ "infill_wipe_dist": { "value": 0 },
+ "initial_layer_line_width_factor":
+ {
+ "maximum_value": 300,
+ "maximum_value_warning": 250,
+ "value": "125 if resolveOrValue('adhesion_type') == 'raft' else 200"
+ },
+ "inset_direction": { "value": "'inside_out'" },
+ "jerk_enabled":
+ {
+ "enabled": false,
+ "value": false
+ },
+ "layer_height_0": { "value": "0.2 if resolveOrValue('adhesion_type') == 'raft' else 0.3" },
+ "layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" },
+ "layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" },
+ "machine_center_is_zero": { "default_value": true },
+ "machine_depth": { "default_value": 195 },
+ "machine_end_gcode": { "default_value": "; End GCode\n" },
+ "machine_extruder_count": { "default_value": 1 },
+ "machine_gcode_flavor": { "default_value": "Marlin" },
+ "machine_heated_bed": { "default_value": true },
+ "machine_height": { "default_value": 165 },
+ "machine_max_feedrate_x": { "default_value": 200 },
+ "machine_max_feedrate_y": { "default_value": 200 },
+ "machine_max_feedrate_z": { "default_value": 25 },
+ "machine_min_cool_heat_time_window": { "value": "15" },
+ "machine_name": { "default_value": "MakerBot Replicator+" },
+ "machine_nozzle_cool_down_speed": { "default_value": 0.8 },
+ "machine_nozzle_heat_up_speed": { "default_value": 1.4 },
+ "machine_start_gcode": { "default_value": "; Start GCode\n" },
+ "machine_width": { "default_value": 295 },
+ "material_bed_temperature": { "enabled": false },
+ "material_bed_temperature_layer_0": { "enabled": false },
+ "material_diameter": { "default_value": 1.75 },
+ "material_final_print_temperature":
+ {
+ "enabled": false,
+ "value": "material_print_temperature"
+ },
+ "material_flow": { "default_value": 100 },
+ "material_initial_print_temperature":
+ {
+ "enabled": false,
+ "value": "material_print_temperature"
+ },
+ "material_print_temperature":
+ {
+ "maximum_value": 250,
+ "maximum_value_warning": 235
+ },
+ "material_print_temperature_layer_0":
+ {
+ "maximum_value": 250,
+ "maximum_value_warning": 235,
+ "value": "material_print_temperature + 5"
+ },
+ "min_bead_width":
+ {
+ "minimum_value": "line_width * 0.5",
+ "minimum_value_warning": "line_width * 0.625",
+ "value": "line_width * 0.75"
+ },
+ "min_wall_line_width":
+ {
+ "minimum_value": "line_width * 0.5",
+ "minimum_value_warning": "line_width * 0.75",
+ "value": "line_width"
+ },
+ "minimum_support_area": { "value": 0.5 },
+ "multiple_mesh_overlap": { "value": "0" },
+ "optimize_wall_printing_order": { "value": "True" },
+ "prime_blob_enable":
+ {
+ "default_value": false,
+ "enabled": false,
+ "value": "resolveOrValue('print_sequence') != 'one_at_a_time'"
+ },
+ "print_sequence": { "enabled": false },
+ "raft_airgap": { "value": 0.3 },
+ "raft_base_flow": { "value": 120 },
+ "raft_base_infill_overlap": { "value": 25 },
+ "raft_base_line_spacing": { "value": 2.5 },
+ "raft_base_line_width": { "value": 2 },
+ "raft_base_thickness": { "value": 0.4 },
+ "raft_interface_fan_speed": { "value": 0 },
+ "raft_interface_infill_overlap": { "value": 25 },
+ "raft_interface_wall_count": { "value": "raft_wall_count" },
+ "raft_margin": { "value": 6.5 },
+ "raft_surface_fan_speed": { "value": 50.0 },
+ "raft_surface_infill_overlap": { "value": 35 },
+ "raft_surface_wall_count": { "value": "raft_wall_count" },
+ "raft_wall_count": { "value": 2 },
+ "retract_at_layer_change": { "value": true },
+ "retraction_amount":
+ {
+ "maximum_value": 5,
+ "maximum_value_warning": 2.5,
+ "value": 0.5
+ },
+ "retraction_combing": { "value": "'infill'" },
+ "retraction_count_max":
+ {
+ "maximum_value": 700,
+ "maximum_value_warning": 600,
+ "value": 500
+ },
+ "retraction_extra_prime_amount": { "value": 0.1 },
+ "retraction_min_travel": { "value": "2 * line_width" },
+ "retraction_prime_speed":
+ {
+ "maximum_values": 35,
+ "value": 30
+ },
+ "retraction_retract_speed":
+ {
+ "maximum_value": 55,
+ "value": 50
+ },
+ "retraction_speed":
+ {
+ "maximum_value": 55,
+ "value": 50
+ },
+ "roofing_material_flow": { "value": "material_flow" },
+ "skin_material_flow": { "value": "material_flow" },
+ "skin_material_flow_layer_0": { "value": "material_flow" },
+ "skirt_brim_line_width": { "value": 0.8 },
+ "skirt_brim_minimal_length": { "value": 150 },
+ "skirt_brim_speed": { "value": 15 },
+ "skirt_height": { "value": 3 },
+ "speed_equalize_flow_width_factor": { "value": 100 },
+ "speed_print": { "value": 90 },
+ "speed_roofing": { "value": "1 * speed_print" },
+ "speed_support": { "value": "1 * speed_print" },
+ "speed_support_interface": { "value": "speed_support" },
+ "speed_topbottom": { "value": "speed_roofing" },
+ "speed_travel": { "value": 150 },
+ "speed_wall": { "value": "1 * speed_print" },
+ "speed_wall_0": { "value": "4/9 * speed_wall" },
+ "speed_wall_x": { "value": "1 * speed_wall" },
+ "speed_z_hop": { "value": 10 },
+ "support_angle": { "value": 68 },
+ "support_bottom_enable": { "value": false },
+ "support_brim_enable": { "value": false },
+ "support_connect_zigzags": { "value": false },
+ "support_infill_angles": { "value": "[45]" },
+ "support_infill_rate": { "value": 20 },
+ "support_interface_density": { "value": 90 },
+ "support_interface_enable": { "value": true },
+ "support_interface_height": { "value": 0.8 },
+ "support_interface_wall_count": { "value": 0 },
+ "support_line_width": { "value": 0.35 },
+ "support_material_flow": { "value": 90 },
+ "support_offset": { "value": 1 },
+ "support_structure": { "value": "'normal'" },
+ "support_use_towers": { "value": false },
+ "support_xy_distance": { "value": 0.3 },
+ "support_z_distance": { "value": 0.2 },
+ "top_bottom_thickness": { "value": "4 * layer_height" },
+ "travel_avoid_distance": { "value": 2 },
+ "travel_avoid_supports": { "value": true },
+ "wall_0_inset": { "value": "0" },
+ "wall_0_material_flow_layer_0": { "value": "material_flow" },
+ "wall_thickness": { "value": "2 * machine_nozzle_size" },
+ "wall_x_material_flow": { "value": "material_flow" },
+ "wall_x_material_flow_layer_0": { "value": "1 * material_flow" },
+ "xy_offset": { "value": 0 },
+ "xy_offset_layer_0": { "value": 0 },
+ "z_seam_corner": { "value": "'z_seam_corner_any'" },
+ "zig_zaggify_infill": { "value": "gradual_infill_steps == 0" }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/ultimaker_s8.def.json b/resources/definitions/ultimaker_s8.def.json
index c1b7bac66c..da040a0e13 100644
--- a/resources/definitions/ultimaker_s8.def.json
+++ b/resources/definitions/ultimaker_s8.def.json
@@ -273,6 +273,11 @@
"skin_material_flow": { "value": 95 },
"skin_overlap": { "value": 0 },
"skin_preshrink": { "value": 0 },
+ "skirt_brim_speed":
+ {
+ "maximum_value_warning": 300,
+ "value": "speed_layer_0"
+ },
"skirt_line_count": { "value": 5 },
"small_skin_on_surface": { "value": false },
"small_skin_width": { "value": 4 },
@@ -311,11 +316,6 @@
"maximum_value_warning": 300,
"value": "speed_wall"
},
- "speed_skirt_brim":
- {
- "maximum_value_warning": 300,
- "value": "speed_layer_0"
- },
"speed_support":
{
"maximum_value_warning": 300,
@@ -382,7 +382,6 @@
"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'" },
diff --git a/resources/definitions/ultimaker_sketch.def.json b/resources/definitions/ultimaker_sketch.def.json
index f746417e70..bcd3e3891b 100644
--- a/resources/definitions/ultimaker_sketch.def.json
+++ b/resources/definitions/ultimaker_sketch.def.json
@@ -58,7 +58,9 @@
"ultimaker_rapidrinse",
"ultimaker_sr30",
"ultimaker_petg",
- "ultimaker_pva"
+ "ultimaker_pva",
+ "ultimaker_pc-abs",
+ "ultimaker_pc-abs-fr"
],
"has_machine_quality": true,
"has_materials": true,
diff --git a/resources/definitions/ultimaker_sketch_sprint.def.json b/resources/definitions/ultimaker_sketch_sprint.def.json
index 885db85057..0043b17be2 100644
--- a/resources/definitions/ultimaker_sketch_sprint.def.json
+++ b/resources/definitions/ultimaker_sketch_sprint.def.json
@@ -53,7 +53,9 @@
"ultimaker_pva",
"ultimaker_rapidrinse",
"ultimaker_sr30",
- "ultimaker_petg"
+ "ultimaker_petg",
+ "ultimaker_pc-abs",
+ "ultimaker_pc-abs-fr"
],
"has_machine_quality": true,
"has_materials": true,
diff --git a/resources/extruders/ultimaker_replicator_extruder.def.json b/resources/extruders/ultimaker_replicator_extruder.def.json
new file mode 100644
index 0000000000..c8fff87967
--- /dev/null
+++ b/resources/extruders/ultimaker_replicator_extruder.def.json
@@ -0,0 +1,22 @@
+{
+ "version": 2,
+ "name": "Extruder",
+ "inherits": "fdmextruder",
+ "metadata":
+ {
+ "machine": "ultimaker_replicator_plus",
+ "position": "0"
+ },
+ "overrides":
+ {
+ "extruder_nr":
+ {
+ "default_value": 0,
+ "maximum_value": 0
+ },
+ "machine_nozzle_offset_x": { "default_value": 0 },
+ "machine_nozzle_offset_y": { "default_value": 0 },
+ "machine_nozzle_size": { "default_value": 0.4 },
+ "material_diameter": { "default_value": 1.75 }
+ }
+}
\ No newline at end of file
diff --git a/resources/images/Ultimaker2PlusConnectbackplate.png b/resources/images/Ultimaker2PlusConnectbackplate.png
index 789a48e887..c03e28936b 100644
Binary files a/resources/images/Ultimaker2PlusConnectbackplate.png and b/resources/images/Ultimaker2PlusConnectbackplate.png differ
diff --git a/resources/images/UltimakerFactor4Backplate.png b/resources/images/UltimakerFactor4Backplate.png
index c22d887766..f209c98fee 100644
Binary files a/resources/images/UltimakerFactor4Backplate.png and b/resources/images/UltimakerFactor4Backplate.png differ
diff --git a/resources/images/UltimakerS3backplate.png b/resources/images/UltimakerS3backplate.png
index 486c282934..f4a9cf478e 100644
Binary files a/resources/images/UltimakerS3backplate.png and b/resources/images/UltimakerS3backplate.png differ
diff --git a/resources/images/UltimakerS5backplate.png b/resources/images/UltimakerS5backplate.png
index cb37c296a4..cda59e4b23 100644
Binary files a/resources/images/UltimakerS5backplate.png and b/resources/images/UltimakerS5backplate.png differ
diff --git a/resources/images/UltimakerS7backplate.png b/resources/images/UltimakerS7backplate.png
index c35f819d7d..5cef95e7a4 100644
Binary files a/resources/images/UltimakerS7backplate.png and b/resources/images/UltimakerS7backplate.png differ
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/intent/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_um-pla-175_0.2mm_quick.inst.cfg b/resources/intent/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_um-pla-175_0.2mm_quick.inst.cfg
new file mode 100644
index 0000000000..d4b1006f9d
--- /dev/null
+++ b/resources/intent/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_um-pla-175_0.2mm_quick.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Quick
+version = 4
+
+[metadata]
+intent_category = quick
+material = ultimaker_pla_175
+quality_type = draft
+setting_version = 24
+type = intent
+variant = Smart Extruder+
+
+[values]
+jerk_print = 30
+speed_wall = =speed_print
+speed_wall_0 = =speed_wall
+
diff --git a/resources/meshes/ultimaker_replicator_plus_platform.3MF b/resources/meshes/ultimaker_replicator_plus_platform.3MF
new file mode 100644
index 0000000000..1d250b8113
Binary files /dev/null and b/resources/meshes/ultimaker_replicator_plus_platform.3MF differ
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);
+ }
}
}
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..5c58684f3d
--- /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_0 = 0
+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)
+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_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
+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 = 100
+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..72864b1f7e
--- /dev/null
+++ b/resources/quality/ultimaker_methodx/um_methodx_1c_um-pc-abs-fr-175_0.2mm.inst.cfg
@@ -0,0 +1,67 @@
+[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_0 = 0
+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)
+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_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
+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 * 1/2
+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
+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_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
+support_interface_density = 85
+support_interface_enable = True
+support_interface_pattern = zigzag
+support_line_width = 0.3
+support_material_flow = 100
+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..7e624a2771
--- /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_0 = 0
+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)
+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_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
+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 = 100
+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..13e42a1006
--- /dev/null
+++ b/resources/quality/ultimaker_methodx/um_methodx_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg
@@ -0,0 +1,67 @@
+[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_0 = 0
+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)
+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_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
+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 * 1/2
+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
+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_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
+support_interface_density = 85
+support_interface_enable = True
+support_interface_pattern = zigzag
+support_line_width = 0.3
+support_material_flow = 100
+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..47db7bee53
--- /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_0 = 0
+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)
+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_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
+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 = 100
+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..6bba6de819
--- /dev/null
+++ b/resources/quality/ultimaker_methodx/um_methodx_labs_um-pc-abs-fr-175_0.2mm.inst.cfg
@@ -0,0 +1,67 @@
+[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_0 = 0
+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)
+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_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
+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 * 1/2
+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
+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_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
+support_interface_density = 85
+support_interface_enable = True
+support_interface_pattern = zigzag
+support_line_width = 0.3
+support_material_flow = 100
+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..a072415f8f
--- /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_0 = 0
+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)
+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_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
+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 = 100
+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..272c94e581
--- /dev/null
+++ b/resources/quality/ultimaker_methodxl/um_methodxl_1c_um-pc-abs-fr-175_0.2mm.inst.cfg
@@ -0,0 +1,66 @@
+[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_0 = 0
+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)
+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_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
+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 = =speed_support * 1/4
+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_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
+support_interface_density = 85
+support_interface_enable = True
+support_interface_pattern = zigzag
+support_line_width = 0.3
+support_material_flow = 100
+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..2bb4fae463
--- /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_0 = 0
+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)
+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_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
+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 = 100
+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..53498a3408
--- /dev/null
+++ b/resources/quality/ultimaker_methodxl/um_methodxl_1xa_um-pc-abs-fr-175_0.2mm.inst.cfg
@@ -0,0 +1,66 @@
+[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_0 = 0
+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)
+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_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
+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 = =speed_support * 1/4
+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_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
+support_interface_density = 85
+support_interface_enable = True
+support_interface_pattern = zigzag
+support_line_width = 0.3
+support_material_flow = 100
+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..ef9005a45f
--- /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_0 = 0
+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)
+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_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
+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 = 100
+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..3b5a15e0ec
--- /dev/null
+++ b/resources/quality/ultimaker_methodxl/um_methodxl_labs_um-pc-abs-fr-175_0.2mm.inst.cfg
@@ -0,0 +1,66 @@
+[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_0 = 0
+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)
+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_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
+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 = =speed_support * 1/4
+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_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
+support_interface_density = 85
+support_interface_enable = True
+support_interface_pattern = zigzag
+support_line_width = 0.3
+support_material_flow = 100
+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_replicator_plus/um_replicator_b_smartextruder_plus_experimental_um-pla-175_0.2mm.inst.cfg b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_experimental_um-pla-175_0.2mm.inst.cfg
new file mode 100644
index 0000000000..e41549827b
--- /dev/null
+++ b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_experimental_um-pla-175_0.2mm.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Fast - Experimental
+version = 4
+
+[metadata]
+is_experimental = True
+material = ultimaker_pla_175
+quality_type = draft
+setting_version = 24
+type = quality
+variant = Smart Extruder+ Experimental
+weight = -2
+
+[values]
+
diff --git a/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_experimental_um-tough-pla-175_0.2mm.inst.cfg b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_experimental_um-tough-pla-175_0.2mm.inst.cfg
new file mode 100644
index 0000000000..8f9c4614d1
--- /dev/null
+++ b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_experimental_um-tough-pla-175_0.2mm.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Fast - Experimental
+version = 4
+
+[metadata]
+is_experimental = True
+material = ultimaker_tough_pla_175
+quality_type = draft
+setting_version = 24
+type = quality
+variant = Smart Extruder+ Experimental
+weight = -2
+
+[values]
+
diff --git a/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_tough_um-tough-pla-175_0.2mm.inst.cfg b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_tough_um-tough-pla-175_0.2mm.inst.cfg
new file mode 100644
index 0000000000..0d072a6d65
--- /dev/null
+++ b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_tough_um-tough-pla-175_0.2mm.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Fast
+version = 4
+
+[metadata]
+material = ultimaker_tough_pla_175
+quality_type = draft
+setting_version = 24
+type = quality
+variant = Smart Extruder+ Tough
+weight = -2
+
+[values]
+
diff --git a/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_um-pla-175_0.2mm.inst.cfg b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_um-pla-175_0.2mm.inst.cfg
new file mode 100644
index 0000000000..9f85e44b37
--- /dev/null
+++ b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_um-pla-175_0.2mm.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Fast
+version = 4
+
+[metadata]
+material = ultimaker_pla_175
+quality_type = draft
+setting_version = 24
+type = quality
+variant = Smart Extruder+
+weight = -2
+
+[values]
+
diff --git a/resources/quality/ultimaker_replicator_plus/um_replicator_plus_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker_replicator_plus/um_replicator_plus_global_Draft_Quality.inst.cfg
new file mode 100644
index 0000000000..3bc6c14dae
--- /dev/null
+++ b/resources/quality/ultimaker_replicator_plus/um_replicator_plus_global_Draft_Quality.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Fast
+version = 4
+
+[metadata]
+global_quality = True
+quality_type = draft
+setting_version = 24
+type = quality
+weight = -2
+
+[values]
+layer_height = 0.2
+
diff --git a/resources/texts/product_to_id.json b/resources/texts/product_to_id.json
index e99ead0985..34d7e53ba9 100644
--- a/resources/texts/product_to_id.json
+++ b/resources/texts/product_to_id.json
@@ -18,6 +18,7 @@
"UltiMaker Method": "ultimaker_method",
"UltiMaker Method X": "ultimaker_methodx",
"UltiMaker Method XL": "ultimaker_methodxl",
+ "UltiMaker Replicator+": "ultimaker_replicator_plus",
"UltiMaker Sketch": "ultimaker_sketch",
"UltiMaker Sketch Large": "ultimaker_sketch_large"
}
\ No newline at end of file
diff --git a/resources/variants/ultimaker_replicator_smart_extruder_plus.inst.cfg b/resources/variants/ultimaker_replicator_smart_extruder_plus.inst.cfg
new file mode 100644
index 0000000000..96bf727bf2
--- /dev/null
+++ b/resources/variants/ultimaker_replicator_smart_extruder_plus.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Smart Extruder+
+version = 4
+
+[metadata]
+hardware_type = nozzle
+reference_extruder_id = mk13
+setting_version = 24
+type = variant
+
+[values]
+machine_nozzle_id = Smart Extruder+
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/ultimaker_replicator_smart_extruder_plus_im-pla.inst.cfg b/resources/variants/ultimaker_replicator_smart_extruder_plus_im-pla.inst.cfg
new file mode 100644
index 0000000000..2a2a6ba777
--- /dev/null
+++ b/resources/variants/ultimaker_replicator_smart_extruder_plus_im-pla.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Smart Extruder+ Tough
+version = 4
+
+[metadata]
+hardware_type = nozzle
+reference_extruder_id = mk13_im-pla
+setting_version = 24
+type = variant
+
+[values]
+machine_nozzle_id = Smart Extruder+ Tough
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/ultimaker_replicator_smart_extruder_plus_labs.inst.cfg b/resources/variants/ultimaker_replicator_smart_extruder_plus_labs.inst.cfg
new file mode 100644
index 0000000000..8246843c3d
--- /dev/null
+++ b/resources/variants/ultimaker_replicator_smart_extruder_plus_labs.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Smart Extruder+ Experimental
+version = 4
+
+[metadata]
+hardware_type = nozzle
+reference_extruder_id = mk13_experimental
+setting_version = 24
+type = variant
+
+[values]
+machine_nozzle_id = Smart Extruder+ Experimental
+machine_nozzle_size = 0.4
+