diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py
index 4d8cb6f54d..24df54b74e 100644
--- a/cura/CrashHandler.py
+++ b/cura/CrashHandler.py
@@ -13,9 +13,8 @@ import ssl
import urllib.request
import urllib.error
import shutil
-import sys
-from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR
+from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, QFile
from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QTextEdit, QGroupBox, QCheckBox, QPushButton
from UM.Application import Application
@@ -23,6 +22,7 @@ from UM.Logger import Logger
from UM.View.GL.OpenGL import OpenGL
from UM.i18n import i18nCatalog
from UM.Platform import Platform
+from UM.Resources import Resources
catalog = i18nCatalog("cura")
@@ -91,6 +91,7 @@ class CrashHandler:
label = QLabel()
label.setText(catalog.i18nc("@label crash message", """
A fatal error has occurred.
Unfortunately, Cura encountered an unrecoverable error during start up. It was possibly caused by some incorrect configuration files. We suggest to backup and reset your configuration.
+ Your backup can be found in your Configuration folder.
Please send us this Crash Report to fix the problem.
"""))
label.setWordWrap(True)
diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py
index 148ed6fe59..be5a10e293 100644
--- a/cura/Settings/CuraContainerRegistry.py
+++ b/cura/Settings/CuraContainerRegistry.py
@@ -228,16 +228,23 @@ class CuraContainerRegistry(ContainerRegistry):
Logger.log("e", "Incorrect profile [%s]. Could not find global profile", file_name)
return { "status": "error",
"message": catalog.i18nc("@info:status Don't translate the XML tags or !", "This profile {0} contains incorrect data, could not import it.", file_name)}
- profile_definition = global_profile.getMetaDataEntry("definition")
- expected_machine_definition = "fdmprinter"
+
+ # In a profile we can have the quality_definition metadata, but if not, we get the definition
+ profile_definition = global_profile.getMetaDataEntry("quality_definition")
+ if not profile_definition:
+ profile_definition = global_profile.getMetaDataEntry("definition")
+
+ # The expected machine definition may be the quality_definition if defined or the current definition id
+ expected_machine_definition = None
if parseBool(global_container_stack.getMetaDataEntry("has_machine_quality", "False")):
expected_machine_definition = global_container_stack.getMetaDataEntry("quality_definition")
- if not expected_machine_definition:
- expected_machine_definition = global_container_stack.definition.getId()
+ if not expected_machine_definition:
+ expected_machine_definition = global_container_stack.definition.getId()
+
if expected_machine_definition is not None and profile_definition is not None and profile_definition != expected_machine_definition:
- Logger.log("e", "Profile [%s] is for machine [%s] but the current active machine is [%s]. Will not import the profile", file_name)
+ Logger.log("e", "Profile [%s] is for machine [%s] but the current active machine is [%s]. Will not import the profile", file_name, profile_definition, expected_machine_definition)
return { "status": "error",
- "message": catalog.i18nc("@info:status Don't translate the XML tags or !", "The machine defined in profile {0} doesn't match with your current machine, could not import it.", file_name)}
+ "message": catalog.i18nc("@info:status Don't translate the XML tags or !", "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it.", file_name, profile_definition, expected_machine_definition)}
name_seed = os.path.splitext(os.path.basename(file_name))[0]
new_name = self.uniqueName(name_seed)
diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py
index 7e0e67a7e0..cc5c4aa539 100755
--- a/cura/Settings/MachineManager.py
+++ b/cura/Settings/MachineManager.py
@@ -559,7 +559,8 @@ class MachineManager(QObject):
def activeVariantNames(self) -> List[str]:
result = []
- active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks()
+ # Just return the variants in the extruder stack(s). For the variant in the global stack, use activeVariantBuildplateName
+ active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks()
if active_stacks is not None:
for stack in active_stacks:
variant_container = stack.variant
diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py
index a2e02fa9d4..8291ca3b52 100755
--- a/plugins/3MFReader/ThreeMFWorkspaceReader.py
+++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py
@@ -775,6 +775,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
# Ensure a unique ID and name
stack.setMetaDataEntry("id", new_id)
+ # Keep same quality between extruders and global stack
+ stack.quality = global_stack.quality
+
self._container_registry.addContainer(stack)
extruder_stacks_added.append(stack)
containers_added.append(stack)
diff --git a/plugins/GCodeWriter/GCodeWriter.py b/plugins/GCodeWriter/GCodeWriter.py
index d06332bec1..368942fd08 100644
--- a/plugins/GCodeWriter/GCodeWriter.py
+++ b/plugins/GCodeWriter/GCodeWriter.py
@@ -5,6 +5,7 @@ from UM.Mesh.MeshWriter import MeshWriter
from UM.Logger import Logger
from UM.Application import Application
from UM.Settings.InstanceContainer import InstanceContainer
+from UM.Util import parseBool
from cura.Settings.ExtruderManager import ExtruderManager
@@ -120,6 +121,10 @@ class GCodeWriter(MeshWriter):
if flat_global_container.getMetaDataEntry("quality_type", None) is None:
flat_global_container.addMetaDataEntry("quality_type", stack.quality.getMetaDataEntry("quality_type", "normal"))
+ # Ensure that quality_definition is set. (Can happen if we have empty quality changes).
+ if parseBool(stack.getMetaDataEntry("has_machine_quality", "False")):
+ flat_global_container.addMetaDataEntry("quality_definition", stack.getMetaDataEntry("quality_definition"))
+
serialized = flat_global_container.serialize()
data = {"global_quality": serialized}
diff --git a/plugins/UM3NetworkPrinting/UM3InfoComponents.qml b/plugins/UM3NetworkPrinting/UM3InfoComponents.qml
index 18b481a6ed..5a9cc096e7 100644
--- a/plugins/UM3NetworkPrinting/UM3InfoComponents.qml
+++ b/plugins/UM3NetworkPrinting/UM3InfoComponents.qml
@@ -10,7 +10,8 @@ Item
{
id: base
- property bool isUM3: Cura.MachineManager.activeQualityDefinitionId == "ultimaker3"
+ property string activeQualityDefinitionId: Cura.MachineManager.activeQualityDefinitionId
+ property bool isUM3: activeQualityDefinitionId == "ultimaker3" || activeQualityDefinitionId.match("ultimaker_") != null
property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0
property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands
property bool authenticationRequested: printerConnected && (Cura.MachineManager.printerOutputDevices[0].authenticationState == 2 || Cura.MachineManager.printerOutputDevices[0].authenticationState == 5) // AuthState.AuthenticationRequested or AuthenticationReceived.
diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json
index e7b9b6255e..826960a621 100644
--- a/resources/definitions/ultimaker3.def.json
+++ b/resources/definitions/ultimaker3.def.json
@@ -90,6 +90,7 @@
"infill_overlap": { "value": "0" },
"infill_pattern": { "value": "'triangles'" },
"infill_wipe_dist": { "value": "0" },
+ "initial_layer_line_width_factor": { "value": "120" },
"jerk_enabled": { "value": "True" },
"jerk_layer_0": { "value": "jerk_topbottom" },
"jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" },
@@ -109,7 +110,9 @@
"material_bed_temperature": { "maximum_value": "115" },
"material_bed_temperature_layer_0": { "maximum_value": "115" },
"material_standby_temperature": { "value": "100" },
+ "meshfix_maximum_resolution": { "value": "0.04" },
"multiple_mesh_overlap": { "value": "0" },
+ "optimize_wall_printing_order": { "value": "True" },
"prime_tower_enable": { "default_value": true },
"raft_airgap": { "value": "0" },
"raft_base_thickness": { "value": "0.3" },
@@ -120,6 +123,7 @@
"raft_margin": { "value": "10" },
"raft_surface_layers": { "value": "1" },
"retraction_amount": { "value": "2" },
+ "retraction_combing": { "default_value": "noskin" },
"retraction_count_max": { "value": "10" },
"retraction_extrusion_window": { "value": "1" },
"retraction_hop": { "value": "2" },
diff --git a/resources/qml/PrintMonitor.qml b/resources/qml/PrintMonitor.qml
index 95b17e9abe..0841144043 100644
--- a/resources/qml/PrintMonitor.qml
+++ b/resources/qml/PrintMonitor.qml
@@ -1,7 +1,7 @@
// Copyright (c) 2018 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
-import QtQuick 2.8
+import QtQuick 2.7
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1
import QtQuick.Layouts 1.1
diff --git a/resources/qml/SaveButton.qml b/resources/qml/SaveButton.qml
index bd43b25db7..0369f492b4 100644
--- a/resources/qml/SaveButton.qml
+++ b/resources/qml/SaveButton.qml
@@ -1,7 +1,7 @@
// Copyright (c) 2018 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
-import QtQuick 2.8
+import QtQuick 2.7
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1
import QtQuick.Layouts 1.1
diff --git a/resources/qml/Settings/SettingCheckBox.qml b/resources/qml/Settings/SettingCheckBox.qml
index d8105e2ae1..d37754d27c 100644
--- a/resources/qml/Settings/SettingCheckBox.qml
+++ b/resources/qml/Settings/SettingCheckBox.qml
@@ -1,9 +1,9 @@
// Copyright (c) 2018 Ultimaker B.V.
// Uranium is released under the terms of the LGPLv3 or higher.
-import QtQuick 2.8
+import QtQuick 2.7
import QtQuick.Layouts 1.2
-import QtQuick.Controls 2.1
+import QtQuick.Controls 2.0
import UM 1.2 as UM
diff --git a/resources/qml/Settings/SettingItem.qml b/resources/qml/Settings/SettingItem.qml
index b2535d6b41..013371e528 100644
--- a/resources/qml/Settings/SettingItem.qml
+++ b/resources/qml/Settings/SettingItem.qml
@@ -1,9 +1,9 @@
// Copyright (c) 2018 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
-import QtQuick 2.8
+import QtQuick 2.7
import QtQuick.Layouts 1.2
-import QtQuick.Controls 2.1
+import QtQuick.Controls 2.0
import UM 1.1 as UM
import Cura 1.0 as Cura
diff --git a/resources/qml/SidebarContents.qml b/resources/qml/SidebarContents.qml
index e15fabd89b..0b19bfe3c1 100644
--- a/resources/qml/SidebarContents.qml
+++ b/resources/qml/SidebarContents.qml
@@ -1,7 +1,7 @@
// Copyright (c) 2016 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
-import QtQuick 2.8
+import QtQuick 2.7
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1
import QtQuick.Layouts 1.1
diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml
index 6c4731931e..d43b8d3752 100644
--- a/resources/qml/SidebarHeader.qml
+++ b/resources/qml/SidebarHeader.qml
@@ -1,7 +1,7 @@
// Copyright (c) 2017 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
-import QtQuick 2.8
+import QtQuick 2.7
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1
diff --git a/resources/qml/SidebarTooltip.qml b/resources/qml/SidebarTooltip.qml
index 6756763c8a..29199481f6 100644
--- a/resources/qml/SidebarTooltip.qml
+++ b/resources/qml/SidebarTooltip.qml
@@ -1,7 +1,7 @@
// Copyright (c) 2015 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
-import QtQuick 2.8
+import QtQuick 2.7
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1
import QtQuick.Layouts 1.1
diff --git a/resources/qml/WorkspaceSummaryDialog.qml b/resources/qml/WorkspaceSummaryDialog.qml
index d5cc416f39..a05dee5a9a 100644
--- a/resources/qml/WorkspaceSummaryDialog.qml
+++ b/resources/qml/WorkspaceSummaryDialog.qml
@@ -120,6 +120,31 @@ UM.Dialog
width: (parent.width / 3) | 0
}
}
+ Column
+ {
+ width: parent.width
+ visible: Cura.MachineManager.hasVariantBuildplates
+ Item // Spacer
+ {
+ height: spacerHeight
+ width: height
+ }
+ Row
+ {
+ width: parent.width
+ height: childrenRect.height
+ Label
+ {
+ text: catalog.i18nc("@action:label", "Build plate")
+ width: (parent.width / 3) | 0
+ }
+ Label
+ {
+ text: Cura.MachineManager.activeVariantBuildplateName
+ width: (parent.width / 3) | 0
+ }
+ }
+ }
Repeater
{
diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg
index 8c6e7bd782..a32d9268d3 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg
@@ -13,6 +13,7 @@ setting_version = 4
[values]
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =cool_fan_speed
+infill_line_width = =round(line_width * 0.42 / 0.35, 2)
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 5
@@ -20,9 +21,9 @@ material_standby_temperature = 100
prime_tower_enable = False
skin_overlap = 20
speed_layer_0 = 20
-speed_topbottom = =math.ceil(speed_print * 35 / 70)
-speed_wall = =math.ceil(speed_print * 50 / 70)
-speed_wall_0 = =math.ceil(speed_wall * 35 / 50)
+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)
top_bottom_thickness = 1
wall_thickness = 1
diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg
index db441015a8..30b7d44d4e 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg
@@ -13,6 +13,7 @@ setting_version = 4
[values]
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =cool_fan_speed
+infill_line_width = =round(line_width * 0.42 / 0.35, 2)
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_standby_temperature = 100
diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg
index 61807490e9..da62ce2e3f 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg
@@ -14,6 +14,7 @@ setting_version = 4
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =cool_fan_speed
cool_min_speed = 10
+infill_line_width = =round(line_width * 0.42 / 0.35, 2)
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature - 5
diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg
index d7254b854d..04707735f5 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg
@@ -14,6 +14,7 @@ setting_version = 4
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =cool_fan_speed
cool_min_speed = 7
+infill_line_width = =round(line_width * 0.42 / 0.35, 2)
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_standby_temperature = 100
diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg
index 6116dc1bda..f6828f88fb 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg
@@ -18,11 +18,10 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 4
gradual_infill_step_height = =5 * layer_height
-gradual_infill_steps = 4
infill_line_width = =round(line_width * 0.38 / 0.38, 2)
infill_overlap = 0
-infill_pattern = tetrahedral
-infill_sparse_density = 96
+infill_pattern = cross_3d
+infill_sparse_density = 10
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg
index 1da5d0fec8..80be26d24c 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg
@@ -18,11 +18,10 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 4
gradual_infill_step_height = =5 * layer_height
-gradual_infill_steps = 4
infill_line_width = =round(line_width * 0.38 / 0.38, 2)
infill_overlap = 0
-infill_pattern = tetrahedral
-infill_sparse_density = 96
+infill_pattern = cross_3d
+infill_sparse_density = 10
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg
index 1938e1c26c..53044e1805 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg
@@ -18,11 +18,10 @@ cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 6
cool_min_speed = 4
gradual_infill_step_height = =5 * layer_height
-gradual_infill_steps = 4
infill_line_width = =round(line_width * 0.38 / 0.38, 2)
infill_overlap = 0
-infill_pattern = tetrahedral
-infill_sparse_density = 96
+infill_pattern = cross_3d
+infill_sparse_density = 10
infill_wipe_dist = 0.1
jerk_enabled = True
jerk_print = 25
diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg
index 3c4303e017..8b3c3e56c6 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg
@@ -15,8 +15,8 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_line_width = =round(line_width * 0.535 / 0.75, 2)
-infill_pattern = cubic
+infill_line_width = =round(line_width * 0.65 / 0.75, 2)
+infill_pattern = triangles
line_width = =machine_nozzle_size * 0.9375
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
@@ -25,6 +25,12 @@ material_initial_print_temperature = =max(-273.15, material_print_temperature -
material_print_temperature = =default_material_print_temperature + 10
material_standby_temperature = 100
prime_tower_enable = True
+retract_at_layer_change = False
+speed_print = 45
+speed_topbottom = =math.ceil(speed_print * 35 / 45)
+speed_wall = =math.ceil(speed_print * 40 / 45)
+speed_wall_x = =speed_wall
+speed_wall_0 = =math.ceil(speed_wall * 35 / 40)
support_angle = 70
support_line_width = =line_width * 0.75
support_pattern = ='triangles'
diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg
index 5509f42aae..2fe8f7c6f9 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg
@@ -15,8 +15,8 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_line_width = =round(line_width * 0.535 / 0.75, 2)
-infill_pattern = cubic
+infill_line_width = =round(line_width * 0.65 / 0.75, 2)
+infill_pattern = triangles
layer_height = 0.4
line_width = =machine_nozzle_size * 0.9375
machine_nozzle_cool_down_speed = 0.75
@@ -27,6 +27,12 @@ material_print_temperature = =default_material_print_temperature + 15
material_standby_temperature = 100
prime_tower_enable = True
raft_margin = 10
+retract_at_layer_change = False
+speed_print = 45
+speed_topbottom = =math.ceil(speed_print * 35 / 45)
+speed_wall = =math.ceil(speed_print * 40 / 45)
+speed_wall_x = =speed_wall
+speed_wall_0 = =math.ceil(speed_wall * 35 / 40)
support_angle = 70
support_line_width = =line_width * 0.75
support_pattern = ='triangles'
diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg
index 645c3fe3ef..9072e0c60f 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg
@@ -15,8 +15,8 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =100
cool_min_speed = 2
gradual_infill_step_height = =3 * layer_height
-infill_line_width = =round(line_width * 0.535 / 0.75, 2)
-infill_pattern = cubic
+infill_line_width = =round(line_width * 0.65 / 0.75, 2)
+infill_pattern = triangles
layer_height = 0.3
line_width = =machine_nozzle_size * 0.9375
machine_nozzle_cool_down_speed = 0.75
@@ -26,6 +26,12 @@ material_initial_print_temperature = =max(-273.15, material_print_temperature -
material_print_temperature = =default_material_print_temperature + 10
material_standby_temperature = 100
prime_tower_enable = True
+retract_at_layer_change = False
+speed_print = 45
+speed_topbottom = =math.ceil(speed_print * 35 / 45)
+speed_wall = =math.ceil(speed_print * 40 / 45)
+speed_wall_x = =speed_wall
+speed_wall_0 = =math.ceil(speed_wall * 35 / 40)
support_angle = 70
support_line_width = =line_width * 0.75
support_pattern = ='triangles'
diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg
index 726ab82867..d5d7479a0e 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg
@@ -15,11 +15,10 @@ brim_width = 8.75
cool_min_layer_time_fan_speed_max = 6
top_skin_expand_distance = =line_width * 2
gradual_infill_step_height = =4 * layer_height
-gradual_infill_steps = 5
infill_before_walls = True
infill_line_width = =round(line_width * 0.7 / 0.8, 2)
-infill_pattern = tetrahedral
-infill_sparse_density = 80
+infill_pattern = cross_3d
+infill_sparse_density = 10
jerk_prime_tower = =math.ceil(jerk_print * 25 / 25)
jerk_support = =math.ceil(jerk_print * 25 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25)
diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg
index 269725daa9..86c6a3df77 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg
@@ -15,11 +15,10 @@ brim_width = 8.75
cool_min_layer_time_fan_speed_max = 6
top_skin_expand_distance = =line_width * 2
gradual_infill_step_height = =4 * layer_height
-gradual_infill_steps = 5
infill_before_walls = True
infill_line_width = =round(line_width * 0.7 / 0.8, 2)
-infill_pattern = tetrahedral
-infill_sparse_density = 80
+infill_pattern = cross_3d
+infill_sparse_density = 10
jerk_prime_tower = =math.ceil(jerk_print * 25 / 25)
jerk_support = =math.ceil(jerk_print * 25 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25)
diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg
index dd1737433a..8af3edcddd 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg
@@ -15,11 +15,10 @@ brim_width = 8.75
cool_min_layer_time_fan_speed_max = 6
top_skin_expand_distance = =line_width * 2
gradual_infill_step_height = =4 * layer_height
-gradual_infill_steps = 5
infill_before_walls = True
infill_line_width = =round(line_width * 0.7 / 0.8, 2)
-infill_pattern = tetrahedral
-infill_sparse_density = 80
+infill_pattern = cross_3d
+infill_sparse_density = 10
jerk_prime_tower = =math.ceil(jerk_print * 25 / 25)
jerk_support = =math.ceil(jerk_print * 25 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25)