diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml
index 5e1e5aa6bb..40acbc44f3 100644
--- a/.github/workflows/cicd.yml
+++ b/.github/workflows/cicd.yml
@@ -1,6 +1,12 @@
---
name: CI/CD
-on: [push, pull_request]
+on:
+ push:
+ branches:
+ - master
+ - 'WIP**'
+ - '4.*'
+ pull_request:
jobs:
build:
name: Build and test
diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py
index 1ec00787d7..09fda25a73 100644
--- a/cura/CrashHandler.py
+++ b/cura/CrashHandler.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2018 Ultimaker B.V.
+# Copyright (c) 2019 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
import platform
@@ -7,13 +7,14 @@ import faulthandler
import tempfile
import os
import os.path
-import time
+import uuid
import json
-import ssl
-import urllib.request
-import urllib.error
+import locale
+from typing import cast
-import certifi
+from sentry_sdk.hub import Hub
+from sentry_sdk.utils import event_from_exception
+from sentry_sdk import configure_scope
from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, QUrl
from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QTextEdit, QGroupBox, QCheckBox, QPushButton
@@ -24,7 +25,6 @@ from UM.Logger import Logger
from UM.View.GL.OpenGL import OpenGL
from UM.i18n import i18nCatalog
from UM.Resources import Resources
-
from cura import ApplicationMetadata
catalog = i18nCatalog("cura")
@@ -46,9 +46,8 @@ skip_exception_types = [
GeneratorExit
]
-class CrashHandler:
- crash_url = "https://stats.ultimaker.com/api/cura"
+class CrashHandler:
def __init__(self, exception_type, value, tb, has_started = True):
self.exception_type = exception_type
self.value = value
@@ -56,21 +55,20 @@ class CrashHandler:
self.has_started = has_started
self.dialog = None # Don't create a QDialog before there is a QApplication
- # While we create the GUI, the information will be stored for sending afterwards
- self.data = dict()
- self.data["time_stamp"] = time.time()
-
Logger.log("c", "An uncaught error has occurred!")
for line in traceback.format_exception(exception_type, value, tb):
for part in line.rstrip("\n").split("\n"):
Logger.log("c", part)
-
+ self.data = {}
# If Cura has fully started, we only show fatal errors.
# If Cura has not fully started yet, we always show the early crash dialog. Otherwise, Cura will just crash
# without any information.
if has_started and exception_type in skip_exception_types:
return
+ with configure_scope() as scope:
+ scope.set_tag("during_startup", not has_started)
+
if not has_started:
self._send_report_checkbox = None
self.early_crash_dialog = self._createEarlyCrashDialog()
@@ -179,25 +177,42 @@ class CrashHandler:
try:
from UM.Application import Application
self.cura_version = Application.getInstance().getVersion()
+ self.cura_locale = Application.getInstance().getPreferences().getValue("general/language")
except:
self.cura_version = catalog.i18nc("@label unknown version of Cura", "Unknown")
+ self.cura_locale = "??_??"
+
+ self.data["cura_version"] = self.cura_version
+ self.data["os"] = {"type": platform.system(), "version": platform.version()}
+ self.data["qt_version"] = QT_VERSION_STR
+ self.data["pyqt_version"] = PYQT_VERSION_STR
+ self.data["locale_os"] = locale.getlocale(locale.LC_MESSAGES)[0] if hasattr(locale, "LC_MESSAGES") else \
+ locale.getdefaultlocale()[0]
+ self.data["locale_cura"] = self.cura_locale
crash_info = "" + catalog.i18nc("@label Cura version number", "Cura version") + ": " + str(self.cura_version) + "
"
- crash_info += "" + catalog.i18nc("@label Cura build type", "Cura build type") + ": " + str(ApplicationMetadata.CuraBuildType) + "
"
+ crash_info += "" + catalog.i18nc("@label", "Cura language") + ": " + str(self.cura_locale) + "
"
+ crash_info += "" + catalog.i18nc("@label", "OS language") + ": " + str(self.data["locale_os"]) + "
"
crash_info += "" + catalog.i18nc("@label Type of platform", "Platform") + ": " + str(platform.platform()) + "
"
crash_info += "" + catalog.i18nc("@label", "Qt version") + ": " + str(QT_VERSION_STR) + "
"
crash_info += "" + catalog.i18nc("@label", "PyQt version") + ": " + str(PYQT_VERSION_STR) + "
"
crash_info += "" + catalog.i18nc("@label OpenGL version", "OpenGL") + ": " + str(self._getOpenGLInfo()) + "
"
+
label.setText(crash_info)
layout.addWidget(label)
group.setLayout(layout)
- self.data["cura_version"] = self.cura_version
- self.data["cura_build_type"] = ApplicationMetadata.CuraBuildType
- self.data["os"] = {"type": platform.system(), "version": platform.version()}
- self.data["qt_version"] = QT_VERSION_STR
- self.data["pyqt_version"] = PYQT_VERSION_STR
+ with configure_scope() as scope:
+ scope.set_tag("qt_version", QT_VERSION_STR)
+ scope.set_tag("pyqt_version", PYQT_VERSION_STR)
+ scope.set_tag("os", platform.system())
+ scope.set_tag("os_version", platform.version())
+ scope.set_tag("locale_os", self.data["locale_os"])
+ scope.set_tag("locale_cura", self.cura_locale)
+ scope.set_tag("is_enterprise", ApplicationMetadata.IsEnterpriseVersion)
+
+ scope.set_user({"id": str(uuid.getnode())})
return group
@@ -215,6 +230,30 @@ class CrashHandler:
self.data["opengl"] = {"version": opengl_instance.getOpenGLVersion(), "vendor": opengl_instance.getGPUVendorName(), "type": opengl_instance.getGPUType()}
+ active_machine_definition_id = "unknown"
+ active_machine_manufacturer = "unknown"
+
+ try:
+ from cura.CuraApplication import CuraApplication
+ application = cast(CuraApplication, Application.getInstance())
+ machine_manager = application.getMachineManager()
+ global_stack = machine_manager.activeMachine
+ if global_stack is None:
+ active_machine_definition_id = "empty"
+ active_machine_manufacturer = "empty"
+ else:
+ active_machine_definition_id = global_stack.definition.getId()
+ active_machine_manufacturer = global_stack.definition.getMetaDataEntry("manufacturer", "unknown")
+ except:
+ pass
+
+ with configure_scope() as scope:
+ scope.set_tag("opengl_version", opengl_instance.getOpenGLVersion())
+ scope.set_tag("gpu_vendor", opengl_instance.getGPUVendorName())
+ scope.set_tag("gpu_type", opengl_instance.getGPUType())
+ scope.set_tag("active_machine", active_machine_definition_id)
+ scope.set_tag("active_machine_manufacturer", active_machine_manufacturer)
+
return info
def _exceptionInfoWidget(self):
@@ -296,6 +335,10 @@ class CrashHandler:
"module_name": module_name, "version": module_version, "is_plugin": isPlugin}
self.data["exception"] = exception_dict
+ with configure_scope() as scope:
+ scope.set_tag("is_plugin", isPlugin)
+ scope.set_tag("module", module_name)
+
return group
def _logInfoWidget(self):
@@ -353,31 +396,11 @@ class CrashHandler:
# Before sending data, the user comments are stored
self.data["user_info"] = self.user_description_text_area.toPlainText()
- # Convert data to bytes
- binary_data = json.dumps(self.data).encode("utf-8")
-
- # CURA-6698 Create an SSL context and use certifi CA certificates for verification.
- context = ssl.SSLContext(protocol=ssl.PROTOCOL_TLSv1_2)
- context.load_verify_locations(cafile = certifi.where())
- # Submit data
- kwoptions = {"data": binary_data,
- "timeout": 5,
- "context": context}
-
- Logger.log("i", "Sending crash report info to [%s]...", self.crash_url)
- if not self.has_started:
- print("Sending crash report info to [%s]...\n" % self.crash_url)
-
try:
- f = urllib.request.urlopen(self.crash_url, **kwoptions)
- Logger.log("i", "Sent crash report info.")
- if not self.has_started:
- print("Sent crash report info.\n")
- f.close()
- except urllib.error.HTTPError as e:
- Logger.logException("e", "An HTTP error occurred while trying to send crash report")
- if not self.has_started:
- print("An HTTP error occurred while trying to send crash report: %s" % e)
+ hub = Hub.current
+ event, hint = event_from_exception((self.exception_type, self.value, self.traceback))
+ hub.capture_event(event, hint=hint)
+ hub.flush()
except Exception as e: # We don't want any exception to cause problems
Logger.logException("e", "An exception occurred while trying to send crash report")
if not self.has_started:
diff --git a/cura/Machines/MaterialNode.py b/cura/Machines/MaterialNode.py
index 8f04a90204..5bcaf12bfb 100644
--- a/cura/Machines/MaterialNode.py
+++ b/cura/Machines/MaterialNode.py
@@ -60,28 +60,38 @@ class MaterialNode(ContainerNode):
container_registry = ContainerRegistry.getInstance()
# Find all quality profiles that fit on this material.
if not self.variant.machine.has_machine_quality: # Need to find the global qualities.
- qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = "fdmprinter")
+ qualities = container_registry.findInstanceContainersMetadata(type = "quality",
+ definition = "fdmprinter")
elif not self.variant.machine.has_materials:
- qualities = container_registry.findInstanceContainersMetadata(type="quality", definition=self.variant.machine.quality_definition)
+ qualities = container_registry.findInstanceContainersMetadata(type = "quality",
+ definition = self.variant.machine.quality_definition)
else:
if self.variant.machine.has_variants:
# Need to find the qualities that specify a material profile with the same material type.
- qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, variant = self.variant.variant_name, material = self.container_id) # First try by exact material ID.
+ qualities = container_registry.findInstanceContainersMetadata(type = "quality",
+ definition = self.variant.machine.quality_definition,
+ variant = self.variant.variant_name,
+ material = self.base_file) # First try by exact material ID.
+ # CURA-7070
+ # The quality profiles only reference a material with the material_root_id. They will never state something
+ # such as "generic_pla_ultimaker_s5_AA_0.4". So we search with the "base_file" which is the material_root_id.
else:
- qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, material = self.container_id)
+ qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, material = self.base_file)
if not qualities:
my_material_type = self.material_type
if self.variant.machine.has_variants:
- qualities_any_material = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, variant = self.variant.variant_name)
+ qualities_any_material = container_registry.findInstanceContainersMetadata(type = "quality",
+ definition = self.variant.machine.quality_definition,
+ variant = self.variant.variant_name)
else:
qualities_any_material = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition)
for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", material = my_material_type):
- qualities.extend((quality for quality in qualities_any_material if quality.get("material") == material_metadata["id"]))
+ qualities.extend((quality for quality in qualities_any_material if quality.get("material") == material_metadata["base_file"]))
if not qualities: # No quality profiles found. Go by GUID then.
my_guid = self.guid
for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", guid = my_guid):
- qualities.extend((quality for quality in qualities_any_material if quality["material"] == material_metadata["id"]))
+ qualities.extend((quality for quality in qualities_any_material if quality["material"] == material_metadata["base_file"]))
if not qualities:
# There are still some machines that should use global profiles in the extruder, so do that now.
diff --git a/cura/Settings/CuraFormulaFunctions.py b/cura/Settings/CuraFormulaFunctions.py
index b35069da6f..f39435be60 100644
--- a/cura/Settings/CuraFormulaFunctions.py
+++ b/cura/Settings/CuraFormulaFunctions.py
@@ -43,7 +43,7 @@ class CuraFormulaFunctions:
extruder_stack = global_stack.extruderList[int(extruder_position)]
except IndexError:
if extruder_position != 0:
- Logger.log("w", "Value for %s of extruder %s was requested, but that extruder is not available. Returning the result form extruder 0 instead" % (property_key, extruder_position))
+ Logger.log("w", "Value for %s of extruder %s was requested, but that extruder is not available. Returning the result from extruder 0 instead" % (property_key, extruder_position))
# This fixes a very specific fringe case; If a profile was created for a custom printer and one of the
# extruder settings has been set to non zero and the profile is loaded for a machine that has only a single extruder
# it would cause all kinds of issues (and eventually a crash).
diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py
index 0138d68a61..876f10ebf8 100755
--- a/cura/Settings/MachineManager.py
+++ b/cura/Settings/MachineManager.py
@@ -894,8 +894,8 @@ class MachineManager(QObject):
@pyqtSlot(int, bool)
def setExtruderEnabled(self, position: int, enabled: bool) -> None:
- if self._global_container_stack is None:
- Logger.log("w", "Could not find extruder on position %s", position)
+ if self._global_container_stack is None or str(position) not in self._global_container_stack.extruders:
+ Logger.log("w", "Could not find extruder on position %s.", position)
return
extruder = self._global_container_stack.extruderList[position]
diff --git a/cura_app.py b/cura_app.py
index e14b4410bc..51f9041e86 100755
--- a/cura_app.py
+++ b/cura_app.py
@@ -9,8 +9,11 @@ import os
import sys
from UM.Platform import Platform
+from cura import ApplicationMetadata
from cura.ApplicationMetadata import CuraAppName
+import sentry_sdk
+
parser = argparse.ArgumentParser(prog = "cura",
add_help = False)
parser.add_argument("--debug",
@@ -18,8 +21,25 @@ parser.add_argument("--debug",
default = False,
help = "Turn on the debug mode by setting this option."
)
+
known_args = vars(parser.parse_known_args()[0])
+sentry_env = "production"
+if ApplicationMetadata.CuraVersion == "master":
+ sentry_env = "development"
+try:
+ if ApplicationMetadata.CuraVersion.split(".")[2] == "99":
+ sentry_env = "nightly"
+except IndexError:
+ pass
+
+sentry_sdk.init("https://5034bf0054fb4b889f82896326e79b13@sentry.io/1821564",
+ environment = sentry_env,
+ release = "cura%s" % ApplicationMetadata.CuraVersion,
+ default_integrations = False,
+ max_breadcrumbs = 300,
+ server_name = "cura")
+
if not known_args["debug"]:
def get_cura_dir_path():
if Platform.isWindows():
diff --git a/docs/Profile Stack.drawio b/docs/Profile Stack.drawio
new file mode 100644
index 0000000000..ed942c09db
--- /dev/null
+++ b/docs/Profile Stack.drawio
@@ -0,0 +1 @@
+7ZtNb9s4EIZ/jY+70LftY+NkuwskQFrvts2pYCRaIkqLBkXXcn79Di3Ssk3ZTR195EDAB82IpIZ8ZgzxBTXyZ8vyI0er7IElmI48JylH/u3I89zA80by5yTbyjOOxpUj5SRRjWrHnLxg5XSUd00SXBw1FIxRQVbHzpjlOY7FkQ9xzjbHzRaMHj91hVJsOOYxoqb3K0lEVnkn3rj2/41Jmuknu9G0urNEurGaSZGhhG0OXP7dyJ9xxkR1tSxnmMrF0+tS9fvrzN19YBzn4jUdvnDvJQzwv+sXOp0/lfHk+3fxh1+N8hPRtZrwXSn4OsF8LlD8Q0Uutno5ig1ZUpSDdbNguZirOw7YcUZoco+2bC3DKWR3bd1kjJMXaI8o3HLBAbe5ULS9SI5GKJ0xyjg4crZ7QN2piqV6DMcFdHvU03ZPXA+oPGp4jwqhA2SUolVBnnchy45LxFOS3zAh2FI1UuuBucDl2YV29/gg7zFbYsG30ER3mCriKuXdsbI3dQK5gfJlB8nj+YFKXJW06X7smitcKLS/gTkwMP9XYG7QhTmLHRzOfuATGg2AECVpDibFC9lNLhqByvmg3IKt5GArFJM8vd+1uQ1qz2c1celi0HdBd9WRkSTBueTHBBLoeZ9fK0ZysVuY8AZ+sH4z589wFELgM7Dd2oafbM7FjOUwF0R23DBkwgbLbHgd5PP1YpJXpCGTXwc66ohzaHD+tAZKQsY4y1Cewl+phd4u9NAbGHpkQP8nF3JGlnS7pMeTgUmPz5e3Rd0qatcJBmY9MVg/IIE5gVcoC7tl2P5rX9C6gj01YH9BgNr+h7fPOhz6HU3vbA9g3+IFyYkgLLfvad2Rnwz9oua6F8lb3u1uxpyhX9c8k/dHyp61nmG1lbdrK4GWEw8g+06v2opWOK248tZ6Psf+vLrSjLqzejbVUiuvdI69QV/pGbupnlqBpRvWDQpLz6wvKKgWdruwmzSWnmmb0qkVWTrD3aCy9Izb1E+tzNIV7QadpWfapoJqdZZe0DcILT2jN/VUK7R0uDFrUFr6Be6ae3B7juWtWosfvrtzLK65A7day1UlXVXM+z3J4pqbbqu1dI598LMsrrn/tlpLN6wHP83imrtvq7V0BHv48yyuufm2WktnuAc/0eKau2+rtXRFe/gzLZc33PaFrTP0gx9q0Z+3WK2ln43Z4KdafBO4gRnnyQf58RVYMUVFQWKpg4illk1gCfj2m1x2WE9lPikKO+O2PLK22iqJOOgG1pMeEa7rTtLQfargcGJ853Wig8AE2JrH+NLUq3YC8RRfo5cdMAsbkGkfxxQJ8vM43iaO6gmPMm9H58/I6BLVQ1TzVL3qbDAG8oLjgaLpyUDVQhgDAXq0PWim6upswF50ErDvXIzLDy62h4sqgjrH9wzekPbmYa7fT/sr0lcaj/CaDPFjflgUV5RPi6Wgc+qd10LknaTK+MpaiMa/KKqWaiE4DbjfWgCz/iK1al5/1+vf/Q8=
\ No newline at end of file
diff --git a/docs/Profile Stack.png b/docs/Profile Stack.png
new file mode 100644
index 0000000000..0bcc9266b3
Binary files /dev/null and b/docs/Profile Stack.png differ
diff --git a/docs/Profile Structure.drawio b/docs/Profile Structure.drawio
new file mode 100644
index 0000000000..b7d8e06d4b
--- /dev/null
+++ b/docs/Profile Structure.drawio
@@ -0,0 +1 @@
+7VzbcqM4EP0aP+4WSFzsx8SZmd2tpCqTbO1kn1KKkW3VYOQBObHn61cyF0MLM9jhkmyo8gMSLXQ5R+rTDckIT1fbLyFZL2+4R/0RMrztCF+NEDIthEbqZ3i7uMZ13LhiETIvMTpU3LOfNKk0ktoN82hUMBSc+4Kti5UzHgR0Jgp1JAz5S9Fszv1ir2uyoFrF/Yz4eu035ollXDtG7qH+D8oWy7Rn05nEd1YkNU5mEi2Jx19yVfjTCE9DzkV8tdpOqa8WL12XuN3nI3ezgYU0EHUa/OXdPfz4exV+fRLWl92tG9388/m35CnPxN8kE/4zEOqB8ZDFLl2H6IWtfBLI0uWcB+I+uWPI8mzJfO+a7PhGjSMSZPY9LV0uech+Snviy1umrJC3Q5HAjFXrOfP9Kfd5KCsCvu/g0OhePSzpJqSRbHabztcEVTdkWzC8JpFIB8h9n6wj9rQfsmq4IuGCBZdcCL5KjJKFoKGg26MrbGa4ScJTvqIi3EmTtIGTQJ1w3URWXH45MMecJDbLPGvShiRh6yJ7dtbdnWQ3CRZyCll/2SZJ+7MMrT+npDvkFHsjvqBhQAS95JvAi/Iskhe5mR6q9tw6gWdY4xnb8+xxJrtdcDVTOSi8vciQyHFPIiL21An5dwq4UkIf4rNFIIs+natmClImN/RFUi34Wj1sTWYsWFzvba6sQ81dsk6qisu2c3+/aZfM82ig2MUFEeQpY/+ay5nsF9K+lD+53FPjd3tky4FPZdk8lOVPmYdiygM5F8L2rKKSpy9UcbUeBY9vY52XCS+wTotSGkJe5FlYIMSp6Fsa+vJ0pCGTp8KAdbNY207PWE80rD06ZwETjAcD2g2jPUY9o516oBzcz0RubKUghgO9LdhNY9w37rpw/LGROIndo9it6YB404jjmlKyNcRtDfCvMeCdhApyWv+vUMEtSndslmg0qyxUwBWhwqsAdgaR1txutit3MyoRaWVgt7aZ3eH07hJvu0SmdYr3eFBp3aPuloi0TlE39SM9H4sNyLeFvGmUqLVuoddPeA1lGngXKkMuSzOfRBGbKUElVqn+olsmHpJFV9f/qmu5snHpapu7dbVLC4Ec/UO+kGuliodm+1LaLh4c9bRkPBBUcgJ8E85o1dTT1wRSuNEqDN1yDHOY2SWQpXUh9Ylgz8XxVuRvbxVtcwJwXBSAaAIeEc8zaZVP64MHZe8XMl8DHhSvg/YgCT3Z5cySbXV8wBgM2DUrxwXtsWsDVscjaDTNbOqO7qiIHcKUX4cpFgDRrKtkshOw+ZNNTzA+kYg+ylUfhOsZaYdxpSfrPVJBeoJxyCe3h3fvkQrSE4tZqDKA3SzYvQcoqSh9lUo9U3Gm6jZVunXUbYMq1aopUmN315dKxSBNmanWU1WqBT5VQJZbS6U2JQyR/gr62LEy6MLTdSEa1wx40yOn+aNEfz8RkNWgCE93GvFWecOKsDqrNeDdLN79K0I9pv8oImFcUySgI+nIbkSCbYAMlHumSLBtmMoCD2oolQXFiGUYleOC9hhhwOoWUln4pMB3EC2/Fi0OyJRip+bRlh6BjR9tWA92pf3gwk51YdgoB/6tSBasRx+nu7AzXNFbeBvj1PRh+Mjm7caHWeDTffvcQNcGvsKG3+s05cMs4MOSv0g56sOgvVF4fdOSD9ODso/Ce/Q+eI9AIO+cy3voXG2rHd7bE+DErUn1fpz0wXs9RO2W92Z/vDfeBe8d+HYahhp1ee+CDKkFN1BDvHcBj5FZfd5D+2543+BXJ++N93W/Ouk3VncMSItzz3sQq2O7Hd7DASMLV4/LgBu7i1hd/ybhdN6fyeFzvtJqkPeTd3Hcm4AVDlTldWlvwhRVS8e9Cd+XmdUyB9pbdnVKS3MPp9p34U4sPT3SrTvpMWyuK6P6dSdaZnRy5r6C8TduKXzQ30Pb1ePqI/VroQ/L+7pRc7+fRcDX35ror0178BWw1VK2CI/h9qp2J9DenLzquJfFw/85ic0P/y0Gf/oP
\ No newline at end of file
diff --git a/docs/Profile Structure.png b/docs/Profile Structure.png
new file mode 100644
index 0000000000..50ad2649b6
Binary files /dev/null and b/docs/Profile Structure.png differ
diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py
index dd35484c31..08e83aaa41 100755
--- a/plugins/3MFReader/ThreeMFWorkspaceReader.py
+++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py
@@ -790,7 +790,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
container_info = ContainerInfo(None, None, None)
quality_changes_info.extruder_info_dict["0"] = container_info
# If the global stack we're "targeting" has never been active, but was updated from Cura 3.4,
- # it might not have it's extruders set properly.
+ # it might not have its extruders set properly.
if not global_stack.extruders:
ExtruderManager.getInstance().fixSingleExtrusionMachineExtruderDefinition(global_stack)
extruder_stack = global_stack.extruders["0"]
diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.qml b/plugins/MachineSettingsAction/MachineSettingsAction.qml
index 56b4d3e3b6..c2cb30c14b 100644
--- a/plugins/MachineSettingsAction/MachineSettingsAction.qml
+++ b/plugins/MachineSettingsAction/MachineSettingsAction.qml
@@ -97,7 +97,6 @@ Cura.MachineAction
text: Cura.MachineManager.activeMachine.name
horizontalAlignment: Text.AlignHCenter
font: UM.Theme.getFont("large_bold")
- color: UM.Theme.getColor("text")
renderType: Text.NativeRendering
}
diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml
index bb342d5045..109b66a11b 100644
--- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml
+++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml
@@ -40,11 +40,13 @@ Item
// update active type label
for (var button in meshTypeButtons.children)
{
- if (meshTypeButtons.children[button].checked){
+ if (meshTypeButtons.children[button].checked)
+ {
meshTypeLabel.text = catalog.i18nc("@label", "Mesh Type") + ": " + meshTypeButtons.children[button].text
break
}
}
+ visibility_handler.addSkipResetSetting(currentMeshType)
}
function setOverhangsMeshType()
@@ -129,7 +131,7 @@ Item
}
- Label
+ Label
{
id: meshTypeLabel
font: UM.Theme.getFont("default")
@@ -203,6 +205,7 @@ Item
visibilityHandler: Cura.PerObjectSettingVisibilityHandler
{
+ id: visibility_handler
selectedObjectId: UM.ActiveTool.properties.getValue("SelectedObjectId")
}
@@ -319,10 +322,7 @@ Item
Connections
{
target: inheritStackProvider
- onPropertiesChanged:
- {
- provider.forcePropertiesChanged()
- }
+ onPropertiesChanged: provider.forcePropertiesChanged()
}
Connections
@@ -458,5 +458,4 @@ Item
Cura.SettingUnknown { }
}
-
}
diff --git a/plugins/PerObjectSettingsTool/SettingPickDialog.qml b/plugins/PerObjectSettingsTool/SettingPickDialog.qml
index 92e22f26bc..4e9295c05a 100644
--- a/plugins/PerObjectSettingsTool/SettingPickDialog.qml
+++ b/plugins/PerObjectSettingsTool/SettingPickDialog.qml
@@ -7,133 +7,129 @@ import Cura 1.0 as Cura
import ".."
UM.Dialog
+{
+ id: settingPickDialog
+
+ title: catalog.i18nc("@title:window", "Select Settings to Customize for this model")
+ width: screenScaleFactor * 360
+
+ property var additional_excluded_settings
+
+ onVisibilityChanged:
{
- id: settingPickDialog
-
- title: catalog.i18nc("@title:window", "Select Settings to Customize for this model")
- width: screenScaleFactor * 360
-
- property var additional_excluded_settings
-
- onVisibilityChanged:
+ // force updating the model to sync it with addedSettingsModel
+ if (visible)
{
- // force updating the model to sync it with addedSettingsModel
- if (visible)
- {
- // Set skip setting, it will prevent from resetting selected mesh_type
- contents.model.visibilityHandler.addSkipResetSetting(currentMeshType)
- listview.model.forceUpdate()
+ listview.model.forceUpdate()
+ updateFilter()
+ }
+ }
- updateFilter()
- }
+ function updateFilter()
+ {
+ var new_filter = {}
+ new_filter["settable_per_mesh"] = true
+ // Don't filter on "settable_per_meshgroup" any more when `printSequencePropertyProvider.properties.value`
+ // is set to "one_at_a_time", because the current backend architecture isn't ready for that.
+
+ if (filterInput.text != "")
+ {
+ new_filter["i18n_label"] = "*" + filterInput.text
}
- function updateFilter()
+ listview.model.filter = new_filter
+ }
+
+ TextField
+ {
+ id: filterInput
+
+ anchors
{
- var new_filter = {}
- new_filter["settable_per_mesh"] = true
- // Don't filter on "settable_per_meshgroup" any more when `printSequencePropertyProvider.properties.value`
- // is set to "one_at_a_time", because the current backend architecture isn't ready for that.
-
- if (filterInput.text != "")
- {
- new_filter["i18n_label"] = "*" + filterInput.text
- }
-
- listview.model.filter = new_filter
+ top: parent.top
+ left: parent.left
+ right: toggleShowAll.left
+ rightMargin: UM.Theme.getSize("default_margin").width
}
- TextField {
- id: filterInput
+ placeholderText: catalog.i18nc("@label:textbox", "Filter...")
- anchors {
- top: parent.top
- left: parent.left
- right: toggleShowAll.left
- rightMargin: UM.Theme.getSize("default_margin").width
- }
+ onTextChanged: settingPickDialog.updateFilter()
+ }
- placeholderText: catalog.i18nc("@label:textbox", "Filter...")
+ CheckBox
+ {
+ id: toggleShowAll
- onTextChanged: settingPickDialog.updateFilter()
+ anchors
+ {
+ top: parent.top
+ right: parent.right
}
- CheckBox
+ text: catalog.i18nc("@label:checkbox", "Show all")
+ checked: listview.model.showAll
+ onClicked: listview.model.showAll = checked
+ }
+
+ ScrollView
+ {
+ id: scrollView
+
+ anchors
{
- id: toggleShowAll
-
- anchors {
- top: parent.top
- right: parent.right
- }
-
- text: catalog.i18nc("@label:checkbox", "Show all")
- checked: listview.model.showAll
- onClicked:
- {
- listview.model.showAll = checked
- }
+ top: filterInput.bottom
+ left: parent.left
+ right: parent.right
+ bottom: parent.bottom
}
-
- ScrollView
+ ListView
{
- id: scrollView
-
- anchors
+ id:listview
+ model: UM.SettingDefinitionsModel
{
- top: filterInput.bottom
- left: parent.left
- right: parent.right
- bottom: parent.bottom
- }
- ListView
- {
- id:listview
- model: UM.SettingDefinitionsModel
+ id: definitionsModel
+ containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: ""
+ visibilityHandler: UM.SettingPreferenceVisibilityHandler {}
+ expanded: [ "*" ]
+ exclude:
{
- id: definitionsModel
- containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: ""
- visibilityHandler: UM.SettingPreferenceVisibilityHandler {}
- expanded: [ "*" ]
- exclude:
+ var excluded_settings = [ "machine_settings", "command_line_settings", "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ]
+ excluded_settings = excluded_settings.concat(settingPickDialog.additional_excluded_settings)
+ return excluded_settings
+ }
+ }
+ delegate:Loader
+ {
+ id: loader
+
+ width: parent.width
+ height: model.type != undefined ? UM.Theme.getSize("section").height : 0
+
+ property var definition: model
+ property var settingDefinitionsModel: definitionsModel
+
+ asynchronous: true
+ source:
+ {
+ switch(model.type)
{
- var excluded_settings = [ "machine_settings", "command_line_settings", "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ]
- excluded_settings = excluded_settings.concat(settingPickDialog.additional_excluded_settings)
- return excluded_settings
+ case "category":
+ return "PerObjectCategory.qml"
+ default:
+ return "PerObjectItem.qml"
}
}
- delegate:Loader
- {
- id: loader
-
- width: parent.width
- height: model.type != undefined ? UM.Theme.getSize("section").height : 0
-
- property var definition: model
- property var settingDefinitionsModel: definitionsModel
-
- asynchronous: true
- source:
- {
- switch(model.type)
- {
- case "category":
- return "PerObjectCategory.qml"
- default:
- return "PerObjectItem.qml"
- }
- }
- }
- Component.onCompleted: settingPickDialog.updateFilter()
}
+ Component.onCompleted: settingPickDialog.updateFilter()
}
+ }
- rightButtons: [
- Button {
- text: catalog.i18nc("@action:button", "Close")
- onClicked: {
- settingPickDialog.visible = false
- }
- }
- ]
- }
\ No newline at end of file
+ rightButtons: [
+ Button
+ {
+ text: catalog.i18nc("@action:button", "Close")
+ onClicked: settingPickDialog.visible = false
+ }
+ ]
+}
\ No newline at end of file
diff --git a/plugins/SentryLogger/SentryLogger.py b/plugins/SentryLogger/SentryLogger.py
new file mode 100644
index 0000000000..8367cfc26e
--- /dev/null
+++ b/plugins/SentryLogger/SentryLogger.py
@@ -0,0 +1,55 @@
+# Copyright (c) 2019 Ultimaker B.V.
+# Cura is released under the terms of the LGPLv3 or higher.
+
+from UM.Logger import LogOutput
+from typing import Set
+from sentry_sdk import add_breadcrumb
+from typing import Optional
+import os
+
+home_dir = os.path.expanduser("~")
+
+
+class SentryLogger(LogOutput):
+ # Sentry (https://sentry.io) is the service that Cura uses for logging crashes. This logger ensures that the
+ # regular log entries that we create are added as breadcrumbs so when a crash actually happens, they are already
+ # processed and ready for sending.
+ # Note that this only prepares them for sending. It only sends them when the user actually agrees to sending the
+ # information.
+
+ _levels = {
+ "w": "warning",
+ "i": "info",
+ "c": "fatal",
+ "e": "error",
+ "d": "debug"
+ }
+
+ def __init__(self) -> None:
+ super().__init__()
+ self._show_once = set() # type: Set[str]
+
+ ## Log the message to the sentry hub as a breadcrumb
+ # \param log_type "e" (error), "i"(info), "d"(debug), "w"(warning) or "c"(critical) (can postfix with "_once")
+ # \param message String containing message to be logged
+ def log(self, log_type: str, message: str) -> None:
+ level = self._translateLogType(log_type)
+ message = self._pruneSensitiveData(message)
+ if level is None:
+ if message not in self._show_once:
+ level = self._translateLogType(log_type[0])
+ if level is not None:
+ self._show_once.add(message)
+ add_breadcrumb(level = level, message = message)
+ else:
+ add_breadcrumb(level = level, message = message)
+
+ @staticmethod
+ def _pruneSensitiveData(message):
+ if home_dir in message:
+ message = message.replace(home_dir, "")
+ return message
+
+ @staticmethod
+ def _translateLogType(log_type: str) -> Optional[str]:
+ return SentryLogger._levels.get(log_type)
diff --git a/plugins/SentryLogger/__init__.py b/plugins/SentryLogger/__init__.py
new file mode 100644
index 0000000000..c464de5fd4
--- /dev/null
+++ b/plugins/SentryLogger/__init__.py
@@ -0,0 +1,16 @@
+# Copyright (c) 2019 Ultimaker B.V.
+# Cura is released under the terms of the LGPLv3 or higher.
+from typing import TYPE_CHECKING, Dict, Any
+
+from . import SentryLogger
+
+if TYPE_CHECKING:
+ from UM.Application import Application
+
+
+def getMetaData() -> Dict[str, Any]:
+ return {}
+
+
+def register(app: "Application") -> Dict[str, Any]:
+ return {"logger": SentryLogger.SentryLogger()}
diff --git a/plugins/SentryLogger/plugin.json b/plugins/SentryLogger/plugin.json
new file mode 100644
index 0000000000..fef4e1c554
--- /dev/null
+++ b/plugins/SentryLogger/plugin.json
@@ -0,0 +1,8 @@
+{
+ "name": "Sentry Logger",
+ "author": "Ultimaker B.V.",
+ "version": "1.0.0",
+ "description": "Logs certain events so that they can be used by the crash reporter",
+ "api": "7.0",
+ "i18n-catalog": "cura"
+}
diff --git a/plugins/SolidView/SolidView.py b/plugins/SolidView/SolidView.py
index 61954f5bca..4f15bafedb 100644
--- a/plugins/SolidView/SolidView.py
+++ b/plugins/SolidView/SolidView.py
@@ -65,10 +65,7 @@ class SolidView(View):
else:
self._support_angle = support_angle_stack.getProperty("support_angle", "value")
- def beginRendering(self):
- scene = self.getController().getScene()
- renderer = self.getRenderer()
-
+ def _checkSetup(self):
if not self._extruders_model:
self._extruders_model = Application.getInstance().getExtrudersModel()
@@ -95,6 +92,12 @@ class SolidView(View):
self._support_mesh_shader.setUniformValue("u_vertical_stripes", True)
self._support_mesh_shader.setUniformValue("u_width", 5.0)
+ def beginRendering(self):
+ scene = self.getController().getScene()
+ renderer = self.getRenderer()
+
+ self._checkSetup()
+
global_container_stack = Application.getInstance().getGlobalContainerStack()
if global_container_stack:
if Application.getInstance().getPreferences().getValue("view/show_overhang"):
diff --git a/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py b/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py
index 305cce16c6..4b7e291482 100644
--- a/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py
+++ b/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py
@@ -239,7 +239,7 @@ class VersionUpgrade41to42(VersionUpgrade):
#
# This renames the renamed settings in the containers.
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
- parser = configparser.ConfigParser(interpolation = None, comment_prefixes=())
+ parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ())
parser.read_string(serialized)
# Update version number.
diff --git a/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py b/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py
index d6489f6d8b..4142053047 100644
--- a/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py
+++ b/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py
@@ -104,7 +104,7 @@ class VersionUpgrade42to43(VersionUpgrade):
#
# This renames the renamed settings in the containers.
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
- parser = configparser.ConfigParser(interpolation = None, comment_prefixes=())
+ parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ())
parser.read_string(serialized)
# Update version number.
diff --git a/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py b/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py
index 8b69852cb2..f3453527bc 100644
--- a/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py
+++ b/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py
@@ -52,7 +52,7 @@ class VersionUpgrade43to44(VersionUpgrade):
#
# This renames the renamed settings in the containers.
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
- parser = configparser.ConfigParser(interpolation = None, comment_prefixes=())
+ parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ())
parser.read_string(serialized)
# Update version number.
diff --git a/plugins/VersionUpgrade/VersionUpgrade44to45/VersionUpgrade44to45.py b/plugins/VersionUpgrade/VersionUpgrade44to45/VersionUpgrade44to45.py
index 1d278764f0..3ae25e05ae 100644
--- a/plugins/VersionUpgrade/VersionUpgrade44to45/VersionUpgrade44to45.py
+++ b/plugins/VersionUpgrade/VersionUpgrade44to45/VersionUpgrade44to45.py
@@ -3,10 +3,17 @@ from typing import Tuple, List
import io
from UM.VersionUpgrade import VersionUpgrade
-# Merged preferences: machine_head_polygon and machine_head_with_fans_polygon -> machine_head_with_fans_polygon
-# When both are present, machine_head_polygon will be removed
-# When only one of the two is present, it's value will be used
+# Settings that were merged into one. Each one is a pair of settings. If both
+# are overwritten, the key wins. If only the key or the value is overwritten,
+# that value is used in the key.
+_merged_settings = {
+ "machine_head_with_fans_polygon": "machine_head_polygon",
+ "support_wall_count": "support_tree_wall_count"
+}
+_removed_settings = {
+ "support_tree_wall_thickness"
+}
class VersionUpgrade44to45(VersionUpgrade):
def getCfgVersion(self, serialised: str) -> int:
@@ -35,20 +42,26 @@ class VersionUpgrade44to45(VersionUpgrade):
#
# This renames the renamed settings in the containers.
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
- parser = configparser.ConfigParser(interpolation = None, comment_prefixes=())
+ parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ())
parser.read_string(serialized)
# Update version number.
parser["metadata"]["setting_version"] = "11"
if "values" in parser:
- # merge machine_head_with_fans_polygon (preferred) and machine_head_polygon
- if "machine_head_with_fans_polygon" in parser["values"]:
- if "machine_head_polygon" in parser["values"]:
- del parser["values"]["machine_head_polygon"]
- elif "machine_head_polygon" in parser["values"]:
- parser["values"]["machine_head_with_fans_polygon"] = parser["values"]["machine_head_polygon"]
- del parser["values"]["machine_head_polygon"]
+ # Merged settings: When two settings are merged, one is preferred.
+ # If the preferred one is available, that value is taken regardless
+ # of the other one. If only the non-preferred one is available, that
+ # value is moved to the preferred setting value.
+ for preferred, removed in _merged_settings.items():
+ if removed in parser["values"]:
+ if preferred not in parser["values"]:
+ parser["values"][preferred] = parser["values"][removed]
+ del parser["values"][removed]
+
+ for removed in _removed_settings:
+ if removed in parser["values"]:
+ del parser["values"][removed]
result = io.StringIO()
parser.write(result)
diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py
index 52b204affc..bf1bf19e32 100644
--- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py
+++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py
@@ -1106,6 +1106,12 @@ class XmlMaterialProfile(InstanceContainer):
"break preparation speed": "material_break_preparation_speed",
"break preparation temperature": "material_break_preparation_temperature",
"break position": "material_break_retracted_position",
+ "flush purge speed": "material_flush_purge_speed",
+ "flush purge length": "material_flush_purge_length",
+ "end of filament purge speed": "material_end_of_filament_purge_speed",
+ "end of filament purge length": "material_end_of_filament_purge_length",
+ "maximum park duration": "material_maximum_park_duration",
+ "no load move factor": "material_no_load_move_factor",
"break speed": "material_break_speed",
"break temperature": "material_break_temperature"
} # type: Dict[str, str]
diff --git a/resources/bundled_packages/cura.json b/resources/bundled_packages/cura.json
index 22642cd38e..7cb229150c 100644
--- a/resources/bundled_packages/cura.json
+++ b/resources/bundled_packages/cura.json
@@ -407,6 +407,23 @@
}
}
},
+ "SentryLogger": {
+ "package_info": {
+ "package_id": "SentryLogger",
+ "package_type": "plugin",
+ "display_name": "Sentry Logger",
+ "description": "Logs certain events so that they can be used by the crash reporter",
+ "package_version": "1.0.0",
+ "sdk_version": "7.0.0",
+ "website": "https://ultimaker.com",
+ "author": {
+ "author_id": "UltimakerPackages",
+ "display_name": "Ultimaker B.V.",
+ "email": "plugins@ultimaker.com",
+ "website": "https://ultimaker.com"
+ }
+ }
+ },
"SimulationView": {
"package_info": {
"package_id": "SimulationView",
diff --git a/resources/definitions/Mark2_for_Ultimaker2.def.json b/resources/definitions/Mark2_for_Ultimaker2.def.json
index 1aca2a3844..6867183081 100644
--- a/resources/definitions/Mark2_for_Ultimaker2.def.json
+++ b/resources/definitions/Mark2_for_Ultimaker2.def.json
@@ -58,9 +58,6 @@
"machine_nozzle_head_distance": {
"default_value": 5
},
- "machine_nozzle_expansion_angle": {
- "default_value": 45
- },
"machine_heat_zone_length": {
"default_value": 20
},
diff --git a/resources/definitions/anet3d.def.json b/resources/definitions/anet3d.def.json
new file mode 100644
index 0000000000..5caf171487
--- /dev/null
+++ b/resources/definitions/anet3d.def.json
@@ -0,0 +1,152 @@
+{
+ "version": 2,
+ "name": "anet3d",
+ "inherits": "fdmprinter",
+ "metadata": {
+ "author": "Tiger.He",
+ "manufacturer": "Anet",
+ "category": "anet3d",
+ "visible": false,
+ "file_formats": "text/x-gcode",
+ "first_start_actions": ["MachineSettingsAction"],
+
+ "preferred_variant_name": "0.4mm Nozzle",
+ "preferred_quality_type": "standard",
+ "preferred_material": "generic_pla",
+ "machine_extruder_trains":
+ {
+ "0": "anet3d_extruder_0"
+ }
+ },
+ "overrides": {
+ "machine_max_feedrate_x": { "value": 500 },
+ "machine_max_feedrate_y": { "value": 500 },
+ "machine_max_feedrate_z": { "value": 10 },
+ "machine_max_feedrate_e": { "value": 50 },
+
+ "machine_max_acceleration_x": { "value": 500 },
+ "machine_max_acceleration_y": { "value": 500 },
+ "machine_max_acceleration_z": { "value": 100 },
+ "machine_max_acceleration_e": { "value": 5000 },
+ "machine_acceleration": { "value": 500 },
+
+ "machine_max_jerk_xy": { "value": 10 },
+ "machine_max_jerk_z": { "value": 0.4 },
+ "machine_max_jerk_e": { "value": 5 },
+
+ "machine_heated_bed": { "default_value": true },
+
+ "material_diameter": { "default_value": 1.75 },
+
+ "acceleration_print": { "value": 1000 },
+ "acceleration_travel": { "value": 1000 },
+ "acceleration_travel_layer_0": { "value": "acceleration_travel" },
+ "acceleration_roofing": { "enabled": "acceleration_enabled and roofing_layer_count > 0 and top_layers > 0" },
+
+ "jerk_print": { "value": 30.0 },
+ "jerk_travel": { "value": "jerk_print" },
+ "jerk_travel_layer_0": { "value": "jerk_travel" },
+
+ "acceleration_enabled": { "value": true },
+ "jerk_enabled": { "value": false },
+
+ "speed_print": { "value": 50.0 } ,
+ "speed_infill": { "value": "speed_print * 2" },
+ "speed_wall": { "value": "speed_print / 2" },
+ "speed_wall_0": { "value": "speed_wall" },
+ "speed_wall_x": { "value": "speed_wall" },
+ "speed_topbottom": { "value": "speed_print / 2" },
+ "speed_roofing": { "value": "speed_topbottom" },
+ "speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" },
+ "speed_layer_0": { "value": "speed_print / 2" },
+ "speed_print_layer_0": { "value": "speed_layer_0" },
+ "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" },
+ "speed_prime_tower": { "value": "speed_print" },
+ "speed_support": { "value": "speed_print" },
+ "speed_support_interface": { "value": "speed_print" },
+ "speed_z_hop": { "value": 5 },
+
+ "skirt_brim_speed": { "value": "speed_layer_0" },
+
+ "line_width": { "value": "machine_nozzle_size" },
+
+ "optimize_wall_printing_order": { "value": true },
+
+ "material_initial_print_temperature": { "value": "material_print_temperature" },
+ "material_final_print_temperature": { "value": "material_print_temperature" },
+ "material_flow": { "value": 100 },
+ "travel_compensate_overlapping_walls_0_enabled": { "value": "False" },
+
+ "z_seam_type": { "value": "'back'" },
+ "z_seam_corner": { "value": "'z_seam_corner_weighted'" },
+
+ "infill_sparse_density": { "value": "20" },
+ "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" },
+ "infill_before_walls": { "value": true },
+ "infill_overlap": { "value": 30.0 },
+ "skin_overlap": { "value": 10.0 },
+ "infill_wipe_dist": { "value": 1.0 },
+ "wall_0_wipe_dist": { "value": 0.2 },
+
+ "fill_perimeter_gaps": { "value": "'everywhere'" },
+ "fill_outline_gaps": { "value": false },
+ "filter_out_tiny_gaps": { "value": true },
+
+ "retraction_speed": {
+ "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')",
+ "maximum_value": 200
+ },
+ "retraction_retract_speed": {
+ "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')",
+ "maximum_value": 200
+ },
+ "retraction_prime_speed": {
+ "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')",
+ "maximum_value": 200
+ },
+
+ "retraction_hop_enabled": { "value": "False" },
+ "retraction_hop": { "value": 1 },
+ "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'noskin'" },
+ "retraction_combing_max_distance": { "value": 30 },
+ "travel_avoid_other_parts": { "value": true },
+ "travel_avoid_supports": { "value": true },
+ "travel_retract_before_outer_wall": { "value": true },
+
+ "retraction_enable": { "value": true },
+ "retraction_count_max": { "value": 100 },
+ "retraction_extrusion_window": { "value": 10 },
+ "retraction_min_travel": { "value": 1.5 },
+
+ "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" },
+ "cool_fan_enabled": { "value": true },
+ "cool_min_layer_time": { "value": 10 },
+
+ "adaptive_layer_height_variation": { "value": 0.04 },
+ "adaptive_layer_height_variation_step": { "value": 0.04 },
+
+ "meshfix_maximum_resolution": { "value": "0.05" },
+ "meshfix_maximum_travel_resolution": { "value": "meshfix_maximum_resolution" },
+
+ "top_bottom_thickness": {"value": "layer_height_0 + layer_height * 3" },
+ "wall_thickness": {"value": "line_width * 2" },
+
+ "material_print_temperature": {"minimum_value": "0"},
+ "material_bed_temperature": {"minimum_value": "0"},
+ "material_standby_temperature": {"minimum_value": "0"},
+
+ "extruder_prime_pos_y":{"minimum_value": "0","maximum_value": "machine_depth"},
+ "extruder_prime_pos_x":{"minimum_value": "0","maximum_value": "machine_width"},
+ "relative_extrusion":{"value": false,"enabled": false},
+
+ "machine_use_extruder_offset_to_offset_coords": {"default_value": true},
+ "machine_gcode_flavor": {"default_value": "RepRap (Marlin/Sprinter)"},
+
+ "machine_center_is_zero": {
+ "default_value": false
+ },
+ "gantry_height": {
+ "value": "0"
+ }
+ }
+}
diff --git a/resources/definitions/anet3d_a2 plus.def.json b/resources/definitions/anet3d_a2 plus.def.json
new file mode 100644
index 0000000000..cc5334bf89
--- /dev/null
+++ b/resources/definitions/anet3d_a2 plus.def.json
@@ -0,0 +1,31 @@
+{
+ "version": 2,
+ "name": "Anet A2 PLUS",
+ "inherits": "anet3d",
+ "metadata": {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "anet3d_extruder_0"
+ }
+ },
+
+ "overrides": {
+ "machine_name": { "default_value": "Anet A2 PLUS" },
+ "machine_width": {
+ "default_value": 220
+ },
+ "machine_depth": {
+ "default_value": 270
+ },
+ "machine_height": {
+ "default_value": 220
+ },
+ "machine_start_gcode": {
+ "default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
+ },
+ "machine_end_gcode": {
+ "default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
+ }
+ }
+}
diff --git a/resources/definitions/anet3d_a2.def.json b/resources/definitions/anet3d_a2.def.json
new file mode 100644
index 0000000000..693ac1d37f
--- /dev/null
+++ b/resources/definitions/anet3d_a2.def.json
@@ -0,0 +1,31 @@
+{
+ "version": 2,
+ "name": "Anet A2",
+ "inherits": "anet3d",
+ "metadata": {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "anet3d_extruder_0"
+ }
+ },
+
+ "overrides": {
+ "machine_name": { "default_value": "Anet A2" },
+ "machine_width": {
+ "default_value": 220
+ },
+ "machine_depth": {
+ "default_value": 220
+ },
+ "machine_height": {
+ "default_value": 220
+ },
+ "machine_start_gcode": {
+ "default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
+ },
+ "machine_end_gcode": {
+ "default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
+ }
+ }
+}
diff --git a/resources/definitions/anet3d_a6.def.json b/resources/definitions/anet3d_a6.def.json
new file mode 100644
index 0000000000..dbbc86bf86
--- /dev/null
+++ b/resources/definitions/anet3d_a6.def.json
@@ -0,0 +1,31 @@
+{
+ "version": 2,
+ "name": "Anet A6",
+ "inherits": "anet3d",
+ "metadata": {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "anet3d_extruder_0"
+ }
+ },
+
+ "overrides": {
+ "machine_name": { "default_value": "Anet A6" },
+ "machine_width": {
+ "default_value": 220
+ },
+ "machine_depth": {
+ "default_value": 220
+ },
+ "machine_height": {
+ "default_value": 250
+ },
+ "machine_start_gcode": {
+ "default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
+ },
+ "machine_end_gcode": {
+ "default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
+ }
+ }
+}
diff --git a/resources/definitions/anet3d_a8 plus.def.json b/resources/definitions/anet3d_a8 plus.def.json
new file mode 100644
index 0000000000..9f19fcdd8d
--- /dev/null
+++ b/resources/definitions/anet3d_a8 plus.def.json
@@ -0,0 +1,31 @@
+{
+ "version": 2,
+ "name": "Anet A8 PLUS",
+ "inherits": "anet3d",
+ "metadata": {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "anet3d_extruder_0"
+ }
+ },
+
+ "overrides": {
+ "machine_name": { "default_value": "Anet A8 PLUS" },
+ "machine_width": {
+ "default_value": 300
+ },
+ "machine_depth": {
+ "default_value": 300
+ },
+ "machine_height": {
+ "default_value": 350
+ },
+ "machine_start_gcode": {
+ "default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
+ },
+ "machine_end_gcode": {
+ "default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
+ }
+ }
+}
diff --git a/resources/definitions/anet3d_a8.def.json b/resources/definitions/anet3d_a8.def.json
new file mode 100644
index 0000000000..379a8497c9
--- /dev/null
+++ b/resources/definitions/anet3d_a8.def.json
@@ -0,0 +1,31 @@
+{
+ "version": 2,
+ "name": "Anet A8",
+ "inherits": "anet3d",
+ "metadata": {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "anet3d_extruder_0"
+ }
+ },
+
+ "overrides": {
+ "machine_name": { "default_value": "Anet A8" },
+ "machine_width": {
+ "default_value": 220
+ },
+ "machine_depth": {
+ "default_value": 220
+ },
+ "machine_height": {
+ "default_value": 240
+ },
+ "machine_start_gcode": {
+ "default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
+ },
+ "machine_end_gcode": {
+ "default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
+ }
+ }
+}
diff --git a/resources/definitions/anet3d_e10.def.json b/resources/definitions/anet3d_e10.def.json
new file mode 100644
index 0000000000..9125715cd3
--- /dev/null
+++ b/resources/definitions/anet3d_e10.def.json
@@ -0,0 +1,31 @@
+{
+ "version": 2,
+ "name": "Anet E10",
+ "inherits": "anet3d",
+ "metadata": {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "anet3d_extruder_0"
+ }
+ },
+
+ "overrides": {
+ "machine_name": { "default_value": "Anet E10" },
+ "machine_width": {
+ "default_value": 220
+ },
+ "machine_depth": {
+ "default_value": 270
+ },
+ "machine_height": {
+ "default_value": 300
+ },
+ "machine_start_gcode": {
+ "default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
+ },
+ "machine_end_gcode": {
+ "default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
+ }
+ }
+}
diff --git a/resources/definitions/anet3d_e12.def.json b/resources/definitions/anet3d_e12.def.json
new file mode 100644
index 0000000000..e40aad75ff
--- /dev/null
+++ b/resources/definitions/anet3d_e12.def.json
@@ -0,0 +1,31 @@
+{
+ "version": 2,
+ "name": "Anet E12",
+ "inherits": "anet3d",
+ "metadata": {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "anet3d_extruder_0"
+ }
+ },
+
+ "overrides": {
+ "machine_name": { "default_value": "Anet E12" },
+ "machine_width": {
+ "default_value": 300
+ },
+ "machine_depth": {
+ "default_value": 300
+ },
+ "machine_height": {
+ "default_value": 400
+ },
+ "machine_start_gcode": {
+ "default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
+ },
+ "machine_end_gcode": {
+ "default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
+ }
+ }
+}
diff --git a/resources/definitions/anet3d_e16.def.json b/resources/definitions/anet3d_e16.def.json
new file mode 100644
index 0000000000..96868fa3d5
--- /dev/null
+++ b/resources/definitions/anet3d_e16.def.json
@@ -0,0 +1,31 @@
+{
+ "version": 2,
+ "name": "Anet E16",
+ "inherits": "anet3d",
+ "metadata": {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "anet3d_extruder_0"
+ }
+ },
+
+ "overrides": {
+ "machine_name": { "default_value": "Anet E16" },
+ "machine_width": {
+ "default_value": 300
+ },
+ "machine_depth": {
+ "default_value": 300
+ },
+ "machine_height": {
+ "default_value": 400
+ },
+ "machine_start_gcode": {
+ "default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
+ },
+ "machine_end_gcode": {
+ "default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
+ }
+ }
+}
diff --git a/resources/definitions/anet3d_et4 pro.def.json b/resources/definitions/anet3d_et4 pro.def.json
new file mode 100644
index 0000000000..48f4f83fef
--- /dev/null
+++ b/resources/definitions/anet3d_et4 pro.def.json
@@ -0,0 +1,31 @@
+{
+ "version": 2,
+ "name": "Anet ET4 PRO",
+ "inherits": "anet3d",
+ "metadata": {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "anet3d_extruder_0"
+ }
+ },
+
+ "overrides": {
+ "machine_name": { "default_value": "Anet ET4 PRO" },
+ "machine_width": {
+ "default_value": 220
+ },
+ "machine_depth": {
+ "default_value": 220
+ },
+ "machine_height": {
+ "default_value": 250
+ },
+ "machine_start_gcode": {
+ "default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
+ },
+ "machine_end_gcode": {
+ "default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
+ }
+ }
+}
diff --git a/resources/definitions/anet3d_et4 x.def.json b/resources/definitions/anet3d_et4 x.def.json
new file mode 100644
index 0000000000..09d7c8be81
--- /dev/null
+++ b/resources/definitions/anet3d_et4 x.def.json
@@ -0,0 +1,31 @@
+{
+ "version": 2,
+ "name": "Anet ET4 X",
+ "inherits": "anet3d",
+ "metadata": {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "anet3d_extruder_0"
+ }
+ },
+
+ "overrides": {
+ "machine_name": { "default_value": "Anet ET4 X" },
+ "machine_width": {
+ "default_value": 220
+ },
+ "machine_depth": {
+ "default_value": 220
+ },
+ "machine_height": {
+ "default_value": 250
+ },
+ "machine_start_gcode": {
+ "default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
+ },
+ "machine_end_gcode": {
+ "default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
+ }
+ }
+}
diff --git a/resources/definitions/anet3d_et4.def.json b/resources/definitions/anet3d_et4.def.json
new file mode 100644
index 0000000000..383aeeb571
--- /dev/null
+++ b/resources/definitions/anet3d_et4.def.json
@@ -0,0 +1,31 @@
+{
+ "version": 2,
+ "name": "Anet ET4",
+ "inherits": "anet3d",
+ "metadata": {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "anet3d_extruder_0"
+ }
+ },
+
+ "overrides": {
+ "machine_name": { "default_value": "Anet ET4" },
+ "machine_width": {
+ "default_value": 220
+ },
+ "machine_depth": {
+ "default_value": 220
+ },
+ "machine_height": {
+ "default_value": 250
+ },
+ "machine_start_gcode": {
+ "default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
+ },
+ "machine_end_gcode": {
+ "default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
+ }
+ }
+}
diff --git a/resources/definitions/anet3d_et5 x.def.json b/resources/definitions/anet3d_et5 x.def.json
new file mode 100644
index 0000000000..572d204514
--- /dev/null
+++ b/resources/definitions/anet3d_et5 x.def.json
@@ -0,0 +1,31 @@
+{
+ "version": 2,
+ "name": "Anet ET5 X",
+ "inherits": "anet3d",
+ "metadata": {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "anet3d_extruder_0"
+ }
+ },
+
+ "overrides": {
+ "machine_name": { "default_value": "Anet ET5 X" },
+ "machine_width": {
+ "default_value": 300
+ },
+ "machine_depth": {
+ "default_value": 300
+ },
+ "machine_height": {
+ "default_value": 400
+ },
+ "machine_start_gcode": {
+ "default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
+ },
+ "machine_end_gcode": {
+ "default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
+ }
+ }
+}
diff --git a/resources/definitions/anet3d_et5.def.json b/resources/definitions/anet3d_et5.def.json
new file mode 100644
index 0000000000..51951f1541
--- /dev/null
+++ b/resources/definitions/anet3d_et5.def.json
@@ -0,0 +1,31 @@
+{
+ "version": 2,
+ "name": "Anet ET5",
+ "inherits": "anet3d",
+ "metadata": {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "anet3d_extruder_0"
+ }
+ },
+
+ "overrides": {
+ "machine_name": { "default_value": "Anet ET5" },
+ "machine_width": {
+ "default_value": 300
+ },
+ "machine_depth": {
+ "default_value": 300
+ },
+ "machine_height": {
+ "default_value": 400
+ },
+ "machine_start_gcode": {
+ "default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
+ },
+ "machine_end_gcode": {
+ "default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
+ }
+ }
+}
diff --git a/resources/definitions/anet_a6.def.json b/resources/definitions/anet_a6.def.json
deleted file mode 100644
index 0f5384451e..0000000000
--- a/resources/definitions/anet_a6.def.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "version": 2,
- "name": "Anet A6",
- "inherits": "fdmprinter",
- "metadata": {
- "visible": true,
- "author": "Mark",
- "manufacturer": "Anet",
- "file_formats": "text/x-gcode",
- "platform": "aneta6_platform.stl",
- "platform_offset": [0, -3.4, 0],
- "machine_extruder_trains":
- {
- "0": "anet_a6_extruder_0"
- }
- },
-
- "overrides": {
- "machine_name": { "default_value": "Anet A6" },
- "machine_heated_bed": {
- "default_value": true
- },
- "machine_width": {
- "default_value": 220
- },
- "machine_height": {
- "default_value": 250
- },
- "machine_depth": {
- "default_value": 220
- },
- "machine_center_is_zero": {
- "default_value": false
- },
- "gantry_height": {
- "value": "55"
- },
- "machine_start_gcode": {
- "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nM84 ;steppers off\nM0 S12 ;wait 12 seconds\nM17 ;turn steppers on\nG1 Z10.0 F300 ;move the platform down 10mm\nG92 E0 ;zero the extruded length\nG1 F200 E8 ;extrude 8mm of feed stock\nG92 E0 ;zero the extruded length again\nM0 S5 ;wait 5 seconds\nG1 F9000\nM117 Printing..."
- },
- "machine_end_gcode": {
- "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+4 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nG1 Y210 F9000 ;move out to get part off\nM84 ;steppers off\nG90 ;absolute positioning"
- }
- }
-}
diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json
index 7b878a3ea2..13716be9ba 100644
--- a/resources/definitions/fdmprinter.def.json
+++ b/resources/definitions/fdmprinter.def.json
@@ -2084,7 +2084,6 @@
"maximum_value": "machine_height",
"type": "float",
"value": "0",
- "comment": "This was put at 0 to keep the default behaviour the same, but in the original PR the 'value' was: resolveOrValue('infill_sparse_thickness') * (4 if infill_sparse_density < 12.5 else (3 if infill_sparse_density < 25 else (2 if infill_sparse_density < 50 else 1)))",
"limit_to_extruder": "infill_extruder_nr",
"enabled": "infill_sparse_density > 0",
"settable_per_mesh": true,
@@ -2420,6 +2419,54 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
+ "material_flush_purge_speed":
+ {
+ "label": "Flush Purge Speed",
+ "description": "Material Station internal value",
+ "type": "float",
+ "default_value": 0.5,
+ "enabled": false
+ },
+ "material_flush_purge_length":
+ {
+ "label": "Flush Purge Length",
+ "description": "Material Station internal value",
+ "type": "float",
+ "default_value": 60,
+ "enabled": false
+ },
+ "material_end_of_filament_purge_speed":
+ {
+ "label": "End Of Filament Purge Speed",
+ "description": "Material Station internal value",
+ "type": "float",
+ "default_value": 0.5,
+ "enabled": false
+ },
+ "material_end_of_filament_purge_length":
+ {
+ "label": "End Of Filament Purge Length",
+ "description": "Material Station internal value",
+ "type": "float",
+ "default_value": 20,
+ "enabled": false
+ },
+ "material_maximum_park_duration":
+ {
+ "label": "Maximum Park Duration",
+ "description": "Material Station internal value",
+ "type": "float",
+ "default_value": 300,
+ "enabled": false
+ },
+ "material_no_load_move_factor":
+ {
+ "label": "No Load Move Factor",
+ "description": "Material Station internal value",
+ "type": "float",
+ "default_value": 0.940860215,
+ "enabled": false
+ },
"material_flow":
{
"label": "Flow",
@@ -4233,8 +4280,8 @@
"minimum_value_warning": "1 if support_pattern == 'concentric' else 0",
"maximum_value_warning": "3",
"type": "int",
- "value": "1 if (support_pattern == 'grid' or support_pattern == 'triangles' or support_pattern == 'concentric') else 0",
- "enabled": "support_enable",
+ "value": "1 if support_tree_enable else (1 if (support_pattern == 'grid' or support_pattern == 'triangles' or support_pattern == 'concentric') else 0)",
+ "enabled": "support_enable or support_tree_enable",
"limit_to_extruder": "support_infill_extruder_nr",
"settable_per_mesh": false,
"settable_per_extruder": true
@@ -6186,38 +6233,6 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
- "support_tree_wall_thickness":
- {
- "label": "Tree Support Wall Thickness",
- "description": "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily.",
- "unit": "mm",
- "type": "float",
- "minimum_value": "0",
- "minimum_value_warning": "wall_line_width",
- "default_value": 0.8,
- "value": "support_line_width",
- "limit_to_extruder": "support_infill_extruder_nr",
- "enabled": "support_tree_enable",
- "settable_per_mesh": false,
- "settable_per_extruder": true,
- "children":
- {
- "support_tree_wall_count":
- {
- "label": "Tree Support Wall Line Count",
- "description": "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily.",
- "type": "int",
- "minimum_value": "0",
- "minimum_value_warning": "1",
- "default_value": 1,
- "value": "round(support_tree_wall_thickness / support_line_width)",
- "limit_to_extruder": "support_infill_extruder_nr",
- "enabled": "support_tree_enable",
- "settable_per_mesh": false,
- "settable_per_extruder": true
- }
- }
- },
"slicing_tolerance":
{
"label": "Slicing Tolerance",
diff --git a/resources/definitions/lotmaxx_sc10.def.json b/resources/definitions/lotmaxx_sc10.def.json
new file mode 100644
index 0000000000..12345c70c9
--- /dev/null
+++ b/resources/definitions/lotmaxx_sc10.def.json
@@ -0,0 +1,64 @@
+{
+ "name": "Lotmaxx SC-10",
+ "version": 2,
+ "inherits": "fdmprinter",
+ "metadata": {
+ "visible": true,
+ "author": "lotmaxx.com",
+ "manufacturer": "Lotmaxx",
+ "file_formats": "text/x-gcode",
+ "platform": "lotmaxx_sc_10_20_platform.stl",
+ "has_materials": true,
+ "machine_extruder_trains":
+ {
+ "0": "lotmaxx_sc10_extruder_0"
+ }
+ },
+ "overrides": {
+ "machine_name": { "default_value": "Lotmaxx SC-10" },
+ "machine_width": { "default_value": 235 },
+ "machine_depth": { "default_value": 235 },
+ "machine_height": { "default_value": 320 },
+ "machine_head_with_fans_polygon": { "default_value": [[-32,11],[-32,-32],[28,-32],[28,11]] },
+ "gantry_height": { "value": 40 },
+ "machine_start_gcode": { "default_value": "; SC-10 Custom Start G-code\nG28 ; Home all axes\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position\nG1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\n; End of custom start GCode" },
+ "machine_end_gcode": { "default_value": "; SC-10 Custom End G-code\nG4 ; Wait\nM220 S100 ; Reset Speed factor override percentage to default (100%)\nM221 S100 ; Reset Extrude factor override percentage to default (100%)\nG91 ; Set coordinates to relative\nG1 F1800 E-3 ; Retract filament 3 mm to prevent oozing\nG1 F3000 Z20 ; Move Z Axis up 20 mm to allow filament ooze freely\nG90 ; Set coordinates to absolute\nG1 X0 Y{machine_depth} F1000 ; Move Heat Bed to the front for easy print removal\nM84 ; Disable stepper motors\n; End of custom end GCode" },
+ "machine_max_jerk_xy":{ "value":10 },
+ "machine_max_jerk_z":{ "value":0.4 },
+ "machine_max_jerk_e":{ "value":5 },
+ "machine_heated_bed":{ "default_value":true },
+ "material_diameter":{ "default_value":1.75 },
+ "jerk_print":{ "value":8 },
+ "jerk_travel":{ "value":"jerk_print" },
+ "jerk_travel_layer_0":{ "value":"jerk_travel" },
+ "acceleration_enabled":{ "value":false },
+ "jerk_enabled":{ "value":false },
+ "speed_print":{ "value":60.0 },
+ "speed_infill":{ "value":"speed_print * 2" },
+ "speed_wall":{ "value":"speed_print / 2" },
+ "speed_wall_0":{ "value":"speed_wall" },
+ "speed_wall_x":{ "value":"speed_wall" },
+ "speed_topbottom":{ "value":"speed_print / 2" },
+ "speed_roofing":{ "value":"speed_topbottom" },
+ "speed_travel":{ "value":"150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" },
+ "speed_layer_0":{ "value":20.0 },
+ "speed_print_layer_0":{ "value":"speed_layer_0" },
+ "speed_travel_layer_0":{ "value":"100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" },
+ "speed_prime_tower":{ "value":"speed_topbottom" },
+ "speed_support":{ "value":"speed_wall_0" },
+ "speed_support_interface":{ "value":"speed_topbottom" },
+ "skirt_brim_speed":{ "value":"speed_layer_0" },
+ "retraction_enable":{ "value":true },
+ "retraction_count_max":{ "value":100 },
+ "retraction_extrusion_window":{ "value":10 },
+ "retraction_min_travel":{ "value":1.5 },
+ "cool_fan_full_at_height":{ "value":"layer_height_0 + 2 * layer_height" },
+ "cool_fan_enabled":{ "value":true },
+ "cool_min_layer_time":{ "value":10 },
+ "meshfix_maximum_resolution":{ "value":"0.05" },
+ "meshfix_maximum_travel_resolution":{ "value":"meshfix_maximum_resolution" },
+ "adhesion_type": { "value": "'none' if support_enable else 'skirt'" },
+ "skirt_gap":{ "value":5.0 },
+ "skirt_line_count":{ "value":4 }
+ }
+}
diff --git a/resources/definitions/lotmaxx_sc20.def.json b/resources/definitions/lotmaxx_sc20.def.json
new file mode 100644
index 0000000000..4b59a32ec5
--- /dev/null
+++ b/resources/definitions/lotmaxx_sc20.def.json
@@ -0,0 +1,64 @@
+{
+ "name": "Lotmaxx SC-20",
+ "version": 2,
+ "inherits": "fdmprinter",
+ "metadata": {
+ "visible": true,
+ "author": "lotmaxx.com",
+ "manufacturer": "Lotmaxx",
+ "file_formats": "text/x-gcode",
+ "platform": "lotmaxx_sc_10_20_platform.stl",
+ "has_materials": true,
+ "machine_extruder_trains":
+ {
+ "0": "lotmaxx_sc20_extruder_0"
+ }
+ },
+ "overrides": {
+ "machine_name": { "default_value": "Lotmaxx SC-20" },
+ "machine_width": { "default_value": 235 },
+ "machine_depth": { "default_value": 235 },
+ "machine_height": { "default_value": 320 },
+ "machine_head_with_fans_polygon": { "default_value": [[-32,11],[-32,-32],[28,-32],[28,11]] },
+ "gantry_height": { "value": 40 },
+ "machine_start_gcode": { "default_value": "; SC-20 Custom Start G-code\nG28 ; Home all axes\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position\nG1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\n; End of custom start GCode" },
+ "machine_end_gcode": { "default_value": "; SC-20 Custom End G-code\nG4 ; Wait\nM220 S100 ; Reset Speed factor override percentage to default (100%)\nM221 S100 ; Reset Extrude factor override percentage to default (100%)\nG91 ; Set coordinates to relative\nG1 F1800 E-3 ; Retract filament 3 mm to prevent oozing\nG1 F3000 Z20 ; Move Z Axis up 20 mm to allow filament ooze freely\nG90 ; Set coordinates to absolute\nG1 X0 Y{machine_depth} F1000 ; Move Heat Bed to the front for easy print removal\nM84 ; Disable stepper motors\n; End of custom end GCode" },
+ "machine_max_jerk_xy":{ "value":10 },
+ "machine_max_jerk_z":{ "value":0.4 },
+ "machine_max_jerk_e":{ "value":5 },
+ "machine_heated_bed":{ "default_value":true },
+ "material_diameter":{ "default_value":1.75 },
+ "jerk_print":{ "value":8 },
+ "jerk_travel":{ "value":"jerk_print" },
+ "jerk_travel_layer_0":{ "value":"jerk_travel" },
+ "acceleration_enabled":{ "value":false },
+ "jerk_enabled":{ "value":false },
+ "speed_print":{ "value":60.0 },
+ "speed_infill":{ "value":"speed_print * 2" },
+ "speed_wall":{ "value":"speed_print / 2" },
+ "speed_wall_0":{ "value":"speed_wall" },
+ "speed_wall_x":{ "value":"speed_wall" },
+ "speed_topbottom":{ "value":"speed_print / 2" },
+ "speed_roofing":{ "value":"speed_topbottom" },
+ "speed_travel":{ "value":"150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" },
+ "speed_layer_0":{ "value":20.0 },
+ "speed_print_layer_0":{ "value":"speed_layer_0" },
+ "speed_travel_layer_0":{ "value":"100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" },
+ "speed_prime_tower":{ "value":"speed_topbottom" },
+ "speed_support":{ "value":"speed_wall_0" },
+ "speed_support_interface":{ "value":"speed_topbottom" },
+ "skirt_brim_speed":{ "value":"speed_layer_0" },
+ "retraction_enable":{ "value":true },
+ "retraction_count_max":{ "value":100 },
+ "retraction_extrusion_window":{ "value":10 },
+ "retraction_min_travel":{ "value":1.5 },
+ "cool_fan_full_at_height":{ "value":"layer_height_0 + 2 * layer_height" },
+ "cool_fan_enabled":{ "value":true },
+ "cool_min_layer_time":{ "value":10 },
+ "meshfix_maximum_resolution":{ "value":"0.05" },
+ "meshfix_maximum_travel_resolution":{ "value":"meshfix_maximum_resolution" },
+ "adhesion_type": { "value": "'none' if support_enable else 'skirt'" },
+ "skirt_gap":{ "value":5.0 },
+ "skirt_line_count":{ "value":4 }
+ }
+}
diff --git a/resources/definitions/maker_starter.def.json b/resources/definitions/maker_starter.def.json
index 96dca118af..88c46e9333 100644
--- a/resources/definitions/maker_starter.def.json
+++ b/resources/definitions/maker_starter.def.json
@@ -47,9 +47,6 @@
"machine_nozzle_head_distance": {
"default_value": 3
},
- "machine_nozzle_expansion_angle": {
- "default_value": 45
- },
"layer_height_0": {
"default_value": 0.2
},
diff --git a/resources/definitions/mendel90.def.json b/resources/definitions/mendel90.def.json
index 39cb4de8d3..b3d6d686c8 100644
--- a/resources/definitions/mendel90.def.json
+++ b/resources/definitions/mendel90.def.json
@@ -58,9 +58,6 @@
"machine_nozzle_head_distance": {
"default_value": 5
},
- "machine_nozzle_expansion_angle": {
- "default_value": 45
- },
"machine_heat_zone_length": {
"default_value": 16
},
diff --git a/resources/definitions/skriware_2.def.json b/resources/definitions/skriware_2.def.json
index 584cdd1708..31c9913c8f 100644
--- a/resources/definitions/skriware_2.def.json
+++ b/resources/definitions/skriware_2.def.json
@@ -1,598 +1,595 @@
{
- "name": "Skriware 2",
- "version": 2,
- "inherits": "fdmprinter",
- "metadata": {
- "visible": true,
- "author": "Skriware",
- "manufacturer": "Skriware",
- "category": "Other",
- "file_formats": "text/x-gcode",
- "platform_offset": [
- 0,
- 0,
- 0
- ],
- "supports_usb_connection": false,
- "platform": "skriware_2_platform.stl",
- "machine_extruder_trains": {
- "0": "skriware_2_extruder_0",
- "1": "skriware_2_extruder_1"
- }
- },
- "overrides": {
- "jerk_print_layer_0": {
- "value": "5"
- },
- "jerk_prime_tower": {
- "value": "5"
- },
- "expand_skins_expand_distance": {
- "value": "1.2"
- },
- "jerk_support_interface": {
- "value": "5"
- },
- "jerk_travel_layer_0": {
- "value": "5.0"
- },
- "wipe_retraction_prime_speed": {
- "value": "30"
- },
- "material_standby_temperature": {
- "default_value": 195
- },
- "acceleration_support_bottom": {
- "value": "250"
- },
- "raft_base_line_width": {
- "value": "0.5"
- },
- "raft_speed": {
- "value": "30.0"
- },
- "jerk_topbottom": {
- "value": "5"
- },
- "ironing_inset": {
- "value": "0.2"
- },
- "acceleration_wall": {
- "value": "250"
- },
- "cross_infill_pocket_size": {
- "value": "5.333333333333333"
- },
- "jerk_support_roof": {
- "value": "5"
- },
- "acceleration_print": {
- "default_value": 250
- },
- "meshfix_maximum_travel_resolution": {
- "value": "0.8"
- },
- "support_top_distance": {
- "value": "0.22"
- },
- "acceleration_enabled": {
- "default_value": true
- },
- "optimize_wall_printing_order": {
- "default_value": true
- },
- "jerk_layer_0": {
- "value": "5"
- },
- "infill_line_distance": {
- "value": "5.333333333333333"
- },
- "acceleration_ironing": {
- "value": "250"
- },
- "material_print_temperature_layer_0": {
- "value": "195"
- },
- "bridge_skin_speed_2": {
- "value": "15"
- },
- "acceleration_travel": {
- "value": "250"
- },
- "switch_extruder_retraction_speed": {
- "value": "30"
- },
- "jerk_print": {
- "default_value": 5
- },
- "material_guid": {
- "default_value": "0ff92885-617b-4144-a03c-9989872454bc"
- },
- "raft_interface_acceleration": {
- "value": "250"
- },
- "acceleration_support_interface": {
- "value": "250"
- },
- "cool_fan_full_layer": {
- "value": "1"
- },
- "skirt_brim_minimal_length": {
- "default_value": 50
- },
- "material_bed_temperature": {
- "value": "50"
- },
- "speed_slowdown_layers": {
- "default_value": 1
- },
- "speed_travel": {
- "value": "150"
- },
- "skin_overlap": {
- "value": "15"
- },
- "acceleration_infill": {
- "value": "250"
- },
- "support_roof_material_flow": {
- "value": "99"
- },
- "raft_base_jerk": {
- "value": "5"
- },
- "retraction_retract_speed": {
- "value": "30"
- },
- "infill_wipe_dist": {
- "value": "0.1"
- },
- "jerk_wall_x": {
- "value": "5"
- },
- "layer_height": {
- "default_value": 0.2
- },
- "bottom_skin_expand_distance": {
- "value": "1.2000000000000002"
- },
- "machine_start_gcode": {
- "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nG28 X0 Y0;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nM420 S1 Z0.9 ;enable bed levelling\nG1 Z10 F250 ;move the platform down 10mm\nM107 ;fan off\nM42 P11 S255 ;turn on front fan\nM140 S{material_bed_temperature}\nM104 T0 S{material_print_temperature}\nM104 T1 S{material_print_temperature}\nG1 F2500 Y260\nM190 S{material_bed_temperature}\nM109 T0 S{material_print_temperature}\nM109 T1 S{material_print_temperature}\nM60 ;enable E-FADE Algorithm\nM62 A ;filament sensor off\nG92 E0 ;zero the extruded length\nT1\nG92 E0;zero the extruded length\nG1 F300 Z0.3\nG1 F1200 X20\nG1 F1200 X180 E21 ;extrude 21 mm of feed stock\nG1 F1200 E15 ;retracting 6 mm\nG1 F2000 E21\nG1 F2000 E15\nG1 F300 Z1.5\nG92 E0 ;zero the extruded length again\nT0\nG92 E0 ;zero the extruded length\nG1 F1200 Y258\nG1 F300 Z0.3\nG1 F1200 X40 E21 ;extrude 21 mm of feed stock\nG1 F1200 E15 ;retracting 6 mm\nG1 F2000 E21\nG1 F2000 E15\nG1 Z1.5\nM61 A\nM63 A ;filament sensor on\nG92 E0 ;zero the extruded length again\nM58 ;end of Start G-Code and signal retract management"
- },
- "travel_retract_before_outer_wall": {
- "default_value": true
- },
- "xy_offset_layer_0": {
- "value": "-0.16"
- },
- "adhesion_type": {
- "default_value": "raft"
- },
- "min_skin_width_for_expansion": {
- "value": "0.671279704941824"
- },
- "support_bottom_material_flow": {
- "value": "99"
- },
- "prime_tower_position_x": {
- "value": "1"
- },
- "machine_depth": {
- "default_value": 260
- },
- "retraction_speed": {
- "default_value": 30
- },
- "support_skip_some_zags": {
- "default_value": true
- },
- "remove_empty_first_layers": {
- "default_value": false
- },
- "z_seam_x": {
- "value": "115"
- },
- "support_xy_distance_overhang": {
- "value": "0.5"
- },
- "support_tree_wall_thickness": {
- "value": "0.4"
- },
- "acceleration_print_layer_0": {
- "value": "250"
- },
- "support_xy_distance": {
- "default_value": 0.8
- },
- "support_roof_line_distance": {
- "value": "0.5714285714285714"
- },
- "jerk_enabled": {
- "default_value": true
- },
- "min_infill_area": {
- "default_value": 1
- },
- "travel_avoid_supports": {
- "default_value": true
- },
- "bottom_layers": {
- "value": "3"
- },
- "multiple_mesh_overlap": {
- "default_value": 0
- },
- "retraction_hop_enabled": {
- "default_value": true
- },
- "acceleration_topbottom": {
- "value": "250"
- },
- "jerk_wall": {
- "value": "5"
- },
- "jerk_wall_0": {
- "value": "5"
- },
- "skin_overlap_mm": {
- "value": "0.06"
- },
- "retraction_min_travel": {
- "value": "1"
- },
- "support_interface_material_flow": {
- "value": "99"
- },
- "material_diameter": {
- "default_value": 1.75
- },
- "speed_roofing": {
- "value": "30.0"
- },
- "skin_outline_count": {
- "default_value": 0
- },
- "skin_no_small_gaps_heuristic": {
- "default_value": true
- },
- "top_bottom_pattern_0": {
- "value": "'zigzag'"
- },
- "top_skin_expand_distance": {
- "value": "1.2000000000000002"
- },
- "acceleration_travel_layer_0": {
- "value": "250.0"
- },
- "prime_tower_min_volume": {
- "default_value": 4
- },
- "switch_extruder_retraction_speeds": {
- "default_value": 30
- },
- "skin_preshrink": {
- "value": "1.2000000000000002"
- },
- "material_bed_temperature_layer_0": {
- "value": "50"
- },
- "support_tree_collision_resolution": {
- "value": "0.2"
- },
- "machine_height": {
- "default_value": 210
- },
- "raft_acceleration": {
- "value": "250"
- },
- "fill_outline_gaps": {
- "default_value": true
- },
- "wall_x_material_flow": {
- "value": "99"
- },
- "jerk_support_bottom": {
- "value": "5"
- },
- "machine_end_gcode": {
- "default_value": "M59\nG92 E1\nG1 E-1 F300\nM104 T0 S0\nM104 T1 S0\nM140 S0\nG28 X0 Y0\nM84\nM106 S0\nM107"
- },
- "infill_sparse_density": {
- "default_value": 15
- },
- "meshfix_maximum_deviation": {
- "default_value": 0.005
- },
- "wall_0_material_flow": {
- "value": "99"
- },
- "material_adhesion_tendency": {
- "default_value": 0
- },
- "prime_tower_flow": {
- "value": "99"
- },
- "prime_tower_position_y": {
- "value": "1"
- },
- "support_material_flow": {
- "value": "99"
- },
- "retract_at_layer_change": {
- "default_value": true
- },
- "machine_extruder_count": {
- "default_value": 2
- },
- "wall_thickness": {
- "default_value": 1.2
- },
- "support_infill_sparse_thickness": {
- "value": "0.2"
- },
- "raft_surface_acceleration": {
- "value": "250"
- },
- "roofing_layer_count": {
- "value": "1"
- },
- "skirt_brim_line_width": {
- "value": "0.5"
- },
- "jerk_support": {
- "value": "5"
- },
- "raft_surface_jerk": {
- "value": "5"
- },
- "speed_equalize_flow_max": {
- "default_value": 40
- },
- "raft_surface_speed": {
- "value": "30.0"
- },
- "jerk_travel": {
- "value": "5"
- },
- "support_zag_skip_count": {
- "value": "8"
- },
- "retraction_combing": {
- "default_value": "infill"
- },
- "raft_interface_line_spacing": {
- "value": "0.4"
- },
- "layer_height_0": {
- "default_value": 0.2
- },
- "extruders_enabled_count": {
- "value": "2"
- },
- "support_line_distance": {
- "value": "1.3333333333333333"
- },
- "support_roof_density": {
- "value": "70"
- },
- "raft_base_line_spacing": {
- "value": "0.8"
- },
- "acceleration_prime_tower": {
- "value": "250"
- },
- "skin_material_flow": {
- "value": "99"
- },
- "support_z_distance": {
- "default_value": 0.22
- },
- "bottom_skin_preshrink": {
- "value": "1.2000000000000002"
- },
- "jerk_skirt_brim": {
- "value": "5"
- },
- "z_seam_y": {
- "value": "180"
- },
- "skirt_line_count": {
- "default_value": 2
- },
- "raft_margin": {
- "default_value": 4
- },
- "infill_material_flow": {
- "value": "99"
- },
- "wipe_retraction_retract_speed": {
- "value": "30"
- },
- "z_seam_corner": {
- "default_value": "z_seam_corner_weighted"
- },
- "support_roof_height": {
- "value": "0.4"
- },
- "top_layers": {
- "value": "4"
- },
- "support_infill_rate": {
- "value": "30"
- },
- "raft_interface_speed": {
- "value": "35"
- },
- "default_material_print_temperature": {
- "default_value": 195
- },
- "acceleration_layer_0": {
- "value": "250"
- },
- "support_skip_zag_per_mm": {
- "default_value": 10
- },
- "material_initial_print_temperature": {
- "value": "195"
- },
- "raft_interface_jerk": {
- "value": "5"
- },
- "machine_width": {
- "default_value": 210
- },
- "wall_line_count": {
- "value": "3"
- },
- "retraction_amount": {
- "default_value": 3
- },
- "infill_sparse_thickness": {
- "value": "0.2"
- },
- "support_initial_layer_line_distance": {
- "value": "1.3333333333333333"
- },
- "jerk_support_infill": {
- "value": "5"
- },
- "acceleration_roofing": {
- "value": "250"
- },
- "retraction_extrusion_window": {
- "value": "3"
- },
- "raft_interface_line_width": {
- "value": "0.4"
- },
- "acceleration_support_roof": {
- "value": "250"
- },
- "support_brim_line_count": {
- "value": "16"
- },
- "layer_0_z_overlap": {
- "value": "0.1"
- },
- "support_angle": {
- "default_value": 60
- },
- "machine_heated_bed": {
- "default_value": true
- },
- "raft_surface_thickness": {
- "value": "0.2"
- },
- "cool_min_layer_time": {
- "default_value": 10
- },
- "gantry_height": {
- "value": "210"
- },
- "raft_airgap": {
- "default_value": 0.2
- },
- "acceleration_skirt_brim": {
- "value": "250"
- },
- "skirt_brim_material_flow": {
- "value": "99"
- },
- "jerk_infill": {
- "value": "5"
- },
- "roofing_material_flow": {
- "value": "99"
- },
- "support_use_towers": {
- "default_value": false
- },
- "ooze_shield_angle": {
- "default_value": 50
- },
- "material_flow": {
- "default_value": 99
- },
- "speed_travel_layer_0": {
- "value": "75.0"
- },
- "raft_base_acceleration": {
- "value": "250"
- },
- "retraction_count_max": {
- "default_value": 40
- },
- "ooze_shield_dist": {
- "default_value": 4
- },
- "acceleration_support": {
- "value": "250"
- },
- "max_skin_angle_for_expansion": {
- "default_value": 50
- },
- "coasting_enable": {
- "default_value": true
- },
- "brim_width": {
- "default_value": 10
- },
- "acceleration_support_infill": {
- "value": "250"
- },
- "retraction_prime_speed": {
- "value": "30"
- },
- "raft_base_speed": {
- "value": "35"
- },
- "acceleration_wall_0": {
- "value": "250"
- },
- "xy_offset": {
- "default_value": -0.16
- },
- "prime_tower_size": {
- "default_value": 1
- },
- "jerk_ironing": {
- "value": "5"
- },
- "switch_extruder_prime_speed": {
- "value": "30"
- },
- "raft_jerk": {
- "value": "5"
- },
- "top_skin_preshrink": {
- "value": "1.2000000000000002"
- },
- "material_print_temperature": {
- "value": "195"
- },
- "wall_material_flow": {
- "value": "99"
- },
- "jerk_roofing": {
- "value": "5"
- },
- "cool_fan_full_at_height": {
- "value": "0"
- },
- "acceleration_wall_x": {
- "value": "250"
- },
- "support_bottom_distance": {
- "value": "0.23"
- },
- "cool_min_speed": {
- "default_value": 15
- },
- "default_material_bed_temperature": {
- "default_value": 50
- },
- "raft_interface_thickness": {
- "value": "0.2"
- }
- }
-}
+ "name": "Skriware 2",
+ "version": 2,
+ "inherits": "fdmprinter",
+ "metadata": {
+ "visible": true,
+ "author": "Skriware",
+ "manufacturer": "Skriware",
+ "category": "Other",
+ "file_formats": "text/x-gcode",
+ "platform_offset": [
+ 0,
+ 0,
+ 0
+ ],
+ "supports_usb_connection": false,
+ "platform": "skriware_2_platform.stl",
+ "machine_extruder_trains": {
+ "0": "skriware_2_extruder_0",
+ "1": "skriware_2_extruder_1"
+ }
+ },
+ "overrides": {
+ "jerk_print_layer_0": {
+ "value": "5"
+ },
+ "jerk_prime_tower": {
+ "value": "5"
+ },
+ "expand_skins_expand_distance": {
+ "value": "1.2"
+ },
+ "jerk_support_interface": {
+ "value": "5"
+ },
+ "jerk_travel_layer_0": {
+ "value": "5.0"
+ },
+ "wipe_retraction_prime_speed": {
+ "value": "30"
+ },
+ "material_standby_temperature": {
+ "default_value": 195
+ },
+ "acceleration_support_bottom": {
+ "value": "250"
+ },
+ "raft_base_line_width": {
+ "value": "0.5"
+ },
+ "raft_speed": {
+ "value": "30.0"
+ },
+ "jerk_topbottom": {
+ "value": "5"
+ },
+ "ironing_inset": {
+ "value": "0.2"
+ },
+ "acceleration_wall": {
+ "value": "250"
+ },
+ "cross_infill_pocket_size": {
+ "value": "5.333333333333333"
+ },
+ "jerk_support_roof": {
+ "value": "5"
+ },
+ "acceleration_print": {
+ "default_value": 250
+ },
+ "meshfix_maximum_travel_resolution": {
+ "value": "0.8"
+ },
+ "support_top_distance": {
+ "value": "0.22"
+ },
+ "acceleration_enabled": {
+ "default_value": true
+ },
+ "optimize_wall_printing_order": {
+ "default_value": true
+ },
+ "jerk_layer_0": {
+ "value": "5"
+ },
+ "infill_line_distance": {
+ "value": "5.333333333333333"
+ },
+ "acceleration_ironing": {
+ "value": "250"
+ },
+ "material_print_temperature_layer_0": {
+ "value": "195"
+ },
+ "bridge_skin_speed_2": {
+ "value": "15"
+ },
+ "acceleration_travel": {
+ "value": "250"
+ },
+ "switch_extruder_retraction_speed": {
+ "value": "30"
+ },
+ "jerk_print": {
+ "default_value": 5
+ },
+ "material_guid": {
+ "default_value": "0ff92885-617b-4144-a03c-9989872454bc"
+ },
+ "raft_interface_acceleration": {
+ "value": "250"
+ },
+ "acceleration_support_interface": {
+ "value": "250"
+ },
+ "cool_fan_full_layer": {
+ "value": "1"
+ },
+ "skirt_brim_minimal_length": {
+ "default_value": 50
+ },
+ "material_bed_temperature": {
+ "value": "50"
+ },
+ "speed_slowdown_layers": {
+ "default_value": 1
+ },
+ "speed_travel": {
+ "value": "150"
+ },
+ "skin_overlap": {
+ "value": "15"
+ },
+ "acceleration_infill": {
+ "value": "250"
+ },
+ "support_roof_material_flow": {
+ "value": "99"
+ },
+ "raft_base_jerk": {
+ "value": "5"
+ },
+ "retraction_retract_speed": {
+ "value": "30"
+ },
+ "infill_wipe_dist": {
+ "value": "0.1"
+ },
+ "jerk_wall_x": {
+ "value": "5"
+ },
+ "layer_height": {
+ "default_value": 0.2
+ },
+ "bottom_skin_expand_distance": {
+ "value": "1.2000000000000002"
+ },
+ "machine_start_gcode": {
+ "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nG28 X0 Y0;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nM420 S1 Z0.9 ;enable bed levelling\nG1 Z10 F250 ;move the platform down 10mm\nM107 ;fan off\nM42 P11 S255 ;turn on front fan\nM140 S{material_bed_temperature}\nM104 T0 S{material_print_temperature}\nM104 T1 S{material_print_temperature}\nG1 F2500 Y260\nM190 S{material_bed_temperature}\nM109 T0 S{material_print_temperature}\nM109 T1 S{material_print_temperature}\nM60 ;enable E-FADE Algorithm\nM62 A ;filament sensor off\nG92 E0 ;zero the extruded length\nT1\nG92 E0;zero the extruded length\nG1 F300 Z0.3\nG1 F1200 X20\nG1 F1200 X180 E21 ;extrude 21 mm of feed stock\nG1 F1200 E15 ;retracting 6 mm\nG1 F2000 E21\nG1 F2000 E15\nG1 F300 Z1.5\nG92 E0 ;zero the extruded length again\nT0\nG92 E0 ;zero the extruded length\nG1 F1200 Y258\nG1 F300 Z0.3\nG1 F1200 X40 E21 ;extrude 21 mm of feed stock\nG1 F1200 E15 ;retracting 6 mm\nG1 F2000 E21\nG1 F2000 E15\nG1 Z1.5\nM61 A\nM63 A ;filament sensor on\nG92 E0 ;zero the extruded length again\nM58 ;end of Start G-Code and signal retract management"
+ },
+ "travel_retract_before_outer_wall": {
+ "default_value": true
+ },
+ "xy_offset_layer_0": {
+ "value": "-0.16"
+ },
+ "adhesion_type": {
+ "default_value": "raft"
+ },
+ "min_skin_width_for_expansion": {
+ "value": "0.671279704941824"
+ },
+ "support_bottom_material_flow": {
+ "value": "99"
+ },
+ "prime_tower_position_x": {
+ "value": "1"
+ },
+ "machine_depth": {
+ "default_value": 260
+ },
+ "retraction_speed": {
+ "default_value": 30
+ },
+ "support_skip_some_zags": {
+ "default_value": true
+ },
+ "remove_empty_first_layers": {
+ "default_value": false
+ },
+ "z_seam_x": {
+ "value": "115"
+ },
+ "support_xy_distance_overhang": {
+ "value": "0.5"
+ },
+ "acceleration_print_layer_0": {
+ "value": "250"
+ },
+ "support_xy_distance": {
+ "default_value": 0.8
+ },
+ "support_roof_line_distance": {
+ "value": "0.5714285714285714"
+ },
+ "jerk_enabled": {
+ "default_value": true
+ },
+ "min_infill_area": {
+ "default_value": 1
+ },
+ "travel_avoid_supports": {
+ "default_value": true
+ },
+ "bottom_layers": {
+ "value": "3"
+ },
+ "multiple_mesh_overlap": {
+ "default_value": 0
+ },
+ "retraction_hop_enabled": {
+ "default_value": true
+ },
+ "acceleration_topbottom": {
+ "value": "250"
+ },
+ "jerk_wall": {
+ "value": "5"
+ },
+ "jerk_wall_0": {
+ "value": "5"
+ },
+ "skin_overlap_mm": {
+ "value": "0.06"
+ },
+ "retraction_min_travel": {
+ "value": "1"
+ },
+ "support_interface_material_flow": {
+ "value": "99"
+ },
+ "material_diameter": {
+ "default_value": 1.75
+ },
+ "speed_roofing": {
+ "value": "30.0"
+ },
+ "skin_outline_count": {
+ "default_value": 0
+ },
+ "skin_no_small_gaps_heuristic": {
+ "default_value": true
+ },
+ "top_bottom_pattern_0": {
+ "value": "'zigzag'"
+ },
+ "top_skin_expand_distance": {
+ "value": "1.2000000000000002"
+ },
+ "acceleration_travel_layer_0": {
+ "value": "250.0"
+ },
+ "prime_tower_min_volume": {
+ "default_value": 4
+ },
+ "switch_extruder_retraction_speeds": {
+ "default_value": 30
+ },
+ "skin_preshrink": {
+ "value": "1.2000000000000002"
+ },
+ "material_bed_temperature_layer_0": {
+ "value": "50"
+ },
+ "support_tree_collision_resolution": {
+ "value": "0.2"
+ },
+ "machine_height": {
+ "default_value": 210
+ },
+ "raft_acceleration": {
+ "value": "250"
+ },
+ "fill_outline_gaps": {
+ "default_value": true
+ },
+ "wall_x_material_flow": {
+ "value": "99"
+ },
+ "jerk_support_bottom": {
+ "value": "5"
+ },
+ "machine_end_gcode": {
+ "default_value": "M59\nG92 E1\nG1 E-1 F300\nM104 T0 S0\nM104 T1 S0\nM140 S0\nG28 X0 Y0\nM84\nM106 S0\nM107"
+ },
+ "infill_sparse_density": {
+ "default_value": 15
+ },
+ "meshfix_maximum_deviation": {
+ "default_value": 0.005
+ },
+ "wall_0_material_flow": {
+ "value": "99"
+ },
+ "material_adhesion_tendency": {
+ "default_value": 0
+ },
+ "prime_tower_flow": {
+ "value": "99"
+ },
+ "prime_tower_position_y": {
+ "value": "1"
+ },
+ "support_material_flow": {
+ "value": "99"
+ },
+ "retract_at_layer_change": {
+ "default_value": true
+ },
+ "machine_extruder_count": {
+ "default_value": 2
+ },
+ "wall_thickness": {
+ "default_value": 1.2
+ },
+ "support_infill_sparse_thickness": {
+ "value": "0.2"
+ },
+ "raft_surface_acceleration": {
+ "value": "250"
+ },
+ "roofing_layer_count": {
+ "value": "1"
+ },
+ "skirt_brim_line_width": {
+ "value": "0.5"
+ },
+ "jerk_support": {
+ "value": "5"
+ },
+ "raft_surface_jerk": {
+ "value": "5"
+ },
+ "speed_equalize_flow_max": {
+ "default_value": 40
+ },
+ "raft_surface_speed": {
+ "value": "30.0"
+ },
+ "jerk_travel": {
+ "value": "5"
+ },
+ "support_zag_skip_count": {
+ "value": "8"
+ },
+ "retraction_combing": {
+ "default_value": "infill"
+ },
+ "raft_interface_line_spacing": {
+ "value": "0.4"
+ },
+ "layer_height_0": {
+ "default_value": 0.2
+ },
+ "extruders_enabled_count": {
+ "value": "2"
+ },
+ "support_line_distance": {
+ "value": "1.3333333333333333"
+ },
+ "support_roof_density": {
+ "value": "70"
+ },
+ "raft_base_line_spacing": {
+ "value": "0.8"
+ },
+ "acceleration_prime_tower": {
+ "value": "250"
+ },
+ "skin_material_flow": {
+ "value": "99"
+ },
+ "support_z_distance": {
+ "default_value": 0.22
+ },
+ "bottom_skin_preshrink": {
+ "value": "1.2000000000000002"
+ },
+ "jerk_skirt_brim": {
+ "value": "5"
+ },
+ "z_seam_y": {
+ "value": "180"
+ },
+ "skirt_line_count": {
+ "default_value": 2
+ },
+ "raft_margin": {
+ "default_value": 4
+ },
+ "infill_material_flow": {
+ "value": "99"
+ },
+ "wipe_retraction_retract_speed": {
+ "value": "30"
+ },
+ "z_seam_corner": {
+ "default_value": "z_seam_corner_weighted"
+ },
+ "support_roof_height": {
+ "value": "0.4"
+ },
+ "top_layers": {
+ "value": "4"
+ },
+ "support_infill_rate": {
+ "value": "30"
+ },
+ "raft_interface_speed": {
+ "value": "35"
+ },
+ "default_material_print_temperature": {
+ "default_value": 195
+ },
+ "acceleration_layer_0": {
+ "value": "250"
+ },
+ "support_skip_zag_per_mm": {
+ "default_value": 10
+ },
+ "material_initial_print_temperature": {
+ "value": "195"
+ },
+ "raft_interface_jerk": {
+ "value": "5"
+ },
+ "machine_width": {
+ "default_value": 210
+ },
+ "wall_line_count": {
+ "value": "3"
+ },
+ "retraction_amount": {
+ "default_value": 3
+ },
+ "infill_sparse_thickness": {
+ "value": "0.2"
+ },
+ "support_initial_layer_line_distance": {
+ "value": "1.3333333333333333"
+ },
+ "jerk_support_infill": {
+ "value": "5"
+ },
+ "acceleration_roofing": {
+ "value": "250"
+ },
+ "retraction_extrusion_window": {
+ "value": "3"
+ },
+ "raft_interface_line_width": {
+ "value": "0.4"
+ },
+ "acceleration_support_roof": {
+ "value": "250"
+ },
+ "support_brim_line_count": {
+ "value": "16"
+ },
+ "layer_0_z_overlap": {
+ "value": "0.1"
+ },
+ "support_angle": {
+ "default_value": 60
+ },
+ "machine_heated_bed": {
+ "default_value": true
+ },
+ "raft_surface_thickness": {
+ "value": "0.2"
+ },
+ "cool_min_layer_time": {
+ "default_value": 10
+ },
+ "gantry_height": {
+ "value": "210"
+ },
+ "raft_airgap": {
+ "default_value": 0.2
+ },
+ "acceleration_skirt_brim": {
+ "value": "250"
+ },
+ "skirt_brim_material_flow": {
+ "value": "99"
+ },
+ "jerk_infill": {
+ "value": "5"
+ },
+ "roofing_material_flow": {
+ "value": "99"
+ },
+ "support_use_towers": {
+ "default_value": false
+ },
+ "ooze_shield_angle": {
+ "default_value": 50
+ },
+ "material_flow": {
+ "default_value": 99
+ },
+ "speed_travel_layer_0": {
+ "value": "75.0"
+ },
+ "raft_base_acceleration": {
+ "value": "250"
+ },
+ "retraction_count_max": {
+ "default_value": 40
+ },
+ "ooze_shield_dist": {
+ "default_value": 4
+ },
+ "acceleration_support": {
+ "value": "250"
+ },
+ "max_skin_angle_for_expansion": {
+ "default_value": 50
+ },
+ "coasting_enable": {
+ "default_value": true
+ },
+ "brim_width": {
+ "default_value": 10
+ },
+ "acceleration_support_infill": {
+ "value": "250"
+ },
+ "retraction_prime_speed": {
+ "value": "30"
+ },
+ "raft_base_speed": {
+ "value": "35"
+ },
+ "acceleration_wall_0": {
+ "value": "250"
+ },
+ "xy_offset": {
+ "default_value": -0.16
+ },
+ "prime_tower_size": {
+ "default_value": 1
+ },
+ "jerk_ironing": {
+ "value": "5"
+ },
+ "switch_extruder_prime_speed": {
+ "value": "30"
+ },
+ "raft_jerk": {
+ "value": "5"
+ },
+ "top_skin_preshrink": {
+ "value": "1.2000000000000002"
+ },
+ "material_print_temperature": {
+ "value": "195"
+ },
+ "wall_material_flow": {
+ "value": "99"
+ },
+ "jerk_roofing": {
+ "value": "5"
+ },
+ "cool_fan_full_at_height": {
+ "value": "0"
+ },
+ "acceleration_wall_x": {
+ "value": "250"
+ },
+ "support_bottom_distance": {
+ "value": "0.23"
+ },
+ "cool_min_speed": {
+ "default_value": 15
+ },
+ "default_material_bed_temperature": {
+ "default_value": 50
+ },
+ "raft_interface_thickness": {
+ "value": "0.2"
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json b/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json
index e4893cacac..6f04cdd93c 100644
--- a/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json
+++ b/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json
@@ -76,9 +76,6 @@
"machine_nozzle_head_distance": {
"default_value": 5
},
- "machine_nozzle_expansion_angle": {
- "default_value": 45
- },
"machine_heat_zone_length": {
"default_value": 20
},
diff --git a/resources/definitions/tam.def.json b/resources/definitions/tam.def.json
index 211049ca3d..0bc68f321a 100644
--- a/resources/definitions/tam.def.json
+++ b/resources/definitions/tam.def.json
@@ -47,7 +47,6 @@
"machine_nozzle_tip_outer_diameter": { "default_value": 1 },
"machine_nozzle_head_distance": { "default_value": 3 },
- "machine_nozzle_expansion_angle": { "default_value": 45 },
"machine_max_acceleration_x": { "default_value": 6000 },
"machine_max_acceleration_y": { "default_value": 6000 },
diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json
index 40fbdaf709..68b41feeb0 100644
--- a/resources/definitions/ultimaker2.def.json
+++ b/resources/definitions/ultimaker2.def.json
@@ -74,9 +74,6 @@
"machine_nozzle_head_distance": {
"default_value": 3
},
- "machine_nozzle_expansion_angle": {
- "default_value": 45
- },
"machine_max_feedrate_x": {
"default_value": 300
},
diff --git a/resources/definitions/ultimaker2_plus.def.json b/resources/definitions/ultimaker2_plus.def.json
index 633e50bdba..7b9c0781f7 100644
--- a/resources/definitions/ultimaker2_plus.def.json
+++ b/resources/definitions/ultimaker2_plus.def.json
@@ -52,9 +52,6 @@
"machine_nozzle_head_distance": {
"default_value": 5
},
- "machine_nozzle_expansion_angle": {
- "default_value": 45
- },
"machine_heat_zone_length": {
"default_value": 20
},
diff --git a/resources/definitions/voron2_250.def.json b/resources/definitions/voron2_250.def.json
new file mode 100644
index 0000000000..7f0c8fa36c
--- /dev/null
+++ b/resources/definitions/voron2_250.def.json
@@ -0,0 +1,18 @@
+{
+ "name": "VORON2 250",
+ "version": 2,
+ "inherits": "voron2_base",
+ "metadata":
+ {
+ "visible": true,
+ "platform": "voron2_250_bed.stl",
+ "quality_definition": "voron2_base"
+ },
+ "overrides":
+ {
+ "machine_name": { "default_value": "VORON2 250" },
+ "machine_width": { "default_value": 250 },
+ "machine_depth": { "default_value": 250 },
+ "machine_height": { "default_value": 250 }
+ }
+}
diff --git a/resources/definitions/voron2_300.def.json b/resources/definitions/voron2_300.def.json
new file mode 100644
index 0000000000..35dafe04ab
--- /dev/null
+++ b/resources/definitions/voron2_300.def.json
@@ -0,0 +1,18 @@
+{
+ "name": "VORON2 300",
+ "version": 2,
+ "inherits": "voron2_base",
+ "metadata":
+ {
+ "visible": true,
+ "platform": "voron2_300_bed.stl",
+ "quality_definition": "voron2_base"
+ },
+ "overrides":
+ {
+ "machine_name": { "default_value": "VORON2 300" },
+ "machine_width": { "default_value": 300 },
+ "machine_depth": { "default_value": 300 },
+ "machine_height": { "default_value": 300 }
+ }
+}
diff --git a/resources/definitions/voron2_350.def.json b/resources/definitions/voron2_350.def.json
new file mode 100644
index 0000000000..fef4982117
--- /dev/null
+++ b/resources/definitions/voron2_350.def.json
@@ -0,0 +1,18 @@
+{
+ "name": "VORON2 350",
+ "version": 2,
+ "inherits": "voron2_base",
+ "metadata":
+ {
+ "visible": true,
+ "platform": "voron2_350_bed.stl",
+ "quality_definition": "voron2_base"
+ },
+ "overrides":
+ {
+ "machine_name": { "default_value": "VORON2 350" },
+ "machine_width": { "default_value": 350 },
+ "machine_depth": { "default_value": 350 },
+ "machine_height": { "default_value": 350 }
+ }
+}
diff --git a/resources/definitions/voron2_base.def.json b/resources/definitions/voron2_base.def.json
new file mode 100644
index 0000000000..7a9a6ee8aa
--- /dev/null
+++ b/resources/definitions/voron2_base.def.json
@@ -0,0 +1,155 @@
+{
+ "name": "VORON2 Base",
+ "version": 2,
+ "inherits": "fdmprinter",
+ "metadata":
+ {
+ "visible": false,
+ "author": "Fulg, Maglin, pizzle_Dizzle",
+ "manufacturer": "VORONDesign",
+ "file_formats": "text/x-gcode",
+ "first_start_actions": ["MachineSettingsAction"],
+ "preferred_quality_type": "fast",
+ "has_machine_quality": true,
+ "has_materials": true,
+ "has_variants": true,
+ "variants_name": "Toolhead",
+ "preferred_variant_name": "V6 0.40mm",
+ "machine_extruder_trains": { "0": "voron2_extruder_0" },
+ "preferred_material": "generic_abs",
+ "exclude_materials": [
+ "ultimaker_abs_black",
+ "ultimaker_abs_blue",
+ "ultimaker_abs_green",
+ "ultimaker_abs_grey",
+ "ultimaker_abs_orange",
+ "ultimaker_abs_pearl-gold",
+ "ultimaker_abs_red",
+ "ultimaker_abs_silver-metallic",
+ "ultimaker_abs_white",
+ "ultimaker_abs_yellow",
+ "ultimaker_bam",
+ "ultimaker_cpe_black",
+ "ultimaker_cpe_blue",
+ "ultimaker_cpe_dark-grey",
+ "ultimaker_cpe_green",
+ "ultimaker_cpe_light-grey",
+ "ultimaker_cpe_plus_black",
+ "ultimaker_cpe_plus_transparent",
+ "ultimaker_cpe_plus_white",
+ "ultimaker_cpe_red",
+ "ultimaker_cpe_transparent",
+ "ultimaker_cpe_white",
+ "ultimaker_cpe_yellow",
+ "ultimaker_nylon_black",
+ "ultimaker_nylon_transparent",
+ "ultimaker_pc_black",
+ "ultimaker_pc_transparent",
+ "ultimaker_pc_white",
+ "ultimaker_pla_black",
+ "ultimaker_pla_blue",
+ "ultimaker_pla_green",
+ "ultimaker_pla_magenta",
+ "ultimaker_pla_orange",
+ "ultimaker_pla_pearl-white",
+ "ultimaker_pla_red",
+ "ultimaker_pla_silver-metallic",
+ "ultimaker_pla_transparent",
+ "ultimaker_pla_white",
+ "ultimaker_pla_yellow",
+ "ultimaker_pp_transparent",
+ "ultimaker_pva",
+ "ultimaker_tough_pla_black",
+ "ultimaker_tough_pla_green",
+ "ultimaker_tough_pla_red",
+ "ultimaker_tough_pla_white",
+ "ultimaker_tpu_black",
+ "ultimaker_tpu_blue",
+ "ultimaker_tpu_red",
+ "ultimaker_tpu_white"
+ ]
+ },
+ "overrides":
+ {
+ "machine_name": { "default_value": "VORON2" },
+ "machine_width": { "default_value": 250 },
+ "machine_depth": { "default_value": 250 },
+ "machine_height": { "default_value": 250 },
+ "gantry_height": { "value": 30 },
+ "machine_heated_bed": { "default_value": true },
+ "machine_max_acceleration_x": { "default_value": 1500 },
+ "machine_max_acceleration_y": { "default_value": 1500 },
+ "machine_max_acceleration_z": { "default_value": 250 },
+ "machine_acceleration": { "default_value": 1500 },
+ "machine_max_jerk_xy": { "default_value": 20 },
+ "machine_max_jerk_z": { "default_value": 1 },
+ "machine_max_jerk_e": { "default_value": 60 },
+ "machine_steps_per_mm_x": { "default_value": 80 },
+ "machine_steps_per_mm_y": { "default_value": 80 },
+ "machine_steps_per_mm_z": { "default_value": 400 },
+ "machine_endstop_positive_direction_x": { "default_value": true },
+ "machine_endstop_positive_direction_y": { "default_value": true },
+ "machine_endstop_positive_direction_z": { "default_value": false },
+ "machine_feeder_wheel_diameter": { "default_value": 7.5 },
+ "machine_head_with_fans_polygon": { "default_value": [ [-35, 65], [-35, -50], [35, -50], [35, 65] ] },
+ "machine_max_feedrate_z": { "default_value": 40 },
+ "machine_max_feedrate_e": { "default_value": 120 },
+ "machine_gcode_flavor": { "default_value": "RepRap (RepRap)" },
+ "machine_start_gcode": { "default_value": "print_start" },
+ "machine_end_gcode": { "default_value": "print_end" },
+ "adhesion_type": { "default_value": "skirt" },
+ "skirt_brim_minimal_length": { "default_value": 550 },
+ "retraction_speed": { "default_value": 80, "maximum_value_warning": 130 },
+ "retraction_retract_speed": { "maximum_value_warning": 130 },
+ "retraction_prime_speed": { "value": "math.ceil(retraction_speed * 0.4)", "maximum_value_warning": 130 },
+ "retraction_hop_enabled": { "default_value": true },
+ "retraction_hop": { "default_value": 0.2 },
+ "retraction_combing": { "default_value": "noskin" },
+ "retraction_combing_max_distance": { "default_value": 10 },
+ "travel_avoid_other_parts": { "default_value": false },
+ "speed_travel": { "maximum_value": 300, "value": 300, "maximum_value_warning": 501 },
+ "speed_travel_layer_0": { "value": "math.ceil(speed_travel * 0.4)" },
+ "speed_layer_0": { "value": "math.ceil(speed_print * 0.25)" },
+ "speed_wall": { "value": "math.ceil(speed_print * 0.33)" },
+ "speed_wall_0": { "value": "math.ceil(speed_print * 0.33)" },
+ "speed_wall_x": { "value": "math.ceil(speed_print * 0.66)" },
+ "speed_topbottom": { "value": "math.ceil(speed_print * 0.33)" },
+ "speed_roofing": { "value": "math.ceil(speed_print * 0.33)" },
+ "speed_slowdown_layers": { "default_value": 4 },
+ "roofing_layer_count": { "value": 1 },
+ "optimize_wall_printing_order": { "default_value": true },
+ "infill_enable_travel_optimization": { "default_value": true },
+ "minimum_polygon_circumference": { "default_value": 0.2 },
+ "wall_overhang_angle": { "default_value": 75 },
+ "wall_overhang_speed_factor": { "default_value": 50 },
+ "bridge_settings_enabled": { "default_value": true },
+ "bridge_wall_coast": { "default_value": 10 },
+ "bridge_fan_speed": { "default_value": 100 },
+ "bridge_fan_speed_2": { "resolve": "max(cool_fan_speed, 50)" },
+ "bridge_fan_speed_3": { "resolve": "max(cool_fan_speed, 20)" },
+ "alternate_extra_perimeter": { "default_value": true },
+ "cool_min_layer_time_fan_speed_max": { "default_value": 20 },
+ "cool_min_layer_time": { "default_value": 15 },
+ "cool_fan_speed_min": { "value": "cool_fan_speed" },
+ "cool_fan_full_at_height": { "value": "resolveOrValue('layer_height_0') + resolveOrValue('layer_height') * max(1, cool_fan_full_layer - 1)" },
+ "cool_fan_full_layer": { "value": 4 },
+ "layer_height_0": { "resolve": "max(0.2, min(extruderValues('layer_height')))" },
+ "line_width": { "value": "machine_nozzle_size * 1.125" },
+ "wall_line_width": { "value": "machine_nozzle_size" },
+ "fill_perimeter_gaps": { "default_value": "nowhere" },
+ "fill_outline_gaps": { "default_value": true },
+ "meshfix_maximum_resolution": { "default_value": 0.01 },
+ "infill_before_walls": { "default_value": false },
+ "zig_zaggify_infill": { "value": true },
+ "min_infill_area": { "default_value": 5.0 },
+ "acceleration_enabled": { "default_value": false },
+ "acceleration_print": { "default_value": 2200 },
+ "acceleration_wall_0": { "value": 1800 },
+ "acceleration_layer_0": { "value": 1800 },
+ "acceleration_travel_layer_0": { "value": 1800 },
+ "acceleration_roofing": { "value": 1800 },
+ "jerk_enabled": { "default_value": false },
+ "jerk_wall_0": { "value": 10 },
+ "jerk_roofing": { "value": 10 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/voron2_custom.def.json b/resources/definitions/voron2_custom.def.json
new file mode 100644
index 0000000000..2fc5c2305d
--- /dev/null
+++ b/resources/definitions/voron2_custom.def.json
@@ -0,0 +1,14 @@
+{
+ "name": "VORON2 Custom",
+ "version": 2,
+ "inherits": "voron2_base",
+ "metadata":
+ {
+ "visible": true,
+ "quality_definition": "voron2_base"
+ },
+ "overrides":
+ {
+ "machine_name": { "default_value": "VORON2 Custom" }
+ }
+}
diff --git a/resources/extruders/anet_a6_extruder_0.def.json b/resources/extruders/anet3d_extruder_0.def.json
similarity index 91%
rename from resources/extruders/anet_a6_extruder_0.def.json
rename to resources/extruders/anet3d_extruder_0.def.json
index c87160a542..4a53178769 100644
--- a/resources/extruders/anet_a6_extruder_0.def.json
+++ b/resources/extruders/anet3d_extruder_0.def.json
@@ -3,7 +3,7 @@
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
- "machine": "anet_a6",
+ "machine": "anet3d",
"position": "0"
},
diff --git a/resources/extruders/lotmaxx_sc10_extruder_0.def.json b/resources/extruders/lotmaxx_sc10_extruder_0.def.json
new file mode 100644
index 0000000000..2477d35cba
--- /dev/null
+++ b/resources/extruders/lotmaxx_sc10_extruder_0.def.json
@@ -0,0 +1,15 @@
+{
+ "version": 2,
+ "name": "Extruder 1",
+ "inherits": "fdmextruder",
+ "metadata": {
+ "machine": "lotmaxx_sc10",
+ "position": "0"
+ },
+
+ "overrides": {
+ "extruder_nr": { "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/extruders/lotmaxx_sc20_extruder_0.def.json b/resources/extruders/lotmaxx_sc20_extruder_0.def.json
new file mode 100644
index 0000000000..d02af04a57
--- /dev/null
+++ b/resources/extruders/lotmaxx_sc20_extruder_0.def.json
@@ -0,0 +1,15 @@
+{
+ "version": 2,
+ "name": "Extruder 1",
+ "inherits": "fdmextruder",
+ "metadata": {
+ "machine": "lotmaxx_sc20",
+ "position": "0"
+ },
+
+ "overrides": {
+ "extruder_nr": { "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/extruders/voron2_extruder_0.def.json b/resources/extruders/voron2_extruder_0.def.json
new file mode 100644
index 0000000000..5559cdf620
--- /dev/null
+++ b/resources/extruders/voron2_extruder_0.def.json
@@ -0,0 +1,16 @@
+{
+ "version": 2,
+ "name": "Toolhead",
+ "inherits": "fdmextruder",
+ "metadata":
+ {
+ "machine": "voron2_base",
+ "position": "0"
+ },
+
+ "overrides":
+ {
+ "extruder_nr": { "default_value": 0, "maximum_value": 1 },
+ "material_diameter": { "default_value": 1.75 }
+ }
+}
diff --git a/resources/meshes/lotmaxx_sc_10_20_platform.stl b/resources/meshes/lotmaxx_sc_10_20_platform.stl
new file mode 100644
index 0000000000..fb4260dd32
Binary files /dev/null and b/resources/meshes/lotmaxx_sc_10_20_platform.stl differ
diff --git a/resources/meshes/voron2_250_bed.stl b/resources/meshes/voron2_250_bed.stl
new file mode 100644
index 0000000000..b35e8ebc7b
Binary files /dev/null and b/resources/meshes/voron2_250_bed.stl differ
diff --git a/resources/meshes/voron2_300_bed.stl b/resources/meshes/voron2_300_bed.stl
new file mode 100644
index 0000000000..b6a1a58edb
Binary files /dev/null and b/resources/meshes/voron2_300_bed.stl differ
diff --git a/resources/meshes/voron2_350_bed.stl b/resources/meshes/voron2_350_bed.stl
new file mode 100644
index 0000000000..2859ce1aa7
Binary files /dev/null and b/resources/meshes/voron2_350_bed.stl differ
diff --git a/resources/quality/voron2/voron2_global_extrafast_quality.inst.cfg b/resources/quality/voron2/voron2_global_extrafast_quality.inst.cfg
new file mode 100644
index 0000000000..b73778be17
--- /dev/null
+++ b/resources/quality/voron2/voron2_global_extrafast_quality.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+global_quality = True
+
+[values]
+layer_height = 0.3
+
diff --git a/resources/quality/voron2/voron2_global_extrafine_quality.inst.cfg b/resources/quality/voron2/voron2_global_extrafine_quality.inst.cfg
new file mode 100644
index 0000000000..63d72bce0b
--- /dev/null
+++ b/resources/quality/voron2/voron2_global_extrafine_quality.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Extra Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafine
+global_quality = True
+
+[values]
+layer_height = 0.06
+
diff --git a/resources/quality/voron2/voron2_global_fast_quality.inst.cfg b/resources/quality/voron2/voron2_global_fast_quality.inst.cfg
new file mode 100644
index 0000000000..9e803d332a
--- /dev/null
+++ b/resources/quality/voron2/voron2_global_fast_quality.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+global_quality = True
+
+[values]
+layer_height = 0.2
+
diff --git a/resources/quality/voron2/voron2_global_fine_quality.inst.cfg b/resources/quality/voron2/voron2_global_fine_quality.inst.cfg
new file mode 100644
index 0000000000..4bf05d1f0e
--- /dev/null
+++ b/resources/quality/voron2/voron2_global_fine_quality.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+global_quality = True
+
+[values]
+layer_height = 0.1
+
diff --git a/resources/quality/voron2/voron2_global_normal_quality.inst.cfg b/resources/quality/voron2/voron2_global_normal_quality.inst.cfg
new file mode 100644
index 0000000000..f3dc9c957b
--- /dev/null
+++ b/resources/quality/voron2/voron2_global_normal_quality.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+global_quality = True
+
+[values]
+layer_height = 0.15
+
diff --git a/resources/quality/voron2/voron2_global_sprint_quality.inst.cfg b/resources/quality/voron2/voron2_global_sprint_quality.inst.cfg
new file mode 100644
index 0000000000..0d82b2c884
--- /dev/null
+++ b/resources/quality/voron2/voron2_global_sprint_quality.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+global_quality = True
+
+[values]
+layer_height = 0.4
+
diff --git a/resources/quality/voron2/voron2_global_supersprint_quality.inst.cfg b/resources/quality/voron2/voron2_global_supersprint_quality.inst.cfg
new file mode 100644
index 0000000000..87a204af15
--- /dev/null
+++ b/resources/quality/voron2/voron2_global_supersprint_quality.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+global_quality = True
+
+[values]
+layer_height = 0.5
+
diff --git a/resources/quality/voron2/voron2_global_ultrasprint_quality.inst.cfg b/resources/quality/voron2/voron2_global_ultrasprint_quality.inst.cfg
new file mode 100644
index 0000000000..939d3945fd
--- /dev/null
+++ b/resources/quality/voron2/voron2_global_ultrasprint_quality.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Ultra Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = ultrasprint
+global_quality = True
+
+[values]
+layer_height = 0.6
+
diff --git a/resources/quality/voron2/voron2_v6_0.25_ABS_extrafine.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_ABS_extrafine.inst.cfg
new file mode 100644
index 0000000000..9e751bb4e4
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_ABS_extrafine.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Extra Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafine
+material = generic_abs
+variant = V6 0.25mm
+
+[values]
+speed_print = 300
diff --git a/resources/quality/voron2/voron2_v6_0.25_ABS_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_ABS_fast.inst.cfg
new file mode 100644
index 0000000000..01714fee39
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_ABS_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_abs
+variant = V6 0.25mm
+
+[values]
+speed_print = 180
+
diff --git a/resources/quality/voron2/voron2_v6_0.25_ABS_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_ABS_fine.inst.cfg
new file mode 100644
index 0000000000..a83be277b4
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_ABS_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_abs
+variant = V6 0.25mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_v6_0.25_ABS_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_ABS_normal.inst.cfg
new file mode 100644
index 0000000000..81e5d01984
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_ABS_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_abs
+variant = V6 0.25mm
+
+[values]
+speed_print = 240
+
diff --git a/resources/quality/voron2/voron2_v6_0.25_Nylon_extrafine.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_Nylon_extrafine.inst.cfg
new file mode 100644
index 0000000000..098f6e0357
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_Nylon_extrafine.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Extra Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafine
+material = generic_nylon
+variant = V6 0.25mm
+
+[values]
+speed_print = 300
diff --git a/resources/quality/voron2/voron2_v6_0.25_Nylon_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_Nylon_fast.inst.cfg
new file mode 100644
index 0000000000..982f3b1d7c
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_Nylon_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_nylon
+variant = V6 0.25mm
+
+[values]
+speed_print = 180
+
diff --git a/resources/quality/voron2/voron2_v6_0.25_Nylon_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_Nylon_fine.inst.cfg
new file mode 100644
index 0000000000..0291522686
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_Nylon_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_nylon
+variant = V6 0.25mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_v6_0.25_Nylon_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_Nylon_normal.inst.cfg
new file mode 100644
index 0000000000..ec0da5cee9
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_Nylon_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_nylon
+variant = V6 0.25mm
+
+[values]
+speed_print = 240
+
diff --git a/resources/quality/voron2/voron2_v6_0.25_PC_extrafine.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_PC_extrafine.inst.cfg
new file mode 100644
index 0000000000..3c477a8d69
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_PC_extrafine.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Extra Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafine
+material = generic_pc
+variant = V6 0.25mm
+
+[values]
+speed_print = 300
diff --git a/resources/quality/voron2/voron2_v6_0.25_PC_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_PC_fast.inst.cfg
new file mode 100644
index 0000000000..db41a79b5f
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_PC_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pc
+variant = V6 0.25mm
+
+[values]
+speed_print = 180
+
diff --git a/resources/quality/voron2/voron2_v6_0.25_PC_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_PC_fine.inst.cfg
new file mode 100644
index 0000000000..771085cd78
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_PC_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_pc
+variant = V6 0.25mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_v6_0.25_PC_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_PC_normal.inst.cfg
new file mode 100644
index 0000000000..bd3bd1efa8
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_PC_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_pc
+variant = V6 0.25mm
+
+[values]
+speed_print = 240
+
diff --git a/resources/quality/voron2/voron2_v6_0.25_PETG_extrafine.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_PETG_extrafine.inst.cfg
new file mode 100644
index 0000000000..704c96aee7
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_PETG_extrafine.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Extra Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafine
+material = generic_petg
+variant = V6 0.25mm
+
+[values]
+speed_print = 300
diff --git a/resources/quality/voron2/voron2_v6_0.25_PETG_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_PETG_fast.inst.cfg
new file mode 100644
index 0000000000..c892269cdd
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_PETG_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_petg
+variant = V6 0.25mm
+
+[values]
+speed_print = 180
+
diff --git a/resources/quality/voron2/voron2_v6_0.25_PETG_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_PETG_fine.inst.cfg
new file mode 100644
index 0000000000..e452a1f125
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_PETG_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_petg
+variant = V6 0.25mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_v6_0.25_PETG_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_PETG_normal.inst.cfg
new file mode 100644
index 0000000000..332f8a1ba0
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_PETG_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_petg
+variant = V6 0.25mm
+
+[values]
+speed_print = 240
+
diff --git a/resources/quality/voron2/voron2_v6_0.25_PLA_extrafine.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_PLA_extrafine.inst.cfg
new file mode 100644
index 0000000000..5a18f5afb0
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_PLA_extrafine.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Extra Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafine
+material = generic_pla
+variant = V6 0.25mm
+
+[values]
+speed_print = 300
diff --git a/resources/quality/voron2/voron2_v6_0.25_PLA_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_PLA_fast.inst.cfg
new file mode 100644
index 0000000000..aeb762470d
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_PLA_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pla
+variant = V6 0.25mm
+
+[values]
+speed_print = 180
+
diff --git a/resources/quality/voron2/voron2_v6_0.25_PLA_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_PLA_fine.inst.cfg
new file mode 100644
index 0000000000..eea33161e2
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_PLA_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_pla
+variant = V6 0.25mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_v6_0.25_PLA_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.25_PLA_normal.inst.cfg
new file mode 100644
index 0000000000..6a69bec9ba
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.25_PLA_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_pla
+variant = V6 0.25mm
+
+[values]
+speed_print = 240
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_ABS_extrafine.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_ABS_extrafine.inst.cfg
new file mode 100644
index 0000000000..250b0f159b
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_ABS_extrafine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafine
+material = generic_abs
+variant = V6 0.30mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_ABS_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_ABS_fast.inst.cfg
new file mode 100644
index 0000000000..e5c2981d83
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_ABS_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_abs
+variant = V6 0.30mm
+
+[values]
+speed_print = 160
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_ABS_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_ABS_fine.inst.cfg
new file mode 100644
index 0000000000..3e029b851c
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_ABS_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_abs
+variant = V6 0.30mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_ABS_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_ABS_normal.inst.cfg
new file mode 100644
index 0000000000..a4272ac24d
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_ABS_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_abs
+variant = V6 0.30mm
+
+[values]
+speed_print = 200
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_Nylon_extrafine.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_Nylon_extrafine.inst.cfg
new file mode 100644
index 0000000000..486a799287
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_Nylon_extrafine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafine
+material = generic_nylon
+variant = V6 0.30mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_Nylon_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_Nylon_fast.inst.cfg
new file mode 100644
index 0000000000..e7bd5219b1
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_Nylon_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_nylon
+variant = V6 0.30mm
+
+[values]
+speed_print = 160
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_Nylon_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_Nylon_fine.inst.cfg
new file mode 100644
index 0000000000..3ceee3c939
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_Nylon_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_nylon
+variant = V6 0.30mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_Nylon_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_Nylon_normal.inst.cfg
new file mode 100644
index 0000000000..367b3d18b3
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_Nylon_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_nylon
+variant = V6 0.30mm
+
+[values]
+speed_print = 200
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_PC_extrafine.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_PC_extrafine.inst.cfg
new file mode 100644
index 0000000000..7ddaabd41c
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_PC_extrafine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafine
+material = generic_pc
+variant = V6 0.30mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_PC_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_PC_fast.inst.cfg
new file mode 100644
index 0000000000..0a4eb568f0
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_PC_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pc
+variant = V6 0.30mm
+
+[values]
+speed_print = 160
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_PC_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_PC_fine.inst.cfg
new file mode 100644
index 0000000000..e0c9268bf0
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_PC_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_pc
+variant = V6 0.30mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_PC_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_PC_normal.inst.cfg
new file mode 100644
index 0000000000..8cb8d818d4
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_PC_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_pc
+variant = V6 0.30mm
+
+[values]
+speed_print = 200
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_PETG_extrafine.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_PETG_extrafine.inst.cfg
new file mode 100644
index 0000000000..461d5a6e89
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_PETG_extrafine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafine
+material = generic_petg
+variant = V6 0.30mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_PETG_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_PETG_fast.inst.cfg
new file mode 100644
index 0000000000..3de1f7c712
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_PETG_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_petg
+variant = V6 0.30mm
+
+[values]
+speed_print = 160
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_PETG_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_PETG_fine.inst.cfg
new file mode 100644
index 0000000000..b70909e880
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_PETG_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_petg
+variant = V6 0.30mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_PETG_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_PETG_normal.inst.cfg
new file mode 100644
index 0000000000..b0915c6e6f
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_PETG_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_petg
+variant = V6 0.30mm
+
+[values]
+speed_print = 200
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_PLA_extrafine.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_PLA_extrafine.inst.cfg
new file mode 100644
index 0000000000..7b5a8f5fa8
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_PLA_extrafine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafine
+material = generic_pla
+variant = V6 0.30mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_PLA_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_PLA_fast.inst.cfg
new file mode 100644
index 0000000000..2cd98c4f73
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_PLA_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pla
+variant = V6 0.30mm
+
+[values]
+speed_print = 160
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_PLA_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_PLA_fine.inst.cfg
new file mode 100644
index 0000000000..50be85f688
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_PLA_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_pla
+variant = V6 0.30mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_v6_0.30_PLA_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.30_PLA_normal.inst.cfg
new file mode 100644
index 0000000000..774486be44
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.30_PLA_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_pla
+variant = V6 0.30mm
+
+[values]
+speed_print = 200
+
diff --git a/resources/quality/voron2/voron2_v6_0.35_ABS_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.35_ABS_fast.inst.cfg
new file mode 100644
index 0000000000..9d9d0e62f6
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.35_ABS_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_abs
+variant = V6 0.35mm
+
+[values]
+speed_print = 135
+
diff --git a/resources/quality/voron2/voron2_v6_0.35_ABS_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.35_ABS_fine.inst.cfg
new file mode 100644
index 0000000000..b6bfe5acb1
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.35_ABS_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_abs
+variant = V6 0.35mm
+
+[values]
+speed_print = 270
+
diff --git a/resources/quality/voron2/voron2_v6_0.35_ABS_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.35_ABS_normal.inst.cfg
new file mode 100644
index 0000000000..166800e845
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.35_ABS_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_abs
+variant = V6 0.35mm
+
+[values]
+speed_print = 180
+
diff --git a/resources/quality/voron2/voron2_v6_0.35_Nylon_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.35_Nylon_fast.inst.cfg
new file mode 100644
index 0000000000..c1ef88f1cf
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.35_Nylon_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_nylon
+variant = V6 0.35mm
+
+[values]
+speed_print = 135
+
diff --git a/resources/quality/voron2/voron2_v6_0.35_Nylon_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.35_Nylon_fine.inst.cfg
new file mode 100644
index 0000000000..9421909cec
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.35_Nylon_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_nylon
+variant = V6 0.35mm
+
+[values]
+speed_print = 270
+
diff --git a/resources/quality/voron2/voron2_v6_0.35_Nylon_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.35_Nylon_normal.inst.cfg
new file mode 100644
index 0000000000..310b27dbd8
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.35_Nylon_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_nylon
+variant = V6 0.35mm
+
+[values]
+speed_print = 180
+
diff --git a/resources/quality/voron2/voron2_v6_0.35_PC_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.35_PC_fast.inst.cfg
new file mode 100644
index 0000000000..b504e66b6b
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.35_PC_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pc
+variant = V6 0.35mm
+
+[values]
+speed_print = 135
+
diff --git a/resources/quality/voron2/voron2_v6_0.35_PC_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.35_PC_fine.inst.cfg
new file mode 100644
index 0000000000..6e1bb028c9
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.35_PC_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_pc
+variant = V6 0.35mm
+
+[values]
+speed_print = 270
+
diff --git a/resources/quality/voron2/voron2_v6_0.35_PC_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.35_PC_normal.inst.cfg
new file mode 100644
index 0000000000..9390361968
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.35_PC_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_pc
+variant = V6 0.35mm
+
+[values]
+speed_print = 180
+
diff --git a/resources/quality/voron2/voron2_v6_0.35_PETG_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.35_PETG_fast.inst.cfg
new file mode 100644
index 0000000000..422271fd02
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.35_PETG_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_petg
+variant = V6 0.35mm
+
+[values]
+speed_print = 135
+
diff --git a/resources/quality/voron2/voron2_v6_0.35_PETG_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.35_PETG_fine.inst.cfg
new file mode 100644
index 0000000000..1672ef680b
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.35_PETG_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_petg
+variant = V6 0.35mm
+
+[values]
+speed_print = 270
+
diff --git a/resources/quality/voron2/voron2_v6_0.35_PETG_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.35_PETG_normal.inst.cfg
new file mode 100644
index 0000000000..007cf9aa05
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.35_PETG_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_petg
+variant = V6 0.35mm
+
+[values]
+speed_print = 180
+
diff --git a/resources/quality/voron2/voron2_v6_0.35_PLA_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.35_PLA_fast.inst.cfg
new file mode 100644
index 0000000000..a2a159f1aa
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.35_PLA_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pla
+variant = V6 0.35mm
+
+[values]
+speed_print = 135
+
diff --git a/resources/quality/voron2/voron2_v6_0.35_PLA_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.35_PLA_fine.inst.cfg
new file mode 100644
index 0000000000..b1ba9b0546
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.35_PLA_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_pla
+variant = V6 0.35mm
+
+[values]
+speed_print = 270
+
diff --git a/resources/quality/voron2/voron2_v6_0.35_PLA_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.35_PLA_normal.inst.cfg
new file mode 100644
index 0000000000..e09df01b50
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.35_PLA_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_pla
+variant = V6 0.35mm
+
+[values]
+speed_print = 180
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_ABS_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_ABS_extrafast.inst.cfg
new file mode 100644
index 0000000000..c4edd5865d
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_ABS_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_abs
+variant = V6 0.40mm
+
+[values]
+speed_print = 80
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_ABS_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_ABS_fast.inst.cfg
new file mode 100644
index 0000000000..7c8094587e
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_ABS_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_abs
+variant = V6 0.40mm
+
+[values]
+speed_print = 120
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_ABS_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_ABS_fine.inst.cfg
new file mode 100644
index 0000000000..8242dc0f0d
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_ABS_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_abs
+variant = V6 0.40mm
+
+[values]
+speed_print = 240
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_ABS_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_ABS_normal.inst.cfg
new file mode 100644
index 0000000000..067269a6c9
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_ABS_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_abs
+variant = V6 0.40mm
+
+[values]
+speed_print = 160
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_Nylon_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_Nylon_extrafast.inst.cfg
new file mode 100644
index 0000000000..5d30fb81d7
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_Nylon_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_nylon
+variant = V6 0.40mm
+
+[values]
+speed_print = 80
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_Nylon_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_Nylon_fast.inst.cfg
new file mode 100644
index 0000000000..4963a04ab2
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_Nylon_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_nylon
+variant = V6 0.40mm
+
+[values]
+speed_print = 120
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_Nylon_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_Nylon_fine.inst.cfg
new file mode 100644
index 0000000000..6cbca24030
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_Nylon_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_nylon
+variant = V6 0.40mm
+
+[values]
+speed_print = 240
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_Nylon_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_Nylon_normal.inst.cfg
new file mode 100644
index 0000000000..1a4a3eec01
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_Nylon_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_nylon
+variant = V6 0.40mm
+
+[values]
+speed_print = 160
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_PC_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_PC_extrafast.inst.cfg
new file mode 100644
index 0000000000..b7a4e72575
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_PC_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_pc
+variant = V6 0.40mm
+
+[values]
+speed_print = 80
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_PC_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_PC_fast.inst.cfg
new file mode 100644
index 0000000000..6db0711d83
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_PC_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pc
+variant = V6 0.40mm
+
+[values]
+speed_print = 120
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_PC_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_PC_fine.inst.cfg
new file mode 100644
index 0000000000..748a86f5fb
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_PC_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_pc
+variant = V6 0.40mm
+
+[values]
+speed_print = 240
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_PC_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_PC_normal.inst.cfg
new file mode 100644
index 0000000000..36e80f19af
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_PC_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_pc
+variant = V6 0.40mm
+
+[values]
+speed_print = 160
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_PETG_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_PETG_extrafast.inst.cfg
new file mode 100644
index 0000000000..5398844655
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_PETG_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_petg
+variant = V6 0.40mm
+
+[values]
+speed_print = 80
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_PETG_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_PETG_fast.inst.cfg
new file mode 100644
index 0000000000..bcbf384ea7
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_PETG_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_petg
+variant = V6 0.40mm
+
+[values]
+speed_print = 120
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_PETG_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_PETG_fine.inst.cfg
new file mode 100644
index 0000000000..6ffd6542d5
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_PETG_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_petg
+variant = V6 0.40mm
+
+[values]
+speed_print = 240
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_PETG_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_PETG_normal.inst.cfg
new file mode 100644
index 0000000000..0508f4eebb
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_PETG_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_petg
+variant = V6 0.40mm
+
+[values]
+speed_print = 160
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_PLA_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_PLA_extrafast.inst.cfg
new file mode 100644
index 0000000000..e067de65ba
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_PLA_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_pla
+variant = V6 0.40mm
+
+[values]
+speed_print = 80
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_PLA_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_PLA_fast.inst.cfg
new file mode 100644
index 0000000000..cd40e9a745
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_PLA_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pla
+variant = V6 0.40mm
+
+[values]
+speed_print = 120
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_PLA_fine.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_PLA_fine.inst.cfg
new file mode 100644
index 0000000000..f84d002bee
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_PLA_fine.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fine
+material = generic_pla
+variant = V6 0.40mm
+
+[values]
+speed_print = 240
+
diff --git a/resources/quality/voron2/voron2_v6_0.40_PLA_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.40_PLA_normal.inst.cfg
new file mode 100644
index 0000000000..7673cd767c
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.40_PLA_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_pla
+variant = V6 0.40mm
+
+[values]
+speed_print = 160
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_ABS_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_ABS_extrafast.inst.cfg
new file mode 100644
index 0000000000..9a7c68d80b
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_ABS_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_abs
+variant = V6 0.50mm
+
+[values]
+speed_print = 60
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_ABS_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_ABS_fast.inst.cfg
new file mode 100644
index 0000000000..cfb0b6f51a
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_ABS_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_abs
+variant = V6 0.50mm
+
+[values]
+speed_print = 90
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_ABS_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_ABS_normal.inst.cfg
new file mode 100644
index 0000000000..7d6046c619
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_ABS_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_abs
+variant = V6 0.50mm
+
+[values]
+speed_print = 120
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_ABS_sprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_ABS_sprint.inst.cfg
new file mode 100644
index 0000000000..0f6263d182
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_ABS_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_abs
+variant = V6 0.50mm
+
+[values]
+speed_print = 45
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_Nylon_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_Nylon_extrafast.inst.cfg
new file mode 100644
index 0000000000..749a845d2d
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_Nylon_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_nylon
+variant = V6 0.50mm
+
+[values]
+speed_print = 60
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_Nylon_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_Nylon_fast.inst.cfg
new file mode 100644
index 0000000000..2bc96423a8
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_Nylon_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_nylon
+variant = V6 0.50mm
+
+[values]
+speed_print = 90
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_Nylon_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_Nylon_normal.inst.cfg
new file mode 100644
index 0000000000..02f8e95db8
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_Nylon_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_nylon
+variant = V6 0.50mm
+
+[values]
+speed_print = 120
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_Nylon_sprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_Nylon_sprint.inst.cfg
new file mode 100644
index 0000000000..845ce9e130
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_Nylon_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_nylon
+variant = V6 0.50mm
+
+[values]
+speed_print = 45
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_PC_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_PC_extrafast.inst.cfg
new file mode 100644
index 0000000000..8984752018
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_PC_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_pc
+variant = V6 0.50mm
+
+[values]
+speed_print = 60
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_PC_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_PC_fast.inst.cfg
new file mode 100644
index 0000000000..c4fc9d7d91
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_PC_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pc
+variant = V6 0.50mm
+
+[values]
+speed_print = 90
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_PC_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_PC_normal.inst.cfg
new file mode 100644
index 0000000000..f6692428c2
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_PC_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_pc
+variant = V6 0.50mm
+
+[values]
+speed_print = 120
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_PC_sprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_PC_sprint.inst.cfg
new file mode 100644
index 0000000000..850297d6e9
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_PC_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_pc
+variant = V6 0.50mm
+
+[values]
+speed_print = 45
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_PETG_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_PETG_extrafast.inst.cfg
new file mode 100644
index 0000000000..a902881ef8
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_PETG_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_petg
+variant = V6 0.50mm
+
+[values]
+speed_print = 60
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_PETG_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_PETG_fast.inst.cfg
new file mode 100644
index 0000000000..bb16112841
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_PETG_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_petg
+variant = V6 0.50mm
+
+[values]
+speed_print = 90
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_PETG_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_PETG_normal.inst.cfg
new file mode 100644
index 0000000000..1f71447051
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_PETG_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_petg
+variant = V6 0.50mm
+
+[values]
+speed_print = 120
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_PETG_sprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_PETG_sprint.inst.cfg
new file mode 100644
index 0000000000..5617d3f15e
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_PETG_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_petg
+variant = V6 0.50mm
+
+[values]
+speed_print = 45
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_PLA_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_PLA_extrafast.inst.cfg
new file mode 100644
index 0000000000..c12d2e39db
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_PLA_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_pla
+variant = V6 0.50mm
+
+[values]
+speed_print = 60
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_PLA_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_PLA_fast.inst.cfg
new file mode 100644
index 0000000000..de0c316f36
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_PLA_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pla
+variant = V6 0.50mm
+
+[values]
+speed_print = 90
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_PLA_normal.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_PLA_normal.inst.cfg
new file mode 100644
index 0000000000..ccd0f6b245
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_PLA_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_pla
+variant = V6 0.50mm
+
+[values]
+speed_print = 120
+
diff --git a/resources/quality/voron2/voron2_v6_0.50_PLA_sprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.50_PLA_sprint.inst.cfg
new file mode 100644
index 0000000000..9dd88b1d25
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.50_PLA_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_pla
+variant = V6 0.50mm
+
+[values]
+speed_print = 45
+
diff --git a/resources/quality/voron2/voron2_v6_0.60_ABS_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.60_ABS_extrafast.inst.cfg
new file mode 100644
index 0000000000..598fca1ba6
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.60_ABS_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_abs
+variant = V6 0.60mm
+
+[values]
+speed_print = 50
+
diff --git a/resources/quality/voron2/voron2_v6_0.60_ABS_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.60_ABS_fast.inst.cfg
new file mode 100644
index 0000000000..ee12ecbd6a
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.60_ABS_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_abs
+variant = V6 0.60mm
+
+[values]
+speed_print = 80
+
diff --git a/resources/quality/voron2/voron2_v6_0.60_ABS_sprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.60_ABS_sprint.inst.cfg
new file mode 100644
index 0000000000..8a593643e4
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.60_ABS_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_abs
+variant = V6 0.60mm
+
+[values]
+speed_print = 40
+
diff --git a/resources/quality/voron2/voron2_v6_0.60_Nylon_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.60_Nylon_extrafast.inst.cfg
new file mode 100644
index 0000000000..8675fb984a
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.60_Nylon_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_nylon
+variant = V6 0.60mm
+
+[values]
+speed_print = 50
+
diff --git a/resources/quality/voron2/voron2_v6_0.60_Nylon_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.60_Nylon_fast.inst.cfg
new file mode 100644
index 0000000000..71ba39c132
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.60_Nylon_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_nylon
+variant = V6 0.60mm
+
+[values]
+speed_print = 80
+
diff --git a/resources/quality/voron2/voron2_v6_0.60_Nylon_sprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.60_Nylon_sprint.inst.cfg
new file mode 100644
index 0000000000..9ed885cbb2
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.60_Nylon_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_nylon
+variant = V6 0.60mm
+
+[values]
+speed_print = 40
+
diff --git a/resources/quality/voron2/voron2_v6_0.60_PC_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.60_PC_extrafast.inst.cfg
new file mode 100644
index 0000000000..fcd00206cd
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.60_PC_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_pc
+variant = V6 0.60mm
+
+[values]
+speed_print = 50
+
diff --git a/resources/quality/voron2/voron2_v6_0.60_PC_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.60_PC_fast.inst.cfg
new file mode 100644
index 0000000000..0ca824b1ad
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.60_PC_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pc
+variant = V6 0.60mm
+
+[values]
+speed_print = 80
+
diff --git a/resources/quality/voron2/voron2_v6_0.60_PC_sprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.60_PC_sprint.inst.cfg
new file mode 100644
index 0000000000..853cdf5fb6
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.60_PC_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_pc
+variant = V6 0.60mm
+
+[values]
+speed_print = 40
+
diff --git a/resources/quality/voron2/voron2_v6_0.60_PETG_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.60_PETG_extrafast.inst.cfg
new file mode 100644
index 0000000000..ed1103bc43
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.60_PETG_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_petg
+variant = V6 0.60mm
+
+[values]
+speed_print = 50
+
diff --git a/resources/quality/voron2/voron2_v6_0.60_PETG_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.60_PETG_fast.inst.cfg
new file mode 100644
index 0000000000..c1da26998e
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.60_PETG_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_petg
+variant = V6 0.60mm
+
+[values]
+speed_print = 80
+
diff --git a/resources/quality/voron2/voron2_v6_0.60_PETG_sprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.60_PETG_sprint.inst.cfg
new file mode 100644
index 0000000000..bddacbb294
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.60_PETG_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_petg
+variant = V6 0.60mm
+
+[values]
+speed_print = 40
+
diff --git a/resources/quality/voron2/voron2_v6_0.60_PLA_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.60_PLA_extrafast.inst.cfg
new file mode 100644
index 0000000000..42ac385657
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.60_PLA_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_pla
+variant = V6 0.60mm
+
+[values]
+speed_print = 50
+
diff --git a/resources/quality/voron2/voron2_v6_0.60_PLA_fast.inst.cfg b/resources/quality/voron2/voron2_v6_0.60_PLA_fast.inst.cfg
new file mode 100644
index 0000000000..95cb4109d8
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.60_PLA_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pla
+variant = V6 0.60mm
+
+[values]
+speed_print = 80
+
diff --git a/resources/quality/voron2/voron2_v6_0.60_PLA_sprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.60_PLA_sprint.inst.cfg
new file mode 100644
index 0000000000..22ecb6c7e1
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.60_PLA_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_pla
+variant = V6 0.60mm
+
+[values]
+speed_print = 40
+
diff --git a/resources/quality/voron2/voron2_v6_0.80_ABS_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.80_ABS_extrafast.inst.cfg
new file mode 100644
index 0000000000..0013c37f64
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.80_ABS_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_abs
+variant = V6 0.80mm
+
+[values]
+speed_print = 40
+
diff --git a/resources/quality/voron2/voron2_v6_0.80_ABS_sprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.80_ABS_sprint.inst.cfg
new file mode 100644
index 0000000000..63e8b3315d
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.80_ABS_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_abs
+variant = V6 0.80mm
+
+[values]
+speed_print = 30
+
diff --git a/resources/quality/voron2/voron2_v6_0.80_ABS_supersprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.80_ABS_supersprint.inst.cfg
new file mode 100644
index 0000000000..9b8fb9f866
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.80_ABS_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_abs
+variant = V6 0.80mm
+
+[values]
+speed_print = 24
+
diff --git a/resources/quality/voron2/voron2_v6_0.80_Nylon_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.80_Nylon_extrafast.inst.cfg
new file mode 100644
index 0000000000..730513757a
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.80_Nylon_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_nylon
+variant = V6 0.80mm
+
+[values]
+speed_print = 40
+
diff --git a/resources/quality/voron2/voron2_v6_0.80_Nylon_sprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.80_Nylon_sprint.inst.cfg
new file mode 100644
index 0000000000..3ed1383763
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.80_Nylon_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_nylon
+variant = V6 0.80mm
+
+[values]
+speed_print = 30
+
diff --git a/resources/quality/voron2/voron2_v6_0.80_Nylon_supersprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.80_Nylon_supersprint.inst.cfg
new file mode 100644
index 0000000000..c6341aa603
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.80_Nylon_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_nylon
+variant = V6 0.80mm
+
+[values]
+speed_print = 24
+
diff --git a/resources/quality/voron2/voron2_v6_0.80_PC_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.80_PC_extrafast.inst.cfg
new file mode 100644
index 0000000000..3b2ee6b41c
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.80_PC_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_pc
+variant = V6 0.80mm
+
+[values]
+speed_print = 40
+
diff --git a/resources/quality/voron2/voron2_v6_0.80_PC_sprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.80_PC_sprint.inst.cfg
new file mode 100644
index 0000000000..1cfc5a8ce9
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.80_PC_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_pc
+variant = V6 0.80mm
+
+[values]
+speed_print = 30
+
diff --git a/resources/quality/voron2/voron2_v6_0.80_PC_supersprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.80_PC_supersprint.inst.cfg
new file mode 100644
index 0000000000..0c82d79d4e
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.80_PC_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_pc
+variant = V6 0.80mm
+
+[values]
+speed_print = 24
+
diff --git a/resources/quality/voron2/voron2_v6_0.80_PETG_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.80_PETG_extrafast.inst.cfg
new file mode 100644
index 0000000000..901b10394b
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.80_PETG_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_petg
+variant = V6 0.80mm
+
+[values]
+speed_print = 40
+
diff --git a/resources/quality/voron2/voron2_v6_0.80_PETG_sprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.80_PETG_sprint.inst.cfg
new file mode 100644
index 0000000000..8cf2f20d93
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.80_PETG_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_petg
+variant = V6 0.80mm
+
+[values]
+speed_print = 30
+
diff --git a/resources/quality/voron2/voron2_v6_0.80_PETG_supersprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.80_PETG_supersprint.inst.cfg
new file mode 100644
index 0000000000..0f514eec14
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.80_PETG_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_petg
+variant = V6 0.80mm
+
+[values]
+speed_print = 24
+
diff --git a/resources/quality/voron2/voron2_v6_0.80_PLA_extrafast.inst.cfg b/resources/quality/voron2/voron2_v6_0.80_PLA_extrafast.inst.cfg
new file mode 100644
index 0000000000..68c4dd2459
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.80_PLA_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_pla
+variant = V6 0.80mm
+
+[values]
+speed_print = 40
+
diff --git a/resources/quality/voron2/voron2_v6_0.80_PLA_sprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.80_PLA_sprint.inst.cfg
new file mode 100644
index 0000000000..5f27f7598e
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.80_PLA_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_pla
+variant = V6 0.80mm
+
+[values]
+speed_print = 30
+
diff --git a/resources/quality/voron2/voron2_v6_0.80_PLA_supersprint.inst.cfg b/resources/quality/voron2/voron2_v6_0.80_PLA_supersprint.inst.cfg
new file mode 100644
index 0000000000..5003950259
--- /dev/null
+++ b/resources/quality/voron2/voron2_v6_0.80_PLA_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_pla
+variant = V6 0.80mm
+
+[values]
+speed_print = 24
+
diff --git a/resources/quality/voron2/voron2_volcano_0.40_ABS_extrafast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.40_ABS_extrafast.inst.cfg
new file mode 100644
index 0000000000..51f742307d
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.40_ABS_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_abs
+variant = Volcano 0.40mm
+
+[values]
+speed_print = 250
+
diff --git a/resources/quality/voron2/voron2_volcano_0.40_ABS_fast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.40_ABS_fast.inst.cfg
new file mode 100644
index 0000000000..2acd3b3aab
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.40_ABS_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_abs
+variant = Volcano 0.40mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_volcano_0.40_ABS_normal.inst.cfg b/resources/quality/voron2/voron2_volcano_0.40_ABS_normal.inst.cfg
new file mode 100644
index 0000000000..3fdd6c4334
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.40_ABS_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_abs
+variant = Volcano 0.40mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_volcano_0.40_Nylon_extrafast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.40_Nylon_extrafast.inst.cfg
new file mode 100644
index 0000000000..c4ff8e776d
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.40_Nylon_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_nylon
+variant = Volcano 0.40mm
+
+[values]
+speed_print = 250
+
diff --git a/resources/quality/voron2/voron2_volcano_0.40_Nylon_fast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.40_Nylon_fast.inst.cfg
new file mode 100644
index 0000000000..75a0209233
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.40_Nylon_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_nylon
+variant = Volcano 0.40mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_volcano_0.40_Nylon_normal.inst.cfg b/resources/quality/voron2/voron2_volcano_0.40_Nylon_normal.inst.cfg
new file mode 100644
index 0000000000..84581d4c15
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.40_Nylon_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_nylon
+variant = Volcano 0.40mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_volcano_0.40_PC_extrafast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.40_PC_extrafast.inst.cfg
new file mode 100644
index 0000000000..3580274783
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.40_PC_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_pc
+variant = Volcano 0.40mm
+
+[values]
+speed_print = 250
+
diff --git a/resources/quality/voron2/voron2_volcano_0.40_PC_fast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.40_PC_fast.inst.cfg
new file mode 100644
index 0000000000..c738cbdee2
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.40_PC_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pc
+variant = Volcano 0.40mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_volcano_0.40_PC_normal.inst.cfg b/resources/quality/voron2/voron2_volcano_0.40_PC_normal.inst.cfg
new file mode 100644
index 0000000000..fe30db3c56
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.40_PC_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_pc
+variant = Volcano 0.40mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_volcano_0.40_PETG_extrafast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.40_PETG_extrafast.inst.cfg
new file mode 100644
index 0000000000..0e3bb10e17
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.40_PETG_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_petg
+variant = Volcano 0.40mm
+
+[values]
+speed_print = 250
+
diff --git a/resources/quality/voron2/voron2_volcano_0.40_PETG_fast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.40_PETG_fast.inst.cfg
new file mode 100644
index 0000000000..04df811f7d
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.40_PETG_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_petg
+variant = Volcano 0.40mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_volcano_0.40_PETG_normal.inst.cfg b/resources/quality/voron2/voron2_volcano_0.40_PETG_normal.inst.cfg
new file mode 100644
index 0000000000..23b143b589
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.40_PETG_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_petg
+variant = Volcano 0.40mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_volcano_0.40_PLA_extrafast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.40_PLA_extrafast.inst.cfg
new file mode 100644
index 0000000000..119e8798c4
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.40_PLA_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_pla
+variant = Volcano 0.40mm
+
+[values]
+speed_print = 250
+
diff --git a/resources/quality/voron2/voron2_volcano_0.40_PLA_fast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.40_PLA_fast.inst.cfg
new file mode 100644
index 0000000000..c9f3d5bcb4
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.40_PLA_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pla
+variant = Volcano 0.40mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_volcano_0.40_PLA_normal.inst.cfg b/resources/quality/voron2/voron2_volcano_0.40_PLA_normal.inst.cfg
new file mode 100644
index 0000000000..de1a36ed60
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.40_PLA_normal.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Normal
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = normal
+material = generic_pla
+variant = Volcano 0.40mm
+
+[values]
+speed_print = 300
+
diff --git a/resources/quality/voron2/voron2_volcano_0.60_ABS_extrafast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.60_ABS_extrafast.inst.cfg
new file mode 100644
index 0000000000..2b0e8ed219
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.60_ABS_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_abs
+variant = Volcano 0.60mm
+
+[values]
+speed_print = 165
+
diff --git a/resources/quality/voron2/voron2_volcano_0.60_ABS_fast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.60_ABS_fast.inst.cfg
new file mode 100644
index 0000000000..b716f7b8af
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.60_ABS_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_abs
+variant = Volcano 0.60mm
+
+[values]
+speed_print = 250
+
diff --git a/resources/quality/voron2/voron2_volcano_0.60_ABS_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_0.60_ABS_sprint.inst.cfg
new file mode 100644
index 0000000000..8c658faf5a
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.60_ABS_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_abs
+variant = Volcano 0.60mm
+
+[values]
+speed_print = 125
+
diff --git a/resources/quality/voron2/voron2_volcano_0.60_Nylon_extrafast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.60_Nylon_extrafast.inst.cfg
new file mode 100644
index 0000000000..a90dae6871
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.60_Nylon_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_nylon
+variant = Volcano 0.60mm
+
+[values]
+speed_print = 165
+
diff --git a/resources/quality/voron2/voron2_volcano_0.60_Nylon_fast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.60_Nylon_fast.inst.cfg
new file mode 100644
index 0000000000..76d3134441
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.60_Nylon_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_nylon
+variant = Volcano 0.60mm
+
+[values]
+speed_print = 250
+
diff --git a/resources/quality/voron2/voron2_volcano_0.60_Nylon_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_0.60_Nylon_sprint.inst.cfg
new file mode 100644
index 0000000000..d1bd22d05a
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.60_Nylon_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_nylon
+variant = Volcano 0.60mm
+
+[values]
+speed_print = 125
+
diff --git a/resources/quality/voron2/voron2_volcano_0.60_PC_extrafast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.60_PC_extrafast.inst.cfg
new file mode 100644
index 0000000000..7eb390ec7c
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.60_PC_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_pc
+variant = Volcano 0.60mm
+
+[values]
+speed_print = 165
+
diff --git a/resources/quality/voron2/voron2_volcano_0.60_PC_fast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.60_PC_fast.inst.cfg
new file mode 100644
index 0000000000..4de12929d5
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.60_PC_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pc
+variant = Volcano 0.60mm
+
+[values]
+speed_print = 250
+
diff --git a/resources/quality/voron2/voron2_volcano_0.60_PC_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_0.60_PC_sprint.inst.cfg
new file mode 100644
index 0000000000..78033e2fc0
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.60_PC_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_pc
+variant = Volcano 0.60mm
+
+[values]
+speed_print = 125
+
diff --git a/resources/quality/voron2/voron2_volcano_0.60_PETG_extrafast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.60_PETG_extrafast.inst.cfg
new file mode 100644
index 0000000000..239f6f2ea0
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.60_PETG_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_petg
+variant = Volcano 0.60mm
+
+[values]
+speed_print = 165
+
diff --git a/resources/quality/voron2/voron2_volcano_0.60_PETG_fast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.60_PETG_fast.inst.cfg
new file mode 100644
index 0000000000..da89d8e7bb
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.60_PETG_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_petg
+variant = Volcano 0.60mm
+
+[values]
+speed_print = 250
+
diff --git a/resources/quality/voron2/voron2_volcano_0.60_PETG_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_0.60_PETG_sprint.inst.cfg
new file mode 100644
index 0000000000..36b66e18d3
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.60_PETG_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_petg
+variant = Volcano 0.60mm
+
+[values]
+speed_print = 125
+
diff --git a/resources/quality/voron2/voron2_volcano_0.60_PLA_extrafast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.60_PLA_extrafast.inst.cfg
new file mode 100644
index 0000000000..4e861c6aa7
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.60_PLA_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_pla
+variant = Volcano 0.60mm
+
+[values]
+speed_print = 165
+
diff --git a/resources/quality/voron2/voron2_volcano_0.60_PLA_fast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.60_PLA_fast.inst.cfg
new file mode 100644
index 0000000000..9d9447f900
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.60_PLA_fast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = fast
+material = generic_pla
+variant = Volcano 0.60mm
+
+[values]
+speed_print = 250
+
diff --git a/resources/quality/voron2/voron2_volcano_0.60_PLA_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_0.60_PLA_sprint.inst.cfg
new file mode 100644
index 0000000000..4738381e0d
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.60_PLA_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_pla
+variant = Volcano 0.60mm
+
+[values]
+speed_print = 125
+
diff --git a/resources/quality/voron2/voron2_volcano_0.80_ABS_extrafast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.80_ABS_extrafast.inst.cfg
new file mode 100644
index 0000000000..8e5e5a9c7d
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.80_ABS_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_abs
+variant = Volcano 0.80mm
+
+[values]
+speed_print = 125
+
diff --git a/resources/quality/voron2/voron2_volcano_0.80_ABS_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_0.80_ABS_sprint.inst.cfg
new file mode 100644
index 0000000000..d2e43fa000
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.80_ABS_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_abs
+variant = Volcano 0.80mm
+
+[values]
+speed_print = 90
+
diff --git a/resources/quality/voron2/voron2_volcano_0.80_ABS_supersprint.inst.cfg b/resources/quality/voron2/voron2_volcano_0.80_ABS_supersprint.inst.cfg
new file mode 100644
index 0000000000..4952cdb109
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.80_ABS_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_abs
+variant = Volcano 0.80mm
+
+[values]
+speed_print = 70
+
diff --git a/resources/quality/voron2/voron2_volcano_0.80_Nylon_extrafast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.80_Nylon_extrafast.inst.cfg
new file mode 100644
index 0000000000..4d14b15e9d
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.80_Nylon_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_nylon
+variant = Volcano 0.80mm
+
+[values]
+speed_print = 125
+
diff --git a/resources/quality/voron2/voron2_volcano_0.80_Nylon_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_0.80_Nylon_sprint.inst.cfg
new file mode 100644
index 0000000000..aa56506e32
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.80_Nylon_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_nylon
+variant = Volcano 0.80mm
+
+[values]
+speed_print = 90
+
diff --git a/resources/quality/voron2/voron2_volcano_0.80_Nylon_supersprint.inst.cfg b/resources/quality/voron2/voron2_volcano_0.80_Nylon_supersprint.inst.cfg
new file mode 100644
index 0000000000..fac162ff2a
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.80_Nylon_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_nylon
+variant = Volcano 0.80mm
+
+[values]
+speed_print = 70
+
diff --git a/resources/quality/voron2/voron2_volcano_0.80_PC_extrafast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.80_PC_extrafast.inst.cfg
new file mode 100644
index 0000000000..2101446108
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.80_PC_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_pc
+variant = Volcano 0.80mm
+
+[values]
+speed_print = 125
+
diff --git a/resources/quality/voron2/voron2_volcano_0.80_PC_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_0.80_PC_sprint.inst.cfg
new file mode 100644
index 0000000000..9219a05388
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.80_PC_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_pc
+variant = Volcano 0.80mm
+
+[values]
+speed_print = 90
+
diff --git a/resources/quality/voron2/voron2_volcano_0.80_PC_supersprint.inst.cfg b/resources/quality/voron2/voron2_volcano_0.80_PC_supersprint.inst.cfg
new file mode 100644
index 0000000000..7f604e4d7c
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.80_PC_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_pc
+variant = Volcano 0.80mm
+
+[values]
+speed_print = 70
+
diff --git a/resources/quality/voron2/voron2_volcano_0.80_PETG_extrafast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.80_PETG_extrafast.inst.cfg
new file mode 100644
index 0000000000..9494ce2f96
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.80_PETG_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_petg
+variant = Volcano 0.80mm
+
+[values]
+speed_print = 125
+
diff --git a/resources/quality/voron2/voron2_volcano_0.80_PETG_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_0.80_PETG_sprint.inst.cfg
new file mode 100644
index 0000000000..87f2422faa
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.80_PETG_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_petg
+variant = Volcano 0.80mm
+
+[values]
+speed_print = 90
+
diff --git a/resources/quality/voron2/voron2_volcano_0.80_PETG_supersprint.inst.cfg b/resources/quality/voron2/voron2_volcano_0.80_PETG_supersprint.inst.cfg
new file mode 100644
index 0000000000..b29cf1dc80
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.80_PETG_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_petg
+variant = Volcano 0.80mm
+
+[values]
+speed_print = 70
+
diff --git a/resources/quality/voron2/voron2_volcano_0.80_PLA_extrafast.inst.cfg b/resources/quality/voron2/voron2_volcano_0.80_PLA_extrafast.inst.cfg
new file mode 100644
index 0000000000..05769d69ae
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.80_PLA_extrafast.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fast
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = extrafast
+material = generic_pla
+variant = Volcano 0.80mm
+
+[values]
+speed_print = 125
+
diff --git a/resources/quality/voron2/voron2_volcano_0.80_PLA_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_0.80_PLA_sprint.inst.cfg
new file mode 100644
index 0000000000..5c1f85f991
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.80_PLA_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_pla
+variant = Volcano 0.80mm
+
+[values]
+speed_print = 90
+
diff --git a/resources/quality/voron2/voron2_volcano_0.80_PLA_supersprint.inst.cfg b/resources/quality/voron2/voron2_volcano_0.80_PLA_supersprint.inst.cfg
new file mode 100644
index 0000000000..9705b6558c
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_0.80_PLA_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_pla
+variant = Volcano 0.80mm
+
+[values]
+speed_print = 70
+
diff --git a/resources/quality/voron2/voron2_volcano_1.00_ABS_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.00_ABS_sprint.inst.cfg
new file mode 100644
index 0000000000..ac94dcdf95
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.00_ABS_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_abs
+variant = Volcano 1.00mm
+
+[values]
+speed_print = 75
+
diff --git a/resources/quality/voron2/voron2_volcano_1.00_ABS_supersprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.00_ABS_supersprint.inst.cfg
new file mode 100644
index 0000000000..f03ec98a2b
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.00_ABS_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_abs
+variant = Volcano 1.00mm
+
+[values]
+speed_print = 60
+
diff --git a/resources/quality/voron2/voron2_volcano_1.00_ABS_ultrasprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.00_ABS_ultrasprint.inst.cfg
new file mode 100644
index 0000000000..f6b7522563
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.00_ABS_ultrasprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Ultra Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = ultrasprint
+material = generic_abs
+variant = Volcano 1.00mm
+
+[values]
+speed_print = 50
+
diff --git a/resources/quality/voron2/voron2_volcano_1.00_Nylon_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.00_Nylon_sprint.inst.cfg
new file mode 100644
index 0000000000..cd4c869603
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.00_Nylon_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_nylon
+variant = Volcano 1.00mm
+
+[values]
+speed_print = 75
+
diff --git a/resources/quality/voron2/voron2_volcano_1.00_Nylon_supersprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.00_Nylon_supersprint.inst.cfg
new file mode 100644
index 0000000000..6736ef848c
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.00_Nylon_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_nylon
+variant = Volcano 1.00mm
+
+[values]
+speed_print = 60
+
diff --git a/resources/quality/voron2/voron2_volcano_1.00_Nylon_ultrasprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.00_Nylon_ultrasprint.inst.cfg
new file mode 100644
index 0000000000..3b9b1f8c86
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.00_Nylon_ultrasprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Ultra Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = ultrasprint
+material = generic_nylon
+variant = Volcano 1.00mm
+
+[values]
+speed_print = 50
+
diff --git a/resources/quality/voron2/voron2_volcano_1.00_PC_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.00_PC_sprint.inst.cfg
new file mode 100644
index 0000000000..136ef88cf8
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.00_PC_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_pc
+variant = Volcano 1.00mm
+
+[values]
+speed_print = 75
+
diff --git a/resources/quality/voron2/voron2_volcano_1.00_PC_supersprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.00_PC_supersprint.inst.cfg
new file mode 100644
index 0000000000..101e3b4f84
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.00_PC_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_pc
+variant = Volcano 1.00mm
+
+[values]
+speed_print = 60
+
diff --git a/resources/quality/voron2/voron2_volcano_1.00_PC_ultrasprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.00_PC_ultrasprint.inst.cfg
new file mode 100644
index 0000000000..f95ba6c295
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.00_PC_ultrasprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Ultra Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = ultrasprint
+material = generic_pc
+variant = Volcano 1.00mm
+
+[values]
+speed_print = 50
+
diff --git a/resources/quality/voron2/voron2_volcano_1.00_PETG_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.00_PETG_sprint.inst.cfg
new file mode 100644
index 0000000000..f494abd961
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.00_PETG_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_petg
+variant = Volcano 1.00mm
+
+[values]
+speed_print = 75
+
diff --git a/resources/quality/voron2/voron2_volcano_1.00_PETG_supersprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.00_PETG_supersprint.inst.cfg
new file mode 100644
index 0000000000..a5ab49b205
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.00_PETG_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_petg
+variant = Volcano 1.00mm
+
+[values]
+speed_print = 60
+
diff --git a/resources/quality/voron2/voron2_volcano_1.00_PETG_ultrasprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.00_PETG_ultrasprint.inst.cfg
new file mode 100644
index 0000000000..995789fe57
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.00_PETG_ultrasprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Ultra Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = ultrasprint
+material = generic_petg
+variant = Volcano 1.00mm
+
+[values]
+speed_print = 50
+
diff --git a/resources/quality/voron2/voron2_volcano_1.00_PLA_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.00_PLA_sprint.inst.cfg
new file mode 100644
index 0000000000..44f963d4f1
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.00_PLA_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_pla
+variant = Volcano 1.00mm
+
+[values]
+speed_print = 75
+
diff --git a/resources/quality/voron2/voron2_volcano_1.00_PLA_supersprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.00_PLA_supersprint.inst.cfg
new file mode 100644
index 0000000000..60196a272b
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.00_PLA_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_pla
+variant = Volcano 1.00mm
+
+[values]
+speed_print = 60
+
diff --git a/resources/quality/voron2/voron2_volcano_1.00_PLA_ultrasprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.00_PLA_ultrasprint.inst.cfg
new file mode 100644
index 0000000000..1605cdc7bf
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.00_PLA_ultrasprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Ultra Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = ultrasprint
+material = generic_pla
+variant = Volcano 1.00mm
+
+[values]
+speed_print = 50
+
diff --git a/resources/quality/voron2/voron2_volcano_1.20_ABS_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.20_ABS_sprint.inst.cfg
new file mode 100644
index 0000000000..1da744056f
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.20_ABS_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_abs
+variant = Volcano 1.20mm
+
+[values]
+speed_print = 60
+
diff --git a/resources/quality/voron2/voron2_volcano_1.20_ABS_supersprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.20_ABS_supersprint.inst.cfg
new file mode 100644
index 0000000000..f59ee77d08
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.20_ABS_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_abs
+variant = Volcano 1.20mm
+
+[values]
+speed_print = 50
+
diff --git a/resources/quality/voron2/voron2_volcano_1.20_ABS_ultrasprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.20_ABS_ultrasprint.inst.cfg
new file mode 100644
index 0000000000..4a1b215bc8
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.20_ABS_ultrasprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Ultra Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = ultrasprint
+material = generic_abs
+variant = Volcano 1.20mm
+
+[values]
+speed_print = 40
+
diff --git a/resources/quality/voron2/voron2_volcano_1.20_Nylon_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.20_Nylon_sprint.inst.cfg
new file mode 100644
index 0000000000..efe9f1d701
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.20_Nylon_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_nylon
+variant = Volcano 1.20mm
+
+[values]
+speed_print = 60
+
diff --git a/resources/quality/voron2/voron2_volcano_1.20_Nylon_supersprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.20_Nylon_supersprint.inst.cfg
new file mode 100644
index 0000000000..cb09ac6c6f
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.20_Nylon_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_nylon
+variant = Volcano 1.20mm
+
+[values]
+speed_print = 50
+
diff --git a/resources/quality/voron2/voron2_volcano_1.20_Nylon_ultrasprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.20_Nylon_ultrasprint.inst.cfg
new file mode 100644
index 0000000000..872a45f236
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.20_Nylon_ultrasprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Ultra Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = ultrasprint
+material = generic_nylon
+variant = Volcano 1.20mm
+
+[values]
+speed_print = 40
+
diff --git a/resources/quality/voron2/voron2_volcano_1.20_PC_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.20_PC_sprint.inst.cfg
new file mode 100644
index 0000000000..d8e0507cf1
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.20_PC_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_pc
+variant = Volcano 1.20mm
+
+[values]
+speed_print = 60
+
diff --git a/resources/quality/voron2/voron2_volcano_1.20_PC_supersprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.20_PC_supersprint.inst.cfg
new file mode 100644
index 0000000000..9875b53f59
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.20_PC_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_pc
+variant = Volcano 1.20mm
+
+[values]
+speed_print = 50
+
diff --git a/resources/quality/voron2/voron2_volcano_1.20_PC_ultrasprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.20_PC_ultrasprint.inst.cfg
new file mode 100644
index 0000000000..bf1f366ad7
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.20_PC_ultrasprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Ultra Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = ultrasprint
+material = generic_pc
+variant = Volcano 1.20mm
+
+[values]
+speed_print = 40
+
diff --git a/resources/quality/voron2/voron2_volcano_1.20_PETG_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.20_PETG_sprint.inst.cfg
new file mode 100644
index 0000000000..22ab4a1fbf
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.20_PETG_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_petg
+variant = Volcano 1.20mm
+
+[values]
+speed_print = 60
+
diff --git a/resources/quality/voron2/voron2_volcano_1.20_PETG_supersprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.20_PETG_supersprint.inst.cfg
new file mode 100644
index 0000000000..55d1d0693e
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.20_PETG_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_petg
+variant = Volcano 1.20mm
+
+[values]
+speed_print = 50
+
diff --git a/resources/quality/voron2/voron2_volcano_1.20_PETG_ultrasprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.20_PETG_ultrasprint.inst.cfg
new file mode 100644
index 0000000000..73608a0f16
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.20_PETG_ultrasprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Ultra Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = ultrasprint
+material = generic_petg
+variant = Volcano 1.20mm
+
+[values]
+speed_print = 40
+
diff --git a/resources/quality/voron2/voron2_volcano_1.20_PLA_sprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.20_PLA_sprint.inst.cfg
new file mode 100644
index 0000000000..37695fa405
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.20_PLA_sprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = sprint
+material = generic_pla
+variant = Volcano 1.20mm
+
+[values]
+speed_print = 60
+
diff --git a/resources/quality/voron2/voron2_volcano_1.20_PLA_supersprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.20_PLA_supersprint.inst.cfg
new file mode 100644
index 0000000000..7d2d8a0db0
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.20_PLA_supersprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = supersprint
+material = generic_pla
+variant = Volcano 1.20mm
+
+[values]
+speed_print = 50
+
diff --git a/resources/quality/voron2/voron2_volcano_1.20_PLA_ultrasprint.inst.cfg b/resources/quality/voron2/voron2_volcano_1.20_PLA_ultrasprint.inst.cfg
new file mode 100644
index 0000000000..1a3052e211
--- /dev/null
+++ b/resources/quality/voron2/voron2_volcano_1.20_PLA_ultrasprint.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Ultra Sprint
+definition = voron2_base
+
+[metadata]
+setting_version = 11
+type = quality
+quality_type = ultrasprint
+material = generic_pla
+variant = Volcano 1.20mm
+
+[values]
+speed_print = 40
+
diff --git a/resources/texts/change_log.txt b/resources/texts/change_log.txt
index dfb3ab0ab1..3aaa727141 100644
--- a/resources/texts/change_log.txt
+++ b/resources/texts/change_log.txt
@@ -1,3 +1,8 @@
+[4.4.1]
+* Bug fixes
+ - Fixed problem where wrong material was selected by default.
+ - Fixed a problem where custom profiles were disappearing when loading a project without a nozzle profile.
+
[4.4.0]
*Intent profiles.
What’s the intent of your print? A rapid prototype? A visual prototype? An end-use part with specific holes sizes? Intent profiles accelerate the CAD-CAM workflow by preconfiguring all the right settings in Ultimaker Cura for each of these use cases. Simply select a profile that matches the intent of your design, slice, and you’re ready to print immediately, without the need to adjust the typical settings. For now, there are three Intent profiles:
diff --git a/resources/variants/voron2_250_v6_0.25.inst.cfg b/resources/variants/voron2_250_v6_0.25.inst.cfg
new file mode 100644
index 0000000000..6cfdb9364e
--- /dev/null
+++ b/resources/variants/voron2_250_v6_0.25.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.25mm
+version = 4
+definition = voron2_250
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.25
diff --git a/resources/variants/voron2_250_v6_0.30.inst.cfg b/resources/variants/voron2_250_v6_0.30.inst.cfg
new file mode 100644
index 0000000000..1b0aff95f0
--- /dev/null
+++ b/resources/variants/voron2_250_v6_0.30.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.30mm
+version = 4
+definition = voron2_250
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.30
diff --git a/resources/variants/voron2_250_v6_0.35.inst.cfg b/resources/variants/voron2_250_v6_0.35.inst.cfg
new file mode 100644
index 0000000000..ce1b39b922
--- /dev/null
+++ b/resources/variants/voron2_250_v6_0.35.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.35mm
+version = 4
+definition = voron2_250
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.35
diff --git a/resources/variants/voron2_250_v6_0.40.inst.cfg b/resources/variants/voron2_250_v6_0.40.inst.cfg
new file mode 100644
index 0000000000..63dd674c0f
--- /dev/null
+++ b/resources/variants/voron2_250_v6_0.40.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.40mm
+version = 4
+definition = voron2_250
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/voron2_250_v6_0.50.inst.cfg b/resources/variants/voron2_250_v6_0.50.inst.cfg
new file mode 100644
index 0000000000..81763fd5d2
--- /dev/null
+++ b/resources/variants/voron2_250_v6_0.50.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.50mm
+version = 4
+definition = voron2_250
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.5
diff --git a/resources/variants/voron2_250_v6_0.60.inst.cfg b/resources/variants/voron2_250_v6_0.60.inst.cfg
new file mode 100644
index 0000000000..feeafd7b2c
--- /dev/null
+++ b/resources/variants/voron2_250_v6_0.60.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.60mm
+version = 4
+definition = voron2_250
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/voron2_250_v6_0.80.inst.cfg b/resources/variants/voron2_250_v6_0.80.inst.cfg
new file mode 100644
index 0000000000..62b7ca860b
--- /dev/null
+++ b/resources/variants/voron2_250_v6_0.80.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.80mm
+version = 4
+definition = voron2_250
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/voron2_250_volcano_0.40.inst.cfg b/resources/variants/voron2_250_volcano_0.40.inst.cfg
new file mode 100644
index 0000000000..f07ce4d5c6
--- /dev/null
+++ b/resources/variants/voron2_250_volcano_0.40.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 0.40mm
+version = 4
+definition = voron2_250
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/voron2_250_volcano_0.60.inst.cfg b/resources/variants/voron2_250_volcano_0.60.inst.cfg
new file mode 100644
index 0000000000..1b6be35b48
--- /dev/null
+++ b/resources/variants/voron2_250_volcano_0.60.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 0.60mm
+version = 4
+definition = voron2_250
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/voron2_250_volcano_0.80.inst.cfg b/resources/variants/voron2_250_volcano_0.80.inst.cfg
new file mode 100644
index 0000000000..5685bc7aaf
--- /dev/null
+++ b/resources/variants/voron2_250_volcano_0.80.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 0.80mm
+version = 4
+definition = voron2_250
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/voron2_250_volcano_1.00.inst.cfg b/resources/variants/voron2_250_volcano_1.00.inst.cfg
new file mode 100644
index 0000000000..1b66ab6062
--- /dev/null
+++ b/resources/variants/voron2_250_volcano_1.00.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 1.00mm
+version = 4
+definition = voron2_250
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.0
diff --git a/resources/variants/voron2_250_volcano_1.20.inst.cfg b/resources/variants/voron2_250_volcano_1.20.inst.cfg
new file mode 100644
index 0000000000..db77d8eb0a
--- /dev/null
+++ b/resources/variants/voron2_250_volcano_1.20.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 1.20mm
+version = 4
+definition = voron2_250
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.2
diff --git a/resources/variants/voron2_300_v6_0.25.inst.cfg b/resources/variants/voron2_300_v6_0.25.inst.cfg
new file mode 100644
index 0000000000..0bb6789b38
--- /dev/null
+++ b/resources/variants/voron2_300_v6_0.25.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.25mm
+version = 4
+definition = voron2_300
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.25
diff --git a/resources/variants/voron2_300_v6_0.30.inst.cfg b/resources/variants/voron2_300_v6_0.30.inst.cfg
new file mode 100644
index 0000000000..6ba7ea8c23
--- /dev/null
+++ b/resources/variants/voron2_300_v6_0.30.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.30mm
+version = 4
+definition = voron2_300
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.30
diff --git a/resources/variants/voron2_300_v6_0.35.inst.cfg b/resources/variants/voron2_300_v6_0.35.inst.cfg
new file mode 100644
index 0000000000..36236707ba
--- /dev/null
+++ b/resources/variants/voron2_300_v6_0.35.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.35mm
+version = 4
+definition = voron2_300
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.35
diff --git a/resources/variants/voron2_300_v6_0.40.inst.cfg b/resources/variants/voron2_300_v6_0.40.inst.cfg
new file mode 100644
index 0000000000..ff0e717999
--- /dev/null
+++ b/resources/variants/voron2_300_v6_0.40.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.40mm
+version = 4
+definition = voron2_300
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/voron2_300_v6_0.50.inst.cfg b/resources/variants/voron2_300_v6_0.50.inst.cfg
new file mode 100644
index 0000000000..c73a23b2c8
--- /dev/null
+++ b/resources/variants/voron2_300_v6_0.50.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.50mm
+version = 4
+definition = voron2_300
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.5
diff --git a/resources/variants/voron2_300_v6_0.60.inst.cfg b/resources/variants/voron2_300_v6_0.60.inst.cfg
new file mode 100644
index 0000000000..76db701875
--- /dev/null
+++ b/resources/variants/voron2_300_v6_0.60.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.60mm
+version = 4
+definition = voron2_300
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/voron2_300_v6_0.80.inst.cfg b/resources/variants/voron2_300_v6_0.80.inst.cfg
new file mode 100644
index 0000000000..191bd294fc
--- /dev/null
+++ b/resources/variants/voron2_300_v6_0.80.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.80mm
+version = 4
+definition = voron2_300
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/voron2_300_volcano_0.40.inst.cfg b/resources/variants/voron2_300_volcano_0.40.inst.cfg
new file mode 100644
index 0000000000..163460d94f
--- /dev/null
+++ b/resources/variants/voron2_300_volcano_0.40.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 0.40mm
+version = 4
+definition = voron2_300
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/voron2_300_volcano_0.60.inst.cfg b/resources/variants/voron2_300_volcano_0.60.inst.cfg
new file mode 100644
index 0000000000..ee44662784
--- /dev/null
+++ b/resources/variants/voron2_300_volcano_0.60.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 0.60mm
+version = 4
+definition = voron2_300
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/voron2_300_volcano_0.80.inst.cfg b/resources/variants/voron2_300_volcano_0.80.inst.cfg
new file mode 100644
index 0000000000..3137ee3556
--- /dev/null
+++ b/resources/variants/voron2_300_volcano_0.80.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 0.80mm
+version = 4
+definition = voron2_300
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/voron2_300_volcano_1.00.inst.cfg b/resources/variants/voron2_300_volcano_1.00.inst.cfg
new file mode 100644
index 0000000000..6bf2a060eb
--- /dev/null
+++ b/resources/variants/voron2_300_volcano_1.00.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 1.00mm
+version = 4
+definition = voron2_300
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.0
diff --git a/resources/variants/voron2_300_volcano_1.20.inst.cfg b/resources/variants/voron2_300_volcano_1.20.inst.cfg
new file mode 100644
index 0000000000..6cdbca1960
--- /dev/null
+++ b/resources/variants/voron2_300_volcano_1.20.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 1.20mm
+version = 4
+definition = voron2_300
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.2
diff --git a/resources/variants/voron2_350_v6_0.25.inst.cfg b/resources/variants/voron2_350_v6_0.25.inst.cfg
new file mode 100644
index 0000000000..c337515508
--- /dev/null
+++ b/resources/variants/voron2_350_v6_0.25.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.25mm
+version = 4
+definition = voron2_350
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.25
diff --git a/resources/variants/voron2_350_v6_0.30.inst.cfg b/resources/variants/voron2_350_v6_0.30.inst.cfg
new file mode 100644
index 0000000000..7dcfeea4d4
--- /dev/null
+++ b/resources/variants/voron2_350_v6_0.30.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.30mm
+version = 4
+definition = voron2_350
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.30
diff --git a/resources/variants/voron2_350_v6_0.35.inst.cfg b/resources/variants/voron2_350_v6_0.35.inst.cfg
new file mode 100644
index 0000000000..33747c6d2f
--- /dev/null
+++ b/resources/variants/voron2_350_v6_0.35.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.35mm
+version = 4
+definition = voron2_350
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.35
diff --git a/resources/variants/voron2_350_v6_0.40.inst.cfg b/resources/variants/voron2_350_v6_0.40.inst.cfg
new file mode 100644
index 0000000000..16149215dd
--- /dev/null
+++ b/resources/variants/voron2_350_v6_0.40.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.40mm
+version = 4
+definition = voron2_350
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/voron2_350_v6_0.50.inst.cfg b/resources/variants/voron2_350_v6_0.50.inst.cfg
new file mode 100644
index 0000000000..d256bca35f
--- /dev/null
+++ b/resources/variants/voron2_350_v6_0.50.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.50mm
+version = 4
+definition = voron2_350
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.5
diff --git a/resources/variants/voron2_350_v6_0.60.inst.cfg b/resources/variants/voron2_350_v6_0.60.inst.cfg
new file mode 100644
index 0000000000..831d8ad39c
--- /dev/null
+++ b/resources/variants/voron2_350_v6_0.60.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.60mm
+version = 4
+definition = voron2_350
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/voron2_350_v6_0.80.inst.cfg b/resources/variants/voron2_350_v6_0.80.inst.cfg
new file mode 100644
index 0000000000..2b51e08faf
--- /dev/null
+++ b/resources/variants/voron2_350_v6_0.80.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.80mm
+version = 4
+definition = voron2_350
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/voron2_350_volcano_0.40.inst.cfg b/resources/variants/voron2_350_volcano_0.40.inst.cfg
new file mode 100644
index 0000000000..2aaf2153fc
--- /dev/null
+++ b/resources/variants/voron2_350_volcano_0.40.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 0.40mm
+version = 4
+definition = voron2_350
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/voron2_350_volcano_0.60.inst.cfg b/resources/variants/voron2_350_volcano_0.60.inst.cfg
new file mode 100644
index 0000000000..7e6460a8ce
--- /dev/null
+++ b/resources/variants/voron2_350_volcano_0.60.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 0.60mm
+version = 4
+definition = voron2_350
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/voron2_350_volcano_0.80.inst.cfg b/resources/variants/voron2_350_volcano_0.80.inst.cfg
new file mode 100644
index 0000000000..5a689a1293
--- /dev/null
+++ b/resources/variants/voron2_350_volcano_0.80.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 0.80mm
+version = 4
+definition = voron2_350
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/voron2_350_volcano_1.00.inst.cfg b/resources/variants/voron2_350_volcano_1.00.inst.cfg
new file mode 100644
index 0000000000..924843c866
--- /dev/null
+++ b/resources/variants/voron2_350_volcano_1.00.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 1.00mm
+version = 4
+definition = voron2_350
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.0
diff --git a/resources/variants/voron2_350_volcano_1.20.inst.cfg b/resources/variants/voron2_350_volcano_1.20.inst.cfg
new file mode 100644
index 0000000000..2a724099c7
--- /dev/null
+++ b/resources/variants/voron2_350_volcano_1.20.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 1.20mm
+version = 4
+definition = voron2_350
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.2
diff --git a/resources/variants/voron2_custom_v6_0.25.inst.cfg b/resources/variants/voron2_custom_v6_0.25.inst.cfg
new file mode 100644
index 0000000000..abed941ae0
--- /dev/null
+++ b/resources/variants/voron2_custom_v6_0.25.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.25mm
+version = 4
+definition = voron2_custom
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.25
diff --git a/resources/variants/voron2_custom_v6_0.30.inst.cfg b/resources/variants/voron2_custom_v6_0.30.inst.cfg
new file mode 100644
index 0000000000..e49dd17297
--- /dev/null
+++ b/resources/variants/voron2_custom_v6_0.30.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.30mm
+version = 4
+definition = voron2_custom
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.30
diff --git a/resources/variants/voron2_custom_v6_0.35.inst.cfg b/resources/variants/voron2_custom_v6_0.35.inst.cfg
new file mode 100644
index 0000000000..1b04ad373b
--- /dev/null
+++ b/resources/variants/voron2_custom_v6_0.35.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.35mm
+version = 4
+definition = voron2_custom
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.35
diff --git a/resources/variants/voron2_custom_v6_0.40.inst.cfg b/resources/variants/voron2_custom_v6_0.40.inst.cfg
new file mode 100644
index 0000000000..ab955e682b
--- /dev/null
+++ b/resources/variants/voron2_custom_v6_0.40.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.40mm
+version = 4
+definition = voron2_custom
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/voron2_custom_v6_0.50.inst.cfg b/resources/variants/voron2_custom_v6_0.50.inst.cfg
new file mode 100644
index 0000000000..3f5aae7333
--- /dev/null
+++ b/resources/variants/voron2_custom_v6_0.50.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.50mm
+version = 4
+definition = voron2_custom
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.5
diff --git a/resources/variants/voron2_custom_v6_0.60.inst.cfg b/resources/variants/voron2_custom_v6_0.60.inst.cfg
new file mode 100644
index 0000000000..1f060b536d
--- /dev/null
+++ b/resources/variants/voron2_custom_v6_0.60.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.60mm
+version = 4
+definition = voron2_custom
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/voron2_custom_v6_0.80.inst.cfg b/resources/variants/voron2_custom_v6_0.80.inst.cfg
new file mode 100644
index 0000000000..3f7de62ff9
--- /dev/null
+++ b/resources/variants/voron2_custom_v6_0.80.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = V6 0.80mm
+version = 4
+definition = voron2_custom
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/voron2_custom_volcano_0.40.inst.cfg b/resources/variants/voron2_custom_volcano_0.40.inst.cfg
new file mode 100644
index 0000000000..fd9fd0710b
--- /dev/null
+++ b/resources/variants/voron2_custom_volcano_0.40.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 0.40mm
+version = 4
+definition = voron2_custom
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/voron2_custom_volcano_0.60.inst.cfg b/resources/variants/voron2_custom_volcano_0.60.inst.cfg
new file mode 100644
index 0000000000..b431f67698
--- /dev/null
+++ b/resources/variants/voron2_custom_volcano_0.60.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 0.60mm
+version = 4
+definition = voron2_custom
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/voron2_custom_volcano_0.80.inst.cfg b/resources/variants/voron2_custom_volcano_0.80.inst.cfg
new file mode 100644
index 0000000000..92db541439
--- /dev/null
+++ b/resources/variants/voron2_custom_volcano_0.80.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 0.80mm
+version = 4
+definition = voron2_custom
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/voron2_custom_volcano_1.00.inst.cfg b/resources/variants/voron2_custom_volcano_1.00.inst.cfg
new file mode 100644
index 0000000000..0d32537ea5
--- /dev/null
+++ b/resources/variants/voron2_custom_volcano_1.00.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 1.00mm
+version = 4
+definition = voron2_custom
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.0
diff --git a/resources/variants/voron2_custom_volcano_1.20.inst.cfg b/resources/variants/voron2_custom_volcano_1.20.inst.cfg
new file mode 100644
index 0000000000..73863370ce
--- /dev/null
+++ b/resources/variants/voron2_custom_volcano_1.20.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = Volcano 1.20mm
+version = 4
+definition = voron2_custom
+
+[metadata]
+setting_version = 11
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.2
diff --git a/tests/Settings/TestGlobalStack.py b/tests/Settings/TestGlobalStack.py
index 0f1579f78b..c1044c9de6 100755
--- a/tests/Settings/TestGlobalStack.py
+++ b/tests/Settings/TestGlobalStack.py
@@ -375,11 +375,27 @@ def test_getPropertyResolveInInstance(global_stack):
## Tests whether the value in instances gets evaluated before the resolve in definitions.
def test_getPropertyInstancesBeforeResolve(global_stack):
+ def getValueProperty(key, property, context = None):
+ if key != "material_bed_temperature":
+ return None
+ if property == "value":
+ return 10
+ if property == "limit_to_extruder":
+ return -1
+ return InstanceState.User
+
+ def getResolveProperty(key, property, context = None):
+ if key != "material_bed_temperature":
+ return None
+ if property == "resolve":
+ return 7.5
+ return None
+
value = unittest.mock.MagicMock() #Sets just the value.
- value.getProperty = lambda key, property, context = None: (10 if property == "value" else (InstanceState.User if property != "limit_to_extruder" else "-1")) if key == "material_bed_temperature" else None
+ value.getProperty = unittest.mock.MagicMock(side_effect = getValueProperty)
value.getMetaDataEntry = unittest.mock.MagicMock(return_value = "quality")
resolve = unittest.mock.MagicMock() #Sets just the resolve.
- resolve.getProperty = lambda key, property, context = None: 7.5 if (key == "material_bed_temperature" and property == "resolve") else None
+ resolve.getProperty = unittest.mock.MagicMock(side_effect = getResolveProperty)
with unittest.mock.patch("cura.Settings.CuraContainerStack.DefinitionContainer", unittest.mock.MagicMock): #To guard against the type checking.
global_stack.definition = resolve