diff --git a/README.md b/README.md
index c40ead2baa..eb04799339 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@
[![Badge Test]][Test]
[![Badge Conan]][Conan]
-
+![Badge Downloads]
@@ -84,6 +84,7 @@
[Badge Conan]: https://img.shields.io/github/workflow/status/Ultimaker/Cura/conan-package?style=for-the-badge&logoColor=white&labelColor=6185aa&color=4c6987&logo=Conan&label=Conan%20Package
[Badge Test]: https://img.shields.io/github/workflow/status/Ultimaker/Cura/unit-test?style=for-the-badge&logoColor=white&labelColor=4a999d&color=346c6e&logo=Codacy&label=Unit%20Test
[Badge Size]: https://img.shields.io/github/repo-size/ultimaker/cura?style=for-the-badge&logoColor=white&labelColor=715a97&color=584674&logo=GoogleAnalytics
+[Badge Downloads]: https://img.shields.io/github/downloads-pre/Ultimaker/Cura/latest/total?style=for-the-badge
diff --git a/conanfile.py b/conanfile.py
index 438e3f07b7..77cecf1134 100644
--- a/conanfile.py
+++ b/conanfile.py
@@ -10,7 +10,7 @@ from conan.tools.env import VirtualRunEnv, Environment, VirtualBuildEnv
from conan.tools.scm import Version
from conan.errors import ConanInvalidConfiguration, ConanException
-required_conan_version = "<=1.56.0"
+required_conan_version = ">=1.54 <=1.56.0 || >=1.58.0 <2.0.0"
class CuraConan(ConanFile):
@@ -150,9 +150,17 @@ class CuraConan(ConanFile):
conan_installs.append([dependency.ref.name,dependency.ref.version])
#list of python installs
- import pkg_resources
- for package in pkg_resources.working_set:
- python_installs.append([package.key, package.version])
+ outer = '"' if self.settings.os == "Windows" else "'"
+ inner = "'" if self.settings.os == "Windows" else '"'
+ python_ins_cmd = f"python -c {outer}import pkg_resources; print({inner};{inner}.join([(s.key+{inner},{inner}+ s.version) for s in pkg_resources.working_set])){outer}"
+ from six import StringIO
+ buffer = StringIO()
+ self.run(python_ins_cmd, run_environment= True, env = "conanrun", output=buffer)
+
+ packages = str(buffer.getvalue()).split("-----------------\n")
+ package = packages[1].strip('\r\n').split(";")
+ for pack in package:
+ python_installs.append(pack.split(","))
with open(os.path.join(location, "AboutDialogVersionsList.qml"), "w") as f:
f.write(cura_version_py.render(
@@ -330,7 +338,7 @@ class CuraConan(ConanFile):
vr.generate()
self._generate_cura_version(os.path.join(self.source_folder, "cura"))
- self._generate_about_versions(os.path.join(self.source_folder, "resources/qml/Dialogs"))
+
if self.options.devtools:
entitlements_file = "'{}'".format(os.path.join(self.source_folder, "packaging", "MacOS", "cura.entitlements"))
@@ -349,6 +357,8 @@ class CuraConan(ConanFile):
pot = self.python_requires["translationextractor"].module.ExtractTranslations(self, cpp_info.bindirs[0])
pot.generate()
+ self._generate_about_versions(os.path.join(self.source_folder, "resources","qml", "Dialogs"))
+
def build(self):
if self.options.devtools:
if self.settings.os != "Windows" or self.conf.get("tools.microsoft.bash:path", check_type = str):
@@ -456,6 +466,7 @@ echo "CURA_APP_NAME={{ cura_app_name }}" >> ${{ env_prefix }}GITHUB_ENV
save(self, os.path.join(self._script_dir, f"activate_github_actions_version_env{ext}"), activate_github_actions_version_env)
self._generate_cura_version(os.path.join(self._site_packages, "cura"))
+ self._generate_about_versions(str(self._share_dir.joinpath("cura", "resources", "qml", "Dialogs")))
entitlements_file = "'{}'".format(Path(self.cpp_info.res_paths[2], "MacOS", "cura.entitlements"))
self._generate_pyinstaller_spec(location = self._base_dir,
@@ -463,6 +474,7 @@ echo "CURA_APP_NAME={{ cura_app_name }}" >> ${{ env_prefix }}GITHUB_ENV
icon_path = "'{}'".format(os.path.join(self.package_folder, self.cpp_info.resdirs[2], self.conan_data["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"),
entitlements_file = entitlements_file if self.settings.os == "Macos" else "None")
+
def package(self):
copy(self, "cura_app.py", src = self.source_folder, dst = os.path.join(self.package_folder, self.cpp.package.bindirs[0]))
copy(self, "*", src = os.path.join(self.source_folder, "cura"), dst = os.path.join(self.package_folder, self.cpp.package.libdirs[0]))
diff --git a/cura/CuraActions.py b/cura/CuraActions.py
index 193803325f..6c2d3f4cb8 100644
--- a/cura/CuraActions.py
+++ b/cura/CuraActions.py
@@ -1,15 +1,18 @@
-# Copyright (c) 2018 Ultimaker B.V.
+# Copyright (c) 2023 UltiMaker
# Cura is released under the terms of the LGPLv3 or higher.
-from PyQt6.QtCore import QObject, QUrl
-from PyQt6.QtGui import QDesktopServices
from typing import List, cast
+from PyQt6.QtCore import QObject, QUrl, QMimeData
+from PyQt6.QtGui import QDesktopServices
+from PyQt6.QtWidgets import QApplication
+
from UM.Event import CallFunctionEvent
from UM.FlameProfiler import pyqtSlot
from UM.Math.Vector import Vector
from UM.Scene.Selection import Selection
from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator
+from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
from UM.Operations.GroupedOperation import GroupedOperation
from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation
from UM.Operations.TranslateOperation import TranslateOperation
@@ -19,6 +22,7 @@ from cura.Operations.SetParentOperation import SetParentOperation
from cura.MultiplyObjectsJob import MultiplyObjectsJob
from cura.Settings.SetObjectExtruderOperation import SetObjectExtruderOperation
from cura.Settings.ExtruderManager import ExtruderManager
+from cura.Arranging.Nest2DArrange import createGroupOperationForArrange
from cura.Operations.SetBuildPlateNumberOperation import SetBuildPlateNumberOperation
@@ -181,5 +185,60 @@ class CuraActions(QObject):
Selection.clear()
+ @pyqtSlot()
+ def cut(self) -> None:
+ self.copy()
+ self.deleteSelection()
+
+ @pyqtSlot()
+ def copy(self) -> None:
+ mesh_writer = cura.CuraApplication.CuraApplication.getInstance().getMeshFileHandler().getWriter("3MFWriter")
+ if not mesh_writer:
+ Logger.log("e", "No 3MF writer found, unable to copy.")
+ return
+
+ # Get the selected nodes
+ selected_objects = Selection.getAllSelectedObjects()
+ # Serialize the nodes to a string
+ scene_string = mesh_writer.sceneNodesToString(selected_objects)
+ # Put the string on the clipboard
+ QApplication.clipboard().setText(scene_string)
+
+ @pyqtSlot()
+ def paste(self) -> None:
+ application = cura.CuraApplication.CuraApplication.getInstance()
+ mesh_reader = application.getMeshFileHandler().getReaderForFile(".3mf")
+ if not mesh_reader:
+ Logger.log("e", "No 3MF reader found, unable to paste.")
+ return
+
+ # Parse the scene from the clipboard
+ scene_string = QApplication.clipboard().text()
+
+ nodes = mesh_reader.stringToSceneNodes(scene_string)
+
+ if not nodes:
+ # Nothing to paste
+ return
+
+ # Find all fixed nodes, these are the nodes that should be avoided when arranging
+ fixed_nodes = []
+ root = application.getController().getScene().getRoot()
+ for node in DepthFirstIterator(root):
+ # Only count sliceable objects
+ if node.callDecoration("isSliceable"):
+ fixed_nodes.append(node)
+ # Add the new nodes to the scene, and arrange them
+ group_operation, not_fit_count = createGroupOperationForArrange(nodes, application.getBuildVolume(),
+ fixed_nodes, factor=10000,
+ add_new_nodes_in_scene=True)
+ group_operation.push()
+
+ # deselect currently selected nodes, and select the new nodes
+ for node in Selection.getAllSelectedObjects():
+ Selection.remove(node)
+ for node in nodes:
+ Selection.add(node)
+
def _openUrl(self, url: QUrl) -> None:
QDesktopServices.openUrl(url)
diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py
index 889e442eaa..64d88d13dc 100755
--- a/cura/CuraApplication.py
+++ b/cura/CuraApplication.py
@@ -495,6 +495,36 @@ class CuraApplication(QtApplication):
def startSplashWindowPhase(self) -> None:
"""Runs preparations that needs to be done before the starting process."""
+ self.setRequiredPlugins([
+ # Misc.:
+ "ConsoleLogger", # You want to be able to read the log if something goes wrong.
+ "CuraEngineBackend", # Cura is useless without this one since you can't slice.
+ "FileLogger", # You want to be able to read the log if something goes wrong.
+ "XmlMaterialProfile", # Cura crashes without this one.
+ "Marketplace",
+ # This contains the interface to enable/disable plug-ins, so if you disable it you can't enable it back.
+ "PrepareStage", # Cura is useless without this one since you can't load models.
+ "PreviewStage", # This shows the list of the plugin views that are installed in Cura.
+ "MonitorStage", # Major part of Cura's functionality.
+ "LocalFileOutputDevice", # Major part of Cura's functionality.
+ "LocalContainerProvider", # Cura is useless without any profiles or setting definitions.
+
+ # Views:
+ "SimpleView", # Dependency of SolidView.
+ "SolidView", # Displays models. Cura is useless without it.
+
+ # Readers & Writers:
+ "GCodeWriter", # Cura is useless if it can't write its output.
+ "STLReader", # Most common model format, so disabling this makes Cura 90% useless.
+ "3MFWriter", # Required for writing project files.
+
+ # Tools:
+ "CameraTool", # Needed to see the scene. Cura is useless without it.
+ "SelectionTool", # Dependency of the rest of the tools.
+ "TranslateTool", # You'll need this for almost every print.
+ ])
+ # Plugins need to be set here, since in the super the check is done if they are actually loaded.
+
super().startSplashWindowPhase()
if not self.getIsHeadLess():
@@ -503,33 +533,7 @@ class CuraApplication(QtApplication):
except FileNotFoundError:
Logger.log("w", "Unable to find the window icon.")
- self.setRequiredPlugins([
- # Misc.:
- "ConsoleLogger", #You want to be able to read the log if something goes wrong.
- "CuraEngineBackend", #Cura is useless without this one since you can't slice.
- "FileLogger", #You want to be able to read the log if something goes wrong.
- "XmlMaterialProfile", #Cura crashes without this one.
- "Marketplace", #This contains the interface to enable/disable plug-ins, so if you disable it you can't enable it back.
- "PrepareStage", #Cura is useless without this one since you can't load models.
- "PreviewStage", #This shows the list of the plugin views that are installed in Cura.
- "MonitorStage", #Major part of Cura's functionality.
- "LocalFileOutputDevice", #Major part of Cura's functionality.
- "LocalContainerProvider", #Cura is useless without any profiles or setting definitions.
- # Views:
- "SimpleView", #Dependency of SolidView.
- "SolidView", #Displays models. Cura is useless without it.
-
- # Readers & Writers:
- "GCodeWriter", #Cura is useless if it can't write its output.
- "STLReader", #Most common model format, so disabling this makes Cura 90% useless.
- "3MFWriter", #Required for writing project files.
-
- # Tools:
- "CameraTool", #Needed to see the scene. Cura is useless without it.
- "SelectionTool", #Dependency of the rest of the tools.
- "TranslateTool", #You'll need this for almost every print.
- ])
self._i18n_catalog = i18nCatalog("cura")
self._update_platform_activity_timer = QTimer()
diff --git a/cura/Machines/Models/MachineListModel.py b/cura/Machines/Models/MachineListModel.py
index 74ef7ae7b4..69a3c53d03 100644
--- a/cura/Machines/Models/MachineListModel.py
+++ b/cura/Machines/Models/MachineListModel.py
@@ -110,22 +110,22 @@ class MachineListModel(ListModel):
for abstract_machine in abstract_machine_stacks:
definition_id = abstract_machine.definition.getId()
- online_machine_stacks = machines_manager.getMachinesWithDefinition(definition_id, online_only = True)
+ connected_machine_stacks = machines_manager.getMachinesWithDefinition(definition_id, online_only = False)
- online_machine_stacks = list(filter(lambda machine: machine.hasNetworkedConnection(), online_machine_stacks))
- online_machine_stacks.sort(key=lambda machine: machine.getName().upper())
+ connected_machine_stacks = list(filter(lambda machine: machine.hasNetworkedConnection(), connected_machine_stacks))
+ connected_machine_stacks.sort(key=lambda machine: machine.getName().upper())
if abstract_machine in other_machine_stacks:
other_machine_stacks.remove(abstract_machine)
- if abstract_machine in online_machine_stacks:
- online_machine_stacks.remove(abstract_machine)
+ if abstract_machine in connected_machine_stacks:
+ connected_machine_stacks.remove(abstract_machine)
# Create a list item for abstract machine
- self.addItem(abstract_machine, True, len(online_machine_stacks))
+ self.addItem(abstract_machine, True, len(connected_machine_stacks))
# Create list of machines that are children of the abstract machine
- for stack in online_machine_stacks:
+ for stack in connected_machine_stacks:
if self._show_cloud_printers:
self.addItem(stack, True)
# Remove this machine from the other stack list
diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py
index e8b6a54e46..e06e9dcf4e 100755
--- a/plugins/3MFReader/ThreeMFReader.py
+++ b/plugins/3MFReader/ThreeMFReader.py
@@ -56,7 +56,8 @@ class ThreeMFReader(MeshReader):
def emptyFileHintSet(self) -> bool:
return self._empty_project
- def _createMatrixFromTransformationString(self, transformation: str) -> Matrix:
+ @staticmethod
+ def _createMatrixFromTransformationString(transformation: str) -> Matrix:
if transformation == "":
return Matrix()
@@ -90,7 +91,8 @@ class ThreeMFReader(MeshReader):
return temp_mat
- def _convertSavitarNodeToUMNode(self, savitar_node: Savitar.SceneNode, file_name: str = "") -> Optional[SceneNode]:
+ @staticmethod
+ def _convertSavitarNodeToUMNode(savitar_node: Savitar.SceneNode, file_name: str = "") -> Optional[SceneNode]:
"""Convenience function that converts a SceneNode object (as obtained from libSavitar) to a scene node.
:returns: Scene node.
@@ -119,7 +121,7 @@ class ThreeMFReader(MeshReader):
pass
um_node.setName(node_name)
um_node.setId(node_id)
- transformation = self._createMatrixFromTransformationString(savitar_node.getTransformation())
+ transformation = ThreeMFReader._createMatrixFromTransformationString(savitar_node.getTransformation())
um_node.setTransformation(transformation)
mesh_builder = MeshBuilder()
@@ -138,7 +140,7 @@ class ThreeMFReader(MeshReader):
um_node.setMeshData(mesh_data)
for child in savitar_node.getChildren():
- child_node = self._convertSavitarNodeToUMNode(child)
+ child_node = ThreeMFReader._convertSavitarNodeToUMNode(child)
if child_node:
um_node.addChild(child_node)
@@ -214,7 +216,7 @@ class ThreeMFReader(MeshReader):
CuraApplication.getInstance().getController().getScene().setMetaDataEntry(key, value)
for node in scene_3mf.getSceneNodes():
- um_node = self._convertSavitarNodeToUMNode(node, file_name)
+ um_node = ThreeMFReader._convertSavitarNodeToUMNode(node, file_name)
if um_node is None:
continue
@@ -300,8 +302,23 @@ class ThreeMFReader(MeshReader):
if unit is None:
unit = "millimeter"
elif unit not in conversion_to_mm:
- Logger.log("w", "Unrecognised unit {unit} used. Assuming mm instead.".format(unit = unit))
+ Logger.log("w", "Unrecognised unit {unit} used. Assuming mm instead.".format(unit=unit))
unit = "millimeter"
scale = conversion_to_mm[unit]
return Vector(scale, scale, scale)
+
+ @staticmethod
+ def stringToSceneNodes(scene_string: str) -> List[SceneNode]:
+ parser = Savitar.ThreeMFParser()
+ scene = parser.parse(scene_string)
+
+ # Convert the scene to scene nodes
+ nodes = []
+ for savitar_node in scene.getSceneNodes():
+ scene_node = ThreeMFReader._convertSavitarNodeToUMNode(savitar_node, "file_name")
+ if scene_node is None:
+ continue
+ nodes.append(scene_node)
+
+ return nodes
diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py
index 57c667145e..3f6fef7201 100644
--- a/plugins/3MFWriter/ThreeMFWriter.py
+++ b/plugins/3MFWriter/ThreeMFWriter.py
@@ -55,11 +55,12 @@ class ThreeMFWriter(MeshWriter):
"cura": "http://software.ultimaker.com/xml/cura/3mf/2015/10"
}
- self._unit_matrix_string = self._convertMatrixToString(Matrix())
+ self._unit_matrix_string = ThreeMFWriter._convertMatrixToString(Matrix())
self._archive: Optional[zipfile.ZipFile] = None
self._store_archive = False
- def _convertMatrixToString(self, matrix):
+ @staticmethod
+ def _convertMatrixToString(matrix):
result = ""
result += str(matrix._data[0, 0]) + " "
result += str(matrix._data[1, 0]) + " "
@@ -83,7 +84,8 @@ class ThreeMFWriter(MeshWriter):
"""
self._store_archive = store_archive
- def _convertUMNodeToSavitarNode(self, um_node, transformation = Matrix()):
+ @staticmethod
+ def _convertUMNodeToSavitarNode(um_node, transformation=Matrix()):
"""Convenience function that converts an Uranium SceneNode object to a SavitarSceneNode
:returns: Uranium Scene node.
@@ -100,7 +102,7 @@ class ThreeMFWriter(MeshWriter):
node_matrix = um_node.getLocalTransformation()
- matrix_string = self._convertMatrixToString(node_matrix.preMultiply(transformation))
+ matrix_string = ThreeMFWriter._convertMatrixToString(node_matrix.preMultiply(transformation))
savitar_node.setTransformation(matrix_string)
mesh_data = um_node.getMeshData()
@@ -133,7 +135,7 @@ class ThreeMFWriter(MeshWriter):
# only save the nodes on the active build plate
if child_node.callDecoration("getBuildPlateNumber") != active_build_plate_nr:
continue
- savitar_child_node = self._convertUMNodeToSavitarNode(child_node)
+ savitar_child_node = ThreeMFWriter._convertUMNodeToSavitarNode(child_node)
if savitar_child_node is not None:
savitar_node.addChild(savitar_child_node)
@@ -221,7 +223,7 @@ class ThreeMFWriter(MeshWriter):
for node in nodes:
if node == root_node:
for root_child in node.getChildren():
- savitar_node = self._convertUMNodeToSavitarNode(root_child, transformation_matrix)
+ savitar_node = ThreeMFWriter._convertUMNodeToSavitarNode(root_child, transformation_matrix)
if savitar_node:
savitar_scene.addSceneNode(savitar_node)
else:
@@ -303,9 +305,19 @@ class ThreeMFWriter(MeshWriter):
Logger.log("w", "Can't create snapshot when renderer not initialized.")
return None
try:
- snapshot = Snapshot.snapshot(width = 300, height = 300)
+ snapshot = Snapshot.snapshot(width=300, height=300)
except:
Logger.logException("w", "Failed to create snapshot image")
return None
return snapshot
+
+ @staticmethod
+ def sceneNodesToString(scene_nodes: [SceneNode]) -> str:
+ savitar_scene = Savitar.Scene()
+ for scene_node in scene_nodes:
+ savitar_node = ThreeMFWriter._convertUMNodeToSavitarNode(scene_node)
+ savitar_scene.addSceneNode(savitar_node)
+ parser = Savitar.ThreeMFParser()
+ scene_string = parser.sceneToString(savitar_scene)
+ return scene_string
diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml
index 97ba2303e9..8028b89e02 100644
--- a/plugins/Marketplace/resources/qml/Marketplace.qml
+++ b/plugins/Marketplace/resources/qml/Marketplace.qml
@@ -280,7 +280,7 @@ Window
onClicked:
{
marketplaceDialog.hide();
- CuraApplication.closeApplication();
+ CuraApplication.checkAndExitApplication();
}
}
}
diff --git a/resources/definitions/anycubic_kobra_plus.def.json b/resources/definitions/anycubic_kobra_plus.def.json
new file mode 100644
index 0000000000..944398711f
--- /dev/null
+++ b/resources/definitions/anycubic_kobra_plus.def.json
@@ -0,0 +1,29 @@
+{
+ "version": 2,
+ "name": "Anycubic Kobra Plus",
+ "inherits": "fdmprinter",
+ "metadata":
+ {
+ "visible": true,
+ "author": "Jordon Brooks",
+ "manufacturer": "Anycubic",
+ "file_formats": "text/x-gcode",
+ "has_machine_quality": true,
+ "has_materials": true,
+ "machine_extruder_trains": { "0": "anycubic_kobra_plus_extruder_0" },
+ "preferred_material": "generic_pla",
+ "preferred_quality_type": "normal",
+ "quality_definition": "anycubic_kobra_plus"
+ },
+ "overrides":
+ {
+ "machine_depth": { "default_value": 302 },
+ "machine_end_gcode": { "default_value": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84\nM355 S0; led off" },
+ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
+ "machine_heated_bed": { "default_value": true },
+ "machine_height": { "default_value": 352 },
+ "machine_name": { "default_value": "Anycubic Kobra Plus" },
+ "machine_start_gcode": { "default_value": "G28 ;Home\nG1 Z15.0 F6000 ;Move the platform down 15mm\n;Prime the extruder\nG92 E0\nM355 S1; Turn LED on\n; Add Custom purge lines\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X1.0 Y30 Z0.3 F5000.0 ; Move to start position\nG1 X1.0 Y100.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X1.3 Y100.0 Z0.3 F5000.0 ; Move to side a little\nG1 X1.3 Y30 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 E-2 F500 ; Retract a little \nG1 X50 F500 ; wipe away from the filament line\nG1 X100 F9000 ; Quickly wipe away from the filament line\nG1 Z5.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\n; End custom purge lines" },
+ "machine_width": { "default_value": 302 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/anycubic_kossel.def.json b/resources/definitions/anycubic_kossel.def.json
index 28d6ac141d..50ee14db4e 100644
--- a/resources/definitions/anycubic_kossel.def.json
+++ b/resources/definitions/anycubic_kossel.def.json
@@ -18,51 +18,6 @@
{
"machine_center_is_zero": { "default_value": true },
"machine_depth": { "default_value": 180 },
- "machine_disallowed_areas":
- {
- "default_value": [
- [
- [-50, -85],
- [-85, -85],
- [-90, -90]
- ],
- [
- [-85, -85],
- [-85, -50],
- [-90, -90]
- ],
- [
- [50, -85],
- [85, -85],
- [90, -90]
- ],
- [
- [85, -85],
- [85, -50],
- [90, -90]
- ],
- [
- [-50, 85],
- [-85, 85],
- [-90, 90]
- ],
- [
- [-85, 85],
- [-85, 50],
- [-90, 90]
- ],
- [
- [50, 85],
- [85, 85],
- [90, 90]
- ],
- [
- [85, 85],
- [85, 50],
- [90, 90]
- ]
- ]
- },
"machine_end_gcode": { "default_value": "M400 ;Free buffer\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 F{speed_travel} Z+1 E-5 ;move Z up a bit and retract filament even more\nG90 ;absolute positioning\nM104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off\nM107 ;fan off\nM84 ;steppers off\nG28 ;move to endstop\nM84 ;steppers off" },
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"machine_heated_bed": { "default_value": true },
diff --git a/resources/definitions/anycubic_kossel_linear_plus.def.json b/resources/definitions/anycubic_kossel_linear_plus.def.json
index 8f8080d58f..4e35fff69a 100644
--- a/resources/definitions/anycubic_kossel_linear_plus.def.json
+++ b/resources/definitions/anycubic_kossel_linear_plus.def.json
@@ -16,51 +16,6 @@
"overrides":
{
"machine_depth": { "default_value": 240 },
- "machine_disallowed_areas":
- {
- "default_value": [
- [
- [-50, -115],
- [-115, -115],
- [-90, -90]
- ],
- [
- [-115, -115],
- [-115, -50],
- [-90, -90]
- ],
- [
- [50, -115],
- [115, -115],
- [90, -90]
- ],
- [
- [115, -115],
- [115, -50],
- [90, -90]
- ],
- [
- [-50, 115],
- [-115, 115],
- [-90, 90]
- ],
- [
- [-115, 115],
- [-115, 50],
- [-90, 90]
- ],
- [
- [50, 115],
- [115, 115],
- [90, 90]
- ],
- [
- [115, 115],
- [115, 50],
- [90, 90]
- ]
- ]
- },
"machine_name": { "default_value": "Anycubic Kossel Linear Plus" },
"machine_width": { "default_value": 240 }
}
diff --git a/resources/definitions/creality_ender3pro.def.json b/resources/definitions/creality_ender3pro.def.json
index de0d4ed0bf..aa5daa132b 100644
--- a/resources/definitions/creality_ender3pro.def.json
+++ b/resources/definitions/creality_ender3pro.def.json
@@ -23,7 +23,7 @@
},
"machine_height": { "default_value": 250 },
"machine_name": { "default_value": "Creality Ender-3 Pro" },
- "machine_start_gcode": { "default_value": "; Ender 3 Custom Start G-code\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM104 S{material_standby_temperature} ; Start heating up the nozzle most of the way\nM190 S{material_bed_temperature_layer_0} ; Start heating the bed, wait until target temperature reached\nM109 S{material_print_temperature_layer_0} ; Finish heating the nozzle\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\nG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish" },
+ "machine_start_gcode": { "default_value": "; Ender 3 Custom Start G-code\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nG1 Z5.0 F3000 ; Move Z Axis up a bit during heating to not damage bed\nM104 S{material_standby_temperature} ; Start heating up the nozzle most of the way\nM190 S{material_bed_temperature_layer_0} ; Start heating the bed, wait until target temperature reached\nM109 S{material_print_temperature_layer_0} ; Finish heating the nozzle\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\nG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish" },
"machine_width": { "default_value": 220 }
}
}
\ No newline at end of file
diff --git a/resources/definitions/creality_ender3s1.def.json b/resources/definitions/creality_ender3s1.def.json
index 37e69d72c0..62405572d7 100644
--- a/resources/definitions/creality_ender3s1.def.json
+++ b/resources/definitions/creality_ender3s1.def.json
@@ -24,7 +24,7 @@
},
"machine_height": { "default_value": 270 },
"machine_name": { "default_value": "Creality Ender-3 S1" },
- "machine_start_gcode": { "default_value": "; Ender 3 S1 Start G-code\n; M413 S0 ; Disable power loss recovery\nG92 E0 ; Reset Extruder\n\n; Prep surfaces before auto home for better accuracy\nM140 S{material_bed_temperature_layer_0}\nM104 S{material_print_temperature_layer_0}\n\nG28 O ; Home all untrusted axes\nG1 Z10.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0 Y0\n\nM190 S{material_bed_temperature_layer_0}\nM109 S{material_print_temperature_layer_0}\n\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\nG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish\n" },
+ "machine_start_gcode": { "default_value": "; Ender 3 S1 Start G-code\n; M413 S0 ; Disable power loss recovery\nG92 E0 ; Reset Extruder\n\n; Prep surfaces before auto home for better accuracy\nM140 S{material_bed_temperature_layer_0}\nM104 S{material_print_temperature_layer_0}\n\nG28 ; Home all axes\nG1 Z10.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0 Y0\n\nM190 S{material_bed_temperature_layer_0}\nM109 S{material_print_temperature_layer_0}\n\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\nG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish\n" },
"machine_width": { "default_value": 220 },
"retraction_amount": { "value": 0.8 },
"retraction_extrusion_window": { "value": 1.5 },
diff --git a/resources/definitions/creality_ender3s1plus.def.json b/resources/definitions/creality_ender3s1plus.def.json
index 61da5b690e..0982104cd9 100644
--- a/resources/definitions/creality_ender3s1plus.def.json
+++ b/resources/definitions/creality_ender3s1plus.def.json
@@ -24,7 +24,7 @@
},
"machine_height": { "default_value": 300 },
"machine_name": { "default_value": "Creality Ender-3 S1 Plus" },
- "machine_start_gcode": { "default_value": "; Ender 3 S1 Plus Start G-code\n; M413 S0 ; Disable power loss recovery\nG92 E0 ; Reset Extruder\n\n; Prep surfaces before auto home for better accuracy\nM140 S{material_bed_temperature_layer_0}\nM104 S{material_print_temperature_layer_0}\n\nG28 O ; Home all untrusted axes\nG1 Z10.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0 Y0\n\nM190 S{material_bed_temperature_layer_0}\nM109 S{material_print_temperature_layer_0}\n\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\nG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish\n" },
+ "machine_start_gcode": { "default_value": "; Ender 3 S1 Plus Start G-code\n; M413 S0 ; Disable power loss recovery\nG92 E0 ; Reset Extruder\n\n; Prep surfaces before auto home for better accuracy\nM140 S{material_bed_temperature_layer_0}\nM104 S{material_print_temperature_layer_0}\n\nG28 ; Home all axes\nG1 Z10.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0 Y0\n\nM190 S{material_bed_temperature_layer_0}\nM109 S{material_print_temperature_layer_0}\n\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\nG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish\n" },
"machine_width": { "default_value": 300 },
"retraction_amount": { "value": 0.8 },
"retraction_extrusion_window": { "value": 1.5 },
diff --git a/resources/definitions/creality_ender3s1pro.def.json b/resources/definitions/creality_ender3s1pro.def.json
index ba5d22e2dc..d375a904de 100644
--- a/resources/definitions/creality_ender3s1pro.def.json
+++ b/resources/definitions/creality_ender3s1pro.def.json
@@ -24,7 +24,7 @@
},
"machine_height": { "default_value": 270 },
"machine_name": { "default_value": "Creality Ender-3 S1 Pro" },
- "machine_start_gcode": { "default_value": "; Ender 3 S1 Pro Start G-code\n; M413 S0 ; Disable power loss recovery\nG92 E0 ; Reset Extruder\n\n; Prep surfaces before auto home for better accuracy\nM140 S{material_bed_temperature_layer_0}\nM104 S{material_print_temperature_layer_0}\n\nG28 O ; Home all untrusted axes\nG1 Z10.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0 Y0\n\nM190 S{material_bed_temperature_layer_0}\nM109 S{material_print_temperature_layer_0}\n\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\nG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish\n" },
+ "machine_start_gcode": { "default_value": "; Ender 3 S1 Pro Start G-code\n; M413 S0 ; Disable power loss recovery\nG92 E0 ; Reset Extruder\n\n; Prep surfaces before auto home for better accuracy\nM140 S{material_bed_temperature_layer_0}\nM104 S{material_print_temperature_layer_0}\n\nG28 ; Home all axes\nG1 Z10.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0 Y0\n\nM190 S{material_bed_temperature_layer_0}\nM109 S{material_print_temperature_layer_0}\n\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\nG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish\n" },
"machine_width": { "default_value": 220 },
"retraction_amount": { "value": 0.8 },
"retraction_extrusion_window": { "value": 1.5 },
diff --git a/resources/definitions/creality_ender5s1.def.json b/resources/definitions/creality_ender5s1.def.json
new file mode 100644
index 0000000000..32dbf75b02
--- /dev/null
+++ b/resources/definitions/creality_ender5s1.def.json
@@ -0,0 +1,37 @@
+{
+ "version": 2,
+ "name": "Creality Ender-5 S1",
+ "inherits": "creality_base",
+ "metadata":
+ {
+ "visible": true,
+ "quality_definition": "creality_base"
+ },
+ "overrides":
+ {
+ "build_volume_temperature": { "value": 195 },
+ "cool_min_layer_time": { "value": 5 },
+ "gantry_height": { "value": 25 },
+ "machine_depth": { "default_value": 225 },
+ "machine_end_gcode": { "default_value": "G91 ;Relative positionning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z more\nG90 ;Absolute positionning\n\nG1 X0 Y0 ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z\n" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-26, 34],
+ [-26, -32],
+ [32, -32],
+ [32, 34]
+ ]
+ },
+ "machine_height": { "default_value": 305 },
+ "machine_name": { "default_value": "Creality Ender-5 S1" },
+ "machine_width": { "default_value": 225 },
+ "material_bed_temperature": { "value": 60 },
+ "retraction_amount": { "value": 2 },
+ "retraction_speed": { "value": 45 },
+ "speed_print": { "value": 80.0 },
+ "support_z_distance": { "value": 0.25 },
+ "wall_thickness": { "value": "line_width * 3" },
+ "z_seam_type": { "value": "'sharpest_corner'" }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/entina_tina2.def.json b/resources/definitions/entina_tina2.def.json
new file mode 100644
index 0000000000..7e6b18a982
--- /dev/null
+++ b/resources/definitions/entina_tina2.def.json
@@ -0,0 +1,200 @@
+{
+ "version": 2,
+ "name": "ENTINA TINA2",
+ "inherits": "weedo_base",
+ "metadata":
+ {
+ "visible": true,
+ "author": "ENTINA",
+ "manufacturer": "ENTINA",
+ "file_formats": "text/x-gcode",
+ "exclude_materials": [
+ "3D-Fuel_PLA_PRO_Black",
+ "3D-Fuel_PLA_SnapSupport",
+ "bestfilament_abs_skyblue",
+ "bestfilament_petg_orange",
+ "bestfilament_pla_green",
+ "leapfrog_abs_natural",
+ "leapfrog_epla_natural",
+ "leapfrog_pva_natural",
+ "generic_abs_175",
+ "generic_asa_175",
+ "generic_bvoh_175",
+ "generic_cpe_175",
+ "generic_hips_175",
+ "generic_nylon_175",
+ "generic_pc_175",
+ "generic_petg_175",
+ "generic_pva_175",
+ "goofoo_abs",
+ "goofoo_asa",
+ "goofoo_bronze_pla",
+ "goofoo_emarble_pla",
+ "goofoo_esilk_pla",
+ "goofoo_hips",
+ "goofoo_pa_cf",
+ "goofoo_pa",
+ "goofoo_pc",
+ "goofoo_peek",
+ "goofoo_petg",
+ "goofoo_pla",
+ "goofoo_pva",
+ "goofoo_tpe_83a",
+ "goofoo_tpu_87a",
+ "goofoo_tpu_95a",
+ "goofoo_wood_pla",
+ "emotiontech_abs",
+ "emotiontech_absx",
+ "emotiontech_acetate",
+ "emotiontech_asax",
+ "emotiontech_bvoh",
+ "emotiontech_copa",
+ "emotiontech_hips",
+ "emotiontech_nylon_1030",
+ "emotiontech_nylon_1030cf",
+ "emotiontech_nylon_1070",
+ "emotiontech_pc",
+ "emotiontech_pekk",
+ "emotiontech_petg",
+ "emotiontech_pla",
+ "emotiontech_pla_hr_870",
+ "emotiontech_pva-m",
+ "emotiontech_pva-s",
+ "emotiontech_tpu98a",
+ "eryone_petg",
+ "eryone_pla_glow",
+ "eryone_pla_matte",
+ "eryone_pla_wood",
+ "eryone_pla",
+ "eryone_tpu",
+ "eSUN_PETG_Black",
+ "eSUN_PETG_Grey",
+ "eSUN_PETG_Purple",
+ "eSUN_PLA_PRO_Black",
+ "eSUN_PLA_PRO_Grey",
+ "eSUN_PLA_PRO_Purple",
+ "eSUN_PLA_PRO_White",
+ "Extrudr_GreenTECPro_Anthracite_175",
+ "Extrudr_GreenTECPro_Black_175",
+ "Extrudr_GreenTECPro_Blue_175",
+ "Extrudr_GreenTECPro_Nature_175",
+ "Extrudr_GreenTECPro_Red_175",
+ "Extrudr_GreenTECPro_Silver_175",
+ "Extrudr_GreenTECPro_White_175",
+ "verbatim_bvoh_175",
+ "Vertex_Delta_ABS",
+ "Vertex_Delta_PET",
+ "Vertex_Delta_PLA",
+ "Vertex_Delta_TPU",
+ "chromatik_pla",
+ "dsm_arnitel2045_175",
+ "dsm_novamid1070_175",
+ "fabtotum_abs",
+ "fabtotum_nylon",
+ "fabtotum_pla",
+ "fabtotum_tpu",
+ "fdplast_abs_tomato",
+ "fdplast_petg_gray",
+ "fdplast_pla_olive",
+ "fiberlogy_hd_pla",
+ "filo3d_pla",
+ "filo3d_pla_green",
+ "filo3d_pla_red",
+ "imade3d_petg_green",
+ "imade3d_petg_pink",
+ "imade3d_pla_green",
+ "imade3d_pla_pink",
+ "imade3d_petg_175",
+ "imade3d_pla_175",
+ "innofill_innoflex60_175",
+ "layer_one_black_pla",
+ "layer_one_dark_gray_pla",
+ "layer_one_white_pla",
+ "octofiber_pla",
+ "polyflex_pla",
+ "polymax_pla",
+ "polyplus_pla",
+ "polywood_pla",
+ "redd_abs",
+ "redd_asa",
+ "redd_hips",
+ "redd_nylon",
+ "redd_petg",
+ "redd_pla",
+ "redd_tpe",
+ "tizyx_abs",
+ "tizyx_flex",
+ "tizyx_petg",
+ "tizyx_pla_bois",
+ "tizyx_pla",
+ "tizyx_pva",
+ "Vertex_Delta_ABS",
+ "Vertex_Delta_PET",
+ "Vertex_Delta_PLA_Glitter",
+ "Vertex_Delta_PLA_Mat",
+ "Vertex_Delta_PLA_Satin",
+ "Vertex_Delta_PLA_Wood",
+ "Vertex_Delta_PLA",
+ "Vertex_Delta_TPU",
+ "volumic_abs_ultra",
+ "volumic_arma_ultra",
+ "volumic_asa_ultra",
+ "volumic_br80_ultra",
+ "volumic_bumper_ultra",
+ "volumic_cu80_ultra",
+ "volumic_flex93_ultra",
+ "volumic_medical_ultra",
+ "volumic_nylon_ultra",
+ "volumic_pekk_carbone",
+ "volumic_petg_ultra",
+ "volumic_petgcarbone_ultra",
+ "volumic_pla_ultra",
+ "volumic_pp_ultra",
+ "volumic_strong_ultra",
+ "volumic_support_ultra",
+ "xyzprinting_abs",
+ "xyzprinting_antibact_pla",
+ "xyzprinting_carbon_fiber",
+ "xyzprinting_colorinkjet_pla",
+ "xyzprinting_flexible",
+ "xyzprinting_metallic_pla",
+ "xyzprinting_nylon",
+ "xyzprinting_petg",
+ "xyzprinting_pla",
+ "xyzprinting_tough_pla",
+ "xyzprinting_tpu",
+ "zyyx_pro_flex",
+ "zyyx_pro_pla"
+ ],
+ "platform_offset": [
+ 0,
+ 0,
+ 0
+ ]
+ },
+ "overrides":
+ {
+ "infill_pattern": { "value": "'lines' if infill_sparse_density > 45 else 'grid'" },
+ "machine_depth": { "default_value": 120 },
+ "machine_end_gcode": { "default_value": ";(**** end.gcode for tina2****)\nM203 Z15\nM104 S0\nM107\nG92 E0 (Reset after prime)\nG0 E-1 F300\nG28 Z F300\nG28 X0 Y0\nG1 Y90 F1000" },
+ "machine_heated_bed": { "default_value": false },
+ "machine_height": { "default_value": 100 },
+ "machine_name": { "default_value": "ENTINA TINA2" },
+ "machine_start_gcode": { "default_value": ";MachineType:{machine_name}\n;FilamentType:{material_type}\n;InfillDensity:{infill_sparse_density}\n;Extruder0Temperature:{material_print_temperature}\n\n;(**** start.gcode for tina2****)\nM203 Z15\nM104 S150\nG28 Z\nG28 X Y; Home extruder\nG1 X55 Y55 F1000\nG29\nM107 ; Turn off fan\nG90 ; Absolute positioning\nM82 ; Extruder in absolute mode\nM109 S{material_print_temperature_layer_0}\nG92 E0 ; Reset extruder position\nG1 X90 Y6 Z0.27 F2000\nG1 X20 Y6 Z0.27 E15 F1000\nG92 E0 ; Reset extruder position\nM203 Z5" },
+ "machine_width": { "default_value": 100 },
+ "raft_base_thickness": { "value": 0.35 },
+ "speed_infill": { "value": 40.0 },
+ "speed_print": { "value": 40.0 },
+ "speed_print_layer_0": { "value": 22.0 },
+ "speed_roofing": { "value": 25.0 },
+ "speed_support_bottom": { "value": 30.0 },
+ "speed_support_infill": { "value": 45.0 },
+ "speed_support_roof": { "value": 30.0 },
+ "speed_topbottom": { "value": 30.0 },
+ "speed_travel": { "value": 65.0 },
+ "speed_travel_layer_0": { "value": 60 },
+ "speed_wall": { "value": 25.0 },
+ "speed_wall_0": { "value": 20.0 },
+ "speed_wall_x": { "value": 25.0 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/entina_tina2s.def.json b/resources/definitions/entina_tina2s.def.json
new file mode 100644
index 0000000000..82dc85b36e
--- /dev/null
+++ b/resources/definitions/entina_tina2s.def.json
@@ -0,0 +1,201 @@
+{
+ "version": 2,
+ "name": "ENTINA TINA2S",
+ "inherits": "weedo_base",
+ "metadata":
+ {
+ "visible": true,
+ "author": "ENTINA",
+ "manufacturer": "ENTINA",
+ "file_formats": "text/x-gcode",
+ "exclude_materials": [
+ "3D-Fuel_PLA_PRO_Black",
+ "3D-Fuel_PLA_SnapSupport",
+ "bestfilament_abs_skyblue",
+ "bestfilament_petg_orange",
+ "bestfilament_pla_green",
+ "leapfrog_abs_natural",
+ "leapfrog_epla_natural",
+ "leapfrog_pva_natural",
+ "generic_abs_175",
+ "generic_asa_175",
+ "generic_cpe_175",
+ "generic_nylon_175",
+ "generic_pc_175",
+ "generic_petg_175",
+ "generic_pva_175",
+ "goofoo_abs",
+ "goofoo_asa",
+ "goofoo_bronze_pla",
+ "goofoo_emarble_pla",
+ "goofoo_esilk_pla",
+ "goofoo_hips",
+ "goofoo_pa_cf",
+ "goofoo_pa",
+ "goofoo_pc",
+ "goofoo_peek",
+ "goofoo_petg",
+ "goofoo_pla",
+ "goofoo_pva",
+ "goofoo_tpe_83a",
+ "goofoo_tpu_87a",
+ "goofoo_tpu_95a",
+ "goofoo_wood_pla",
+ "emotiontech_abs",
+ "emotiontech_absx",
+ "emotiontech_acetate",
+ "emotiontech_asax",
+ "emotiontech_bvoh",
+ "emotiontech_copa",
+ "emotiontech_hips",
+ "emotiontech_nylon_1030",
+ "emotiontech_nylon_1030cf",
+ "emotiontech_nylon_1070",
+ "emotiontech_pc",
+ "emotiontech_pekk",
+ "emotiontech_petg",
+ "emotiontech_pla",
+ "emotiontech_pla_hr_870",
+ "emotiontech_pva-m",
+ "emotiontech_pva-s",
+ "emotiontech_tpu98a",
+ "eryone_petg",
+ "eryone_pla_glow",
+ "eryone_pla_matte",
+ "eryone_pla_wood",
+ "eryone_pla",
+ "eryone_tpu",
+ "eSUN_PETG_Black",
+ "eSUN_PETG_Grey",
+ "eSUN_PETG_Purple",
+ "eSUN_PLA_PRO_Black",
+ "eSUN_PLA_PRO_Grey",
+ "eSUN_PLA_PRO_Purple",
+ "eSUN_PLA_PRO_White",
+ "Extrudr_GreenTECPro_Anthracite_175",
+ "Extrudr_GreenTECPro_Black_175",
+ "Extrudr_GreenTECPro_Blue_175",
+ "Extrudr_GreenTECPro_Nature_175",
+ "Extrudr_GreenTECPro_Red_175",
+ "Extrudr_GreenTECPro_Silver_175",
+ "Extrudr_GreenTECPro_White_175",
+ "verbatim_bvoh_175",
+ "Vertex_Delta_ABS",
+ "Vertex_Delta_PET",
+ "Vertex_Delta_PLA",
+ "Vertex_Delta_TPU",
+ "chromatik_pla",
+ "dsm_arnitel2045_175",
+ "dsm_novamid1070_175",
+ "fabtotum_abs",
+ "fabtotum_nylon",
+ "fabtotum_pla",
+ "fabtotum_tpu",
+ "fdplast_abs_tomato",
+ "fdplast_petg_gray",
+ "fdplast_pla_olive",
+ "fiberlogy_hd_pla",
+ "filo3d_pla",
+ "filo3d_pla_green",
+ "filo3d_pla_red",
+ "imade3d_petg_green",
+ "imade3d_petg_pink",
+ "imade3d_pla_green",
+ "imade3d_pla_pink",
+ "imade3d_petg_175",
+ "imade3d_pla_175",
+ "innofill_innoflex60_175",
+ "layer_one_black_pla",
+ "layer_one_dark_gray_pla",
+ "layer_one_white_pla",
+ "octofiber_pla",
+ "polyflex_pla",
+ "polymax_pla",
+ "polyplus_pla",
+ "polywood_pla",
+ "redd_abs",
+ "redd_asa",
+ "redd_hips",
+ "redd_nylon",
+ "redd_petg",
+ "redd_pla",
+ "redd_tpe",
+ "tizyx_abs",
+ "tizyx_flex",
+ "tizyx_petg",
+ "tizyx_pla_bois",
+ "tizyx_pla",
+ "tizyx_pva",
+ "Vertex_Delta_ABS",
+ "Vertex_Delta_PET",
+ "Vertex_Delta_PLA_Glitter",
+ "Vertex_Delta_PLA_Mat",
+ "Vertex_Delta_PLA_Satin",
+ "Vertex_Delta_PLA_Wood",
+ "Vertex_Delta_PLA",
+ "Vertex_Delta_TPU",
+ "volumic_abs_ultra",
+ "volumic_arma_ultra",
+ "volumic_asa_ultra",
+ "volumic_br80_ultra",
+ "volumic_bumper_ultra",
+ "volumic_cu80_ultra",
+ "volumic_flex93_ultra",
+ "volumic_medical_ultra",
+ "volumic_nylon_ultra",
+ "volumic_pekk_carbone",
+ "volumic_petg_ultra",
+ "volumic_petgcarbone_ultra",
+ "volumic_pla_ultra",
+ "volumic_pp_ultra",
+ "volumic_strong_ultra",
+ "volumic_support_ultra",
+ "xyzprinting_abs",
+ "xyzprinting_antibact_pla",
+ "xyzprinting_carbon_fiber",
+ "xyzprinting_colorinkjet_pla",
+ "xyzprinting_flexible",
+ "xyzprinting_metallic_pla",
+ "xyzprinting_nylon",
+ "xyzprinting_petg",
+ "xyzprinting_pla",
+ "xyzprinting_tough_pla",
+ "xyzprinting_tpu",
+ "zyyx_pro_flex",
+ "zyyx_pro_pla"
+ ],
+ "platform_offset": [
+ 0,
+ 0,
+ 0
+ ]
+ },
+ "overrides":
+ {
+ "machine_depth": { "default_value": 110 },
+ "machine_end_gcode": { "default_value": ";(**** end.gcode for tina2****)\nM203 Z15\nM104 S0\nM107\nG92 E0 (Reset after prime)\nG0 E-1 F300\nG28 Z F300\nG28 X0 Y0\nG1 Y90 F1000" },
+ "machine_height": { "default_value": 100 },
+ "machine_name": { "default_value": "ENTINA TINA2S" },
+ "machine_start_gcode": { "default_value": ";MachineType:{machine_name}\n;FilamentType:{material_type}\n;InfillDensity:{infill_sparse_density}\n;Extruder0Temperature:{material_print_temperature}\n;BedTemperature:{material_bed_temperature}\n\n;(**** start.gcode for tina2****)\nM203 Z15\nM104 S150\nG28 Z\nG28 X Y; Home extruder\nG1 X55 Y55 F1000\nG29\nM107 ; Turn off fan\nG90 ; Absolute positioning\nM82 ; Extruder in absolute mode\nM109 S{material_print_temperature_layer_0}\nG92 E0 ; Reset extruder position\nG1 X90 Y6 Z0.27 F2000\nG1 X20 Y6 Z0.27 E15 F1000\nG92 E0 ; Reset extruder position\nM203 Z5" },
+ "machine_width": { "default_value": 100 },
+ "material_bed_temperature":
+ {
+ "maximum_value": "65",
+ "maximum_value_warning": "60"
+ },
+ "raft_base_thickness": { "value": 0.35 },
+ "speed_infill": { "value": 40.0 },
+ "speed_print": { "value": 40.0 },
+ "speed_print_layer_0": { "value": 22.0 },
+ "speed_roofing": { "value": 25.0 },
+ "speed_support_bottom": { "value": 30.0 },
+ "speed_support_infill": { "value": 45.0 },
+ "speed_support_roof": { "value": 30.0 },
+ "speed_topbottom": { "value": 30.0 },
+ "speed_travel": { "value": 65.0 },
+ "speed_travel_layer_0": { "value": 60 },
+ "speed_wall": { "value": 25.0 },
+ "speed_wall_0": { "value": 20.0 },
+ "speed_wall_x": { "value": 25.0 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json
index d1c532a32d..fca9e69310 100644
--- a/resources/definitions/fdmprinter.def.json
+++ b/resources/definitions/fdmprinter.def.json
@@ -5921,7 +5921,7 @@
"maximum_value_warning": "skirt_brim_line_width",
"enabled": "resolveOrValue('adhesion_type') == 'brim'",
"limit_to_extruder": "skirt_brim_extruder_nr",
- "settable_per_mesh": true,
+ "settable_per_mesh": false,
"settable_per_extruder": true
},
"brim_replaces_support":
diff --git a/resources/definitions/kingroon_kp3s_pro.def.json b/resources/definitions/kingroon_kp3s_pro.def.json
index 3d768e3bd0..79a4916680 100644
--- a/resources/definitions/kingroon_kp3s_pro.def.json
+++ b/resources/definitions/kingroon_kp3s_pro.def.json
@@ -6,7 +6,8 @@
{
"visible": true,
"platform": "kingroon_kp3s.stl",
- "quality_definition": "kingroon_base"
+ "quality_definition": "kingroon_base",
+ "author": "willuhmjs"
},
"overrides":
{
@@ -33,4 +34,4 @@
"retraction_speed": { "value": 40 },
"speed_z_hop": { "value": 4 }
}
-}
\ No newline at end of file
+}
diff --git a/resources/definitions/weedo_base.def.json b/resources/definitions/weedo_base.def.json
index 0a43dae8cc..bbc1fcd09e 100644
--- a/resources/definitions/weedo_base.def.json
+++ b/resources/definitions/weedo_base.def.json
@@ -9,19 +9,154 @@
"manufacturer": "WEEDO",
"file_formats": "text/x-gcode",
"exclude_materials": [
- "Extrudr_GreenTECPro_Anthracite",
- "Extrudr_GreenTECPro_Black",
- "Extrudr_GreenTECPro_Blue",
- "Extrudr_GreenTECPro_Nature",
- "Extrudr_GreenTECPro_Red",
- "Extrudr_GreenTECPro_Silver",
- "Extrudr_GreenTECPro_White",
- "verbatim_bvoh",
- "dsm_arnitel2045",
- "dsm_novamid1070",
- "imade3d_petg",
- "imade3d_pla",
- "innofill_innoflex60"
+ "3D-Fuel_PLA_PRO_Black",
+ "3D-Fuel_PLA_SnapSupport",
+ "bestfilament_abs_skyblue",
+ "bestfilament_petg_orange",
+ "bestfilament_pla_green",
+ "leapfrog_abs_natural",
+ "leapfrog_epla_natural",
+ "leapfrog_pva_natural",
+ "generic_pc_175",
+ "goofoo_abs",
+ "goofoo_asa",
+ "goofoo_bronze_pla",
+ "goofoo_emarble_pla",
+ "goofoo_esilk_pla",
+ "goofoo_hips",
+ "goofoo_pa_cf",
+ "goofoo_pa",
+ "goofoo_pc",
+ "goofoo_peek",
+ "goofoo_petg",
+ "goofoo_pla",
+ "goofoo_pva",
+ "goofoo_tpe_83a",
+ "goofoo_tpu_87a",
+ "goofoo_tpu_95a",
+ "goofoo_wood_pla",
+ "emotiontech_abs",
+ "emotiontech_absx",
+ "emotiontech_acetate",
+ "emotiontech_asax",
+ "emotiontech_bvoh",
+ "emotiontech_copa",
+ "emotiontech_hips",
+ "emotiontech_nylon_1030",
+ "emotiontech_nylon_1030cf",
+ "emotiontech_nylon_1070",
+ "emotiontech_pc",
+ "emotiontech_pekk",
+ "emotiontech_petg",
+ "emotiontech_pla",
+ "emotiontech_pla_hr_870",
+ "emotiontech_pva-m",
+ "emotiontech_pva-s",
+ "emotiontech_tpu98a",
+ "eryone_petg",
+ "eryone_pla_glow",
+ "eryone_pla_matte",
+ "eryone_pla_wood",
+ "eryone_pla",
+ "eryone_tpu",
+ "eSUN_PETG_Black",
+ "eSUN_PETG_Grey",
+ "eSUN_PETG_Purple",
+ "eSUN_PLA_PRO_Black",
+ "eSUN_PLA_PRO_Grey",
+ "eSUN_PLA_PRO_Purple",
+ "eSUN_PLA_PRO_White",
+ "Extrudr_GreenTECPro_Anthracite_175",
+ "Extrudr_GreenTECPro_Black_175",
+ "Extrudr_GreenTECPro_Blue_175",
+ "Extrudr_GreenTECPro_Nature_175",
+ "Extrudr_GreenTECPro_Red_175",
+ "Extrudr_GreenTECPro_Silver_175",
+ "Extrudr_GreenTECPro_White_175",
+ "verbatim_bvoh_175",
+ "Vertex_Delta_ABS",
+ "Vertex_Delta_PET",
+ "Vertex_Delta_PLA",
+ "Vertex_Delta_TPU",
+ "chromatik_pla",
+ "dsm_arnitel2045_175",
+ "dsm_novamid1070_175",
+ "fabtotum_abs",
+ "fabtotum_nylon",
+ "fabtotum_pla",
+ "fabtotum_tpu",
+ "fdplast_abs_tomato",
+ "fdplast_petg_gray",
+ "fdplast_pla_olive",
+ "fiberlogy_hd_pla",
+ "filo3d_pla",
+ "filo3d_pla_green",
+ "filo3d_pla_red",
+ "imade3d_petg_green",
+ "imade3d_petg_pink",
+ "imade3d_pla_green",
+ "imade3d_pla_pink",
+ "imade3d_petg_175",
+ "imade3d_pla_175",
+ "innofill_innoflex60_175",
+ "layer_one_black_pla",
+ "layer_one_dark_gray_pla",
+ "layer_one_white_pla",
+ "octofiber_pla",
+ "polyflex_pla",
+ "polymax_pla",
+ "polyplus_pla",
+ "polywood_pla",
+ "redd_abs",
+ "redd_asa",
+ "redd_hips",
+ "redd_nylon",
+ "redd_petg",
+ "redd_pla",
+ "redd_tpe",
+ "tizyx_abs",
+ "tizyx_flex",
+ "tizyx_petg",
+ "tizyx_pla_bois",
+ "tizyx_pla",
+ "tizyx_pva",
+ "Vertex_Delta_ABS",
+ "Vertex_Delta_PET",
+ "Vertex_Delta_PLA_Glitter",
+ "Vertex_Delta_PLA_Mat",
+ "Vertex_Delta_PLA_Satin",
+ "Vertex_Delta_PLA_Wood",
+ "Vertex_Delta_PLA",
+ "Vertex_Delta_TPU",
+ "volumic_abs_ultra",
+ "volumic_arma_ultra",
+ "volumic_asa_ultra",
+ "volumic_br80_ultra",
+ "volumic_bumper_ultra",
+ "volumic_cu80_ultra",
+ "volumic_flex93_ultra",
+ "volumic_medical_ultra",
+ "volumic_nylon_ultra",
+ "volumic_pekk_carbone",
+ "volumic_petg_ultra",
+ "volumic_petgcarbone_ultra",
+ "volumic_pla_ultra",
+ "volumic_pp_ultra",
+ "volumic_strong_ultra",
+ "volumic_support_ultra",
+ "xyzprinting_abs",
+ "xyzprinting_antibact_pla",
+ "xyzprinting_carbon_fiber",
+ "xyzprinting_colorinkjet_pla",
+ "xyzprinting_flexible",
+ "xyzprinting_metallic_pla",
+ "xyzprinting_nylon",
+ "xyzprinting_petg",
+ "xyzprinting_pla",
+ "xyzprinting_tough_pla",
+ "xyzprinting_tpu",
+ "zyyx_pro_flex",
+ "zyyx_pro_pla"
],
"has_machine_quality": false,
"has_materials": true,
@@ -33,63 +168,91 @@
"overrides":
{
"adhesion_type": { "default_value": "raft" },
- "default_material_bed_temperature": { "default_value": 35 },
- "extruder_prime_pos_x":
- {
- "maximum_value": "machine_width",
- "minimum_value": "0"
- },
- "extruder_prime_pos_y":
- {
- "maximum_value": "machine_depth",
- "minimum_value": "0"
- },
- "infill_sparse_density": { "default_value": 10 },
- "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": 10.61 },
- "machine_max_feedrate_e": { "default_value": 45 },
- "machine_max_feedrate_x": { "default_value": 250 },
- "machine_max_feedrate_y": { "default_value": 250 },
+ "draft_shield_dist": { "default_value": 3 },
+ "infill_before_walls": { "default_value": false },
+ "infill_line_width": { "value": "line_width * 1.25" },
+ "infill_material_flow": { "value": "max(0, material_flow - 5)" },
+ "infill_pattern": { "value": "'zigzag'" },
+ "infill_sparse_density": { "default_value": 10.0 },
+ "initial_layer_line_width_factor": { "default_value": 110.0 },
+ "layer_0_z_overlap": { "value": 0.09 },
+ "machine_acceleration": { "default_value": 3000 },
+ "machine_end_gcode": { "default_value": "G92 E0\nG1 E-3 F1680 \nG28 Z F400; Get extruder out of way.\nM107 ; Turn off fan\n; Disable all extruder\nM104 T0 S0\nG90 ; Absolute positioning\nG92 E0 ; Reset extruder position\nM84 ; Turn steppers off\n" },
+ "machine_heated_bed": { "default_value": true },
+ "machine_max_acceleration_e": { "default_value": 1600 },
+ "machine_max_acceleration_x": { "default_value": 3000 },
+ "machine_max_acceleration_y": { "default_value": 3000 },
+ "machine_max_acceleration_z": { "default_value": 120 },
+ "machine_max_feedrate_e": { "default_value": 50 },
+ "machine_max_feedrate_x": { "default_value": 200 },
+ "machine_max_feedrate_y": { "default_value": 130 },
"machine_max_feedrate_z": { "default_value": 10 },
- "machine_nozzle_size": { "default_value": 0.4 },
+ "machine_max_jerk_e": { "default_value": 5.1 },
+ "machine_max_jerk_xy": { "default_value": 10.0 },
+ "machine_max_jerk_z": { "default_value": 5 },
+ "machine_min_cool_heat_time_window": { "default_value": 1200.0 },
+ "machine_name": { "default_value": "WEEDO Base" },
+ "machine_nozzle_cool_down_speed": { "default_value": 0.67 },
+ "machine_nozzle_heat_up_speed": { "default_value": 1.8 },
+ "machine_nozzle_tip_outer_diameter": { "default_value": 0.8 },
+ "machine_start_gcode": { "default_value": "G28 ;Home\nG92 E0\nG1 F200 E3\nG92 E0" },
"machine_steps_per_mm_e": { "default_value": 96 },
"machine_steps_per_mm_x": { "default_value": 94 },
"machine_steps_per_mm_y": { "default_value": 94 },
"machine_steps_per_mm_z": { "default_value": 400 },
"material_bed_temp_wait": { "default_value": false },
+ "material_bed_temperature": { "maximum_value_warning": "96" },
"material_diameter": { "default_value": 1.75 },
- "material_flow": { "default_value": 95 },
- "material_print_temp_prepend": { "default_value": false },
+ "material_final_print_temperature": { "value": "material_print_temperature" },
+ "material_flow": { "default_value": 95.0 },
+ "material_flow_layer_0": { "default_value": 95.0 },
+ "material_initial_print_temperature": { "value": "material_print_temperature" },
"material_print_temp_wait": { "default_value": false },
- "material_standby_temperature": { "minimum_value": "0" },
- "prime_tower_min_volume": { "default_value": 10 },
- "prime_tower_size": { "default_value": 15 },
- "raft_airgap": { "default_value": 0.22 },
- "raft_base_speed": { "value": 20 },
- "raft_interface_speed": { "value": 33 },
- "raft_margin": { "default_value": 8 },
- "raft_surface_fan_speed": { "value": 100 },
- "raft_surface_speed": { "value": 40 },
- "retraction_amount": { "default_value": 1.5 },
+ "material_print_temperature": { "maximum_value": "300" },
+ "material_print_temperature_layer_0": { "value": "min(material_print_temperature + 10, 300)" },
+ "material_standby_temperature": { "default_value": 175.0 },
+ "prime_tower_min_volume": { "default_value": 10.0 },
+ "prime_tower_size": { "default_value": 15.0 },
+ "raft_airgap": { "default_value": 0.19 },
+ "raft_base_fan_speed": { "value": 0.0 },
+ "raft_base_speed": { "value": 20.0 },
+ "raft_base_thickness": { "value": 0.3 },
+ "raft_interface_speed": { "value": 33.0 },
+ "raft_margin": { "default_value": 8.0 },
+ "raft_surface_speed": { "value": 40.0 },
+ "raft_surface_thickness": { "value": 0.25 },
+ "retraction_amount": { "default_value": 3 },
"retraction_combing": { "value": "off" },
- "retraction_speed": { "default_value": 28 },
+ "retraction_extrusion_window": { "value": 1.0 },
+ "retraction_hop_after_extruder_switch": { "default_value": false },
+ "retraction_min_travel": { "value": 0.8 },
+ "retraction_speed": { "default_value": 28.0 },
+ "skin_outline_count": { "value": "0" },
"skirt_brim_speed": { "value": 26.0 },
+ "skirt_line_count": { "default_value": 2 },
"speed_layer_0": { "value": 26.0 },
"speed_prime_tower": { "value": "speed_support" },
- "speed_print_layer_0": { "value": 26.0 },
- "speed_support": { "value": "round(speed_print*0.82,1)" },
- "speed_support_interface": { "value": "round(speed_support*0.689,1)" },
- "speed_topbottom": { "value": "round(speed_print * 0.65,1)" },
+ "speed_print": { "default_value": 70.0 },
+ "speed_support": { "value": "round(speed_print * 0.82, 1)" },
+ "speed_support_interface": { "value": "round(speed_support * 0.689, 1)" },
+ "speed_topbottom": { "value": "round(speed_print * 0.65, 1)" },
"speed_travel": { "value": 105.0 },
"speed_travel_layer_0": { "value": 80.0 },
- "speed_wall": { "value": "max(5,round(speed_print / 2,1))" },
- "speed_wall_0": { "value": "max(5,speed_wall-5)" },
+ "speed_wall": { "value": "max(5, round(speed_print / 2 - 5, 1))" },
+ "speed_wall_0": { "value": "max(5, speed_wall - 5)" },
"speed_wall_x": { "value": "speed_wall" },
- "support_angle": { "default_value": 60 },
+ "support_angle": { "default_value": 60.0 },
+ "support_connect_zigzags": { "default_value": false },
+ "support_interface_density": { "default_value": 60.0 },
+ "support_interface_enable": { "default_value": true },
+ "support_interface_height": { "default_value": 0.8 },
"support_interface_pattern": { "default_value": "lines" },
+ "support_material_flow": { "value": "max(0, material_flow - 5)" },
+ "support_z_distance": { "default_value": 0.18 },
"switch_extruder_retraction_amount": { "value": 16.5 },
- "switch_extruder_retraction_speeds": { "default_value": 28 }
+ "switch_extruder_retraction_speeds": { "default_value": 28.0 },
+ "top_skin_preshrink": { "value": 0.0 },
+ "wall_0_wipe_dist": { "value": 0.0 },
+ "z_seam_corner": { "default_value": "z_seam_corner_any" }
}
}
\ No newline at end of file
diff --git a/resources/definitions/weedo_tina2.def.json b/resources/definitions/weedo_tina2.def.json
new file mode 100644
index 0000000000..7824aa3006
--- /dev/null
+++ b/resources/definitions/weedo_tina2.def.json
@@ -0,0 +1,200 @@
+{
+ "version": 2,
+ "name": "WEEDO TINA2",
+ "inherits": "weedo_base",
+ "metadata":
+ {
+ "visible": true,
+ "author": "WEEDO",
+ "manufacturer": "WEEDO",
+ "file_formats": "text/x-gcode",
+ "exclude_materials": [
+ "3D-Fuel_PLA_PRO_Black",
+ "3D-Fuel_PLA_SnapSupport",
+ "bestfilament_abs_skyblue",
+ "bestfilament_petg_orange",
+ "bestfilament_pla_green",
+ "leapfrog_abs_natural",
+ "leapfrog_epla_natural",
+ "leapfrog_pva_natural",
+ "generic_abs_175",
+ "generic_asa_175",
+ "generic_bvoh_175",
+ "generic_cpe_175",
+ "generic_hips_175",
+ "generic_nylon_175",
+ "generic_pc_175",
+ "generic_petg_175",
+ "generic_pva_175",
+ "goofoo_abs",
+ "goofoo_asa",
+ "goofoo_bronze_pla",
+ "goofoo_emarble_pla",
+ "goofoo_esilk_pla",
+ "goofoo_hips",
+ "goofoo_pa_cf",
+ "goofoo_pa",
+ "goofoo_pc",
+ "goofoo_peek",
+ "goofoo_petg",
+ "goofoo_pla",
+ "goofoo_pva",
+ "goofoo_tpe_83a",
+ "goofoo_tpu_87a",
+ "goofoo_tpu_95a",
+ "goofoo_wood_pla",
+ "emotiontech_abs",
+ "emotiontech_absx",
+ "emotiontech_acetate",
+ "emotiontech_asax",
+ "emotiontech_bvoh",
+ "emotiontech_copa",
+ "emotiontech_hips",
+ "emotiontech_nylon_1030",
+ "emotiontech_nylon_1030cf",
+ "emotiontech_nylon_1070",
+ "emotiontech_pc",
+ "emotiontech_pekk",
+ "emotiontech_petg",
+ "emotiontech_pla",
+ "emotiontech_pla_hr_870",
+ "emotiontech_pva-m",
+ "emotiontech_pva-s",
+ "emotiontech_tpu98a",
+ "eryone_petg",
+ "eryone_pla_glow",
+ "eryone_pla_matte",
+ "eryone_pla_wood",
+ "eryone_pla",
+ "eryone_tpu",
+ "eSUN_PETG_Black",
+ "eSUN_PETG_Grey",
+ "eSUN_PETG_Purple",
+ "eSUN_PLA_PRO_Black",
+ "eSUN_PLA_PRO_Grey",
+ "eSUN_PLA_PRO_Purple",
+ "eSUN_PLA_PRO_White",
+ "Extrudr_GreenTECPro_Anthracite_175",
+ "Extrudr_GreenTECPro_Black_175",
+ "Extrudr_GreenTECPro_Blue_175",
+ "Extrudr_GreenTECPro_Nature_175",
+ "Extrudr_GreenTECPro_Red_175",
+ "Extrudr_GreenTECPro_Silver_175",
+ "Extrudr_GreenTECPro_White_175",
+ "verbatim_bvoh_175",
+ "Vertex_Delta_ABS",
+ "Vertex_Delta_PET",
+ "Vertex_Delta_PLA",
+ "Vertex_Delta_TPU",
+ "chromatik_pla",
+ "dsm_arnitel2045_175",
+ "dsm_novamid1070_175",
+ "fabtotum_abs",
+ "fabtotum_nylon",
+ "fabtotum_pla",
+ "fabtotum_tpu",
+ "fdplast_abs_tomato",
+ "fdplast_petg_gray",
+ "fdplast_pla_olive",
+ "fiberlogy_hd_pla",
+ "filo3d_pla",
+ "filo3d_pla_green",
+ "filo3d_pla_red",
+ "imade3d_petg_green",
+ "imade3d_petg_pink",
+ "imade3d_pla_green",
+ "imade3d_pla_pink",
+ "imade3d_petg_175",
+ "imade3d_pla_175",
+ "innofill_innoflex60_175",
+ "layer_one_black_pla",
+ "layer_one_dark_gray_pla",
+ "layer_one_white_pla",
+ "octofiber_pla",
+ "polyflex_pla",
+ "polymax_pla",
+ "polyplus_pla",
+ "polywood_pla",
+ "redd_abs",
+ "redd_asa",
+ "redd_hips",
+ "redd_nylon",
+ "redd_petg",
+ "redd_pla",
+ "redd_tpe",
+ "tizyx_abs",
+ "tizyx_flex",
+ "tizyx_petg",
+ "tizyx_pla_bois",
+ "tizyx_pla",
+ "tizyx_pva",
+ "Vertex_Delta_ABS",
+ "Vertex_Delta_PET",
+ "Vertex_Delta_PLA_Glitter",
+ "Vertex_Delta_PLA_Mat",
+ "Vertex_Delta_PLA_Satin",
+ "Vertex_Delta_PLA_Wood",
+ "Vertex_Delta_PLA",
+ "Vertex_Delta_TPU",
+ "volumic_abs_ultra",
+ "volumic_arma_ultra",
+ "volumic_asa_ultra",
+ "volumic_br80_ultra",
+ "volumic_bumper_ultra",
+ "volumic_cu80_ultra",
+ "volumic_flex93_ultra",
+ "volumic_medical_ultra",
+ "volumic_nylon_ultra",
+ "volumic_pekk_carbone",
+ "volumic_petg_ultra",
+ "volumic_petgcarbone_ultra",
+ "volumic_pla_ultra",
+ "volumic_pp_ultra",
+ "volumic_strong_ultra",
+ "volumic_support_ultra",
+ "xyzprinting_abs",
+ "xyzprinting_antibact_pla",
+ "xyzprinting_carbon_fiber",
+ "xyzprinting_colorinkjet_pla",
+ "xyzprinting_flexible",
+ "xyzprinting_metallic_pla",
+ "xyzprinting_nylon",
+ "xyzprinting_petg",
+ "xyzprinting_pla",
+ "xyzprinting_tough_pla",
+ "xyzprinting_tpu",
+ "zyyx_pro_flex",
+ "zyyx_pro_pla"
+ ],
+ "platform_offset": [
+ 0,
+ 0,
+ 0
+ ]
+ },
+ "overrides":
+ {
+ "infill_pattern": { "value": "'lines' if infill_sparse_density > 45 else 'grid'" },
+ "machine_depth": { "default_value": 120 },
+ "machine_end_gcode": { "default_value": ";(**** end.gcode for tina2****)\nM203 Z15\nM104 S0\nM107\nG92 E0 (Reset after prime)\nG0 E-1 F300\nG28 Z F300\nG28 X0 Y0\nG1 Y90 F1000" },
+ "machine_heated_bed": { "default_value": false },
+ "machine_height": { "default_value": 100 },
+ "machine_name": { "default_value": "WEEDO TINA2" },
+ "machine_start_gcode": { "default_value": ";MachineType:{machine_name}\n;FilamentType:{material_type}\n;InfillDensity:{infill_sparse_density}\n;Extruder0Temperature:{material_print_temperature}\n\n;(**** start.gcode for tina2****)\nM203 Z15\nM104 S150\nG28 Z\nG28 X Y; Home extruder\nG1 X55 Y55 F1000\nG29\nM107 ; Turn off fan\nG90 ; Absolute positioning\nM82 ; Extruder in absolute mode\nM109 S{material_print_temperature_layer_0}\nG92 E0 ; Reset extruder position\nG1 X90 Y6 Z0.27 F2000\nG1 X20 Y6 Z0.27 E15 F1000\nG92 E0 ; Reset extruder position\nM203 Z5" },
+ "machine_width": { "default_value": 100 },
+ "raft_base_thickness": { "value": 0.35 },
+ "speed_infill": { "value": 40.0 },
+ "speed_print": { "value": 40.0 },
+ "speed_print_layer_0": { "value": 22.0 },
+ "speed_roofing": { "value": 25.0 },
+ "speed_support_bottom": { "value": 30.0 },
+ "speed_support_infill": { "value": 45.0 },
+ "speed_support_roof": { "value": 30.0 },
+ "speed_topbottom": { "value": 30.0 },
+ "speed_travel": { "value": 65.0 },
+ "speed_travel_layer_0": { "value": 60 },
+ "speed_wall": { "value": 25.0 },
+ "speed_wall_0": { "value": 20.0 },
+ "speed_wall_x": { "value": 25.0 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/weedo_tina2s.def.json b/resources/definitions/weedo_tina2s.def.json
new file mode 100644
index 0000000000..5c11529854
--- /dev/null
+++ b/resources/definitions/weedo_tina2s.def.json
@@ -0,0 +1,201 @@
+{
+ "version": 2,
+ "name": "WEEDO TINA2S",
+ "inherits": "weedo_base",
+ "metadata":
+ {
+ "visible": true,
+ "author": "WEEDO",
+ "manufacturer": "WEEDO",
+ "file_formats": "text/x-gcode",
+ "exclude_materials": [
+ "3D-Fuel_PLA_PRO_Black",
+ "3D-Fuel_PLA_SnapSupport",
+ "bestfilament_abs_skyblue",
+ "bestfilament_petg_orange",
+ "bestfilament_pla_green",
+ "leapfrog_abs_natural",
+ "leapfrog_epla_natural",
+ "leapfrog_pva_natural",
+ "generic_abs_175",
+ "generic_asa_175",
+ "generic_cpe_175",
+ "generic_nylon_175",
+ "generic_pc_175",
+ "generic_petg_175",
+ "generic_pva_175",
+ "goofoo_abs",
+ "goofoo_asa",
+ "goofoo_bronze_pla",
+ "goofoo_emarble_pla",
+ "goofoo_esilk_pla",
+ "goofoo_hips",
+ "goofoo_pa_cf",
+ "goofoo_pa",
+ "goofoo_pc",
+ "goofoo_peek",
+ "goofoo_petg",
+ "goofoo_pla",
+ "goofoo_pva",
+ "goofoo_tpe_83a",
+ "goofoo_tpu_87a",
+ "goofoo_tpu_95a",
+ "goofoo_wood_pla",
+ "emotiontech_abs",
+ "emotiontech_absx",
+ "emotiontech_acetate",
+ "emotiontech_asax",
+ "emotiontech_bvoh",
+ "emotiontech_copa",
+ "emotiontech_hips",
+ "emotiontech_nylon_1030",
+ "emotiontech_nylon_1030cf",
+ "emotiontech_nylon_1070",
+ "emotiontech_pc",
+ "emotiontech_pekk",
+ "emotiontech_petg",
+ "emotiontech_pla",
+ "emotiontech_pla_hr_870",
+ "emotiontech_pva-m",
+ "emotiontech_pva-s",
+ "emotiontech_tpu98a",
+ "eryone_petg",
+ "eryone_pla_glow",
+ "eryone_pla_matte",
+ "eryone_pla_wood",
+ "eryone_pla",
+ "eryone_tpu",
+ "eSUN_PETG_Black",
+ "eSUN_PETG_Grey",
+ "eSUN_PETG_Purple",
+ "eSUN_PLA_PRO_Black",
+ "eSUN_PLA_PRO_Grey",
+ "eSUN_PLA_PRO_Purple",
+ "eSUN_PLA_PRO_White",
+ "Extrudr_GreenTECPro_Anthracite_175",
+ "Extrudr_GreenTECPro_Black_175",
+ "Extrudr_GreenTECPro_Blue_175",
+ "Extrudr_GreenTECPro_Nature_175",
+ "Extrudr_GreenTECPro_Red_175",
+ "Extrudr_GreenTECPro_Silver_175",
+ "Extrudr_GreenTECPro_White_175",
+ "verbatim_bvoh_175",
+ "Vertex_Delta_ABS",
+ "Vertex_Delta_PET",
+ "Vertex_Delta_PLA",
+ "Vertex_Delta_TPU",
+ "chromatik_pla",
+ "dsm_arnitel2045_175",
+ "dsm_novamid1070_175",
+ "fabtotum_abs",
+ "fabtotum_nylon",
+ "fabtotum_pla",
+ "fabtotum_tpu",
+ "fdplast_abs_tomato",
+ "fdplast_petg_gray",
+ "fdplast_pla_olive",
+ "fiberlogy_hd_pla",
+ "filo3d_pla",
+ "filo3d_pla_green",
+ "filo3d_pla_red",
+ "imade3d_petg_green",
+ "imade3d_petg_pink",
+ "imade3d_pla_green",
+ "imade3d_pla_pink",
+ "imade3d_petg_175",
+ "imade3d_pla_175",
+ "innofill_innoflex60_175",
+ "layer_one_black_pla",
+ "layer_one_dark_gray_pla",
+ "layer_one_white_pla",
+ "octofiber_pla",
+ "polyflex_pla",
+ "polymax_pla",
+ "polyplus_pla",
+ "polywood_pla",
+ "redd_abs",
+ "redd_asa",
+ "redd_hips",
+ "redd_nylon",
+ "redd_petg",
+ "redd_pla",
+ "redd_tpe",
+ "tizyx_abs",
+ "tizyx_flex",
+ "tizyx_petg",
+ "tizyx_pla_bois",
+ "tizyx_pla",
+ "tizyx_pva",
+ "Vertex_Delta_ABS",
+ "Vertex_Delta_PET",
+ "Vertex_Delta_PLA_Glitter",
+ "Vertex_Delta_PLA_Mat",
+ "Vertex_Delta_PLA_Satin",
+ "Vertex_Delta_PLA_Wood",
+ "Vertex_Delta_PLA",
+ "Vertex_Delta_TPU",
+ "volumic_abs_ultra",
+ "volumic_arma_ultra",
+ "volumic_asa_ultra",
+ "volumic_br80_ultra",
+ "volumic_bumper_ultra",
+ "volumic_cu80_ultra",
+ "volumic_flex93_ultra",
+ "volumic_medical_ultra",
+ "volumic_nylon_ultra",
+ "volumic_pekk_carbone",
+ "volumic_petg_ultra",
+ "volumic_petgcarbone_ultra",
+ "volumic_pla_ultra",
+ "volumic_pp_ultra",
+ "volumic_strong_ultra",
+ "volumic_support_ultra",
+ "xyzprinting_abs",
+ "xyzprinting_antibact_pla",
+ "xyzprinting_carbon_fiber",
+ "xyzprinting_colorinkjet_pla",
+ "xyzprinting_flexible",
+ "xyzprinting_metallic_pla",
+ "xyzprinting_nylon",
+ "xyzprinting_petg",
+ "xyzprinting_pla",
+ "xyzprinting_tough_pla",
+ "xyzprinting_tpu",
+ "zyyx_pro_flex",
+ "zyyx_pro_pla"
+ ],
+ "platform_offset": [
+ 0,
+ 0,
+ 0
+ ]
+ },
+ "overrides":
+ {
+ "machine_depth": { "default_value": 110 },
+ "machine_end_gcode": { "default_value": ";(**** end.gcode for tina2****)\nM203 Z15\nM104 S0\nM107\nG92 E0 (Reset after prime)\nG0 E-1 F300\nG28 Z F300\nG28 X0 Y0\nG1 Y90 F1000" },
+ "machine_height": { "default_value": 100 },
+ "machine_name": { "default_value": "WEEDO TINA2S" },
+ "machine_start_gcode": { "default_value": ";MachineType:{machine_name}\n;FilamentType:{material_type}\n;InfillDensity:{infill_sparse_density}\n;Extruder0Temperature:{material_print_temperature}\n;BedTemperature:{material_bed_temperature}\n\n;(**** start.gcode for tina2****)\nM203 Z15\nM104 S150\nG28 Z\nG28 X Y; Home extruder\nG1 X55 Y55 F1000\nG29\nM107 ; Turn off fan\nG90 ; Absolute positioning\nM82 ; Extruder in absolute mode\nM109 S{material_print_temperature_layer_0}\nG92 E0 ; Reset extruder position\nG1 X90 Y6 Z0.27 F2000\nG1 X20 Y6 Z0.27 E15 F1000\nG92 E0 ; Reset extruder position\nM203 Z5" },
+ "machine_width": { "default_value": 100 },
+ "material_bed_temperature":
+ {
+ "maximum_value": "65",
+ "maximum_value_warning": "60"
+ },
+ "raft_base_thickness": { "value": 0.35 },
+ "speed_infill": { "value": 40.0 },
+ "speed_print": { "value": 40.0 },
+ "speed_print_layer_0": { "value": 22.0 },
+ "speed_roofing": { "value": 25.0 },
+ "speed_support_bottom": { "value": 30.0 },
+ "speed_support_infill": { "value": 45.0 },
+ "speed_support_roof": { "value": 30.0 },
+ "speed_topbottom": { "value": 30.0 },
+ "speed_travel": { "value": 65.0 },
+ "speed_travel_layer_0": { "value": 60 },
+ "speed_wall": { "value": 25.0 },
+ "speed_wall_0": { "value": 20.0 },
+ "speed_wall_x": { "value": 25.0 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/weefun_tina2.def.json b/resources/definitions/weefun_tina2.def.json
index ebe026b163..8177da741c 100644
--- a/resources/definitions/weefun_tina2.def.json
+++ b/resources/definitions/weefun_tina2.def.json
@@ -8,6 +8,164 @@
"author": "WEEFUN",
"manufacturer": "WEEFUN",
"file_formats": "text/x-gcode",
+ "exclude_materials": [
+ "3D-Fuel_PLA_PRO_Black",
+ "3D-Fuel_PLA_SnapSupport",
+ "bestfilament_abs_skyblue",
+ "bestfilament_petg_orange",
+ "bestfilament_pla_green",
+ "leapfrog_abs_natural",
+ "leapfrog_epla_natural",
+ "leapfrog_pva_natural",
+ "generic_abs_175",
+ "generic_asa_175",
+ "generic_bvoh_175",
+ "generic_cpe_175",
+ "generic_hips_175",
+ "generic_nylon_175",
+ "generic_pc_175",
+ "generic_petg_175",
+ "generic_pva_175",
+ "goofoo_abs",
+ "goofoo_asa",
+ "goofoo_bronze_pla",
+ "goofoo_emarble_pla",
+ "goofoo_esilk_pla",
+ "goofoo_hips",
+ "goofoo_pa_cf",
+ "goofoo_pa",
+ "goofoo_pc",
+ "goofoo_peek",
+ "goofoo_petg",
+ "goofoo_pla",
+ "goofoo_pva",
+ "goofoo_tpe_83a",
+ "goofoo_tpu_87a",
+ "goofoo_tpu_95a",
+ "goofoo_wood_pla",
+ "emotiontech_abs",
+ "emotiontech_absx",
+ "emotiontech_acetate",
+ "emotiontech_asax",
+ "emotiontech_bvoh",
+ "emotiontech_copa",
+ "emotiontech_hips",
+ "emotiontech_nylon_1030",
+ "emotiontech_nylon_1030cf",
+ "emotiontech_nylon_1070",
+ "emotiontech_pc",
+ "emotiontech_pekk",
+ "emotiontech_petg",
+ "emotiontech_pla",
+ "emotiontech_pla_hr_870",
+ "emotiontech_pva-m",
+ "emotiontech_pva-s",
+ "emotiontech_tpu98a",
+ "eryone_petg",
+ "eryone_pla_glow",
+ "eryone_pla_matte",
+ "eryone_pla_wood",
+ "eryone_pla",
+ "eryone_tpu",
+ "eSUN_PETG_Black",
+ "eSUN_PETG_Grey",
+ "eSUN_PETG_Purple",
+ "eSUN_PLA_PRO_Black",
+ "eSUN_PLA_PRO_Grey",
+ "eSUN_PLA_PRO_Purple",
+ "eSUN_PLA_PRO_White",
+ "Extrudr_GreenTECPro_Anthracite_175",
+ "Extrudr_GreenTECPro_Black_175",
+ "Extrudr_GreenTECPro_Blue_175",
+ "Extrudr_GreenTECPro_Nature_175",
+ "Extrudr_GreenTECPro_Red_175",
+ "Extrudr_GreenTECPro_Silver_175",
+ "Extrudr_GreenTECPro_White_175",
+ "verbatim_bvoh_175",
+ "Vertex_Delta_ABS",
+ "Vertex_Delta_PET",
+ "Vertex_Delta_PLA",
+ "Vertex_Delta_TPU",
+ "chromatik_pla",
+ "dsm_arnitel2045_175",
+ "dsm_novamid1070_175",
+ "fabtotum_abs",
+ "fabtotum_nylon",
+ "fabtotum_pla",
+ "fabtotum_tpu",
+ "fdplast_abs_tomato",
+ "fdplast_petg_gray",
+ "fdplast_pla_olive",
+ "fiberlogy_hd_pla",
+ "filo3d_pla",
+ "filo3d_pla_green",
+ "filo3d_pla_red",
+ "imade3d_petg_green",
+ "imade3d_petg_pink",
+ "imade3d_pla_green",
+ "imade3d_pla_pink",
+ "imade3d_petg_175",
+ "imade3d_pla_175",
+ "innofill_innoflex60_175",
+ "layer_one_black_pla",
+ "layer_one_dark_gray_pla",
+ "layer_one_white_pla",
+ "octofiber_pla",
+ "polyflex_pla",
+ "polymax_pla",
+ "polyplus_pla",
+ "polywood_pla",
+ "redd_abs",
+ "redd_asa",
+ "redd_hips",
+ "redd_nylon",
+ "redd_petg",
+ "redd_pla",
+ "redd_tpe",
+ "tizyx_abs",
+ "tizyx_flex",
+ "tizyx_petg",
+ "tizyx_pla_bois",
+ "tizyx_pla",
+ "tizyx_pva",
+ "Vertex_Delta_ABS",
+ "Vertex_Delta_PET",
+ "Vertex_Delta_PLA_Glitter",
+ "Vertex_Delta_PLA_Mat",
+ "Vertex_Delta_PLA_Satin",
+ "Vertex_Delta_PLA_Wood",
+ "Vertex_Delta_PLA",
+ "Vertex_Delta_TPU",
+ "volumic_abs_ultra",
+ "volumic_arma_ultra",
+ "volumic_asa_ultra",
+ "volumic_br80_ultra",
+ "volumic_bumper_ultra",
+ "volumic_cu80_ultra",
+ "volumic_flex93_ultra",
+ "volumic_medical_ultra",
+ "volumic_nylon_ultra",
+ "volumic_pekk_carbone",
+ "volumic_petg_ultra",
+ "volumic_petgcarbone_ultra",
+ "volumic_pla_ultra",
+ "volumic_pp_ultra",
+ "volumic_strong_ultra",
+ "volumic_support_ultra",
+ "xyzprinting_abs",
+ "xyzprinting_antibact_pla",
+ "xyzprinting_carbon_fiber",
+ "xyzprinting_colorinkjet_pla",
+ "xyzprinting_flexible",
+ "xyzprinting_metallic_pla",
+ "xyzprinting_nylon",
+ "xyzprinting_petg",
+ "xyzprinting_pla",
+ "xyzprinting_tough_pla",
+ "xyzprinting_tpu",
+ "zyyx_pro_flex",
+ "zyyx_pro_pla"
+ ],
"platform_offset": [
0,
0,
@@ -16,28 +174,27 @@
},
"overrides":
{
- "machine_center_is_zero": { "default_value": false },
+ "infill_pattern": { "value": "'lines' if infill_sparse_density > 45 else 'grid'" },
"machine_depth": { "default_value": 120 },
- "machine_end_gcode": { "default_value": ";(**** end.gcode for TINA2****)\nM104 S0\nM107\nG92 E0 (Reset after prime)\nG0 E-1 F300\nG1 Z105 F300\nG28 X0 Y0\nG1 Y90 F1000\nM203 Z30" },
- "machine_extruder_count": { "default_value": 1 },
+ "machine_end_gcode": { "default_value": ";(**** end.gcode for tina2****)\nM203 Z15\nM104 S0\nM107\nG92 E0 (Reset after prime)\nG0 E-1 F300\nG28 Z F300\nG28 X0 Y0\nG1 Y90 F1000" },
"machine_heated_bed": { "default_value": false },
"machine_height": { "default_value": 100 },
"machine_name": { "default_value": "WEEFUN TINA2" },
- "machine_start_gcode": { "default_value": ";(**** start.gcode for TINA2****)\nM104 S150\nG28 Z\nG28 X Y; Home extruder\nG1 X55 Y55 F1000\nG1 Z10 F200\nG29\nG1 Z15 F100\nM107 ; Turn off fan\nG90 ; Absolute positioning\nM82 ; Extruder in absolute mode\nM109 S{material_print_temperature_layer_0}\nG92 E0 ; Reset extruder position\nG1 X90 Y6 Z0.27 F2000\nG1 X20 Y6 Z0.27 E15 F1000 \nG92 E0 ; Reset extruder position\n\nM203 Z5" },
+ "machine_start_gcode": { "default_value": ";MachineType:{machine_name}\n;FilamentType:{material_type}\n;InfillDensity:{infill_sparse_density}\n;Extruder0Temperature:{material_print_temperature}\n\n;(**** start.gcode for tina2****)\nM203 Z15\nM104 S150\nG28 Z\nG28 X Y; Home extruder\nG1 X55 Y55 F1000\nG29\nM107 ; Turn off fan\nG90 ; Absolute positioning\nM82 ; Extruder in absolute mode\nM109 S{material_print_temperature_layer_0}\nG92 E0 ; Reset extruder position\nG1 X90 Y6 Z0.27 F2000\nG1 X20 Y6 Z0.27 E15 F1000\nG92 E0 ; Reset extruder position\nM203 Z5" },
"machine_width": { "default_value": 100 },
- "retraction_amount": { "default_value": 3 },
- "retraction_count_max": { "default_value": 10 },
- "retraction_speed": { "default_value": 35 },
+ "raft_base_thickness": { "value": 0.35 },
"speed_infill": { "value": 40.0 },
+ "speed_print": { "value": 40.0 },
"speed_print_layer_0": { "value": 22.0 },
"speed_roofing": { "value": 25.0 },
- "speed_support_bottom": { "dvalue": 30.0 },
+ "speed_support_bottom": { "value": 30.0 },
"speed_support_infill": { "value": 45.0 },
"speed_support_roof": { "value": 30.0 },
"speed_topbottom": { "value": 30.0 },
+ "speed_travel": { "value": 65.0 },
"speed_travel_layer_0": { "value": 60 },
+ "speed_wall": { "value": 25.0 },
"speed_wall_0": { "value": 20.0 },
- "speed_wall_x": { "value": 25.0 },
- "support_xy_distance": { "default_value": 1.0 }
+ "speed_wall_x": { "value": 25.0 }
}
}
\ No newline at end of file
diff --git a/resources/definitions/weefun_tina2s.def.json b/resources/definitions/weefun_tina2s.def.json
index d23e0c356c..fc0720ade0 100644
--- a/resources/definitions/weefun_tina2s.def.json
+++ b/resources/definitions/weefun_tina2s.def.json
@@ -8,6 +8,162 @@
"author": "WEEFUN",
"manufacturer": "WEEFUN",
"file_formats": "text/x-gcode",
+ "exclude_materials": [
+ "3D-Fuel_PLA_PRO_Black",
+ "3D-Fuel_PLA_SnapSupport",
+ "bestfilament_abs_skyblue",
+ "bestfilament_petg_orange",
+ "bestfilament_pla_green",
+ "leapfrog_abs_natural",
+ "leapfrog_epla_natural",
+ "leapfrog_pva_natural",
+ "generic_abs_175",
+ "generic_asa_175",
+ "generic_cpe_175",
+ "generic_nylon_175",
+ "generic_pc_175",
+ "generic_petg_175",
+ "generic_pva_175",
+ "goofoo_abs",
+ "goofoo_asa",
+ "goofoo_bronze_pla",
+ "goofoo_emarble_pla",
+ "goofoo_esilk_pla",
+ "goofoo_hips",
+ "goofoo_pa_cf",
+ "goofoo_pa",
+ "goofoo_pc",
+ "goofoo_peek",
+ "goofoo_petg",
+ "goofoo_pla",
+ "goofoo_pva",
+ "goofoo_tpe_83a",
+ "goofoo_tpu_87a",
+ "goofoo_tpu_95a",
+ "goofoo_wood_pla",
+ "emotiontech_abs",
+ "emotiontech_absx",
+ "emotiontech_acetate",
+ "emotiontech_asax",
+ "emotiontech_bvoh",
+ "emotiontech_copa",
+ "emotiontech_hips",
+ "emotiontech_nylon_1030",
+ "emotiontech_nylon_1030cf",
+ "emotiontech_nylon_1070",
+ "emotiontech_pc",
+ "emotiontech_pekk",
+ "emotiontech_petg",
+ "emotiontech_pla",
+ "emotiontech_pla_hr_870",
+ "emotiontech_pva-m",
+ "emotiontech_pva-s",
+ "emotiontech_tpu98a",
+ "eryone_petg",
+ "eryone_pla_glow",
+ "eryone_pla_matte",
+ "eryone_pla_wood",
+ "eryone_pla",
+ "eryone_tpu",
+ "eSUN_PETG_Black",
+ "eSUN_PETG_Grey",
+ "eSUN_PETG_Purple",
+ "eSUN_PLA_PRO_Black",
+ "eSUN_PLA_PRO_Grey",
+ "eSUN_PLA_PRO_Purple",
+ "eSUN_PLA_PRO_White",
+ "Extrudr_GreenTECPro_Anthracite_175",
+ "Extrudr_GreenTECPro_Black_175",
+ "Extrudr_GreenTECPro_Blue_175",
+ "Extrudr_GreenTECPro_Nature_175",
+ "Extrudr_GreenTECPro_Red_175",
+ "Extrudr_GreenTECPro_Silver_175",
+ "Extrudr_GreenTECPro_White_175",
+ "verbatim_bvoh_175",
+ "Vertex_Delta_ABS",
+ "Vertex_Delta_PET",
+ "Vertex_Delta_PLA",
+ "Vertex_Delta_TPU",
+ "chromatik_pla",
+ "dsm_arnitel2045_175",
+ "dsm_novamid1070_175",
+ "fabtotum_abs",
+ "fabtotum_nylon",
+ "fabtotum_pla",
+ "fabtotum_tpu",
+ "fdplast_abs_tomato",
+ "fdplast_petg_gray",
+ "fdplast_pla_olive",
+ "fiberlogy_hd_pla",
+ "filo3d_pla",
+ "filo3d_pla_green",
+ "filo3d_pla_red",
+ "imade3d_petg_green",
+ "imade3d_petg_pink",
+ "imade3d_pla_green",
+ "imade3d_pla_pink",
+ "imade3d_petg_175",
+ "imade3d_pla_175",
+ "innofill_innoflex60_175",
+ "layer_one_black_pla",
+ "layer_one_dark_gray_pla",
+ "layer_one_white_pla",
+ "octofiber_pla",
+ "polyflex_pla",
+ "polymax_pla",
+ "polyplus_pla",
+ "polywood_pla",
+ "redd_abs",
+ "redd_asa",
+ "redd_hips",
+ "redd_nylon",
+ "redd_petg",
+ "redd_pla",
+ "redd_tpe",
+ "tizyx_abs",
+ "tizyx_flex",
+ "tizyx_petg",
+ "tizyx_pla_bois",
+ "tizyx_pla",
+ "tizyx_pva",
+ "Vertex_Delta_ABS",
+ "Vertex_Delta_PET",
+ "Vertex_Delta_PLA_Glitter",
+ "Vertex_Delta_PLA_Mat",
+ "Vertex_Delta_PLA_Satin",
+ "Vertex_Delta_PLA_Wood",
+ "Vertex_Delta_PLA",
+ "Vertex_Delta_TPU",
+ "volumic_abs_ultra",
+ "volumic_arma_ultra",
+ "volumic_asa_ultra",
+ "volumic_br80_ultra",
+ "volumic_bumper_ultra",
+ "volumic_cu80_ultra",
+ "volumic_flex93_ultra",
+ "volumic_medical_ultra",
+ "volumic_nylon_ultra",
+ "volumic_pekk_carbone",
+ "volumic_petg_ultra",
+ "volumic_petgcarbone_ultra",
+ "volumic_pla_ultra",
+ "volumic_pp_ultra",
+ "volumic_strong_ultra",
+ "volumic_support_ultra",
+ "xyzprinting_abs",
+ "xyzprinting_antibact_pla",
+ "xyzprinting_carbon_fiber",
+ "xyzprinting_colorinkjet_pla",
+ "xyzprinting_flexible",
+ "xyzprinting_metallic_pla",
+ "xyzprinting_nylon",
+ "xyzprinting_petg",
+ "xyzprinting_pla",
+ "xyzprinting_tough_pla",
+ "xyzprinting_tpu",
+ "zyyx_pro_flex",
+ "zyyx_pro_pla"
+ ],
"platform_offset": [
0,
0,
@@ -16,25 +172,29 @@
},
"overrides":
{
- "gantry_height": { "value": 20 },
- "machine_center_is_zero": { "default_value": false },
- "machine_depth": { "default_value": 120 },
- "machine_end_gcode": { "default_value": ";(**** end.gcode for tina2s****)\nM203 Z15 ;Move Z axis up 5mm\nM104 S0 ;Turn off extruder heating\nM140 S0 ;Turn off bed heating\nM107 ;Turn Fans off\nG92 E0 ;(Reset after prime)\nG0 E-1 F300 ;Retract Fillament 1mm\nG28 Z F300 ;Park Hotend up\nG28 X0 Y0 ;Park Hotend\nG1 Y90 F1000 ;Present finished model\nG0 E-2 F300 ;Retract Fillament 2mm\nM82 ;absolute extrusion mode\nM104 S0 ;Ensure hotend is off\nM117 Print Complete" },
- "machine_extruder_count": { "default_value": 1 },
- "machine_heated_bed": { "default_value": true },
+ "machine_depth": { "default_value": 110 },
+ "machine_end_gcode": { "default_value": ";(**** end.gcode for tina2****)\nM203 Z15\nM104 S0\nM107\nG92 E0 (Reset after prime)\nG0 E-1 F300\nG28 Z F300\nG28 X0 Y0\nG1 Y90 F1000" },
"machine_height": { "default_value": 100 },
"machine_name": { "default_value": "WEEFUN TINA2S" },
- "machine_start_gcode": { "default_value": ";MachineType:TINA2S\n;FilamentType:{material_type}\n;Layer height:{layer_height}\n;Extruder0Temperature:{material_print_temperature}\n;BedTemperature:{material_bed_temperature}\n;InfillDensity:{infill_sparse_density}\n;(**** start.gcode for tina2s****)\nM203 Z5 ;Move Z axis up 5mm\nM117 Homing axes\nG28 Z; Home extruder axis Z\nG28 X Y; Home extruder axis X Y\nM117 Start Warm Up\nM140 S{material_bed_temperature} ;start heating the bed to what is set in Cura\nM104 S130 ;start heating E to 130 for preheat\nM190 S{material_bed_temperature} ;Wait for Bed Temperature\nM117 Levling the build plate\nG29\nG1 Z1.0 F3000 ;Move Z Axis up to 1mm\nG1 X0.5 Y1 ;Move hotend to starting position\nM117 Heating Hotend\nM104 S{material_initial_print_temperature} T0 ;start heating T0 to what is set in Cura\nM109 S{material_initial_print_temperature} T0 ;Wait for Hotend Temperature\nG92 E0 ;Reset Extruder\nM117 Purging and cleaning nozzle\nG1 X1.1 Y10 Z0.28 F1000.0 ;Move to start position\nG1 X1.1 Y90.0 Z0.28 F2000.0 E15 ;Draw the first line\nG1 X1.4 Y90.0 Z0.23 F5000.0 ;Move to side a little\nG1 X1.4 Y10 Z0.20 F2000.0 E15 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X1 Y5 Z0.2 F5000.0 ;Move over to prevent blob squish\nM117 Printing..." },
+ "machine_start_gcode": { "default_value": ";MachineType:{machine_name}\n;FilamentType:{material_type}\n;InfillDensity:{infill_sparse_density}\n;Extruder0Temperature:{material_print_temperature}\n;BedTemperature:{material_bed_temperature}\n\n;(**** start.gcode for tina2****)\nM203 Z15\nM104 S150\nG28 Z\nG28 X Y; Home extruder\nG1 X55 Y55 F1000\nG29\nM107 ; Turn off fan\nG90 ; Absolute positioning\nM82 ; Extruder in absolute mode\nM109 S{material_print_temperature_layer_0}\nG92 E0 ; Reset extruder position\nG1 X90 Y6 Z0.27 F2000\nG1 X20 Y6 Z0.27 E15 F1000\nG92 E0 ; Reset extruder position\nM203 Z5" },
"machine_width": { "default_value": 100 },
- "retraction_amount": { "default_value": 3 },
+ "material_bed_temperature":
+ {
+ "maximum_value": "65",
+ "maximum_value_warning": "60"
+ },
+ "raft_base_thickness": { "value": 0.35 },
"speed_infill": { "value": 40.0 },
+ "speed_print": { "value": 40.0 },
"speed_print_layer_0": { "value": 22.0 },
"speed_roofing": { "value": 25.0 },
- "speed_support_bottom": { "dvalue": 30.0 },
+ "speed_support_bottom": { "value": 30.0 },
"speed_support_infill": { "value": 45.0 },
"speed_support_roof": { "value": 30.0 },
"speed_topbottom": { "value": 30.0 },
+ "speed_travel": { "value": 65.0 },
"speed_travel_layer_0": { "value": 60 },
+ "speed_wall": { "value": 25.0 },
"speed_wall_0": { "value": 20.0 },
"speed_wall_x": { "value": 25.0 }
}
diff --git a/resources/extruders/anycubic_kobra_plus_extruder_0.def.json b/resources/extruders/anycubic_kobra_plus_extruder_0.def.json
new file mode 100644
index 0000000000..51a6c351bc
--- /dev/null
+++ b/resources/extruders/anycubic_kobra_plus_extruder_0.def.json
@@ -0,0 +1,16 @@
+{
+ "version": 2,
+ "name": "Extruder 1",
+ "inherits": "fdmextruder",
+ "metadata":
+ {
+ "machine": "anycubic_kobra_plus",
+ "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/qml/Actions.qml b/resources/qml/Actions.qml
index 6cd75b51ac..3b75c7699e 100644
--- a/resources/qml/Actions.qml
+++ b/resources/qml/Actions.qml
@@ -1,4 +1,4 @@
-// Copyright (c) 2022 UltiMaker
+// Copyright (c) 2023 UltiMaker
// Cura is released under the terms of the LGPLv3 or higher.
pragma Singleton
@@ -6,7 +6,7 @@ pragma Singleton
import QtQuick 2.10
import QtQuick.Controls 2.4
import UM 1.1 as UM
-import Cura 1.0 as Cura
+import Cura 1.5 as Cura
Item
{
@@ -71,6 +71,15 @@ Item
property alias browsePackages: browsePackagesAction
+ property alias paste: pasteAction
+ property alias copy: copyAction
+ property alias cut: cutAction
+
+ readonly property bool copy_paste_enabled: {
+ const all_enabled_packages = CuraApplication.getPackageManager().allEnabledPackages;
+ return all_enabled_packages.includes("3MFReader") && all_enabled_packages.includes("3MFWriter");
+ }
+
UM.I18nCatalog{id: catalog; name: "cura"}
@@ -309,6 +318,33 @@ Item
onTriggered: CuraActions.centerSelection()
}
+ Action
+ {
+ id: copyAction
+ text: catalog.i18nc("@action:inmenu menubar:edit", "Copy to clipboard")
+ onTriggered: CuraActions.copy()
+ enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection && copy_paste_enabled
+ shortcut: StandardKey.Copy
+ }
+
+ Action
+ {
+ id: pasteAction
+ text: catalog.i18nc("@action:inmenu menubar:edit", "Paste from clipboard")
+ onTriggered: CuraActions.paste()
+ enabled: UM.Controller.toolsEnabled && copy_paste_enabled
+ shortcut: StandardKey.Paste
+ }
+
+ Action
+ {
+ id: cutAction
+ text: catalog.i18nc("@action:inmenu menubar:edit", "Cut")
+ onTriggered: CuraActions.cut()
+ enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection && copy_paste_enabled
+ shortcut: StandardKey.Cut
+ }
+
Action
{
id: multiplySelectionAction
diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml
index cb3202bc00..31066f8f46 100644
--- a/resources/qml/Cura.qml
+++ b/resources/qml/Cura.qml
@@ -628,7 +628,7 @@ UM.MainWindow
//: File open dialog title
title: catalog.i18nc("@title:window","Open file(s)")
modality: Qt.WindowModal
- fileMode: FileDialog.FileMode.ExistingFile
+ fileMode: FileDialog.FileMode.OpenFiles
nameFilters: UM.MeshFileHandler.supportedReadFileTypes;
currentFolder: CuraApplication.getDefaultPath("dialog_load_path")
onAccepted:
diff --git a/resources/qml/Dialogs/AboutDialog.qml b/resources/qml/Dialogs/AboutDialog.qml
index ae2bd44d74..b0cd9d2ad3 100644
--- a/resources/qml/Dialogs/AboutDialog.qml
+++ b/resources/qml/Dialogs/AboutDialog.qml
@@ -21,13 +21,6 @@ UM.Dialog
backgroundColor: UM.Theme.getColor("main_background")
- property real dialogX: base.x
- property real dialogY: base.y
- property int shakeDetected: shakeDetector.shakeIsdetected
- property UM.ShakeDetector shakeDetector: UM.ShakeDetector
- {
- position: Qt.point(base.x, base.y)
- }
Rectangle
{
@@ -58,6 +51,15 @@ UM.Dialog
anchors.horizontalCenter: parent.horizontalCenter
UM.I18nCatalog{id: catalog; name: "cura"}
+ MouseArea
+ {
+ anchors.fill: parent
+ onClicked:
+ {
+ projectsList.visible = !projectsList.visible;
+ projectBuildInfoList.visible = !projectBuildInfoList.visible;
+ }
+ }
}
UM.Label
@@ -194,11 +196,6 @@ UM.Dialog
}
- onShakeDetectedChanged:
- {
- projectsList.visible = !projectsList.visible;
- projectBuildInfoList.visible = !projectBuildInfoList.visible;
- }
onVisibleChanged:
{
diff --git a/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml b/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml
index 64beeb9834..408db66f3a 100644
--- a/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml
+++ b/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml
@@ -76,6 +76,11 @@ UM.TooltipArea
anchors.left: fieldLabel.right
anchors.leftMargin: spacing
verticalAlignment: Text.AlignVCenter
+
+ // The control is set up for left to right. So we force it to that. If we don't, it will take the OS reading
+ // direction, which might not be left to right. This will lead to the text overlapping with the unit
+ horizontalAlignment: TextInput.AlignLeft
+
selectionColor: UM.Theme.getColor("text_selection")
selectedTextColor: UM.Theme.getColor("setting_control_text")
padding: 0
diff --git a/resources/qml/Menus/ContextMenu.qml b/resources/qml/Menus/ContextMenu.qml
index f7029939cd..d85703451f 100644
--- a/resources/qml/Menus/ContextMenu.qml
+++ b/resources/qml/Menus/ContextMenu.qml
@@ -19,6 +19,8 @@ Cura.Menu
// Selection-related actions.
Cura.MenuItem { action: Cura.Actions.centerSelection; }
Cura.MenuItem { action: Cura.Actions.deleteSelection; }
+ Cura.MenuItem { action: Cura.Actions.copy; }
+ Cura.MenuItem { action: Cura.Actions.paste; }
Cura.MenuItem { action: Cura.Actions.multiplySelection; }
// Extruder selection - only visible if there is more than 1 extruder
diff --git a/resources/quality/anycubic_kobra_plus/anycubic_kobra_plus_normal.inst.cfg b/resources/quality/anycubic_kobra_plus/anycubic_kobra_plus_normal.inst.cfg
new file mode 100644
index 0000000000..47983fe3b1
--- /dev/null
+++ b/resources/quality/anycubic_kobra_plus/anycubic_kobra_plus_normal.inst.cfg
@@ -0,0 +1,28 @@
+[general]
+definition = anycubic_kobra_plus
+name = Normal
+version = 4
+
+[metadata]
+global_quality = True
+quality_type = normal
+setting_version = 22
+type = quality
+weight = 0
+
+[values]
+infill_pattern = cubic
+layer_height = 0.2
+layer_height_0 = 0.2
+material_final_print_temperature = 195
+material_print_temperature = 195
+retraction_combing = off
+retraction_hop = 0.1
+retraction_hop_enabled = True
+retraction_hop_only_when_collides = True
+speed_infill = 40
+speed_layer_0 = 20
+speed_print = 80
+speed_wall_x = 60
+wall_thickness = 1.2
+
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_abs_0.1mm.inst.cfg
index 6bc57b7a6e..3a88801570 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_abs_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_abs_0.1mm.inst.cfg
@@ -13,4 +13,8 @@ weight = 0
[values]
speed_topbottom = =math.ceil(speed_print * 30 / 55)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_cpe_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_cpe_0.1mm.inst.cfg
index 2cba4bb788..cd74f2688f 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_cpe_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_cpe_0.1mm.inst.cfg
@@ -14,5 +14,9 @@ weight = 0
[values]
speed_infill = =math.ceil(speed_print * 40 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_nylon_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_nylon_0.1mm.inst.cfg
index 3d765aaa1e..a148563d97 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_nylon_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_nylon_0.1mm.inst.cfg
@@ -20,6 +20,10 @@ retraction_min_travel = 5
speed_print = 70
speed_topbottom = =math.ceil(speed_print * 30 / 70)
speed_wall = =math.ceil(speed_print * 30 / 70)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg
index 3e97141c64..7a15e94478 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg
@@ -29,7 +29,11 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 25 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 25 / 40)
+support_bottom_distance = =support_z_distance
support_interface_density = 87.5
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_petg_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_petg_0.1mm.inst.cfg
index ffaf1dd591..d2695b0eaf 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_petg_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_petg_0.1mm.inst.cfg
@@ -15,5 +15,9 @@ weight = 0
material_print_temperature = =default_material_print_temperature - 5
speed_infill = =math.ceil(speed_print * 40 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_pla_0.1mm.inst.cfg
index 95d624cf99..1b40b93f91 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_pla_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_pla_0.1mm.inst.cfg
@@ -21,6 +21,10 @@ retraction_hop = 0.2
speed_print = 30
speed_wall = =math.ceil(speed_print * 25 / 30)
speed_wall_0 = =math.ceil(speed_print * 20 / 30)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.72
travel_avoid_distance = 0.4
wall_0_inset = 0.015
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg
index 90ac201992..75cea75e5b 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg
@@ -34,6 +34,10 @@ speed_print = 25
speed_wall = =math.ceil(speed_print * 25 / 25)
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
support_angle = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_tough-pla_0.1mm.inst.cfg
index 90a389ea0b..03daa33819 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_tough-pla_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_tough-pla_0.1mm.inst.cfg
@@ -21,6 +21,10 @@ speed_print = 30
speed_topbottom = =math.ceil(speed_print * 20 / 30)
speed_wall = =math.ceil(speed_print * 25 / 30)
speed_wall_0 = =math.ceil(speed_print * 20 / 30)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.72
wall_0_inset = 0.015
wall_0_wipe_dist = 0.25
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg
index ad57f4d87d..f6969a31a3 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg
@@ -22,4 +22,8 @@ speed_infill = =math.ceil(speed_print * 40 / 50)
speed_print = 50
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 30 / 50)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg
index 075c1fd4aa..6d5e7148c4 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg
@@ -23,4 +23,8 @@ speed_print = 60
speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg
index 5c2bb0f6f4..852c8580d7 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg
@@ -22,4 +22,8 @@ speed_infill = =math.ceil(speed_print * 40 / 55)
speed_print = 55
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg
index 6d68564281..df95d49c12 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg
@@ -23,4 +23,8 @@ speed_print = 60
speed_topbottom = =math.ceil(speed_print * 35 / 60)
speed_wall = =math.ceil(speed_print * 45 / 60)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg
index fe501993d4..baa0b0c36d 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg
@@ -28,6 +28,9 @@ speed_print = 40
speed_topbottom = =math.ceil(speed_print * 30 / 35)
speed_wall = =math.ceil(speed_print * 35 / 40)
speed_wall_0 = =math.ceil(speed_wall * 30 / 35)
-support_z_distance = =layer_height
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.4/layer_height)*layer_height
wall_0_inset = 0
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg
index f9c44650c2..f53c0f5aeb 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg
@@ -26,6 +26,9 @@ speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 45 / 45)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
-support_z_distance = =layer_height
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.4/layer_height)*layer_height
wall_0_inset = 0
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg
index d7b82b4a1c..967d3ccd44 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg
@@ -28,6 +28,9 @@ speed_print = 40
speed_topbottom = =math.ceil(speed_print * 30 / 35)
speed_wall = =math.ceil(speed_print * 35 / 40)
speed_wall_0 = =math.ceil(speed_wall * 30 / 35)
-support_z_distance = =layer_height
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.4/layer_height)*layer_height
wall_0_inset = 0
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg
index 76a248a749..de0053edf9 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg
@@ -26,6 +26,9 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 40 / 50)
speed_wall = =math.ceil(speed_print * 50 / 50)
speed_wall_0 = =math.ceil(speed_wall * 40 / 50)
-support_z_distance = =layer_height
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.4/layer_height)*layer_height
wall_0_inset = 0
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.06mm.inst.cfg
index 8a399bd637..7a13861023 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.06mm.inst.cfg
@@ -21,4 +21,8 @@ speed_infill = =math.ceil(speed_print * 40 / 50)
speed_print = 50
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 30 / 50)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.15mm.inst.cfg
index e6f19344df..60a9e47834 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.15mm.inst.cfg
@@ -20,4 +20,8 @@ speed_print = 60
speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.1mm.inst.cfg
index 730f7cd2f3..422258c09c 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.1mm.inst.cfg
@@ -20,4 +20,8 @@ speed_infill = =math.ceil(speed_print * 45 / 55)
speed_print = 55
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.2mm.inst.cfg
index da5699d463..1764954dd5 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.2mm.inst.cfg
@@ -20,4 +20,8 @@ speed_print = 60
speed_topbottom = =math.ceil(speed_print * 35 / 60)
speed_wall = =math.ceil(speed_print * 45 / 60)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.06mm.inst.cfg
index 39f3fd8686..f6be35a2ec 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.06mm.inst.cfg
@@ -14,7 +14,10 @@ weight = 1
[values]
ooze_shield_angle = 40
raft_airgap = 0.4
-retraction_prime_speed = =retraction_speed
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.15mm.inst.cfg
index b834ac75bb..874bcc66f0 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.15mm.inst.cfg
@@ -15,7 +15,10 @@ weight = -1
material_print_temperature = =default_material_print_temperature + 5
ooze_shield_angle = 40
raft_airgap = 0.4
-retraction_prime_speed = =retraction_speed
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.1mm.inst.cfg
index ea8f7837a2..89c3b6f361 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.1mm.inst.cfg
@@ -14,7 +14,10 @@ weight = 0
[values]
ooze_shield_angle = 40
raft_airgap = 0.4
-retraction_prime_speed = =retraction_speed
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.2mm.inst.cfg
index 88b89d7a47..662aa9fb66 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.2mm.inst.cfg
@@ -15,7 +15,10 @@ weight = -2
material_print_temperature = =default_material_print_temperature + 10
ooze_shield_angle = 40
raft_airgap = 0.4
-retraction_prime_speed = =retraction_speed
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg
index 046b9f6ce2..4e217f5cca 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg
@@ -31,7 +31,11 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 25 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 25 / 40)
+support_bottom_distance = =support_z_distance
support_interface_density = 87.5
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg
index c1d488bf5f..b5ec910404 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg
@@ -31,7 +31,11 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 25 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 25 / 40)
+support_bottom_distance = =support_z_distance
support_interface_density = 87.5
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg
index d2a3b67d4c..ff2159e522 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg
@@ -30,7 +30,11 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 25 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 25 / 40)
+support_bottom_distance = =support_z_distance
support_interface_density = 87.5
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg
index c95009797d..a524c5c040 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg
@@ -31,7 +31,11 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 25 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 25 / 40)
+support_bottom_distance = =support_z_distance
support_interface_density = 87.5
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.06mm.inst.cfg
index fdbdb811c1..adc4670e8d 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.06mm.inst.cfg
@@ -20,4 +20,8 @@ speed_infill = =math.ceil(speed_print * 40 / 50)
speed_print = 50
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 30 / 50)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.15mm.inst.cfg
index d71148e5ce..3967838a12 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.15mm.inst.cfg
@@ -19,4 +19,8 @@ speed_print = 60
speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.1mm.inst.cfg
index 69f6059c00..7829f46334 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.1mm.inst.cfg
@@ -20,4 +20,8 @@ speed_infill = =math.ceil(speed_print * 45 / 55)
speed_print = 55
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.2mm.inst.cfg
index 5291946ccd..db079b04c9 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.2mm.inst.cfg
@@ -19,4 +19,8 @@ speed_print = 60
speed_topbottom = =math.ceil(speed_print * 35 / 60)
speed_wall = =math.ceil(speed_print * 45 / 60)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg
index 6de3ad3edb..4b8f9f433b 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg
@@ -21,5 +21,9 @@ retraction_prime_speed = =retraction_speed
speed_print = 50
speed_topbottom = =math.ceil(speed_print * 35 / 50)
speed_wall = =math.ceil(speed_print * 35 / 50)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg
index f076447401..5581284de4 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg
@@ -21,5 +21,9 @@ speed_print = 70
speed_topbottom = =math.ceil(speed_print * 35 / 70)
speed_wall = =math.ceil(speed_print * 45 / 70)
speed_wall_0 = =math.ceil(speed_wall * 35 / 70)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg
index 40b7c5b843..30af138465 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg
@@ -17,5 +17,9 @@ machine_nozzle_heat_up_speed = 1.6
prime_tower_enable = False
raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg
index 8452bce4a9..e5dc960d98 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg
@@ -24,5 +24,9 @@ retraction_prime_speed = =retraction_speed
speed_topbottom = =math.ceil(speed_print * 40 / 70)
speed_wall = =math.ceil(speed_print * 55 / 70)
speed_wall_0 = =math.ceil(speed_wall * 45 / 50)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg
index 98990f6fe0..719adc820b 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg
@@ -27,6 +27,10 @@ raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
speed_print = 50
speed_wall = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.9
wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25)
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg
index b2cbff9177..70d53dd331 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg
@@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 25 / 25)
speed_wall = =math.ceil(speed_print * 25 / 25)
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
support_angle = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg
index 309f646559..009039d972 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg
@@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 25 / 25)
speed_wall = =math.ceil(speed_print * 25 / 25)
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
support_angle = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg
index 234ec47e8f..9c2870b661 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg
@@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 25 / 25)
speed_wall = =math.ceil(speed_print * 25 / 25)
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
support_angle = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg
index 6268da9a9f..e091136b32 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg
@@ -21,5 +21,9 @@ speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg
index d94df8b8f3..450c82a0c2 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg
@@ -21,5 +21,9 @@ speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg
index cd358539bb..fa25ccb171 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg
@@ -21,5 +21,9 @@ speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg
index a0d698a327..fd3574f313 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg
@@ -22,5 +22,9 @@ speed_roofing = =math.ceil(speed_wall * 20 / 24)
speed_topbottom = =math.ceil(speed_print * 25 / 50)
speed_wall = =math.ceil(speed_print * 36 / 50)
speed_wall_0 = =math.ceil(speed_print * 26 / 50)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg
index e9e0c2fc7f..cbf086000e 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg
@@ -27,6 +27,10 @@ raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
speed_print = 50
speed_wall = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25)
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg
index 18aaeb6470..c6e9fc00d1 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg
@@ -36,6 +36,10 @@ speed_topbottom = =math.ceil(speed_print * 0.8)
speed_wall = =math.ceil(speed_print * 25 / 25)
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
support_angle = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg
index e8e7410cd5..043aa880ad 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg
@@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 0.8)
speed_wall = =math.ceil(speed_print * 25 / 25)
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
support_angle = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg
index e24ab778b5..0c8d7eb429 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg
@@ -36,6 +36,10 @@ speed_topbottom = =math.ceil(speed_print * 0.8)
speed_wall = =math.ceil(speed_print * 25 / 25)
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
support_angle = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.15mm.inst.cfg
index 3dff641b42..fd25f84ca5 100644
--- a/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.15mm.inst.cfg
@@ -22,8 +22,9 @@ speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-support_bottom_distance = =support_z_distance / 2
-support_top_distance = =support_z_distance / 2
-support_z_distance = =layer_height * 2
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.2mm.inst.cfg
index f9d1cb1295..ea26d6b146 100644
--- a/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.2mm.inst.cfg
@@ -22,8 +22,9 @@ speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-support_bottom_distance = =support_z_distance / 2
-support_top_distance = =support_z_distance / 2
-support_z_distance = =layer_height * 2
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.15mm.inst.cfg
index 864e913a9c..b49ee3061e 100644
--- a/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.15mm.inst.cfg
@@ -22,8 +22,9 @@ speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-support_bottom_distance = =support_z_distance / 2
-support_top_distance = =support_z_distance / 2
-support_z_distance = =layer_height * 2
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.2mm.inst.cfg
index 138b118073..db82d6e40e 100644
--- a/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.2mm.inst.cfg
@@ -22,8 +22,9 @@ speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-support_bottom_distance = =support_z_distance / 2
-support_top_distance = =support_z_distance / 2
-support_z_distance = =layer_height * 2
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.3mm.inst.cfg
index 6f899afbbf..8e94df9387 100644
--- a/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.3mm.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.3mm.inst.cfg
@@ -22,8 +22,9 @@ speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-support_bottom_distance = =support_z_distance / 2
-support_top_distance = =support_z_distance / 2
-support_z_distance = =layer_height * 2
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_abs_0.1mm.inst.cfg
index ae9144728a..08053a4f6d 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_abs_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_abs_0.1mm.inst.cfg
@@ -13,4 +13,8 @@ weight = 0
[values]
speed_topbottom = =math.ceil(speed_print * 30 / 55)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_cpe_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_cpe_0.1mm.inst.cfg
index ba519667d0..ca39f8dc7a 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_cpe_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_cpe_0.1mm.inst.cfg
@@ -14,5 +14,9 @@ weight = 0
[values]
speed_infill = =math.ceil(speed_print * 40 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_nylon_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_nylon_0.1mm.inst.cfg
index 710701b22a..009628fd2e 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_nylon_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_nylon_0.1mm.inst.cfg
@@ -15,11 +15,15 @@ weight = 0
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
ooze_shield_angle = 40
-raft_airgap = 0.15
+raft_airgap = 0.4
retraction_min_travel = 5
speed_print = 70
speed_topbottom = =math.ceil(speed_print * 30 / 70)
speed_wall = =math.ceil(speed_print * 30 / 70)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg
index f5a34415b4..eeffba5b98 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg
@@ -29,7 +29,11 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 25 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 25 / 40)
+support_bottom_distance = =support_z_distance
support_interface_density = 87.5
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_petg_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_petg_0.1mm.inst.cfg
index 7b41e45d1c..374ef26315 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_petg_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_petg_0.1mm.inst.cfg
@@ -15,5 +15,9 @@ weight = 0
material_print_temperature = =default_material_print_temperature - 5
speed_infill = =math.ceil(speed_print * 40 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_pla_0.1mm.inst.cfg
index 199995e5a1..2b99c9acce 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_pla_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_pla_0.1mm.inst.cfg
@@ -21,6 +21,10 @@ retraction_hop = 0.2
speed_print = 30
speed_wall = =math.ceil(speed_print * 25 / 30)
speed_wall_0 = =math.ceil(speed_print * 20 / 30)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.72
travel_avoid_distance = 0.4
wall_0_inset = 0.015
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg
index 4b9d902b31..d38c036bcd 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg
@@ -34,6 +34,10 @@ speed_print = 25
speed_wall = =math.ceil(speed_print * 25 / 25)
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
support_angle = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_tough-pla_0.1mm.inst.cfg
index 81d1d1f735..4f02a053b4 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_tough-pla_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_tough-pla_0.1mm.inst.cfg
@@ -21,6 +21,10 @@ speed_print = 30
speed_topbottom = =math.ceil(speed_print * 20 / 30)
speed_wall = =math.ceil(speed_print * 25 / 30)
speed_wall_0 = =math.ceil(speed_print * 20 / 30)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.72
wall_0_inset = 0.015
wall_0_wipe_dist = 0.25
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg
index 8ecbf19956..7694e37ba3 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg
@@ -22,4 +22,8 @@ speed_infill = =math.ceil(speed_print * 40 / 50)
speed_print = 50
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 30 / 50)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg
index f576b20987..c27a4a1b57 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg
@@ -23,4 +23,8 @@ speed_print = 60
speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg
index 65e2cb0361..f19345a0fe 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg
@@ -22,4 +22,8 @@ speed_infill = =math.ceil(speed_print * 40 / 55)
speed_print = 55
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg
index 337054f0de..03f67f9924 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg
@@ -23,4 +23,8 @@ speed_print = 60
speed_topbottom = =math.ceil(speed_print * 35 / 60)
speed_wall = =math.ceil(speed_print * 45 / 60)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg
index e95804af3a..72e6ead239 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg
@@ -28,6 +28,9 @@ speed_print = 40
speed_topbottom = =math.ceil(speed_print * 30 / 35)
speed_wall = =math.ceil(speed_print * 35 / 40)
speed_wall_0 = =math.ceil(speed_wall * 30 / 35)
-support_z_distance = =layer_height
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.4/layer_height)*layer_height
wall_0_inset = 0
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg
index ac1e50fd49..1a4e89f783 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg
@@ -26,6 +26,9 @@ speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 45 / 45)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
-support_z_distance = =layer_height
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.4/layer_height)*layer_height
wall_0_inset = 0
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg
index 77ccf92459..6c2e7b2f94 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg
@@ -28,6 +28,9 @@ speed_print = 40
speed_topbottom = =math.ceil(speed_print * 30 / 35)
speed_wall = =math.ceil(speed_print * 35 / 40)
speed_wall_0 = =math.ceil(speed_wall * 30 / 35)
-support_z_distance = =layer_height
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.4/layer_height)*layer_height
wall_0_inset = 0
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg
index dde22bbd42..b2182320fd 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg
@@ -26,6 +26,9 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 40 / 50)
speed_wall = =math.ceil(speed_print * 50 / 50)
speed_wall_0 = =math.ceil(speed_wall * 40 / 50)
-support_z_distance = =layer_height
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.4/layer_height)*layer_height
wall_0_inset = 0
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.06mm.inst.cfg
index 5e96ec7e28..ab7fc5ef9b 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.06mm.inst.cfg
@@ -21,4 +21,8 @@ speed_infill = =math.ceil(speed_print * 40 / 50)
speed_print = 50
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 30 / 50)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.15mm.inst.cfg
index ec4cef925d..7c27d79d2d 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.15mm.inst.cfg
@@ -20,4 +20,8 @@ speed_print = 60
speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.1mm.inst.cfg
index 2928127314..20c036907a 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.1mm.inst.cfg
@@ -20,4 +20,8 @@ speed_infill = =math.ceil(speed_print * 45 / 55)
speed_print = 55
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.2mm.inst.cfg
index af34967c61..b1094daf5a 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.2mm.inst.cfg
@@ -20,4 +20,8 @@ speed_print = 60
speed_topbottom = =math.ceil(speed_print * 35 / 60)
speed_wall = =math.ceil(speed_print * 45 / 60)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.06mm.inst.cfg
index e243e33749..0abeb14221 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.06mm.inst.cfg
@@ -14,7 +14,10 @@ weight = 1
[values]
ooze_shield_angle = 40
raft_airgap = 0.4
-retraction_prime_speed = =retraction_speed
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.15mm.inst.cfg
index 8833881fdf..94536f1904 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.15mm.inst.cfg
@@ -15,7 +15,10 @@ weight = -1
material_print_temperature = =default_material_print_temperature + 5
ooze_shield_angle = 40
raft_airgap = 0.4
-retraction_prime_speed = =retraction_speed
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.1mm.inst.cfg
index 70f76a5266..f07d801dc0 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.1mm.inst.cfg
@@ -14,7 +14,10 @@ weight = 0
[values]
ooze_shield_angle = 40
raft_airgap = 0.4
-retraction_prime_speed = =retraction_speed
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.2mm.inst.cfg
index 0f7b604b15..005ccf6e59 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.2mm.inst.cfg
@@ -15,7 +15,10 @@ weight = -2
material_print_temperature = =default_material_print_temperature + 10
ooze_shield_angle = 40
raft_airgap = 0.4
-retraction_prime_speed = =retraction_speed
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg
index c19de26c93..a2e3bd792b 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg
@@ -31,7 +31,11 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 25 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 25 / 40)
+support_bottom_distance = =support_z_distance
support_interface_density = 87.5
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg
index b21da5f2e4..9ef073b635 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg
@@ -31,7 +31,11 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 25 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 25 / 40)
+support_bottom_distance = =support_z_distance
support_interface_density = 87.5
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg
index c99934288e..e118f0db8a 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg
@@ -30,7 +30,11 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 25 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 25 / 40)
+support_bottom_distance = =support_z_distance
support_interface_density = 87.5
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg
index 7eedf33df9..4351a289b9 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg
@@ -31,7 +31,11 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 25 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 25 / 40)
+support_bottom_distance = =support_z_distance
support_interface_density = 87.5
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.06mm.inst.cfg
index 8bebbf4113..6fe817fba1 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.06mm.inst.cfg
@@ -20,4 +20,8 @@ speed_infill = =math.ceil(speed_print * 40 / 50)
speed_print = 50
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 30 / 50)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.15mm.inst.cfg
index ce957c1a50..060e9b3540 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.15mm.inst.cfg
@@ -19,4 +19,8 @@ speed_print = 60
speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.1mm.inst.cfg
index 4bba37dd01..1e04aad8ce 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.1mm.inst.cfg
@@ -20,4 +20,8 @@ speed_infill = =math.ceil(speed_print * 45 / 55)
speed_print = 55
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.2mm.inst.cfg
index 6b7f2fba1a..aaf279f115 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.2mm.inst.cfg
@@ -19,4 +19,8 @@ speed_print = 60
speed_topbottom = =math.ceil(speed_print * 35 / 60)
speed_wall = =math.ceil(speed_print * 45 / 60)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg
index 5facf88970..f34549bc78 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg
@@ -21,5 +21,9 @@ retraction_prime_speed = =retraction_speed
speed_print = 50
speed_topbottom = =math.ceil(speed_print * 35 / 50)
speed_wall = =math.ceil(speed_print * 35 / 50)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg
index 262fa01441..4a9e914b99 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg
@@ -21,5 +21,9 @@ speed_print = 70
speed_topbottom = =math.ceil(speed_print * 35 / 70)
speed_wall = =math.ceil(speed_print * 45 / 70)
speed_wall_0 = =math.ceil(speed_wall * 35 / 70)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg
index b05f4fdd62..dc73f13bb5 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg
@@ -17,5 +17,9 @@ machine_nozzle_heat_up_speed = 1.6
prime_tower_enable = False
raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg
index aea145b1f9..ead512bb50 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg
@@ -24,5 +24,9 @@ retraction_prime_speed = =retraction_speed
speed_topbottom = =math.ceil(speed_print * 40 / 70)
speed_wall = =math.ceil(speed_print * 55 / 70)
speed_wall_0 = =math.ceil(speed_wall * 45 / 50)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg
index 31d2b31017..c6641e7a08 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg
@@ -27,6 +27,10 @@ raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
speed_print = 50
speed_wall = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.9
wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg
index 318a14834f..9712132da9 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg
@@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 25 / 25)
speed_wall = =math.ceil(speed_print * 25 / 25)
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
support_angle = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg
index 1527a11fd0..79a0f11262 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg
@@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 25 / 25)
speed_wall = =math.ceil(speed_print * 25 / 25)
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
support_angle = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg
index 356fa2d4cb..70207475dc 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg
@@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 25 / 25)
speed_wall = =math.ceil(speed_print * 25 / 25)
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
support_angle = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg
index 5f63f533f7..f3e17318b6 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg
@@ -21,5 +21,9 @@ speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg
index bf64c24170..6a3ec605ad 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg
@@ -21,5 +21,9 @@ speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg
index 977232f4d4..9e3a3586f3 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg
@@ -21,5 +21,9 @@ speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg
index 8e904a41a5..506ed71f9a 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg
@@ -22,5 +22,9 @@ speed_roofing = =math.ceil(speed_wall * 20 / 24)
speed_topbottom = =math.ceil(speed_print * 25 / 50)
speed_wall = =math.ceil(speed_print * 36 / 50)
speed_wall_0 = =math.ceil(speed_print * 26 / 50)
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg
index 0ac60ad5a2..5590368369 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg
@@ -27,6 +27,10 @@ raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
speed_print = 50
speed_wall = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg
index b641bdbe13..281d99afb1 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg
@@ -36,6 +36,10 @@ speed_topbottom = =math.ceil(speed_print * 0.8)
speed_wall = =math.ceil(speed_print * 25 / 25)
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
support_angle = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg
index 9a4f7c61fd..450b9adeb4 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg
@@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 0.8)
speed_wall = =math.ceil(speed_print * 25 / 25)
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
support_angle = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg
index 3461b45736..21fbcff466 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg
@@ -36,6 +36,10 @@ speed_topbottom = =math.ceil(speed_print * 0.8)
speed_wall = =math.ceil(speed_print * 25 / 25)
speed_wall_0 = =math.ceil(speed_wall * 25 / 25)
support_angle = 50
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 20
switch_extruder_retraction_speeds = 35
diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.15mm.inst.cfg
index 4921b87434..88ee346758 100644
--- a/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.15mm.inst.cfg
@@ -22,8 +22,9 @@ speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-support_bottom_distance = =support_z_distance / 2
-support_top_distance = =support_z_distance / 2
-support_z_distance = =layer_height * 2
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.2mm.inst.cfg
index 2dde7772b6..00f9ef51ff 100644
--- a/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.2mm.inst.cfg
@@ -22,8 +22,9 @@ speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-support_bottom_distance = =support_z_distance / 2
-support_top_distance = =support_z_distance / 2
-support_z_distance = =layer_height * 2
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.15mm.inst.cfg
index df11fcf377..c9a6a2bafe 100644
--- a/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.15mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.15mm.inst.cfg
@@ -22,8 +22,9 @@ speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-support_bottom_distance = =support_z_distance / 2
-support_top_distance = =support_z_distance / 2
-support_z_distance = =layer_height * 2
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.2mm.inst.cfg
index 759f3ed41d..7abb9e4018 100644
--- a/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.2mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.2mm.inst.cfg
@@ -22,8 +22,9 @@ speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-support_bottom_distance = =support_z_distance / 2
-support_top_distance = =support_z_distance / 2
-support_z_distance = =layer_height * 2
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.3mm.inst.cfg
index f18c0e018e..e0c6719bde 100644
--- a/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.3mm.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.3mm.inst.cfg
@@ -22,8 +22,9 @@ speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-support_bottom_distance = =support_z_distance / 2
-support_top_distance = =support_z_distance / 2
-support_z_distance = =layer_height * 2
+support_bottom_distance = =support_z_distance
+support_interface_enable = True
+support_top_distance = =support_z_distance
+support_z_distance = =math.ceil(0.3/layer_height)*layer_height
top_bottom_thickness = 1.2
diff --git a/resources/variants/creality/creality_ender5s1_0.2.inst.cfg b/resources/variants/creality/creality_ender5s1_0.2.inst.cfg
new file mode 100644
index 0000000000..bb3e5312ea
--- /dev/null
+++ b/resources/variants/creality/creality_ender5s1_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = creality_ender5s1
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 22
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/creality/creality_ender5s1_0.3.inst.cfg b/resources/variants/creality/creality_ender5s1_0.3.inst.cfg
new file mode 100644
index 0000000000..f7aa3350bc
--- /dev/null
+++ b/resources/variants/creality/creality_ender5s1_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = creality_ender5s1
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 22
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/creality/creality_ender5s1_0.4.inst.cfg b/resources/variants/creality/creality_ender5s1_0.4.inst.cfg
new file mode 100644
index 0000000000..6e38f503fc
--- /dev/null
+++ b/resources/variants/creality/creality_ender5s1_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = creality_ender5s1
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 22
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/creality/creality_ender5s1_0.5.inst.cfg b/resources/variants/creality/creality_ender5s1_0.5.inst.cfg
new file mode 100644
index 0000000000..cb2b684542
--- /dev/null
+++ b/resources/variants/creality/creality_ender5s1_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = creality_ender5s1
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 22
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/creality/creality_ender5s1_0.6.inst.cfg b/resources/variants/creality/creality_ender5s1_0.6.inst.cfg
new file mode 100644
index 0000000000..2c2d0480ff
--- /dev/null
+++ b/resources/variants/creality/creality_ender5s1_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = creality_ender5s1
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 22
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/creality/creality_ender5s1_0.8.inst.cfg b/resources/variants/creality/creality_ender5s1_0.8.inst.cfg
new file mode 100644
index 0000000000..2e95f8e3d0
--- /dev/null
+++ b/resources/variants/creality/creality_ender5s1_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = creality_ender5s1
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 22
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/creality/creality_ender5s1_1.0.inst.cfg b/resources/variants/creality/creality_ender5s1_1.0.inst.cfg
new file mode 100644
index 0000000000..48fba7a715
--- /dev/null
+++ b/resources/variants/creality/creality_ender5s1_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = creality_ender5s1
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 22
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/resources/variants/voron/voron_trident_250_0.25.inst.cfg b/resources/variants/voron/voron_trident_250_0.25.inst.cfg
new file mode 100644
index 0000000000..2ba2351c56
--- /dev/null
+++ b/resources/variants/voron/voron_trident_250_0.25.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = voron_trident_250
+name = V6 0.25mm
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 22
+type = variant
+
+[values]
+machine_nozzle_size = 0.25
+
diff --git a/resources/variants/voron/voron_trident_250_0.50.inst.cfg b/resources/variants/voron/voron_trident_250_0.50.inst.cfg
new file mode 100644
index 0000000000..deae0b748c
--- /dev/null
+++ b/resources/variants/voron/voron_trident_250_0.50.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = voron_trident_250
+name = V6 0.50mm
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 22
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/voron/voron_trident_300_0.25.inst.cfg b/resources/variants/voron/voron_trident_300_0.25.inst.cfg
new file mode 100644
index 0000000000..99b00d7683
--- /dev/null
+++ b/resources/variants/voron/voron_trident_300_0.25.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = voron_trident_300
+name = V6 0.25mm
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 22
+type = variant
+
+[values]
+machine_nozzle_size = 0.25
+
diff --git a/resources/variants/voron/voron_trident_300_0.50.inst.cfg b/resources/variants/voron/voron_trident_300_0.50.inst.cfg
new file mode 100644
index 0000000000..5a9bde2f79
--- /dev/null
+++ b/resources/variants/voron/voron_trident_300_0.50.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = voron_trident_300
+name = V6 0.50mm
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 22
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/voron/voron_trident_350_0.25.inst.cfg b/resources/variants/voron/voron_trident_350_0.25.inst.cfg
new file mode 100644
index 0000000000..8d124cca03
--- /dev/null
+++ b/resources/variants/voron/voron_trident_350_0.25.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = voron_trident_350
+name = V6 0.25mm
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 22
+type = variant
+
+[values]
+machine_nozzle_size = 0.25
+
diff --git a/resources/variants/voron/voron_trident_350_0.50.inst.cfg b/resources/variants/voron/voron_trident_350_0.50.inst.cfg
new file mode 100644
index 0000000000..896a12aee7
--- /dev/null
+++ b/resources/variants/voron/voron_trident_350_0.50.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = voron_trident_350
+name = V6 0.50mm
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 22
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+