Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author3d-hctech <wanhua@3d-hctech.com>2022-06-09 10:09:40 +0300
committerGitHub <noreply@github.com>2022-06-09 10:09:40 +0300
commit9437de8266135cd9356443069ad731db7b33d82a (patch)
tree1c39137e89a8546174cf31da464ab64a83b4801e
parentbb2be3b4d6a41753c023faa6b8bf94853c481ab9 (diff)
parentd5511a078c0f227828158a544560e0af8e9f2e0b (diff)
Merge branch 'Ultimaker:main' into master
-rw-r--r--.github/ISSUE_TEMPLATE/bugreport.yaml4
-rw-r--r--.gitignore1
-rw-r--r--com.ultimaker.cura.appdata.xml3
-rw-r--r--cura/CrashHandler.py3
-rwxr-xr-xcura/CuraApplication.py10
-rw-r--r--cura/CuraPackageManager.py25
-rw-r--r--cura/Machines/Models/IntentCategoryModel.py2
-rw-r--r--cura/Machines/Models/MaterialManagementModel.py3
-rw-r--r--cura/Machines/Models/QualityManagementModel.py3
-rw-r--r--cura/Settings/ContainerManager.py2
-rwxr-xr-xcura/Settings/ExtruderManager.py7
-rwxr-xr-xcura/Settings/MachineManager.py2
-rwxr-xr-xplugins/3MFReader/ThreeMFWorkspaceReader.py32
-rw-r--r--plugins/3MFReader/WorkspaceDialog.py71
-rw-r--r--plugins/3MFReader/WorkspaceDialog.qml622
-rw-r--r--plugins/3MFWriter/ThreeMFWriter.py80
-rwxr-xr-xplugins/CuraEngineBackend/CuraEngineBackend.py23
-rw-r--r--plugins/Marketplace/InstallMissingPackagesDialog.py67
-rw-r--r--plugins/Marketplace/Marketplace.py22
-rw-r--r--plugins/Marketplace/MissingPackageList.py46
-rw-r--r--plugins/Marketplace/PackageList.py5
-rw-r--r--plugins/Marketplace/PackageModel.py25
-rw-r--r--plugins/Marketplace/RemotePackageList.py3
-rw-r--r--plugins/Marketplace/__init__.py2
-rw-r--r--plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml21
-rw-r--r--plugins/Marketplace/resources/qml/Marketplace.qml8
-rw-r--r--plugins/Marketplace/resources/qml/MissingPackages.qml15
-rw-r--r--plugins/Marketplace/resources/qml/PackageCard.qml2
-rw-r--r--plugins/Marketplace/resources/qml/PackageCardHeader.qml38
-rw-r--r--plugins/Marketplace/resources/qml/Packages.qml7
-rw-r--r--plugins/MonitorStage/MonitorMain.qml1
-rw-r--r--plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py5
-rw-r--r--plugins/XmlMaterialProfile/XmlMaterialProfile.py12
-rw-r--r--resources/definitions/SV02.def.json1
-rw-r--r--resources/definitions/fdmprinter.def.json2
-rw-r--r--resources/definitions/ultimaker.def.json133
-rw-r--r--resources/definitions/ultimaker3.def.json16
-rw-r--r--resources/definitions/ultimaker_s3.def.json17
-rw-r--r--resources/definitions/ultimaker_s5.def.json17
-rw-r--r--resources/definitions/uni_base.def.json1
-rw-r--r--resources/definitions/voron2_base.def.json3
-rw-r--r--resources/definitions/zav_base.def.json1
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg7
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg7
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg7
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg7
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg6
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg6
-rw-r--r--resources/qml/ColorDialog.qml2
-rw-r--r--resources/qml/MachineSettings/GcodeTextArea.qml4
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg3
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg12
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg12
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg3
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg12
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg3
-rw-r--r--resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg1
-rw-r--r--resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg1
-rw-r--r--resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg1
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg12
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg12
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg12
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg12
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg3
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg12
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.25_high.inst.cfg1
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.4_normal.inst.cfg1
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.6_fast.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.25_PETG_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg3
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg3
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg3
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg3
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg3
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg3
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg3
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg4
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg4
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.25_PETG_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg3
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg5
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg3
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.25_PETG_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg3
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg3
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg3
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg3
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg5
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg5
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg4
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg1
-rw-r--r--resources/texts/change_log.txt1
-rw-r--r--resources/variants/ultimaker3_aa0.25.inst.cfg2
-rw-r--r--resources/variants/ultimaker3_aa0.8.inst.cfg3
-rw-r--r--resources/variants/ultimaker3_aa04.inst.cfg1
-rw-r--r--resources/variants/ultimaker3_bb0.8.inst.cfg6
-rw-r--r--resources/variants/ultimaker3_bb04.inst.cfg5
-rw-r--r--resources/variants/ultimaker3_extended_aa0.25.inst.cfg2
-rw-r--r--resources/variants/ultimaker3_extended_aa0.8.inst.cfg3
-rw-r--r--resources/variants/ultimaker3_extended_aa04.inst.cfg1
-rw-r--r--resources/variants/ultimaker3_extended_bb0.8.inst.cfg6
-rw-r--r--resources/variants/ultimaker3_extended_bb04.inst.cfg5
-rw-r--r--resources/variants/ultimaker_s3_aa0.25.inst.cfg3
-rw-r--r--resources/variants/ultimaker_s3_aa0.8.inst.cfg3
-rw-r--r--resources/variants/ultimaker_s3_aa04.inst.cfg1
-rw-r--r--resources/variants/ultimaker_s3_bb0.8.inst.cfg6
-rw-r--r--resources/variants/ultimaker_s3_bb04.inst.cfg5
-rw-r--r--resources/variants/ultimaker_s3_cc04.inst.cfg1
-rw-r--r--resources/variants/ultimaker_s3_cc06.inst.cfg1
-rw-r--r--resources/variants/ultimaker_s5_aa0.25.inst.cfg2
-rw-r--r--resources/variants/ultimaker_s5_aa0.8.inst.cfg2
-rw-r--r--resources/variants/ultimaker_s5_aa04.inst.cfg1
-rw-r--r--resources/variants/ultimaker_s5_bb0.8.inst.cfg6
-rw-r--r--resources/variants/ultimaker_s5_bb04.inst.cfg5
-rw-r--r--resources/variants/ultimaker_s5_cc04.inst.cfg1
-rw-r--r--resources/variants/ultimaker_s5_cc06.inst.cfg1
228 files changed, 1062 insertions, 935 deletions
diff --git a/.github/ISSUE_TEMPLATE/bugreport.yaml b/.github/ISSUE_TEMPLATE/bugreport.yaml
index f31971ab2a..e3d60e41e0 100644
--- a/.github/ISSUE_TEMPLATE/bugreport.yaml
+++ b/.github/ISSUE_TEMPLATE/bugreport.yaml
@@ -1,6 +1,6 @@
name: Bug Report
description: Create a report to help us fix issues.
-labels: "Type: Bug"
+labels: ["Type: Bug", "Status: Triage"]
body:
- type: markdown
attributes:
@@ -14,7 +14,7 @@ body:
attributes:
label: Application Version
description: The version of Cura this issue occurs with.
- placeholder: 4.9.0
+ placeholder: 5.0.0
validations:
required: true
- type: input
diff --git a/.gitignore b/.gitignore
index 02be81d48e..c1fd5477d9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -65,6 +65,7 @@ plugins/CuraRemoteSupport
plugins/ModelCutter
plugins/PrintProfileCreator
plugins/MultiPrintPlugin
+plugins/CuraOrientationPlugin
#Build stuff
CMakeCache.txt
diff --git a/com.ultimaker.cura.appdata.xml b/com.ultimaker.cura.appdata.xml
index bdd25e5242..3af0e9c352 100644
--- a/com.ultimaker.cura.appdata.xml
+++ b/com.ultimaker.cura.appdata.xml
@@ -25,9 +25,10 @@
</description>
<screenshots>
<screenshot type="default">
- <image>https://raw.githubusercontent.com/Ultimaker/Cura/master/screenshot.png</image>
+ <image>https://raw.githubusercontent.com/Ultimaker/Cura/main/cura-logo.PNG</image>
</screenshot>
</screenshots>
<url type="homepage">https://ultimaker.com/software/ultimaker-cura?utm_source=cura&amp;utm_medium=software&amp;utm_campaign=cura-update-linux</url>
<translation type="gettext">Cura</translation>
+ <content_rating type="oars-1.1" />
</component>
diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py
index bda9568666..541a270058 100644
--- a/cura/CrashHandler.py
+++ b/cura/CrashHandler.py
@@ -261,7 +261,7 @@ class CrashHandler:
opengl_instance = OpenGL.getInstance()
if not opengl_instance:
self.data["opengl"] = {"version": "n/a", "vendor": "n/a", "type": "n/a"}
- return catalog.i18nc("@label", "Not yet initialized<br/>")
+ return catalog.i18nc("@label", "Not yet initialized") + "<br />"
info = "<ul>"
info += catalog.i18nc("@label OpenGL version", "<li>OpenGL Version: {version}</li>").format(version = opengl_instance.getOpenGLVersion())
@@ -291,6 +291,7 @@ class CrashHandler:
if with_sentry_sdk:
with configure_scope() as scope:
scope.set_tag("opengl_version", opengl_instance.getOpenGLVersion())
+ scope.set_tag("opengl_version_short", opengl_instance.getOpenGLVersionShort())
scope.set_tag("gpu_vendor", opengl_instance.getGPUVendorName())
scope.set_tag("gpu_type", opengl_instance.getGPUType())
scope.set_tag("active_machine", active_machine_definition_id)
diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py
index ee3c6e361e..3a3ac17cdf 100755
--- a/cura/CuraApplication.py
+++ b/cura/CuraApplication.py
@@ -257,6 +257,7 @@ class CuraApplication(QtApplication):
from UM.CentralFileStorage import CentralFileStorage
CentralFileStorage.setIsEnterprise(ApplicationMetadata.IsEnterpriseVersion)
+ Resources.setIsEnterprise(ApplicationMetadata.IsEnterpriseVersion)
@pyqtProperty(str, constant=True)
def ultimakerCloudApiRootUrl(self) -> str:
@@ -315,7 +316,7 @@ class CuraApplication(QtApplication):
def initialize(self) -> None:
self.__addExpectedResourceDirsAndSearchPaths() # Must be added before init of super
- super().initialize()
+ super().initialize(ApplicationMetadata.IsEnterpriseVersion)
self._preferences.addPreference("cura/single_instance", False)
self._use_single_instance = self._preferences.getValue("cura/single_instance") or self._cli_args.single_instance
@@ -348,12 +349,12 @@ class CuraApplication(QtApplication):
Resources.addExpectedDirNameInData(dir_name)
app_root = os.path.abspath(os.path.join(os.path.dirname(sys.executable)))
- Resources.addSearchPath(os.path.join(app_root, "share", "cura", "resources"))
+ Resources.addSecureSearchPath(os.path.join(app_root, "share", "cura", "resources"))
- Resources.addSearchPath(os.path.join(self._app_install_dir, "share", "cura", "resources"))
+ Resources.addSecureSearchPath(os.path.join(self._app_install_dir, "share", "cura", "resources"))
if not hasattr(sys, "frozen"):
resource_path = os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "resources")
- Resources.addSearchPath(resource_path)
+ Resources.addSecureSearchPath(resource_path)
@classmethod
def _initializeSettingDefinitions(cls):
@@ -942,6 +943,7 @@ class CuraApplication(QtApplication):
self._qml_import_paths.append(Resources.getPath(self.ResourceTypes.QmlFiles))
self._setLoadingHint(self._i18n_catalog.i18nc("@info:progress", "Initializing engine..."))
self.initializeEngine()
+ self.getTheme().setCheckIfTrusted(ApplicationMetadata.IsEnterpriseVersion)
# Initialize UI state
controller.setActiveStage("PrepareStage")
diff --git a/cura/CuraPackageManager.py b/cura/CuraPackageManager.py
index 17d6832ac6..e23ed47ffa 100644
--- a/cura/CuraPackageManager.py
+++ b/cura/CuraPackageManager.py
@@ -1,14 +1,18 @@
# Copyright (c) 2018 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
+import os
from typing import Any, cast, Dict, List, Set, Tuple, TYPE_CHECKING, Optional
+from UM.Logger import Logger
+from UM.PluginRegistry import PluginRegistry
from cura.CuraApplication import CuraApplication # To find some resource types.
from cura.Settings.GlobalStack import GlobalStack
from UM.PackageManager import PackageManager # The class we're extending.
from UM.Resources import Resources # To find storage paths for some resource types.
from UM.i18n import i18nCatalog
+
catalog = i18nCatalog("cura")
if TYPE_CHECKING:
@@ -51,6 +55,27 @@ class CuraPackageManager(PackageManager):
super().initialize()
+ def getMaterialFilePackageId(self, file_name: str, guid: str) -> str:
+ """Get the id of the installed material package that contains file_name"""
+ for material_package in [f for f in os.scandir(self._installation_dirs_dict["materials"]) if f.is_dir()]:
+ package_id = material_package.name
+
+ for root, _, file_names in os.walk(material_package.path):
+ if file_name not in file_names:
+ # File with the name we are looking for is not in this directory
+ continue
+
+ with open(root + "/" + file_name, encoding="utf-8") as f:
+ # Make sure the file we found has the same guid as our material
+ # Parsing this xml would be better but the namespace is needed to search it.
+ parsed_guid = PluginRegistry.getInstance().getPluginObject("XmlMaterialProfile").getMetadataFromSerialized(
+ f.read(), "GUID")
+ if guid == parsed_guid:
+ return package_id
+
+ Logger.error("Could not find package_id for file: {} with GUID: {} ".format(file_name, guid))
+ return ""
+
def getMachinesUsingPackage(self, package_id: str) -> Tuple[List[Tuple[GlobalStack, str, str]], List[Tuple[GlobalStack, str, str]]]:
"""Returns a list of where the package is used
diff --git a/cura/Machines/Models/IntentCategoryModel.py b/cura/Machines/Models/IntentCategoryModel.py
index 14e3c4d35e..e94bbe6d00 100644
--- a/cura/Machines/Models/IntentCategoryModel.py
+++ b/cura/Machines/Models/IntentCategoryModel.py
@@ -111,7 +111,7 @@ class IntentCategoryModel(ListModel):
except ValueError:
weight = 99
result.append({
- "name": IntentCategoryModel.translation(category, "name", category),
+ "name": IntentCategoryModel.translation(category, "name", category.title()),
"description": IntentCategoryModel.translation(category, "description", None),
"intent_category": category,
"weight": weight,
diff --git a/cura/Machines/Models/MaterialManagementModel.py b/cura/Machines/Models/MaterialManagementModel.py
index 53d0cca0a2..b2b888f431 100644
--- a/cura/Machines/Models/MaterialManagementModel.py
+++ b/cura/Machines/Models/MaterialManagementModel.py
@@ -45,8 +45,7 @@ class MaterialManagementModel(QObject):
for package_id, package_data in application.getPackageManager().getPackagesInstalledOnStartup().items():
if package_data["package_info"]["package_type"] == "material":
# At least one new material was installed
- # TODO: This should be enabled again once CURA-8609 is merged
- #self._showSyncNewMaterialsMessage()
+ self._showSyncNewMaterialsMessage()
break
def _showSyncNewMaterialsMessage(self) -> None:
diff --git a/cura/Machines/Models/QualityManagementModel.py b/cura/Machines/Models/QualityManagementModel.py
index 8db8719784..b4fb8b38b5 100644
--- a/cura/Machines/Models/QualityManagementModel.py
+++ b/cura/Machines/Models/QualityManagementModel.py
@@ -358,8 +358,9 @@ class QualityManagementModel(ListModel):
"quality_type": quality_type,
"quality_changes_group": None,
"intent_category": intent_category,
- "section_name": catalog.i18nc("@label", intent_translations.get(intent_category, {}).get("name", catalog.i18nc("@label", "Unknown"))),
+ "section_name": catalog.i18nc("@label", intent_translations.get(intent_category, {}).get("name", catalog.i18nc("@label", intent_category.title()))),
})
+
# Sort by quality_type for each intent category
intent_translations_list = list(intent_translations)
diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py
index 67a1643d0b..676cdd6c65 100644
--- a/cura/Settings/ContainerManager.py
+++ b/cura/Settings/ContainerManager.py
@@ -114,7 +114,7 @@ class ContainerManager(QObject):
for _ in range(len(entries)):
item = item.get(entries.pop(0), {})
- if item[entry_name] != entry_value:
+ if entry_name not in item or item[entry_name] != entry_value:
sub_item_changed = True
item[entry_name] = entry_value
diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py
index 07c074254f..52d63b611b 100755
--- a/cura/Settings/ExtruderManager.py
+++ b/cura/Settings/ExtruderManager.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2020 Ultimaker B.V.
+# Copyright (c) 2022 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
from PyQt6.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant # For communicating data and events to Qt.
@@ -382,7 +382,10 @@ class ExtruderManager(QObject):
# "fdmextruder". We need to check a machine here so its extruder definition is correct according to this.
def fixSingleExtrusionMachineExtruderDefinition(self, global_stack: "GlobalStack") -> None:
container_registry = ContainerRegistry.getInstance()
- expected_extruder_definition_0_id = global_stack.getMetaDataEntry("machine_extruder_trains")["0"]
+ expected_extruder_stack = global_stack.getMetaDataEntry("machine_extruder_trains")
+ if expected_extruder_stack is None:
+ return
+ expected_extruder_definition_0_id = expected_extruder_stack["0"]
try:
extruder_stack_0 = global_stack.extruderList[0]
except IndexError:
diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py
index 1c7a8f0e98..9b98179bff 100755
--- a/cura/Settings/MachineManager.py
+++ b/cura/Settings/MachineManager.py
@@ -1611,7 +1611,7 @@ class MachineManager(QObject):
if intent_category != "default":
intent_display_name = IntentCategoryModel.translation(intent_category,
"name",
- catalog.i18nc("@label", "Unknown"))
+ intent_category.title())
display_name = "{intent_name} - {the_rest}".format(intent_name = intent_display_name,
the_rest = display_name)
diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py
index ddc7922546..3c096318b5 100755
--- a/plugins/3MFReader/ThreeMFWorkspaceReader.py
+++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py
@@ -23,6 +23,7 @@ from UM.Settings.ContainerRegistry import ContainerRegistry
from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType
from UM.Job import Job
from UM.Preferences import Preferences
+from cura.CuraPackageManager import CuraPackageManager
from cura.Machines.ContainerTree import ContainerTree
from cura.Settings.CuraStackBuilder import CuraStackBuilder
@@ -579,6 +580,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
is_printer_group = True
machine_name = group_name
+ # Getting missing required package ids
+ package_metadata = self._parse_packages_metadata(archive)
+ missing_package_metadata = self._filter_missing_package_metadata(package_metadata)
+
# Show the dialog, informing the user what is about to happen.
self._dialog.setMachineConflict(machine_conflict)
self._dialog.setIsPrinterGroup(is_printer_group)
@@ -599,6 +604,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
self._dialog.setExtruders(extruders)
self._dialog.setVariantType(variant_type_name)
self._dialog.setHasObjectsOnPlate(Application.getInstance().platformActivity)
+ self._dialog.setMissingPackagesMetadata(missing_package_metadata)
self._dialog.show()
# Block until the dialog is closed.
@@ -1243,3 +1249,29 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
metadata = data.iterfind("./um:metadata/um:name/um:label", {"um": "http://www.ultimaker.com/material"})
for entry in metadata:
return entry.text
+
+ @staticmethod
+ def _parse_packages_metadata(archive: zipfile.ZipFile) -> List[Dict[str, str]]:
+ try:
+ package_metadata = json.loads(archive.open("Metadata/packages.json").read().decode("utf-8"))
+ return package_metadata["packages"]
+ except KeyError:
+ Logger.warning("No package metadata was found in .3mf file.")
+ except Exception:
+ Logger.error("Failed to load packes metadata from .3mf file")
+
+ return []
+
+
+ @staticmethod
+ def _filter_missing_package_metadata(package_metadata: List[Dict[str, str]]) -> List[Dict[str, str]]:
+ """Filters out installed packages from package_metadata"""
+ missing_packages = []
+ package_manager = cast(CuraPackageManager, CuraApplication.getInstance().getPackageManager())
+
+ for package in package_metadata:
+ package_id = package["id"]
+ if not package_manager.isPackageInstalled(package_id):
+ missing_packages.append(package)
+
+ return missing_packages
diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py
index b63d8b6288..0a8f7784b2 100644
--- a/plugins/3MFReader/WorkspaceDialog.py
+++ b/plugins/3MFReader/WorkspaceDialog.py
@@ -1,14 +1,19 @@
-# Copyright (c) 2020 Ultimaker B.V.
+# Copyright (c) 2022 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
+
+from PyQt6.QtCore import pyqtSignal, QObject, pyqtProperty, QCoreApplication, QUrl
+from PyQt6.QtGui import QDesktopServices
from typing import List, Optional, Dict, cast
-from PyQt6.QtCore import pyqtSignal, QObject, pyqtProperty, QCoreApplication
-from UM.FlameProfiler import pyqtSlot
-from UM.PluginRegistry import PluginRegistry
+from cura.Settings.GlobalStack import GlobalStack
from UM.Application import Application
+from UM.FlameProfiler import pyqtSlot
from UM.i18n import i18nCatalog
+from UM.Logger import Logger
+from UM.Message import Message
+from UM.PluginRegistry import PluginRegistry
from UM.Settings.ContainerRegistry import ContainerRegistry
-from cura.Settings.GlobalStack import GlobalStack
+
from .UpdatableMachinesModel import UpdatableMachinesModel
import os
@@ -23,7 +28,7 @@ i18n_catalog = i18nCatalog("cura")
class WorkspaceDialog(QObject):
showDialogSignal = pyqtSignal()
- def __init__(self, parent = None):
+ def __init__(self, parent = None) -> None:
super().__init__(parent)
self._component = None
self._context = None
@@ -59,6 +64,9 @@ class WorkspaceDialog(QObject):
self._objects_on_plate = False
self._is_printer_group = False
self._updatable_machines_model = UpdatableMachinesModel(self)
+ self._missing_package_metadata: List[Dict[str, str]] = []
+ self._plugin_registry: PluginRegistry = CuraApplication.getInstance().getPluginRegistry()
+ self._install_missing_package_dialog: Optional[QObject] = None
machineConflictChanged = pyqtSignal()
qualityChangesConflictChanged = pyqtSignal()
@@ -79,6 +87,7 @@ class WorkspaceDialog(QObject):
variantTypeChanged = pyqtSignal()
extrudersChanged = pyqtSignal()
isPrinterGroupChanged = pyqtSignal()
+ missingPackagesChanged = pyqtSignal()
@pyqtProperty(bool, notify = isPrinterGroupChanged)
def isPrinterGroup(self) -> bool:
@@ -274,6 +283,21 @@ class WorkspaceDialog(QObject):
self._has_quality_changes_conflict = quality_changes_conflict
self.qualityChangesConflictChanged.emit()
+ def setMissingPackagesMetadata(self, missing_package_metadata: List[Dict[str, str]]) -> None:
+ self._missing_package_metadata = missing_package_metadata
+ self.missingPackagesChanged.emit()
+
+ @pyqtProperty("QVariantList", notify=missingPackagesChanged)
+ def missingPackages(self) -> List[Dict[str, str]]:
+ return self._missing_package_metadata
+
+ @pyqtSlot()
+ def installMissingPackages(self) -> None:
+ marketplace_plugin = PluginRegistry.getInstance().getPluginObject("Marketplace")
+ if not marketplace_plugin:
+ Logger.warning("Could not show dialog to install missing plug-ins. Is Marketplace plug-in not available?")
+ marketplace_plugin.showInstallMissingPackageDialog(self._missing_package_metadata, self.showMissingMaterialsWarning) # type: ignore
+
def getResult(self) -> Dict[str, Optional[str]]:
if "machine" in self._result and self.updatableMachinesModel.count <= 1:
self._result["machine"] = None
@@ -360,6 +384,41 @@ class WorkspaceDialog(QObject):
time.sleep(1 / 50)
QCoreApplication.processEvents() # Ensure that the GUI does not freeze.
+ @pyqtSlot()
+ def showMissingMaterialsWarning(self) -> None:
+ result_message = Message(
+ i18n_catalog.i18nc("@info:status", "The material used in this project relies on some material definitions not available in Cura, this might produce undesirable print results. We highly recommend installing the full material package from the Marketplace."),
+ lifetime=0,
+ title=i18n_catalog.i18nc("@info:title", "Material profiles not installed"),
+ message_type=Message.MessageType.WARNING
+ )
+ result_message.addAction(
+ "learn_more",
+ name=i18n_catalog.i18nc("@action:button", "Learn more"),
+ icon="",
+ description="Learn more about project materials.",
+ button_align=Message.ActionButtonAlignment.ALIGN_LEFT,
+ button_style=Message.ActionButtonStyle.LINK
+ )
+ result_message.addAction(
+ "install_materials",
+ name=i18n_catalog.i18nc("@action:button", "Install Materials"),
+ icon="",
+ description="Install missing materials from project file.",
+ button_align=Message.ActionButtonAlignment.ALIGN_RIGHT,
+ button_style=Message.ActionButtonStyle.DEFAULT
+ )
+ result_message.actionTriggered.connect(self._onMessageActionTriggered)
+ result_message.show()
+
+ def _onMessageActionTriggered(self, message: Message, sync_message_action: str) -> None:
+ if sync_message_action == "install_materials":
+ self.installMissingPackages()
+ message.hide()
+ elif sync_message_action == "learn_more":
+ QDesktopServices.openUrl(QUrl("https://support.ultimaker.com/hc/en-us/articles/360011968360-Using-the-Ultimaker-Marketplace"))
+
+
def __show(self) -> None:
if self._view is None:
self._createViewFromQML()
diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml
index 4c384b306b..d0250abfd8 100644
--- a/plugins/3MFReader/WorkspaceDialog.qml
+++ b/plugins/3MFReader/WorkspaceDialog.qml
@@ -17,7 +17,7 @@ UM.Dialog
minimumWidth: UM.Theme.getSize("popup_dialog").width
minimumHeight: UM.Theme.getSize("popup_dialog").height
width: minimumWidth
-
+ margin: UM.Theme.getSize("default_margin").width
property int comboboxHeight: UM.Theme.getSize("default_margin").height
onClosing: manager.notifyClosed()
@@ -31,413 +31,470 @@ UM.Dialog
}
}
- Item
+ Flickable
{
- id: dialogSummaryItem
+ clip: true
width: parent.width
- height: childrenRect.height
- anchors.margins: 10 * screenScaleFactor
+ height: parent.height
+ contentHeight: dialogSummaryItem.height
+ ScrollBar.vertical: UM.ScrollBar { id: verticalScrollBar }
- UM.I18nCatalog
+ Item
{
- id: catalog
- name: "cura"
- }
+ id: dialogSummaryItem
+ width: verticalScrollBar.visible ? parent.width - verticalScrollBar.width - UM.Theme.getSize("default_margin").width : parent.width
+ height: childrenRect.height
+ anchors.margins: 10 * screenScaleFactor
- ListModel
- {
- id: resolveStrategiesModel
- // Instead of directly adding the list elements, we add them afterwards.
- // This is because it's impossible to use setting function results to be bound to listElement properties directly.
- // See http://stackoverflow.com/questions/7659442/listelement-fields-as-properties
- Component.onCompleted:
+ UM.I18nCatalog
{
- append({"key": "override", "label": catalog.i18nc("@action:ComboBox Update/override existing profile", "Update existing")});
- append({"key": "new", "label": catalog.i18nc("@action:ComboBox Save settings in a new profile", "Create new")});
+ id: catalog
+ name: "cura"
}
- }
- Column
- {
- width: parent.width
- height: childrenRect.height
- spacing: UM.Theme.getSize("default_margin").height
+ ListModel
+ {
+ id: resolveStrategiesModel
+ // Instead of directly adding the list elements, we add them afterwards.
+ // This is because it's impossible to use setting function results to be bound to listElement properties directly.
+ // See http://stackoverflow.com/questions/7659442/listelement-fields-as-properties
+ Component.onCompleted:
+ {
+ append({"key": "override", "label": catalog.i18nc("@action:ComboBox Update/override existing profile", "Update existing")});
+ append({"key": "new", "label": catalog.i18nc("@action:ComboBox Save settings in a new profile", "Create new")});
+ }
+ }
Column
{
width: parent.width
height: childrenRect.height
+ spacing: UM.Theme.getSize("default_margin").height
- UM.Label
+ Column
{
- id: titleLabel
- text: catalog.i18nc("@action:title", "Summary - Cura Project")
- font: UM.Theme.getFont("large")
+ width: parent.width
+ height: childrenRect.height
+
+ UM.Label
+ {
+ id: titleLabel
+ text: catalog.i18nc("@action:title", "Summary - Cura Project")
+ font: UM.Theme.getFont("large")
+ }
+
+ Rectangle
+ {
+ id: separator
+ color: UM.Theme.getColor("text")
+ width: parent.width
+ height: UM.Theme.getSize("default_lining").height
+ }
}
- Rectangle
+ Item
{
- id: separator
- color: UM.Theme.getColor("text")
width: parent.width
- height: UM.Theme.getSize("default_lining").height
- }
- }
+ height: childrenRect.height
- Item
- {
- width: parent.width
- height: childrenRect.height
+ UM.TooltipArea
+ {
+ id: machineResolveStrategyTooltip
+ anchors.top: parent.top
+ anchors.right: parent.right
+ width: (parent.width / 3) | 0
+ height: visible ? comboboxHeight : 0
+ visible: base.visible && machineResolveComboBox.model.count > 1
+ text: catalog.i18nc("@info:tooltip", "How should the conflict in the machine be resolved?")
+ Cura.ComboBox
+ {
+ id: machineResolveComboBox
+ model: manager.updatableMachinesModel
+ visible: machineResolveStrategyTooltip.visible
+ textRole: "displayName"
+ width: parent.width
+ height: UM.Theme.getSize("button").height
+ onCurrentIndexChanged:
+ {
+ if (model.getItem(currentIndex).id == "new"
+ && model.getItem(currentIndex).type == "default_option")
+ {
+ manager.setResolveStrategy("machine", "new")
+ }
+ else
+ {
+ manager.setResolveStrategy("machine", "override")
+ manager.setMachineToOverride(model.getItem(currentIndex).id)
+ }
+ }
- UM.TooltipArea
- {
- id: machineResolveStrategyTooltip
- anchors.top: parent.top
- anchors.right: parent.right
- width: (parent.width / 3) | 0
- height: visible ? comboboxHeight : 0
- visible: base.visible && machineResolveComboBox.model.count > 1
- text: catalog.i18nc("@info:tooltip", "How should the conflict in the machine be resolved?")
- Cura.ComboBox
+ onVisibleChanged:
+ {
+ if (!visible) {return}
+
+ currentIndex = 0
+ // If the project printer exists in Cura, set it as the default dropdown menu option.
+ // No need to check object 0, which is the "Create new" option
+ for (var i = 1; i < model.count; i++)
+ {
+ if (model.getItem(i).name == manager.machineName)
+ {
+ currentIndex = i
+ break
+ }
+ }
+ // The project printer does not exist in Cura. If there is at least one printer of the same
+ // type, select the first one, else set the index to "Create new"
+ if (currentIndex == 0 && model.count > 1)
+ {
+ currentIndex = 1
+ }
+ }
+ }
+ }
+
+ Column
{
- id: machineResolveComboBox
- model: manager.updatableMachinesModel
- visible: machineResolveStrategyTooltip.visible
- textRole: "displayName"
width: parent.width
- height: UM.Theme.getSize("button").height
- onCurrentIndexChanged:
+ height: childrenRect.height
+
+ UM.Label
{
- if (model.getItem(currentIndex).id == "new"
- && model.getItem(currentIndex).type == "default_option")
+ id: printer_settings_label
+ text: catalog.i18nc("@action:label", "Printer settings")
+ font: UM.Theme.getFont("default_bold")
+ }
+
+ Row
+ {
+ width: parent.width
+ height: childrenRect.height
+
+ UM.Label
{
- manager.setResolveStrategy("machine", "new")
+ text: catalog.i18nc("@action:label", "Type")
+ width: (parent.width / 3) | 0
}
- else
+ UM.Label
{
- manager.setResolveStrategy("machine", "override")
- manager.setMachineToOverride(model.getItem(currentIndex).id)
+ text: manager.machineType
+ width: (parent.width / 3) | 0
}
}
- onVisibleChanged:
+ Row
{
- if (!visible) {return}
+ width: parent.width
+ height: childrenRect.height
- currentIndex = 0
- // If the project printer exists in Cura, set it as the default dropdown menu option.
- // No need to check object 0, which is the "Create new" option
- for (var i = 1; i < model.count; i++)
+ UM.Label
{
- if (model.getItem(i).name == manager.machineName)
- {
- currentIndex = i
- break
- }
+ text: catalog.i18nc("@action:label", manager.isPrinterGroup ? "Printer Group" : "Printer Name")
+ width: (parent.width / 3) | 0
}
- // The project printer does not exist in Cura. If there is at least one printer of the same
- // type, select the first one, else set the index to "Create new"
- if (currentIndex == 0 && model.count > 1)
+ UM.Label
{
- currentIndex = 1
+ text: manager.machineName
+ width: (parent.width / 3) | 0
+ wrapMode: Text.WordWrap
}
}
}
}
- Column
+ Item
{
width: parent.width
height: childrenRect.height
- UM.Label
+ UM.TooltipArea
{
- id: printer_settings_label
- text: catalog.i18nc("@action:label", "Printer settings")
- font: UM.Theme.getFont("default_bold")
+ anchors.right: parent.right
+ anchors.top: parent.top
+ width: (parent.width / 3) | 0
+ height: visible ? comboboxHeight : 0
+ visible: manager.qualityChangesConflict
+ text: catalog.i18nc("@info:tooltip", "How should the conflict in the profile be resolved?")
+ Cura.ComboBox
+ {
+ model: resolveStrategiesModel
+ textRole: "label"
+ id: qualityChangesResolveComboBox
+ width: parent.width
+ height: UM.Theme.getSize("button").height
+ onActivated:
+ {
+ manager.setResolveStrategy("quality_changes", resolveStrategiesModel.get(index).key)
+ }
+ }
}
- Row
+ Column
{
width: parent.width
height: childrenRect.height
UM.Label
{
- text: catalog.i18nc("@action:label", "Type")
- width: (parent.width / 3) | 0
+ text: catalog.i18nc("@action:label", "Profile settings")
+ font: UM.Theme.getFont("default_bold")
}
- UM.Label
+
+ Row
{
- text: manager.machineType
- width: (parent.width / 3) | 0
- }
- }
+ width: parent.width
+ height: childrenRect.height
- Row
- {
- width: parent.width
- height: childrenRect.height
+ UM.Label
+ {
+ text: catalog.i18nc("@action:label", "Name")
+ width: (parent.width / 3) | 0
+ }
+ UM.Label
+ {
+ text: manager.qualityName
+ width: (parent.width / 3) | 0
+ wrapMode: Text.WordWrap
+ }
+ }
- UM.Label
+ Row
{
- text: catalog.i18nc("@action:label", manager.isPrinterGroup ? "Printer Group" : "Printer Name")
- width: (parent.width / 3) | 0
+ width: parent.width
+ height: childrenRect.height
+
+ UM.Label
+ {
+ text: catalog.i18nc("@action:label", "Intent")
+ width: (parent.width / 3) | 0
+ }
+ UM.Label
+ {
+ text: manager.intentName
+ width: (parent.width / 3) | 0
+ wrapMode: Text.WordWrap
+ }
}
- UM.Label
+
+ Row
{
- text: manager.machineName
- width: (parent.width / 3) | 0
- wrapMode: Text.WordWrap
- }
- }
- }
- }
+ width: parent.width
+ height: childrenRect.height
- Item
- {
- width: parent.width
- height: childrenRect.height
+ UM.Label
+ {
+ text: catalog.i18nc("@action:label", "Not in profile")
+ visible: manager.numUserSettings != 0
+ width: (parent.width / 3) | 0
+ }
+ UM.Label
+ {
+ text: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", manager.numUserSettings).arg(manager.numUserSettings)
+ visible: manager.numUserSettings != 0
+ width: (parent.width / 3) | 0
+ }
+ }
- UM.TooltipArea
- {
- anchors.right: parent.right
- anchors.top: parent.top
- width: (parent.width / 3) | 0
- height: visible ? comboboxHeight : 0
- visible: manager.qualityChangesConflict
- text: catalog.i18nc("@info:tooltip", "How should the conflict in the profile be resolved?")
- Cura.ComboBox
- {
- model: resolveStrategiesModel
- textRole: "label"
- id: qualityChangesResolveComboBox
- width: parent.width
- height: UM.Theme.getSize("button").height
- onActivated:
+ Row
{
- manager.setResolveStrategy("quality_changes", resolveStrategiesModel.get(index).key)
+ width: parent.width
+ height: childrenRect.height
+
+ UM.Label
+ {
+ text: catalog.i18nc("@action:label", "Derivative from")
+ visible: manager.numSettingsOverridenByQualityChanges != 0
+ width: (parent.width / 3) | 0
+ }
+ UM.Label
+ {
+ text: catalog.i18ncp("@action:label", "%1, %2 override", "%1, %2 overrides", manager.numSettingsOverridenByQualityChanges).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges)
+ width: (parent.width / 3) | 0
+ visible: manager.numSettingsOverridenByQualityChanges != 0
+ wrapMode: Text.WordWrap
+ }
}
}
}
- Column
+ Item
{
width: parent.width
height: childrenRect.height
- UM.Label
+ UM.TooltipArea
{
- text: catalog.i18nc("@action:label", "Profile settings")
- font: UM.Theme.getFont("default_bold")
- }
-
- Row
- {
- width: parent.width
- height: childrenRect.height
-
- UM.Label
- {
- text: catalog.i18nc("@action:label", "Name")
- width: (parent.width / 3) | 0
- }
- UM.Label
+ id: materialResolveTooltip
+ anchors.right: parent.right
+ anchors.top: parent.top
+ width: (parent.width / 3) | 0
+ height: visible ? comboboxHeight : 0
+ visible: manager.materialConflict
+ text: catalog.i18nc("@info:tooltip", "How should the conflict in the material be resolved?")
+ Cura.ComboBox
{
- text: manager.qualityName
- width: (parent.width / 3) | 0
- wrapMode: Text.WordWrap
+ model: resolveStrategiesModel
+ textRole: "label"
+ id: materialResolveComboBox
+ width: parent.width
+ height: UM.Theme.getSize("button").height
+ onActivated:
+ {
+ manager.setResolveStrategy("material", resolveStrategiesModel.get(index).key)
+ }
}
}
- Row
+ Column
{
width: parent.width
height: childrenRect.height
-
- UM.Label
+ Row
{
- text: catalog.i18nc("@action:label", "Intent")
- width: (parent.width / 3) | 0
+ height: childrenRect.height
+ width: parent.width
+ spacing: UM.Theme.getSize("narrow_margin").width
+
+ UM.Label
+ {
+ text: catalog.i18nc("@action:label", "Material settings")
+ font: UM.Theme.getFont("default_bold")
+ width: (parent.width / 3) | 0
+ }
}
- UM.Label
+
+ Repeater
{
- text: manager.intentName
- width: (parent.width / 3) | 0
- wrapMode: Text.WordWrap
+ model: manager.materialLabels
+ delegate: Row
+ {
+ width: parent.width
+ height: childrenRect.height
+ UM.Label
+ {
+ text: catalog.i18nc("@action:label", "Name")
+ width: (parent.width / 3) | 0
+ }
+ UM.Label
+ {
+ text: modelData
+ width: (parent.width / 3) | 0
+ wrapMode: Text.WordWrap
+ }
+ }
}
}
+ }
+ Column
+ {
+ width: parent.width
+ height: childrenRect.height
+
+ UM.Label
+ {
+ text: catalog.i18nc("@action:label", "Setting visibility")
+ font: UM.Theme.getFont("default_bold")
+ }
Row
{
width: parent.width
height: childrenRect.height
-
UM.Label
{
- text: catalog.i18nc("@action:label", "Not in profile")
- visible: manager.numUserSettings != 0
+ text: catalog.i18nc("@action:label", "Mode")
width: (parent.width / 3) | 0
}
UM.Label
{
- text: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", manager.numUserSettings).arg(manager.numUserSettings)
- visible: manager.numUserSettings != 0
+ text: manager.activeMode
width: (parent.width / 3) | 0
}
}
-
Row
{
width: parent.width
height: childrenRect.height
-
+ visible: manager.hasVisibleSettingsField
UM.Label
{
- text: catalog.i18nc("@action:label", "Derivative from")
- visible: manager.numSettingsOverridenByQualityChanges != 0
+ text: catalog.i18nc("@action:label", "Visible settings:")
width: (parent.width / 3) | 0
}
UM.Label
{
- text: catalog.i18ncp("@action:label", "%1, %2 override", "%1, %2 overrides", manager.numSettingsOverridenByQualityChanges).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges)
+ text: catalog.i18nc("@action:label", "%1 out of %2" ).arg(manager.numVisibleSettings).arg(manager.totalNumberOfSettings)
width: (parent.width / 3) | 0
- visible: manager.numSettingsOverridenByQualityChanges != 0
- wrapMode: Text.WordWrap
}
}
}
- }
-
- Item
- {
- width: parent.width
- height: childrenRect.height
- UM.TooltipArea
- {
- id: materialResolveTooltip
- anchors.right: parent.right
- anchors.top: parent.top
- width: (parent.width / 3) | 0
- height: visible ? comboboxHeight : 0
- visible: manager.materialConflict
- text: catalog.i18nc("@info:tooltip", "How should the conflict in the material be resolved?")
- Cura.ComboBox
- {
- model: resolveStrategiesModel
- textRole: "label"
- id: materialResolveComboBox
- width: parent.width
- height: UM.Theme.getSize("button").height
- onActivated:
- {
- manager.setResolveStrategy("material", resolveStrategiesModel.get(index).key)
- }
- }
- }
-
- Column
+ Row
{
width: parent.width
height: childrenRect.height
- Row
+ visible: manager.hasObjectsOnPlate
+ UM.ColorImage
{
- height: childrenRect.height
- width: parent.width
- spacing: UM.Theme.getSize("narrow_margin").width
-
- UM.Label
- {
- text: catalog.i18nc("@action:label", "Material settings")
- font: UM.Theme.getFont("default_bold")
- width: (parent.width / 3) | 0
- }
+ width: warningLabel.height
+ height: width
+ source: UM.Theme.getIcon("Information")
+ color: UM.Theme.getColor("text")
}
-
- Repeater
+ UM.Label
{
- model: manager.materialLabels
- delegate: Row
- {
- width: parent.width
- height: childrenRect.height
- UM.Label
- {
- text: catalog.i18nc("@action:label", "Name")
- width: (parent.width / 3) | 0
- }
- UM.Label
- {
- text: modelData
- width: (parent.width / 3) | 0
- wrapMode: Text.WordWrap
- }
- }
+ id: warningLabel
+ text: catalog.i18nc("@action:warning", "Loading a project will clear all models on the build plate.")
}
}
}
+ }
+ }
- Column
+ property bool warning: manager.missingPackages.length > 0
+
+ footerComponent: Rectangle
+ {
+ color: warning ? UM.Theme.getColor("warning") : "transparent"
+ anchors.bottom: parent.bottom
+ width: parent.width
+ height: childrenRect.height + 2 * base.margin
+
+ Column
+ {
+ height: childrenRect.height
+ spacing: base.margin
+
+ anchors.margins: base.margin
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: parent.top
+
+ RowLayout
{
- width: parent.width
+ id: warningRow
height: childrenRect.height
-
- UM.Label
- {
- text: catalog.i18nc("@action:label", "Setting visibility")
- font: UM.Theme.getFont("default_bold")
- }
- Row
+ visible: warning
+ spacing: base.margin
+ UM.ColorImage
{
- width: parent.width
- height: childrenRect.height
- UM.Label
- {
- text: catalog.i18nc("@action:label", "Mode")
- width: (parent.width / 3) | 0
- }
- UM.Label
- {
- text: manager.activeMode
- width: (parent.width / 3) | 0
- }
+ width: UM.Theme.getSize("extruder_icon").width
+ height: UM.Theme.getSize("extruder_icon").height
+ source: UM.Theme.getIcon("Warning")
}
- Row
+
+ UM.Label
{
- width: parent.width
- height: childrenRect.height
- visible: manager.hasVisibleSettingsField
- UM.Label
- {
- text: catalog.i18nc("@action:label", "Visible settings:")
- width: (parent.width / 3) | 0
- }
- UM.Label
- {
- text: catalog.i18nc("@action:label", "%1 out of %2" ).arg(manager.numVisibleSettings).arg(manager.totalNumberOfSettings)
- width: (parent.width / 3) | 0
- }
+ id: warningText
+ text: "The material used in this project is currently not installed in Cura.<br/>Install the material profile and reopen the project."
}
}
- Row
+ Loader
{
width: parent.width
height: childrenRect.height
- visible: manager.hasObjectsOnPlate
- UM.ColorImage
- {
- width: warningLabel.height
- height: width
- source: UM.Theme.getIcon("Information")
- color: UM.Theme.getColor("text")
- }
- UM.Label
- {
- id: warningLabel
- text: catalog.i18nc("@action:warning", "Loading a project will clear all models on the build plate.")
- }
+ sourceComponent: buttonRow
}
}
}
@@ -447,13 +504,30 @@ UM.Dialog
rightButtons: [
Cura.TertiaryButton
{
+ visible: !warning
text: catalog.i18nc("@action:button", "Cancel")
onClicked: reject()
},
Cura.PrimaryButton
{
+ visible: !warning
text: catalog.i18nc("@action:button", "Open")
onClicked: accept()
+ },
+ Cura.TertiaryButton
+ {
+ visible: warning
+ text: catalog.i18nc("@action:button", "Open project anyway")
+ onClicked: {
+ manager.showMissingMaterialsWarning();
+ accept();
+ }
+ },
+ Cura.PrimaryButton
+ {
+ visible: warning
+ text: catalog.i18nc("@action:button", "Install missing material")
+ onClicked: manager.installMissingPackages()
}
]
diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py
index 853aa08513..d7d1380f9b 100644
--- a/plugins/3MFWriter/ThreeMFWriter.py
+++ b/plugins/3MFWriter/ThreeMFWriter.py
@@ -1,15 +1,19 @@
# Copyright (c) 2015-2022 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
-from typing import Optional
+import json
+
+from typing import Optional, cast, List, Dict
from UM.Mesh.MeshWriter import MeshWriter
from UM.Math.Vector import Vector
from UM.Logger import Logger
from UM.Math.Matrix import Matrix
from UM.Application import Application
+from UM.Message import Message
from UM.Scene.SceneNode import SceneNode
from cura.CuraApplication import CuraApplication
+from cura.CuraPackageManager import CuraPackageManager
from cura.Utils.Threading import call_on_qt_thread
from cura.Snapshot import Snapshot
@@ -34,6 +38,9 @@ import UM.Application
from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
+THUMBNAIL_PATH = "Metadata/thumbnail.png"
+MODEL_PATH = "3D/3dmodel.model"
+PACKAGE_METADATA_PATH = "Metadata/packages.json"
class ThreeMFWriter(MeshWriter):
def __init__(self):
@@ -46,7 +53,7 @@ class ThreeMFWriter(MeshWriter):
}
self._unit_matrix_string = self._convertMatrixToString(Matrix())
- self._archive = None # type: Optional[zipfile.ZipFile]
+ self._archive: Optional[zipfile.ZipFile] = None
self._store_archive = False
def _convertMatrixToString(self, matrix):
@@ -132,11 +139,11 @@ class ThreeMFWriter(MeshWriter):
def getArchive(self):
return self._archive
- def write(self, stream, nodes, mode = MeshWriter.OutputMode.BinaryMode):
+ def write(self, stream, nodes, mode = MeshWriter.OutputMode.BinaryMode) -> bool:
self._archive = None # Reset archive
archive = zipfile.ZipFile(stream, "w", compression = zipfile.ZIP_DEFLATED)
try:
- model_file = zipfile.ZipInfo("3D/3dmodel.model")
+ model_file = zipfile.ZipInfo(MODEL_PATH)
# Because zipfile is stupid and ignores archive-level compression settings when writing with ZipInfo.
model_file.compress_type = zipfile.ZIP_DEFLATED
@@ -151,7 +158,7 @@ class ThreeMFWriter(MeshWriter):
relations_file = zipfile.ZipInfo("_rels/.rels")
relations_file.compress_type = zipfile.ZIP_DEFLATED
relations_element = ET.Element("Relationships", xmlns = self._namespaces["relationships"])
- model_relation_element = ET.SubElement(relations_element, "Relationship", Target = "/3D/3dmodel.model", Id = "rel0", Type = "http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel")
+ model_relation_element = ET.SubElement(relations_element, "Relationship", Target = "/" + MODEL_PATH, Id = "rel0", Type = "http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel")
# Attempt to add a thumbnail
snapshot = self._createSnapshot()
@@ -160,28 +167,32 @@ class ThreeMFWriter(MeshWriter):
thumbnail_buffer.open(QBuffer.OpenModeFlag.ReadWrite)
snapshot.save(thumbnail_buffer, "PNG")
- thumbnail_file = zipfile.ZipInfo("Metadata/thumbnail.png")
+ thumbnail_file = zipfile.ZipInfo(THUMBNAIL_PATH)
# Don't try to compress snapshot file, because the PNG is pretty much as compact as it will get
archive.writestr(thumbnail_file, thumbnail_buffer.data())
# Add PNG to content types file
thumbnail_type = ET.SubElement(content_types, "Default", Extension = "png", ContentType = "image/png")
# Add thumbnail relation to _rels/.rels file
- thumbnail_relation_element = ET.SubElement(relations_element, "Relationship", Target = "/Metadata/thumbnail.png", Id = "rel1", Type = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail")
+ thumbnail_relation_element = ET.SubElement(relations_element, "Relationship", Target = "/" + THUMBNAIL_PATH, Id = "rel1", Type = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail")
+
+ # Write material metadata
+ material_metadata = self._getMaterialPackageMetadata()
+ self._storeMetadataJson({"packages": material_metadata}, archive, PACKAGE_METADATA_PATH)
savitar_scene = Savitar.Scene()
- metadata_to_store = CuraApplication.getInstance().getController().getScene().getMetaData()
+ scene_metadata = CuraApplication.getInstance().getController().getScene().getMetaData()
- for key, value in metadata_to_store.items():
+ for key, value in scene_metadata.items():
savitar_scene.setMetaDataEntry(key, value)
current_time_string = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
- if "Application" not in metadata_to_store:
+ if "Application" not in scene_metadata:
# This might sound a bit strange, but this field should store the original application that created
# the 3mf. So if it was already set, leave it to whatever it was.
savitar_scene.setMetaDataEntry("Application", CuraApplication.getInstance().getApplicationDisplayName())
- if "CreationDate" not in metadata_to_store:
+ if "CreationDate" not in scene_metadata:
savitar_scene.setMetaDataEntry("CreationDate", current_time_string)
savitar_scene.setMetaDataEntry("ModificationDate", current_time_string)
@@ -233,6 +244,53 @@ class ThreeMFWriter(MeshWriter):
return True
+ @staticmethod
+ def _storeMetadataJson(metadata: Dict[str, List[Dict[str, str]]], archive: zipfile.ZipFile, path: str) -> None:
+ """Stores metadata inside archive path as json file"""
+ metadata_file = zipfile.ZipInfo(path)
+ # We have to set the compress type of each file as well (it doesn't keep the type of the entire archive)
+ metadata_file.compress_type = zipfile.ZIP_DEFLATED
+ archive.writestr(metadata_file, json.dumps(metadata, separators=(", ", ": "), indent=4, skipkeys=True, ensure_ascii=False))
+
+ @staticmethod
+ def _getMaterialPackageMetadata() -> List[Dict[str, str]]:
+ """Get metadata for installed materials in active extruder stack, this does not include bundled materials.
+
+ :return: List of material metadata dictionaries.
+ """
+ metadata = {}
+
+ package_manager = cast(CuraPackageManager, CuraApplication.getInstance().getPackageManager())
+
+ for extruder in CuraApplication.getInstance().getExtruderManager().getActiveExtruderStacks():
+ if not extruder.isEnabled:
+ # Don't export materials not in use
+ continue
+
+ package_id = package_manager.getMaterialFilePackageId(extruder.material.getFileName(), extruder.material.getMetaDataEntry("GUID"))
+ package_data = package_manager.getInstalledPackageInfo(package_id)
+
+ if not package_data:
+ message = Message(catalog.i18nc("@error:material",
+ "It was not possible to store material package information in project file: {material}. This project may not open correctly on other systems.".format(material=extruder.getName())),
+ title=catalog.i18nc("@info:title", "Failed to save material package information"),
+ message_type=Message.MessageType.WARNING)
+ message.show()
+ continue
+
+ if package_data.get("is_bundled"):
+ continue
+
+ material_metadata = {"id": package_id,
+ "display_name": package_data.get("display_name") if package_data.get("display_name") else "",
+ "package_version": package_data.get("package_version") if package_data.get("package_version") else "",
+ "sdk_version_semver": package_data.get("sdk_version_semver") if package_data.get("sdk_version_semver") else ""}
+
+ metadata[package_id] = material_metadata
+
+ # Storing in a dict and fetching values to avoid duplicates
+ return list(metadata.values())
+
@call_on_qt_thread # must be called from the main thread because of OpenGL
def _createSnapshot(self):
Logger.log("d", "Creating thumbnail image...")
diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py
index d7ed5fac21..18088a99c6 100755
--- a/plugins/CuraEngineBackend/CuraEngineBackend.py
+++ b/plugins/CuraEngineBackend/CuraEngineBackend.py
@@ -60,7 +60,7 @@ class CuraEngineBackend(QObject, Backend):
executable_name = "CuraEngine"
if Platform.isWindows():
executable_name += ".exe"
- default_engine_location = executable_name
+ self._default_engine_location = executable_name
search_path = [
os.path.abspath(os.path.dirname(sys.executable)),
@@ -74,29 +74,29 @@ class CuraEngineBackend(QObject, Backend):
for path in search_path:
engine_path = os.path.join(path, executable_name)
if os.path.isfile(engine_path):
- default_engine_location = engine_path
+ self._default_engine_location = engine_path
break
- if Platform.isLinux() and not default_engine_location:
+ if Platform.isLinux() and not self._default_engine_location:
if not os.getenv("PATH"):
raise OSError("There is something wrong with your Linux installation.")
for pathdir in cast(str, os.getenv("PATH")).split(os.pathsep):
execpath = os.path.join(pathdir, executable_name)
if os.path.exists(execpath):
- default_engine_location = execpath
+ self._default_engine_location = execpath
break
application = CuraApplication.getInstance() #type: CuraApplication
self._multi_build_plate_model = None #type: Optional[MultiBuildPlateModel]
self._machine_error_checker = None #type: Optional[MachineErrorChecker]
- if not default_engine_location:
+ if not self._default_engine_location:
raise EnvironmentError("Could not find CuraEngine")
- Logger.log("i", "Found CuraEngine at: %s", default_engine_location)
+ Logger.log("i", "Found CuraEngine at: %s", self._default_engine_location)
- default_engine_location = os.path.abspath(default_engine_location)
- application.getPreferences().addPreference("backend/location", default_engine_location)
+ self._default_engine_location = os.path.abspath(self._default_engine_location)
+ application.getPreferences().addPreference("backend/location", self._default_engine_location)
# Workaround to disable layer view processing if layer view is not active.
self._layer_view_active = False #type: bool
@@ -215,7 +215,12 @@ class CuraEngineBackend(QObject, Backend):
This is useful for debugging and used to actually start the engine.
:return: list of commands and args / parameters.
"""
- command = [CuraApplication.getInstance().getPreferences().getValue("backend/location"), "connect", "127.0.0.1:{0}".format(self._port), ""]
+ from cura import ApplicationMetadata
+ if ApplicationMetadata.IsEnterpriseVersion:
+ command = [self._default_engine_location]
+ else:
+ command = [CuraApplication.getInstance().getPreferences().getValue("backend/location")]
+ command += ["connect", "127.0.0.1:{0}".format(self._port), ""]
parser = argparse.ArgumentParser(prog = "cura", add_help = False)
parser.add_argument("--debug", action = "store_true", default = False, help = "Turn on the debug mode by setting this option.")
diff --git a/plugins/Marketplace/InstallMissingPackagesDialog.py b/plugins/Marketplace/InstallMissingPackagesDialog.py
new file mode 100644
index 0000000000..bd7c08d9b9
--- /dev/null
+++ b/plugins/Marketplace/InstallMissingPackagesDialog.py
@@ -0,0 +1,67 @@
+# Copyright (c) 2022 Ultimaker B.V.
+# Cura is released under the terms of the LGPLv3 or higher.
+
+import os
+
+from PyQt6.QtCore import QObject, pyqtSignal, pyqtProperty
+from typing import Optional, List, Dict, cast, Callable
+from cura.CuraApplication import CuraApplication
+from UM.PluginRegistry import PluginRegistry
+from cura.CuraPackageManager import CuraPackageManager
+from UM.i18n import i18nCatalog
+
+from UM.FlameProfiler import pyqtSlot
+from .MissingPackageList import MissingPackageList
+
+i18n_catalog = i18nCatalog("cura")
+
+class InstallMissingPackageDialog(QObject):
+ """Dialog used to display packages that need to be installed to load 3mf file materials"""
+ def __init__(self, packages_metadata: List[Dict[str, str]], show_missing_materials_warning: Callable[[], None]) -> None:
+ """Initialize
+
+ :param packages_metadata: List of dictionaries containing information about missing packages.
+ """
+ super().__init__()
+
+ self._plugin_registry: PluginRegistry = CuraApplication.getInstance().getPluginRegistry()
+ self._package_manager: CuraPackageManager = cast(CuraPackageManager, CuraApplication.getInstance().getPackageManager())
+ self._package_manager.installedPackagesChanged.connect(self.checkIfRestartNeeded)
+
+ self._dialog: Optional[QObject] = None
+ self._restart_needed = False
+ self._package_metadata: List[Dict[str, str]] = packages_metadata
+
+ self._package_model: MissingPackageList = MissingPackageList(packages_metadata)
+ self._show_missing_materials_warning = show_missing_materials_warning
+
+ def show(self) -> None:
+ plugin_path = self._plugin_registry.getPluginPath("Marketplace")
+ if plugin_path is None:
+ plugin_path = os.path.dirname(__file__)
+
+ # create a QML component for the license dialog
+ license_dialog_component_path = os.path.join(plugin_path, "resources", "qml", "InstallMissingPackagesDialog.qml")
+ self._dialog = CuraApplication.getInstance().createQmlComponent(license_dialog_component_path, {"manager": self})
+ self._dialog.show()
+
+ def checkIfRestartNeeded(self) -> None:
+ if self._dialog is None:
+ return
+
+ self._restart_needed = self._package_manager.hasPackagesToRemoveOrInstall
+ self.showRestartChanged.emit()
+
+ showRestartChanged = pyqtSignal()
+
+ @pyqtProperty(bool, notify=showRestartChanged)
+ def showRestartNotification(self) -> bool:
+ return self._restart_needed
+
+ @pyqtProperty(QObject)
+ def model(self) -> MissingPackageList:
+ return self._package_model
+
+ @pyqtSlot()
+ def showMissingMaterialsWarning(self) -> None:
+ self._show_missing_materials_warning()
diff --git a/plugins/Marketplace/Marketplace.py b/plugins/Marketplace/Marketplace.py
index 171e3f915b..b2c729c2cd 100644
--- a/plugins/Marketplace/Marketplace.py
+++ b/plugins/Marketplace/Marketplace.py
@@ -3,15 +3,15 @@
import os.path
from PyQt6.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject
-from typing import Optional, cast
+from typing import Callable, cast, Dict, List, Optional
from cura.CuraApplication import CuraApplication # Creating QML objects and managing packages.
-
from UM.Extension import Extension # We are implementing the main object of an extension here.
from UM.PluginRegistry import PluginRegistry # To find out where we are stored (the proper way).
-from .RemotePackageList import RemotePackageList # To register this type with QML.
+from .InstallMissingPackagesDialog import InstallMissingPackageDialog # To allow creating this dialogue from outside of the plug-in.
from .LocalPackageList import LocalPackageList # To register this type with QML.
+from .RemotePackageList import RemotePackageList # To register this type with QML.
class Marketplace(Extension, QObject):
@@ -41,6 +41,7 @@ class Marketplace(Extension, QObject):
self._tab_shown: int = 0
self._restart_needed = False
+ self.missingPackageDialog = None
def getTabShown(self) -> int:
return self._tab_shown
@@ -103,6 +104,9 @@ class Marketplace(Extension, QObject):
self.setTabShown(1)
def checkIfRestartNeeded(self) -> None:
+ if self._window is None:
+ return
+
if self._package_manager.hasPackagesToRemoveOrInstall or \
cast(PluginRegistry, self._plugin_registry).getCurrentSessionActivationChangedPlugins():
self._restart_needed = True
@@ -115,3 +119,15 @@ class Marketplace(Extension, QObject):
@pyqtProperty(bool, notify=showRestartNotificationChanged)
def showRestartNotification(self) -> bool:
return self._restart_needed
+
+ def showInstallMissingPackageDialog(self, packages_metadata: List[Dict[str, str]], ignore_warning_callback: Callable[[], None]) -> None:
+ """
+ Show a dialog that prompts the user to install certain packages.
+
+ The dialog is worded for packages that are missing and required for a certain operation.
+ :param packages_metadata: The metadata of the packages that are missing.
+ :param ignore_warning_callback: A callback that gets executed when the user ignores the pop-up, to show them a
+ warning.
+ """
+ self.missingPackageDialog = InstallMissingPackageDialog(packages_metadata, ignore_warning_callback)
+ self.missingPackageDialog.show()
diff --git a/plugins/Marketplace/MissingPackageList.py b/plugins/Marketplace/MissingPackageList.py
new file mode 100644
index 0000000000..385e78b95f
--- /dev/null
+++ b/plugins/Marketplace/MissingPackageList.py
@@ -0,0 +1,46 @@
+# Copyright (c) 2022 Ultimaker B.V.
+# Cura is released under the terms of the LGPLv3 or higher.
+
+from typing import Optional, TYPE_CHECKING, Dict, List
+
+from .Constants import PACKAGES_URL
+from .PackageModel import PackageModel
+from .RemotePackageList import RemotePackageList
+from PyQt6.QtCore import pyqtSignal, QObject, pyqtProperty, QCoreApplication
+
+from UM.TaskManagement.HttpRequestManager import HttpRequestManager # To request the package list from the API.
+from UM.i18n import i18nCatalog
+
+if TYPE_CHECKING:
+ from PyQt6.QtCore import QObject, pyqtProperty, pyqtSignal
+
+catalog = i18nCatalog("cura")
+
+class MissingPackageList(RemotePackageList):
+ def __init__(self, packages_metadata: List[Dict[str, str]], parent: Optional["QObject"] = None) -> None:
+ super().__init__(parent)
+ self._packages_metadata: List[Dict[str, str]] = packages_metadata
+ self._package_type_filter = "material"
+ self._search_type = "package_ids"
+ self._requested_search_string = ",".join(map(lambda package: package["id"], packages_metadata))
+
+ def _parseResponse(self, reply: "QNetworkReply") -> None:
+ super()._parseResponse(reply)
+
+ # At the end of the list we want to show some information about packages the user is missing that can't be found
+ # This will add cards with some information about the missing packages
+ if not self.hasMore:
+ self._addPackagesMissingFromRequest()
+
+ def _addPackagesMissingFromRequest(self) -> None:
+ """Create cards for packages the user needs to install that could not be found"""
+ returned_packages_ids = [item["package"].packageId for item in self._items]
+
+ for package_metadata in self._packages_metadata:
+ if package_metadata["id"] not in returned_packages_ids:
+ package = PackageModel.fromIncompletePackageInformation(package_metadata["display_name"], package_metadata["package_version"], self._package_type_filter)
+ self.appendItem({"package": package})
+
+ self.itemsChanged.emit()
+
+
diff --git a/plugins/Marketplace/PackageList.py b/plugins/Marketplace/PackageList.py
index 30162afe6c..3306e10740 100644
--- a/plugins/Marketplace/PackageList.py
+++ b/plugins/Marketplace/PackageList.py
@@ -244,7 +244,10 @@ class PackageList(ListModel):
def _downloadError(self, package_id: str, update: bool = False, reply: Optional["QNetworkReply"] = None, error: Optional["QNetworkReply.NetworkError"] = None) -> None:
if reply:
- reply_string = bytes(reply.readAll()).decode()
+ try:
+ reply_string = bytes(reply.readAll()).decode()
+ except UnicodeDecodeError:
+ reply_string = "<error message is corrupt too>"
Logger.error(f"Failed to download package: {package_id} due to {reply_string}")
self._package_manager.packageInstallingFailed.emit(package_id)
diff --git a/plugins/Marketplace/PackageModel.py b/plugins/Marketplace/PackageModel.py
index bd1b0681fc..078bfc879e 100644
--- a/plugins/Marketplace/PackageModel.py
+++ b/plugins/Marketplace/PackageModel.py
@@ -84,6 +84,20 @@ class PackageModel(QObject):
self._is_busy = False
+ self._is_missing_package_information = False
+
+ @classmethod
+ def fromIncompletePackageInformation(cls, display_name: str, package_version: str, package_type: str) -> "PackageModel":
+ package_data = {
+ "display_name": display_name,
+ "package_version": package_version,
+ "package_type": package_type,
+ "description": "The material package associated with the Cura project could not be found on the Ultimaker marketplace. Use the partial material profile definition stored in the Cura project file at your own risk."
+ }
+ package_model = cls(package_data)
+ package_model.setIsMissingPackageInformation(True)
+ return package_model
+
@pyqtSlot()
def _processUpdatedPackages(self):
self.setCanUpdate(self._package_manager.checkIfPackageCanUpdate(self._package_id))
@@ -385,3 +399,14 @@ class PackageModel(QObject):
def canUpdate(self) -> bool:
"""Flag indicating if the package can be updated"""
return self._can_update
+
+ isMissingPackageInformationChanged = pyqtSignal()
+
+ def setIsMissingPackageInformation(self, isMissingPackageInformation: bool) -> None:
+ self._is_missing_package_information = isMissingPackageInformation
+ self.isMissingPackageInformationChanged.emit()
+
+ @pyqtProperty(bool, notify=isMissingPackageInformationChanged)
+ def isMissingPackageInformation(self) -> bool:
+ """Flag indicating if the package can be updated"""
+ return self._is_missing_package_information
diff --git a/plugins/Marketplace/RemotePackageList.py b/plugins/Marketplace/RemotePackageList.py
index c20efabbc2..d06d2c64c5 100644
--- a/plugins/Marketplace/RemotePackageList.py
+++ b/plugins/Marketplace/RemotePackageList.py
@@ -28,6 +28,7 @@ class RemotePackageList(PackageList):
self._package_type_filter = ""
self._requested_search_string = ""
self._current_search_string = ""
+ self._search_type = "search"
self._request_url = self._initialRequestUrl()
self._ongoing_requests["get_packages"] = None
self.isLoadingChanged.connect(self._onLoadingChanged)
@@ -100,7 +101,7 @@ class RemotePackageList(PackageList):
if self._package_type_filter != "":
request_url += f"&package_type={self._package_type_filter}"
if self._current_search_string != "":
- request_url += f"&search={self._current_search_string}"
+ request_url += f"&{self._search_type}={self._current_search_string}"
return request_url
def _parseResponse(self, reply: "QNetworkReply") -> None:
diff --git a/plugins/Marketplace/__init__.py b/plugins/Marketplace/__init__.py
index ef1beab33e..655cf6bf84 100644
--- a/plugins/Marketplace/__init__.py
+++ b/plugins/Marketplace/__init__.py
@@ -14,4 +14,4 @@ def register(app):
"""
Register the plug-in object with Uranium.
"""
- return { "extension": [Marketplace(), SyncOrchestrator(app)] }
+ return { "extension": [SyncOrchestrator(app), Marketplace()] }
diff --git a/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml b/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml
new file mode 100644
index 0000000000..edad18f1a8
--- /dev/null
+++ b/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml
@@ -0,0 +1,21 @@
+// Copyright (c) 2021 Ultimaker B.V.
+// Cura is released under the terms of the LGPLv3 or higher.
+
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Layouts 1.15
+import QtQuick.Window 2.2
+
+import UM 1.5 as UM
+import Cura 1.6 as Cura
+
+Marketplace
+{
+ modality: Qt.ApplicationModal
+ title: catalog.i18nc("@title", "Install missing Materials")
+ pageContentsSource: "MissingPackages.qml"
+ showSearchHeader: false
+ showOnboadBanner: false
+
+ onClosing: manager.showMissingMaterialsWarning()
+}
diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml
index d925f265d9..2a3c5f69ce 100644
--- a/plugins/Marketplace/resources/qml/Marketplace.qml
+++ b/plugins/Marketplace/resources/qml/Marketplace.qml
@@ -16,6 +16,10 @@ Window
signal searchStringChanged(string new_search)
+ property alias showOnboadBanner: onBoardBanner.visible
+ property alias showSearchHeader: searchHeader.visible
+ property alias pageContentsSource: content.source
+
minimumWidth: UM.Theme.getSize("modal_window_minimum").width
minimumHeight: UM.Theme.getSize("modal_window_minimum").height
width: minimumWidth
@@ -86,6 +90,7 @@ Window
OnboardBanner
{
+ id: onBoardBanner
visible: content.item && content.item.bannerVisible
text: content.item && content.item.bannerText
icon: content.item && content.item.bannerIcon
@@ -100,6 +105,7 @@ Window
// Search & Top-Level Tabs
Item
{
+ id: searchHeader
implicitHeight: childrenRect.height
implicitWidth: parent.width - 2 * UM.Theme.getSize("default_margin").width
Layout.alignment: Qt.AlignHCenter
@@ -186,7 +192,7 @@ Window
{
text: catalog.i18nc("@info", "Search in the browser")
iconSource: UM.Theme.getIcon("LinkExternal")
- visible: pageSelectionTabBar.currentItem.hasSearch
+ visible: pageSelectionTabBar.currentItem.hasSearch && searchHeader.visible
isIconOnRightSide: true
height: fontMetrics.height
textFont: fontMetrics.font
diff --git a/plugins/Marketplace/resources/qml/MissingPackages.qml b/plugins/Marketplace/resources/qml/MissingPackages.qml
new file mode 100644
index 0000000000..316d048317
--- /dev/null
+++ b/plugins/Marketplace/resources/qml/MissingPackages.qml
@@ -0,0 +1,15 @@
+// Copyright (c) 2021 Ultimaker B.V.
+// Cura is released under the terms of the LGPLv3 or higher.
+
+import UM 1.4 as UM
+
+Packages
+{
+ pageTitle: catalog.i18nc("@header", "Install Materials")
+
+ bannerVisible: false
+ showUpdateButton: false
+ showInstallButton: true
+
+ model: manager.model
+}
diff --git a/plugins/Marketplace/resources/qml/PackageCard.qml b/plugins/Marketplace/resources/qml/PackageCard.qml
index 52254a478f..b74dad0712 100644
--- a/plugins/Marketplace/resources/qml/PackageCard.qml
+++ b/plugins/Marketplace/resources/qml/PackageCard.qml
@@ -18,6 +18,8 @@ Rectangle
height: childrenRect.height
color: UM.Theme.getColor("main_background")
radius: UM.Theme.getSize("default_radius").width
+ border.color: packageData.isMissingPackageInformation ? UM.Theme.getColor("warning") : "transparent"
+ border.width: packageData.isMissingPackageInformation ? UM.Theme.getSize("default_lining").width : 0
PackageCardHeader
{
diff --git a/plugins/Marketplace/resources/qml/PackageCardHeader.qml b/plugins/Marketplace/resources/qml/PackageCardHeader.qml
index 00d107f4fc..6c9d533bb5 100644
--- a/plugins/Marketplace/resources/qml/PackageCardHeader.qml
+++ b/plugins/Marketplace/resources/qml/PackageCardHeader.qml
@@ -19,6 +19,8 @@ Item
property bool showInstallButton: false
property bool showUpdateButton: false
+ property string missingPackageReadMoreUrl: "https://ultimaker.atlassian.net/wiki/spaces/SD/pages/1231916580/Campaign+links+from+Cura+to+the+Ultimaker+domain"
+
width: parent.width
height: UM.Theme.getSize("card").height
@@ -87,6 +89,14 @@ Item
Layout.preferredWidth: parent.width
Layout.preferredHeight: childrenRect.height
+ UM.StatusIcon
+ {
+ width: UM.Theme.getSize("section_icon").width + UM.Theme.getSize("narrow_margin").width
+ height: UM.Theme.getSize("section_icon").height
+ status: UM.StatusIcon.Status.WARNING
+ visible: packageData.isMissingPackageInformation
+ }
+
UM.Label
{
text: packageData.displayName
@@ -109,6 +119,7 @@ Item
Button
{
id: externalLinkButton
+ visible: !packageData.isMissingPackageInformation
// For some reason if i set padding, they don't match up. If i set all of them explicitly, it does work?
leftPadding: UM.Theme.getSize("narrow_margin").width
@@ -155,6 +166,7 @@ Item
UM.Label
{
id: authorBy
+ visible: !packageData.isMissingPackageInformation
Layout.alignment: Qt.AlignCenter
text: catalog.i18nc("@label Is followed by the name of an author", "By")
@@ -165,6 +177,7 @@ Item
// clickable author name
Item
{
+ visible: !packageData.isMissingPackageInformation
Layout.fillWidth: true
implicitHeight: authorBy.height
Layout.alignment: Qt.AlignTop
@@ -182,10 +195,29 @@ Item
}
}
+ Item
+ {
+ visible: packageData.isMissingPackageInformation
+ Layout.fillWidth: true
+ implicitHeight: readMoreButton.height
+ Layout.alignment: Qt.AlignTop
+ Cura.TertiaryButton
+ {
+ id: readMoreButton
+ text: catalog.i18nc("@button:label", "Learn More")
+ leftPadding: 0
+ rightPadding: 0
+ iconSource: UM.Theme.getIcon("LinkExternal")
+ isIconOnRightSide: true
+
+ onClicked: Qt.openUrlExternally(missingPackageReadMoreUrl)
+ }
+ }
+
ManageButton
{
id: enableManageButton
- visible: showDisableButton && packageData.isInstalled && !packageData.isToBeInstalled && packageData.packageType != "material"
+ visible: showDisableButton && packageData.isInstalled && !packageData.isToBeInstalled && packageData.packageType != "material" && !packageData.isMissingPackageInformation
enabled: !packageData.busy
button_style: !packageData.isActive
@@ -199,7 +231,7 @@ Item
ManageButton
{
id: installManageButton
- visible: showInstallButton && (packageData.canDowngrade || !packageData.isBundled)
+ visible: showInstallButton && (packageData.canDowngrade || !packageData.isBundled) && !packageData.isMissingPackageInformation
enabled: !packageData.busy
busy: packageData.busy
button_style: !(packageData.isInstalled || packageData.isToBeInstalled)
@@ -229,7 +261,7 @@ Item
ManageButton
{
id: updateManageButton
- visible: showUpdateButton && packageData.canUpdate
+ visible: showUpdateButton && packageData.canUpdate && !packageData.isMissingPackageInformation
enabled: !packageData.busy
busy: packageData.busy
Layout.alignment: Qt.AlignTop
diff --git a/plugins/Marketplace/resources/qml/Packages.qml b/plugins/Marketplace/resources/qml/Packages.qml
index 70ff7de195..6e83f1e33b 100644
--- a/plugins/Marketplace/resources/qml/Packages.qml
+++ b/plugins/Marketplace/resources/qml/Packages.qml
@@ -62,8 +62,11 @@ ListView
hoverEnabled: true
onClicked:
{
- packages.selectedPackage = model.package;
- contextStack.push(packageDetailsComponent);
+ if (!model.package.isMissingPackageInformation)
+ {
+ packages.selectedPackage = model.package;
+ contextStack.push(packageDetailsComponent);
+ }
}
PackageCard
diff --git a/plugins/MonitorStage/MonitorMain.qml b/plugins/MonitorStage/MonitorMain.qml
index fdb67d0feb..5d63ac5b83 100644
--- a/plugins/MonitorStage/MonitorMain.qml
+++ b/plugins/MonitorStage/MonitorMain.qml
@@ -122,6 +122,7 @@ Rectangle
}
visible: !isNetworkConfigured && isNetworkConfigurable
width: childrenRect.width
+ height: childrenRect.height
UM.ColorImage
{
diff --git a/plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py b/plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py
index e0b156dc08..fd8118306b 100644
--- a/plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py
+++ b/plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py
@@ -169,7 +169,10 @@ class ClusterApiClient:
"""
def parse() -> None:
- self._anti_gc_callbacks.remove(parse)
+ try:
+ self._anti_gc_callbacks.remove(parse)
+ except ValueError: # Already removed asynchronously.
+ return # Then the rest of the function is also already executed.
# Don't try to parse the reply if we didn't get one
if reply.attribute(QNetworkRequest.Attribute.HttpStatusCodeAttribute) is None:
diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py
index 1b88272d49..d7d11a1f44 100644
--- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py
+++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py
@@ -343,6 +343,9 @@ class XmlMaterialProfile(InstanceContainer):
return stream.getvalue().decode("utf-8")
+ def getFileName(self) -> str:
+ return (self.getMetaDataEntry("base_file") + ".xml.fdm_material").replace(" ", "+")
+
# Recursively resolve loading inherited files
def _resolveInheritance(self, file_name):
xml = self._loadFile(file_name)
@@ -477,6 +480,15 @@ class XmlMaterialProfile(InstanceContainer):
return version * 1000000 + setting_version
+ @classmethod
+ def getMetadataFromSerialized(cls, serialized: str, property_name: str) -> str:
+ data = ET.fromstring(serialized)
+ metadata = data.find("./um:metadata", cls.__namespaces)
+ property = metadata.find("./um:" + property_name, cls.__namespaces)
+
+ # This is a necessary property != None check, xml library overrides __bool__ to return False in cases when Element is not None.
+ return property.text if property != None else ""
+
def deserialize(self, serialized, file_name = None):
"""Overridden from InstanceContainer"""
diff --git a/resources/definitions/SV02.def.json b/resources/definitions/SV02.def.json
index 067422354e..352cd23394 100644
--- a/resources/definitions/SV02.def.json
+++ b/resources/definitions/SV02.def.json
@@ -44,7 +44,6 @@
"machine_max_jerk_xy": { "value": 8 },
"machine_max_jerk_z": { "value": 0.4 },
"machine_max_jerk_e": { "value": 5 },
- "machine_heated_bed": { "default_value": true },
"material_diameter": { "default_value": 1.75 },
"infill_overlap": { "default_value": 15 },
"acceleration_print": { "value": 500 },
diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json
index c411162359..6763cbb7f2 100644
--- a/resources/definitions/fdmprinter.def.json
+++ b/resources/definitions/fdmprinter.def.json
@@ -2256,7 +2256,7 @@
"maximum_value": "machine_height",
"maximum_value_warning": "resolveOrValue('infill_sparse_thickness') * 10",
"type": "float",
- "value": "0 if infill_sparse_density > 0 else 0",
+ "value": "0",
"limit_to_extruder": "infill_extruder_nr",
"enabled": "infill_sparse_density > 0",
"settable_per_mesh": true,
diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json
index 5818c11a6f..8c6d8c0dda 100644
--- a/resources/definitions/ultimaker.def.json
+++ b/resources/definitions/ultimaker.def.json
@@ -50,23 +50,29 @@
"wall_thickness": {
"value": "wall_line_width_0 + wall_line_width_x"
},
- "infill_before_walls": {
- "value": "False"
- },
"infill_material_flow": {
"value": "(1.95-infill_sparse_density / 100 if infill_sparse_density > 95 else 1) * material_flow"
},
"retraction_combing": {
"value": "'no_outer_surfaces'"
},
+ "retraction_count_max": {
+ "value": 25
+ },
+ "retraction_extrusion_window": {
+ "value": 1
+ },
"roofing_layer_count": {
- "value": "0"
+ "value": "1"
},
"roofing_material_flow": {
"value": "material_flow"
},
"skin_material_flow": {
- "value": "0.97 * material_flow"
+ "value": "0.95 * material_flow"
+ },
+ "support_interface_material_flow": {
+ "value": "skin_material_flow"
},
"skin_monotonic" : {
"value": true
@@ -89,11 +95,124 @@
"meshfix_maximum_deviation": {
"value": "machine_nozzle_size / 10"
},
- "jerk_travel": {
- "value": "jerk_print"
+ "jerk_travel_enabled": {
+ "value": false
+ },
+ "acceleration_travel_enabled": {
+ "value": false
},
"acceleration_travel": {
"value": "acceleration_wall"
+ },
+ "skin_edge_support_thickness": {
+ "value": "4 * layer_height if infill_sparse_density < 30 else 0"
+ },
+ "bridge_settings_enabled": {
+ "value": false
+ },
+ "bridge_wall_min_length": {
+ "value": 0
+ },
+ "bridge_skin_support_threshold": {
+ "value": 50
+ },
+ "bridge_sparse_infill_max_density": {
+ "value": 0
+ },
+ "bridge_wall_coast": {
+ "value": 0
+ },
+ "bridge_wall_speed": {
+ "value": "speed_wall"
+ },
+ "bridge_wall_material_flow": {
+ "value": "wall_material_flow"
+ },
+ "bridge_skin_speed": {
+ "value": "speed_topbottom"
+ },
+ "bridge_skin_material_flow": {
+ "value": "skin_material_flow"
+ },
+ "bridge_skin_density": {
+ "value": "80"
+ },
+ "bridge_fan_speed": {
+ "value": "cool_fan_speed_max"
+ },
+ "bridge_enable_more_layers": {
+ "value": false
+ },
+ "bridge_skin_speed_2": {
+ "value": "speed_topbottom"
+ },
+ "bridge_skin_material_flow_2": {
+ "value": "skin_material_flow"
+ },
+ "bridge_skin_density_2": {
+ "value": 100
+ },
+ "bridge_fan_speed_2": {
+ "value": "cool_fan_speed_min"
+ },
+ "bridge_skin_speed_3": {
+ "value": "speed_topbottom"
+ },
+ "bridge_skin_material_flow_3": {
+ "value": "skin_material_flow"
+ },
+ "bridge_skin_density_3": {
+ "value": 100
+ },
+ "bridge_fan_speed_3": {
+ "value": "cool_fan_speed_min"
+ },
+ "jerk_print": {
+ "value": "20",
+ "minimum_value_warning": 20
+ },
+ "jerk_infill": {
+ "minimum_value_warning": 20
+ },
+ "jerk_wall": {
+ "minimum_value_warning": 20
+ },
+ "jerk_wall_0": {
+ "minimum_value_warning": 20
+ },
+ "jerk_roofing": {
+ "minimum_value_warning": 20
+ },
+ "jerk_topbottom": {
+ "minimum_value_warning": 20
+ },
+ "jerk_support": {
+ "minimum_value_warning": 20
+ },
+ "jerk_support_infill": {
+ "minimum_value_warning": 20
+ },
+ "jerk_support_interface": {
+ "minimum_value_warning": 20
+ },
+ "jerk_prime_tower": {
+ "minimum_value_warning": 20
+ },
+ "jerk_layer_0": {
+ "minimum_value_warning": 20
+ },
+ "jerk_print_layer_0": {
+ "minimum_value_warning": 20
+ },
+ "jerk_travel": {
+ "value": "jerk_print",
+ "minimum_value_warning": 20
+ },
+ "jerk_travel_layer_0": {
+ "minimum_value_warning": 20
+ },
+ "jerk_skirt_brim": {
+ "minimum_value_warning": 20
}
}
}
diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json
index fd21ab5271..858d5f91a7 100644
--- a/resources/definitions/ultimaker3.def.json
+++ b/resources/definitions/ultimaker3.def.json
@@ -101,20 +101,6 @@
"infill_wipe_dist": { "value": "0" },
"initial_layer_line_width_factor": { "value": "120" },
"jerk_enabled": { "value": "True" },
- "jerk_print": { "value": "20", "minimum_value_warning": 20 },
- "jerk_infill": {"minimum_value_warning": 20 },
- "jerk_wall": { "value": "jerk_print", "minimum_value_warning": 20 },
- "jerk_wall_0": { "value": "jerk_wall", "minimum_value_warning": 20 },
- "jerk_roofing": {"minimum_value_warning": 20 },
- "jerk_topbottom": { "value": "jerk_print", "minimum_value_warning": 20 },
- "jerk_support": { "value": "jerk_print", "minimum_value_warning": 20 },
- "jerk_support_infill": {"minimum_value_warning": 20 },
- "jerk_support_interface": { "value": "math.ceil(jerk_print * 5 / 20)"},
- "jerk_prime_tower": { "value": "jerk_print", "minimum_value_warning": 20 },
- "jerk_layer_0": { "value": "jerk_topbottom", "minimum_value_warning": 20},
- "jerk_print_layer_0": {"minimum_value_warning": 20 },
- "jerk_travel_layer_0": {"minimum_value_warning": 20 },
- "jerk_skirt_brim": {"minimum_value_warning": 20 },
"layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" },
"layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" },
"layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" },
@@ -136,8 +122,6 @@
"raft_margin": { "value": "10" },
"raft_surface_layers": { "value": "1" },
"retraction_amount": { "value": "6.5" },
- "retraction_count_max": { "value": "10" },
- "retraction_extrusion_window": { "value": "1" },
"retraction_hop": { "value": "2" },
"retraction_hop_enabled": { "value": "extruders_enabled_count > 1" },
"retraction_hop_only_when_collides": { "value": "True" },
diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json
index 640a062c6d..67f8ddab83 100644
--- a/resources/definitions/ultimaker_s3.def.json
+++ b/resources/definitions/ultimaker_s3.def.json
@@ -93,20 +93,6 @@
"infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'triangles'" },
"infill_wipe_dist": { "value": "0" },
"jerk_enabled": { "value": "True" },
- "jerk_print": { "value": "20", "minimum_value_warning": 20 },
- "jerk_infill": {"minimum_value_warning": 20 },
- "jerk_wall": { "value": "jerk_print", "minimum_value_warning": 20 },
- "jerk_wall_0": { "value": "jerk_wall", "minimum_value_warning": 20 },
- "jerk_roofing": {"minimum_value_warning": 20 },
- "jerk_topbottom": { "value": "jerk_print", "minimum_value_warning": 20 },
- "jerk_support": { "value": "jerk_print", "minimum_value_warning": 20 },
- "jerk_support_infill": {"minimum_value_warning": 20 },
- "jerk_support_interface": { "value": "math.ceil(jerk_print * 5 / 20)"},
- "jerk_prime_tower": { "value": "jerk_print", "minimum_value_warning": 20 },
- "jerk_layer_0": { "value": "jerk_topbottom", "minimum_value_warning": 20},
- "jerk_print_layer_0": {"minimum_value_warning": 20 },
- "jerk_travel_layer_0": {"minimum_value_warning": 20 },
- "jerk_skirt_brim": {"minimum_value_warning": 20 },
"layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" },
"layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" },
"layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" },
@@ -128,8 +114,6 @@
"raft_speed": { "value": "25" },
"raft_surface_layers": { "value": "1" },
"retraction_amount": { "value": "6.5" },
- "retraction_count_max": { "value": "10" },
- "retraction_extrusion_window": { "value": "1" },
"retraction_hop": { "value": "2" },
"retraction_hop_enabled": { "value": "extruders_enabled_count > 1" },
"retraction_hop_only_when_collides": { "value": "True" },
@@ -155,7 +139,6 @@
"switch_extruder_prime_speed": { "value": "15" },
"switch_extruder_retraction_amount": { "value": "8" },
"top_bottom_thickness": { "value": "1" },
- "travel_avoid_supports": { "value": "True" },
"travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" },
"wall_0_inset": { "value": "0" },
"initial_layer_line_width_factor": { "value": "120" },
diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json
index 0d5d7499cc..005c876117 100644
--- a/resources/definitions/ultimaker_s5.def.json
+++ b/resources/definitions/ultimaker_s5.def.json
@@ -95,20 +95,6 @@
"infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'triangles'" },
"infill_wipe_dist": { "value": "0" },
"jerk_enabled": { "value": "True" },
- "jerk_print": { "value": "20", "minimum_value_warning": 20 },
- "jerk_infill": {"minimum_value_warning": 20 },
- "jerk_wall": { "value": "jerk_print", "minimum_value_warning": 20 },
- "jerk_wall_0": { "value": "jerk_wall", "minimum_value_warning": 20 },
- "jerk_roofing": {"minimum_value_warning": 20 },
- "jerk_topbottom": { "value": "jerk_print", "minimum_value_warning": 20 },
- "jerk_support": { "value": "jerk_print", "minimum_value_warning": 20 },
- "jerk_support_infill": {"minimum_value_warning": 20 },
- "jerk_support_interface": { "value": "math.ceil(jerk_print * 5 / 20)"},
- "jerk_prime_tower": { "value": "jerk_print", "minimum_value_warning": 20 },
- "jerk_layer_0": { "value": "jerk_topbottom", "minimum_value_warning": 20},
- "jerk_print_layer_0": {"minimum_value_warning": 20 },
- "jerk_travel_layer_0": {"minimum_value_warning": 20 },
- "jerk_skirt_brim": {"minimum_value_warning": 20 },
"layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" },
"layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" },
"layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" },
@@ -130,8 +116,6 @@
"raft_surface_layers": { "value": "1" },
"retraction_amount": { "value": "6.5" },
"retraction_combing": { "value": "'no_outer_surfaces'"},
- "retraction_count_max": { "value": "10" },
- "retraction_extrusion_window": { "value": "1" },
"retraction_hop": { "value": "2" },
"retraction_hop_enabled": { "value": "extruders_enabled_count > 1" },
"retraction_hop_only_when_collides": { "value": "True" },
@@ -157,7 +141,6 @@
"switch_extruder_prime_speed": { "value": "15" },
"switch_extruder_retraction_amount": { "value": "8" },
"top_bottom_thickness": { "value": "1" },
- "travel_avoid_supports": { "value": "True" },
"travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" },
"wall_0_inset": { "value": "0" },
"optimize_wall_printing_order": { "value": "True" },
diff --git a/resources/definitions/uni_base.def.json b/resources/definitions/uni_base.def.json
index 06ba86de2d..82b05f3366 100644
--- a/resources/definitions/uni_base.def.json
+++ b/resources/definitions/uni_base.def.json
@@ -138,7 +138,6 @@
"machine_height": {"default_value": 250},
"machine_extruder_count": {"value": 2},
"machine_buildplate_type": {"value": "glass"},
- "machine_heated_bed": {"default_value": true},
"machine_center_is_zero": {"default_value": false},
"machine_gcode_flavor": {"default_value": "RepRap (Marlin/Sprinter)"},
"machine_head_with_fans_polygon": {"default_value": [
diff --git a/resources/definitions/voron2_base.def.json b/resources/definitions/voron2_base.def.json
index ec069b24fb..b9a1484ae7 100644
--- a/resources/definitions/voron2_base.def.json
+++ b/resources/definitions/voron2_base.def.json
@@ -98,8 +98,9 @@
"machine_start_gcode": { "default_value": "print_start" },
"machine_end_gcode": { "default_value": "print_end" },
"adhesion_type": { "default_value": "skirt" },
+ "retraction_amount": { "default_value": 0.75 },
"skirt_brim_minimal_length": { "default_value": 550 },
- "retraction_speed": { "default_value": 80, "maximum_value_warning": 130 },
+ "retraction_speed": { "default_value": 30, "maximum_value_warning": 130 },
"retraction_retract_speed": { "maximum_value_warning": 130 },
"retraction_prime_speed": { "value": "math.ceil(retraction_speed * 0.4)", "maximum_value_warning": 130 },
"retraction_hop_enabled": { "default_value": true },
diff --git a/resources/definitions/zav_base.def.json b/resources/definitions/zav_base.def.json
index 1ef9398987..9f73419d46 100644
--- a/resources/definitions/zav_base.def.json
+++ b/resources/definitions/zav_base.def.json
@@ -147,7 +147,6 @@
"machine_height": {"default_value": 270},
"machine_extruder_count": {"value": 1},
"machine_buildplate_type": {"value": "glass"},
- "machine_heated_bed": {"default_value": true},
"machine_center_is_zero": {"default_value": false},
"machine_gcode_flavor": {"default_value": "RepRap (Marlin/Sprinter)"},
"machine_head_with_fans_polygon": {"default_value": [
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg
index ed1312583e..f2095ba055 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg
@@ -22,11 +22,6 @@ top_bottom_thickness = 0.8
infill_sparse_density = 15
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
+
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg
index 48fb654a87..b74cd522ac 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg
index b98688044f..1caacdf72f 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg
index 344cd30b8d..315b26a3b1 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg
index 4e33b36ee1..d4a999d8eb 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg
index 8cdf66b6fe..aa371be6f3 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print_Accurate.inst.cfg
index ff9e5755b3..abd125f483 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality_Accurate.inst.cfg
index 1d68116a7f..c8cf2a3bd4 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print_Accurate.inst.cfg
index 168b920b80..b4bbdddff7 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg
index 70347ae80f..19418812af 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg
index 9b2de341e6..36ea7c975e 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg
index b9193339bf..88691ef1d6 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg
index 70abf19142..b59ed875b4 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg
@@ -16,12 +16,6 @@ is_experimental = True
infill_sparse_density = 10
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
acceleration_print = 4000
acceleration_wall = 2000
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg
index 0cf2b8f993..924edf577d 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg
index 0ca960acd7..b92e07a877 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg
index 95d4d65b4a..98ad3af40b 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg
@@ -22,11 +22,6 @@ top_bottom_thickness = 0.8
infill_sparse_density = 15
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
+
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg
index ad0eda8726..8939d670b1 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg
index 1fcbb95940..44f76d561f 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg
index 7d1026b479..7bf1fc834a 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg
index 52bd47103f..a95862c35a 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg
index 55eaac45cf..bfdd35017c 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg
index b831e25ce6..022fb2b50d 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg
index e1b8a1c712..3637040c4c 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg
index ed808aaf03..6cce98ca60 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg
index adc4169968..32e0463447 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality_Accurate.inst.cfg
index bccd269c87..0b7ffb4154 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg
index f13476802c..186281c17c 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg
index 585c2f72b5..545a8b5654 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg
index 4c9608ddaf..76d9191fc1 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg
@@ -22,11 +22,6 @@ top_bottom_thickness = 0.8
infill_sparse_density = 15
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
+
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg
index 11a2c5e134..ca098b5bfa 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg
index f9a3c3f775..472c0b4359 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg
index 12752123f4..51cfaebe34 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg
@@ -16,12 +16,6 @@ is_experimental = True
infill_sparse_density = 10
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
acceleration_print = 4000
acceleration_wall = 2000
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg
index 7aaff9a062..7851ecd793 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg
@@ -22,11 +22,6 @@ top_bottom_thickness = 0.8
infill_sparse_density = 15
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
+
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg
index 84c9293467..2b1b769595 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg
index 8d8825ca41..daa327a2f5 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg
@@ -14,12 +14,6 @@ variant = AA 0.4
[values]
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
speed_print = 30
speed_infill = =speed_print
diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg
index a3e850c05d..ec93cc5599 100644
--- a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg
+++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg
@@ -16,12 +16,6 @@ is_experimental = True
infill_sparse_density = 10
jerk_print = 30
-jerk_infill = =jerk_print
-jerk_topbottom = =jerk_print
-jerk_wall = =jerk_print
-jerk_wall_0 = =jerk_wall
-jerk_wall_x = =jerk_wall
-jerk_layer_0 = 5
acceleration_print = 4000
acceleration_wall = 2000
diff --git a/resources/qml/ColorDialog.qml b/resources/qml/ColorDialog.qml
index 49adcf0cca..e5216a3404 100644
--- a/resources/qml/ColorDialog.qml
+++ b/resources/qml/ColorDialog.qml
@@ -29,7 +29,7 @@ UM.Dialog
// the size of the dialog ourselves.
// Ugly workaround for windows having overlapping elements due to incorrect dialog width
minimumWidth: content.width + (Qt.platform.os == "windows" ? 4 * margin : 2 * margin)
- minimumHeight: content.height + buttonArea.height + (Qt.platform.os == "windows" ? 5 * margin : 3 * margin)
+ minimumHeight: content.height + footer.height + (Qt.platform.os == "windows" ? 5 * margin : 3 * margin)
property alias color: colorInput.text
property var swatchColors: [
diff --git a/resources/qml/MachineSettings/GcodeTextArea.qml b/resources/qml/MachineSettings/GcodeTextArea.qml
index 7791e169c2..d4bc58cdc4 100644
--- a/resources/qml/MachineSettings/GcodeTextArea.qml
+++ b/resources/qml/MachineSettings/GcodeTextArea.qml
@@ -67,6 +67,8 @@ UM.TooltipArea
font: UM.Theme.getFont("fixed")
renderType: Text.NativeRendering
color: UM.Theme.getColor("text")
+ selectionColor: UM.Theme.getColor("text_selection")
+ selectedTextColor: UM.Theme.getColor("text")
wrapMode: TextEdit.NoWrap
onActiveFocusChanged:
@@ -91,7 +93,7 @@ UM.TooltipArea
}
if (gcodeTextArea.hovered || gcodeTextArea.activeFocus)
{
- return UM.Theme.getColor("border_main")
+ return UM.Theme.getColor("text_field_border_active")
}
return UM.Theme.getColor("border_field_light")
}
diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg
index 56320f0b73..79e51d0130 100644
--- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg
@@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
multiple_mesh_overlap = 0
-retraction_count_max = 12
-retraction_extrusion_window = 1
+retraction_count_max = 15
retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg
index 5e84e3f167..12b5d00005 100644
--- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg
@@ -29,18 +29,8 @@ cool_min_speed = 20
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
infill_wipe_dist = 0
-jerk_enabled = True
-jerk_layer_0 = =jerk_topbottom
-jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
-jerk_print = 25
-jerk_support = =math.ceil(jerk_print * 15 / 25)
-jerk_support_interface = =jerk_topbottom
-jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
-jerk_wall = =math.ceil(jerk_print * 10 / 25)
-jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
multiple_mesh_overlap = 0
-retraction_count_max = 12
-retraction_extrusion_window = 1
+retraction_count_max = 15
retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg
index 10cbfab427..96c0b34b82 100644
--- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg
@@ -29,18 +29,8 @@ cool_min_speed = 20
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
infill_wipe_dist = 0
-jerk_enabled = True
-jerk_layer_0 = =jerk_topbottom
-jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
-jerk_print = 25
-jerk_support = =math.ceil(jerk_print * 15 / 25)
-jerk_support_interface = =jerk_topbottom
-jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
-jerk_wall = =math.ceil(jerk_print * 10 / 25)
-jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
multiple_mesh_overlap = 0
-retraction_count_max = 12
-retraction_extrusion_window = 1
+retraction_count_max = 15
retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg
index 161ca2e079..261c2552a8 100644
--- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg
@@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
multiple_mesh_overlap = 0
-retraction_count_max = 12
-retraction_extrusion_window = 1
+retraction_count_max = 15
retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg
index e88b527308..c58be35862 100644
--- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg
@@ -29,18 +29,8 @@ cool_min_speed = 20
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
infill_wipe_dist = 0
-jerk_enabled = True
-jerk_layer_0 = =jerk_topbottom
-jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
-jerk_print = 25
-jerk_support = =math.ceil(jerk_print * 15 / 25)
-jerk_support_interface = =jerk_topbottom
-jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
-jerk_wall = =math.ceil(jerk_print * 10 / 25)
-jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
multiple_mesh_overlap = 0
-retraction_count_max = 12
-retraction_extrusion_window = 1
+retraction_count_max = 15
retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg
index 36d599faf3..f00847c032 100644
--- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg
@@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
multiple_mesh_overlap = 0
-retraction_count_max = 12
-retraction_extrusion_window = 1
+retraction_count_max = 15
retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg
index 87784fa7cf..11b1e2e84c 100644
--- a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg
@@ -25,6 +25,7 @@ raft_base_line_spacing = 1
raft_interface_line_spacing = 1
raft_interface_line_width = 0.2
raft_surface_line_width = 0.2
+retraction_count_max = 15
retraction_hop_enabled = 0.2
speed_layer_0 = =math.ceil(speed_print * 30 / 40)
speed_print = 40
diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg
index c49f135c87..b45b7de66e 100644
--- a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg
@@ -23,6 +23,7 @@ raft_base_line_spacing = 2
raft_base_line_width = 0.8
raft_interface_line_spacing = 1
raft_margin = 12
+retraction_count_max = 15
retraction_hop_enabled = 0.2
speed_layer_0 = =math.ceil(speed_print * 30 / 40)
speed_print = 40
diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg
index 3231fc1cef..568e8ed542 100644
--- a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg
@@ -26,6 +26,7 @@ raft_interface_line_spacing = 1.2
raft_interface_line_width = 0.57
raft_margin = 15
raft_surface_line_width = 0.5
+retraction_count_max = 15
retraction_hop_enabled = 0.2
speed_layer_0 = =math.ceil(speed_print * 30 / 45)
speed_print = 45
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg
index 70aecc029f..4f67fa891d 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg
@@ -29,18 +29,8 @@ cool_min_speed = 20
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0
-jerk_enabled = True
-jerk_layer_0 = =jerk_topbottom
-jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
-jerk_print = 25
-jerk_support = =math.ceil(jerk_print * 15 / 25)
-jerk_support_interface = =jerk_topbottom
-jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
-jerk_wall = =math.ceil(jerk_print * 10 / 25)
-jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
multiple_mesh_overlap = 0
-retraction_count_max = 12
-retraction_extrusion_window = 1
+retraction_count_max = 15
retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg
index 8b28161b09..6c39f15e6d 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg
@@ -29,18 +29,8 @@ cool_min_speed = 20
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0
-jerk_enabled = True
-jerk_layer_0 = =jerk_topbottom
-jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
-jerk_print = 25
-jerk_support = =math.ceil(jerk_print * 15 / 25)
-jerk_support_interface = =jerk_topbottom
-jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
-jerk_wall = =math.ceil(jerk_print * 10 / 25)
-jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
multiple_mesh_overlap = 0
-retraction_count_max = 12
-retraction_extrusion_window = 1
+retraction_count_max = 15
retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg
index b1d7adfd0b..578b7615b5 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg
@@ -29,18 +29,8 @@ cool_min_speed = 20
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0
-jerk_enabled = True
-jerk_layer_0 = =jerk_topbottom
-jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
-jerk_print = 25
-jerk_support = =math.ceil(jerk_print * 15 / 25)
-jerk_support_interface = =jerk_topbottom
-jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
-jerk_wall = =math.ceil(jerk_print * 10 / 25)
-jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
multiple_mesh_overlap = 0
-retraction_count_max = 12
-retraction_extrusion_window = 1
+retraction_count_max = 15
retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg
index a64996c8f0..d39191f6d5 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg
@@ -29,18 +29,8 @@ cool_min_speed = 20
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0
-jerk_enabled = True
-jerk_layer_0 = =jerk_topbottom
-jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
-jerk_print = 25
-jerk_support = =math.ceil(jerk_print * 15 / 25)
-jerk_support_interface = =jerk_topbottom
-jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
-jerk_wall = =math.ceil(jerk_print * 10 / 25)
-jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
multiple_mesh_overlap = 0
-retraction_count_max = 12
-retraction_extrusion_window = 1
+retraction_count_max = 15
retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg
index f3dd14c276..b2c62ba2b4 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg
@@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
multiple_mesh_overlap = 0
-retraction_count_max = 12
-retraction_extrusion_window = 1
+retraction_count_max = 15
retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg
index 232d74d602..35b5f52e1e 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg
@@ -29,18 +29,8 @@ cool_min_speed = 20
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0
-jerk_enabled = True
-jerk_layer_0 = =jerk_topbottom
-jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
-jerk_print = 25
-jerk_support = =math.ceil(jerk_print * 15 / 25)
-jerk_support_interface = =jerk_topbottom
-jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
-jerk_wall = =math.ceil(jerk_print * 10 / 25)
-jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
multiple_mesh_overlap = 0
-retraction_count_max = 12
-retraction_extrusion_window = 1
+retraction_count_max = 15
retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.25_high.inst.cfg
index 4371dcf524..169b990d3d 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.25_high.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.25_high.inst.cfg
@@ -25,6 +25,7 @@ raft_base_line_spacing = 1
raft_interface_line_spacing = 1
raft_interface_line_width = 0.2
raft_surface_line_width = 0.2
+retraction_count_max = 15
retraction_hop_enabled = 0.2
speed_layer_0 = =math.ceil(speed_print * 30 / 40)
speed_print = 40
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.4_normal.inst.cfg
index ecd8c76a50..b822d913b3 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.4_normal.inst.cfg
@@ -23,6 +23,7 @@ raft_base_line_spacing = 2
raft_base_line_width = 0.8
raft_interface_line_spacing = 1
raft_margin = 12
+retraction_count_max = 15
retraction_hop_enabled = 0.2
speed_layer_0 = =math.ceil(speed_print * 30 / 40)
speed_print = 40
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.6_fast.inst.cfg
index 14844dc216..941f119653 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.6_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.6_fast.inst.cfg
@@ -26,6 +26,7 @@ raft_interface_line_spacing = 1.2
raft_interface_line_width = 0.57
raft_margin = 15
raft_surface_line_width = 0.5
+retraction_count_max = 15
retraction_hop_enabled = 0.2
speed_layer_0 = =math.ceil(speed_print * 30 / 45)
speed_print = 45
diff --git a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg
index c63858f825..a24b18563d 100644
--- a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg
@@ -12,7 +12,6 @@ material = generic_cpe
variant = AA 0.25
[values]
-retraction_extrusion_window = 0.5
speed_infill = =math.ceil(speed_print * 40 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg
index c17554a0cc..53bb10c2eb 100644
--- a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg
@@ -21,7 +21,6 @@ cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 5
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
multiple_mesh_overlap = 0
@@ -30,7 +29,6 @@ prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
-retraction_count_max = 80
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker3/um3_aa0.25_PETG_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PETG_Normal_Quality.inst.cfg
index 36a3e23c27..ce7087bf3a 100644
--- a/resources/quality/ultimaker3/um3_aa0.25_PETG_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.25_PETG_Normal_Quality.inst.cfg
@@ -12,7 +12,6 @@ material = generic_petg
variant = AA 0.25
[values]
-retraction_extrusion_window = 0.5
speed_infill = =math.ceil(speed_print * 40 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg
index 77af8bae1e..f26fcd025f 100644
--- a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg
@@ -31,9 +31,8 @@ multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_size = 16
prime_tower_wipe_enabled = True
-retraction_count_max = 45
+retraction_count_max = 15
retraction_extra_prime_amount = 0.2
-retraction_extrusion_window = 6.5
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg
index f2b4caf168..30d20139e1 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg
@@ -17,7 +17,6 @@ cool_min_speed = 5
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
layer_height = 0.2
machine_min_cool_heat_time_window = 15
@@ -29,7 +28,6 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_enable = True
prime_tower_wipe_enabled = True
-retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg
index addd4790db..e213684360 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg
@@ -17,7 +17,6 @@ cool_min_speed = 6
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
layer_height = 0.15
machine_min_cool_heat_time_window = 15
@@ -29,7 +28,6 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_enable = True
prime_tower_wipe_enabled = True
-retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg
index 3c1baa8640..70c1b4afaa 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg
@@ -17,7 +17,6 @@ cool_min_speed = 5
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
layer_height = 0.06
machine_min_cool_heat_time_window = 15
@@ -31,7 +30,6 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_enable = True
prime_tower_wipe_enabled = True
-retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg
index e0c239c536..bd452fc538 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg
@@ -17,7 +17,6 @@ cool_min_speed = 7
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -30,7 +29,6 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_enable = True
prime_tower_wipe_enabled = True
-retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg
index f33132ee5b..0c1224aa2b 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg
@@ -23,7 +23,6 @@ infill_overlap = 0
infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
layer_height = 0.2
machine_min_cool_heat_time_window = 15
@@ -39,8 +38,6 @@ prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
-retraction_count_max = 80
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg
index 8c02c9c816..1bce358b5d 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg
@@ -21,7 +21,6 @@ cool_min_speed = 7
infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
layer_height = 0.15
machine_min_cool_heat_time_window = 15
@@ -37,8 +36,6 @@ prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
-retraction_count_max = 80
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg
index 4ff801f4fa..b997f3acff 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg
@@ -23,7 +23,6 @@ infill_overlap = 0
infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
layer_height = 0.06
machine_min_cool_heat_time_window = 15
@@ -39,8 +38,6 @@ prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
-retraction_count_max = 80
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg
index 180d96011d..d6181b9207 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg
@@ -22,7 +22,6 @@ cool_min_speed = 5
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -36,8 +35,6 @@ prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
-retraction_count_max = 80
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg
index 5a49c5d95f..c151870622 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg
@@ -38,9 +38,8 @@ prime_tower_enable = False
prime_tower_size = 16
prime_tower_wipe_enabled = True
retraction_amount = 6.5
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg
index 1da161a2fb..7e21bec438 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg
@@ -37,9 +37,8 @@ multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_size = 16
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg
index 52aadd5b2d..c47bfb3c18 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg
@@ -21,7 +21,6 @@ cool_min_speed = 2.5
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -36,9 +35,8 @@ multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_size = 16
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg
index e20587931f..227b16db92 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg
@@ -16,7 +16,6 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =cool_fan_speed
cool_min_speed = 7
jerk_print = 25
-jerk_roofing = 1
layer_height_0 = 0.2
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
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 b5cc9b7261..9c02ed5200 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
@@ -22,7 +22,6 @@ infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
layer_height = 0.2
machine_min_cool_heat_time_window = 15
@@ -36,9 +35,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 15
material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop = 1.5
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
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 4e7696c0b3..fe3f453f9c 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
@@ -22,7 +22,6 @@ infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
layer_height = 0.15
machine_min_cool_heat_time_window = 15
@@ -37,9 +36,8 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_wipe_enabled = True
retraction_amount = 7
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop = 1.5
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
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 caed386864..c824bc59ab 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
@@ -22,7 +22,6 @@ infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.5
@@ -34,9 +33,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 17
material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop = 1.5
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg
index 8fdcd54797..6510c0db81 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg
@@ -26,7 +26,7 @@ prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 10
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.5
retraction_min_travel = 1.5
diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg
index ff729395b9..d37c9aef29 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg
@@ -26,7 +26,7 @@ prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 20
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.5
retraction_min_travel = 1.5
diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg
index 911932c819..2313d3e7f2 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg
@@ -26,7 +26,7 @@ prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 15
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.5
retraction_min_travel = 1.5
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 53bf19e17b..e68fde0763 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
@@ -30,7 +30,7 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
retraction_hop_only_when_collides = False
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 a1cfef6d5f..c0c9e7c48a 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
@@ -31,7 +31,7 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
retraction_hop_only_when_collides = False
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 388959da4a..e85db940a5 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
@@ -30,7 +30,7 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
retraction_hop_only_when_collides = False
diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg
index ae1cd2f262..a9adf2e3de 100644
--- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg
@@ -16,5 +16,6 @@ brim_replaces_support = False
material_print_temperature = =default_material_print_temperature + 10
material_standby_temperature = 100
prime_tower_enable = False
+retraction_count_max = 5
skin_overlap = 20
support_brim_enable = True
diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg
index 9652a2f50a..90be6c2b37 100644
--- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg
@@ -16,6 +16,7 @@ brim_replaces_support = False
material_print_temperature = =default_material_print_temperature + 5
material_standby_temperature = 100
prime_tower_enable = False
+retraction_count_max = 5
skin_overlap = 15
support_brim_enable = True
support_infill_sparse_thickness = 0.3
diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg
index 72cc7dc901..98d9566577 100644
--- a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg
@@ -15,5 +15,6 @@ variant = BB 0.4
brim_replaces_support = False
material_standby_temperature = 100
prime_tower_enable = False
+retraction_count_max = 5
support_brim_enable = True
support_infill_sparse_thickness = 0.18
diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg
index e828b94f2e..cc8c3bf10a 100644
--- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg
@@ -15,4 +15,5 @@ variant = BB 0.4
brim_replaces_support = False
material_standby_temperature = 100
prime_tower_enable = False
+retraction_count_max = 5
support_brim_enable = True
diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg
index e7c07c73fa..6a54c04e7b 100644
--- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg
@@ -15,4 +15,5 @@ variant = BB 0.8
brim_replaces_support = False
material_print_temperature = =default_material_print_temperature + 5
material_standby_temperature = 100
+retraction_count_max = 5
support_brim_enable = True
diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg
index bcb92ccefa..7947e3cfe8 100644
--- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg
@@ -15,5 +15,6 @@ variant = BB 0.8
brim_replaces_support = False
layer_height = 0.4
material_standby_temperature = 100
+retraction_count_max = 5
support_brim_enable = True
support_interface_height = 0.9
diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg
index 3ce14a2ad0..3e2c92bbf6 100644
--- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg
@@ -15,6 +15,7 @@ variant = BB 0.8
brim_replaces_support = False
layer_height = 0.3
material_standby_temperature = 100
+retraction_count_max = 5
support_brim_enable = True
support_infill_sparse_thickness = 0.3
support_interface_height = 1.2
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg
index d875b9c8f3..5ced8748b1 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg
@@ -13,7 +13,6 @@ variant = AA 0.25
[values]
retraction_combing_max_distance = 50
-retraction_extrusion_window = 0.5
speed_infill = =math.ceil(speed_print * 40 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg
index a3a0073bba..071db69a43 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg
@@ -30,7 +30,6 @@ prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
-retraction_count_max = 80
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PETG_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PETG_Normal_Quality.inst.cfg
index 516f24dec5..6c3a7e7a81 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_PETG_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PETG_Normal_Quality.inst.cfg
@@ -13,7 +13,6 @@ variant = AA 0.25
[values]
retraction_combing_max_distance = 8
-retraction_extrusion_window = 0.5
speed_infill = =math.ceil(speed_print * 40 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg
index d0668b64f6..8ae871f4fe 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg
@@ -19,7 +19,6 @@ cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 2.5
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
material_bed_temperature_layer_0 = =material_bed_temperature + 5
@@ -31,9 +30,8 @@ multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_size = 16
prime_tower_wipe_enabled = True
-retraction_count_max = 6
+retraction_count_max = 15
retraction_extra_prime_amount = 0.2
-retraction_extrusion_window = 6.5
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg
index 0b8555734e..b933ae005b 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg
@@ -17,7 +17,6 @@ cool_min_speed = 5
infill_overlap = 0
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
material_final_print_temperature = =material_print_temperature - 10
@@ -28,7 +27,6 @@ multiple_mesh_overlap = 0
prime_tower_enable = True
prime_tower_wipe_enabled = True
retraction_combing_max_distance = 50
-retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg
index f3dce95478..526e12bfe0 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg
@@ -28,7 +28,6 @@ multiple_mesh_overlap = 0
prime_tower_enable = True
prime_tower_wipe_enabled = True
retraction_combing_max_distance = 50
-retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg
index f895647971..be5d77a69e 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg
@@ -17,7 +17,6 @@ cool_min_speed = 5
infill_overlap = 0
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -30,7 +29,6 @@ multiple_mesh_overlap = 0
prime_tower_enable = True
prime_tower_wipe_enabled = True
retraction_combing_max_distance = 50
-retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg
index bba0f354c9..bc16d73c04 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg
@@ -17,7 +17,6 @@ cool_min_speed = 7
infill_overlap = 0
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -30,7 +29,6 @@ multiple_mesh_overlap = 0
prime_tower_enable = True
prime_tower_wipe_enabled = True
retraction_combing_max_distance = 50
-retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg
index 85d31733e6..5190288662 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg
@@ -38,8 +38,6 @@ prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
-retraction_count_max = 80
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg
index a9cdf6336d..5467595bd3 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg
@@ -21,7 +21,6 @@ cool_min_speed = 7
infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -36,8 +35,6 @@ prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
-retraction_count_max = 80
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg
index ff5d6f4f7c..c694b5db79 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg
@@ -38,8 +38,6 @@ prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
-retraction_count_max = 80
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg
index a61e50f280..5287ce24c4 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg
@@ -36,8 +36,6 @@ prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
-retraction_count_max = 80
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print.inst.cfg
index 0ce09d5812..62a5516b2c 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print.inst.cfg
@@ -33,7 +33,6 @@ material_shrinkage_percentage_z = 100.1
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
-skin_edge_support_thickness = =0.9 if infill_sparse_density < 30 else 0
skin_overlap = 20
top_bottom_thickness = 0.9
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg
index 75eba5b995..88089479ad 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg
@@ -21,7 +21,6 @@ cool_min_speed = 2.5
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -36,9 +35,8 @@ multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_size = 16
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg
index fdf769ed38..dd35987ced 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg
@@ -20,7 +20,6 @@ cool_min_speed = 2.5
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -35,9 +34,8 @@ multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_size = 16
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg
index 821e1f4840..5eff4b3248 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg
@@ -21,7 +21,6 @@ cool_min_speed = 2.5
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
@@ -37,9 +36,8 @@ multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_size = 16
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg
index a9e32a5283..c3837c7850 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg
@@ -16,7 +16,6 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =cool_fan_speed
cool_min_speed = 7
jerk_print = 25
-jerk_roofing = 1
layer_height_0 = 0.2
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print.inst.cfg
index 4bf6623cf6..50206224a9 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print.inst.cfg
@@ -33,7 +33,6 @@ material_shrinkage_percentage_z = 100.1
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
-skin_edge_support_thickness = =0.9 if infill_sparse_density < 30 else 0
skin_overlap = 20
top_bottom_thickness = 1.2
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg
index 566f474dc4..90a68d134e 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg
@@ -22,9 +22,7 @@ infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
-
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
@@ -36,9 +34,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 15
material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
skin_line_width = =round(line_width / 0.8, 2)
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg
index e968507192..d59d5c18f7 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg
@@ -22,7 +22,6 @@ infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
@@ -36,9 +35,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 15
material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
skin_line_width = =round(line_width / 0.8, 2)
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg
index ca8410766a..c0445e739c 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg
@@ -35,9 +35,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 17
material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
skin_line_width = =round(line_width / 0.8, 2)
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg
index 4572e3fabc..14a7451bcc 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg
@@ -26,7 +26,7 @@ prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 10
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.5
retraction_min_travel = 1.5
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg
index 596f34d7b9..c466b76c1c 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg
@@ -26,7 +26,7 @@ prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 20
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.5
retraction_min_travel = 1.5
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg
index 4f1a91337a..804149a584 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg
@@ -25,7 +25,7 @@ prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 15
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.5
retraction_min_travel = 1.5
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg
index dc4858e463..ab71a4c37e 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg
@@ -28,7 +28,7 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
retraction_hop_only_when_collides = False
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg
index d2e23c81a9..ac2181d373 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg
@@ -29,7 +29,7 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
retraction_hop_only_when_collides = False
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg
index 3d4076c08c..e4bb128599 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg
@@ -28,7 +28,7 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
retraction_hop_only_when_collides = False
diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg
index afb19f1769..94802d49fc 100644
--- a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg
@@ -16,5 +16,6 @@ brim_replaces_support = False
material_print_temperature = =default_material_print_temperature + 10
material_standby_temperature = 100
prime_tower_enable = False
+retraction_count_max = 5
skin_overlap = 20
support_brim_enable = True
diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg
index 6b1cef8991..bafe3e88d6 100644
--- a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg
@@ -16,6 +16,7 @@ brim_replaces_support = False
material_print_temperature = =default_material_print_temperature + 5
material_standby_temperature = 100
prime_tower_enable = False
+retraction_count_max = 5
skin_overlap = 15
support_brim_enable = True
support_infill_sparse_thickness = 0.3
diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg
index 0a9a37ca05..c1b9556636 100644
--- a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg
@@ -15,5 +15,6 @@ variant = BB 0.4
brim_replaces_support = False
material_standby_temperature = 100
prime_tower_enable = False
+retraction_count_max = 5
support_brim_enable = True
support_infill_sparse_thickness = 0.18
diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg
index a899959d98..0a4e11c158 100644
--- a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg
@@ -15,4 +15,5 @@ variant = BB 0.4
brim_replaces_support = False
material_standby_temperature = 100
prime_tower_enable = False
+retraction_count_max = 5
support_brim_enable = True
diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Verydraft_Print.inst.cfg
index 0cd6094bbc..8bd0e5d375 100644
--- a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Verydraft_Print.inst.cfg
@@ -15,6 +15,7 @@ is_experimental = True
[values]
brim_replaces_support = False
material_standby_temperature = 100
+retraction_count_max = 5
support_brim_enable = True
support_infill_sparse_thickness = 0.3
support_interface_height = 1.2
diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg
index 388ebeff72..587b7b29cd 100644
--- a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg
@@ -15,4 +15,5 @@ variant = BB 0.8
brim_replaces_support = False
material_print_temperature = =default_material_print_temperature + 5
material_standby_temperature = 100
+retraction_count_max = 5
support_brim_enable = True
diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg
index e9030819ea..c1cbac87a0 100644
--- a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg
@@ -14,5 +14,6 @@ variant = BB 0.8
[values]
brim_replaces_support = False
material_standby_temperature = 100
+retraction_count_max = 5
support_brim_enable = True
support_interface_height = 0.9
diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg
index c35737bb97..b5e22bef62 100644
--- a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg
@@ -14,6 +14,7 @@ variant = BB 0.8
[values]
brim_replaces_support = False
material_standby_temperature = 100
+retraction_count_max = 5
support_brim_enable = True
support_infill_sparse_thickness = 0.3
support_interface_height = 1.2
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg
index 52499d000c..f895450c0a 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg
@@ -13,7 +13,6 @@ variant = AA 0.25
[values]
retraction_combing_max_distance = 50
-retraction_extrusion_window = 0.5
speed_infill = =math.ceil(speed_print * 40 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg
index e77d2a2dd9..ec8409137c 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg
@@ -21,7 +21,6 @@ cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 5
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
multiple_mesh_overlap = 0
@@ -30,7 +29,6 @@ prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
-retraction_count_max = 80
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PETG_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PETG_Normal_Quality.inst.cfg
index 7a3b50c550..76c8372166 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PETG_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PETG_Normal_Quality.inst.cfg
@@ -13,7 +13,6 @@ variant = AA 0.25
[values]
retraction_combing_max_distance = 8
-retraction_extrusion_window = 0.5
speed_infill = =math.ceil(speed_print * 40 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)
top_bottom_thickness = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg
index 85a608c293..df673c641c 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg
@@ -19,7 +19,6 @@ cool_min_layer_time_fan_speed_max = 5
cool_min_speed = 2.5
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
material_bed_temperature_layer_0 = =material_bed_temperature + 5
@@ -31,9 +30,8 @@ multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_size = 16
prime_tower_wipe_enabled = True
-retraction_count_max = 6
+retraction_count_max = 15
retraction_extra_prime_amount = 0.2
-retraction_extrusion_window = 6.5
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg
index 1d12f8f8d9..fc2156acf5 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg
@@ -17,7 +17,6 @@ cool_min_speed = 5
infill_overlap = 0
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
material_final_print_temperature = =material_print_temperature - 10
@@ -28,7 +27,6 @@ multiple_mesh_overlap = 0
prime_tower_enable = True
prime_tower_wipe_enabled = True
retraction_combing_max_distance = 50
-retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg
index 12db110133..9a17e20047 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg
@@ -17,7 +17,6 @@ cool_min_speed = 6
infill_overlap = 0
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
material_final_print_temperature = =material_print_temperature - 10
@@ -28,7 +27,6 @@ multiple_mesh_overlap = 0
prime_tower_enable = True
prime_tower_wipe_enabled = True
retraction_combing_max_distance = 50
-retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg
index eb4db520bd..1511dd698e 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg
@@ -17,7 +17,6 @@ cool_min_speed = 5
infill_overlap = 0
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -30,7 +29,6 @@ multiple_mesh_overlap = 0
prime_tower_enable = True
prime_tower_wipe_enabled = True
retraction_combing_max_distance = 50
-retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg
index 71102926d8..881e89d91b 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg
@@ -16,7 +16,6 @@ cool_fan_speed_max = 50
cool_min_speed = 7
infill_overlap = 0
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -29,7 +28,6 @@ multiple_mesh_overlap = 0
prime_tower_enable = True
prime_tower_wipe_enabled = True
retraction_combing_max_distance = 50
-retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg
index b8a6fbc38a..bdfd6aadea 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg
@@ -17,13 +17,11 @@ material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
-skin_edge_support_thickness = =0.8 if infill_sparse_density < 30 else 0
skin_overlap = 20
speed_print = 60
speed_layer_0 = =math.ceil(speed_print * 20 / 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)
-top_thickness = =0.8 if infill_sparse_density < 30 and skin_edge_support_thickness == 0.8 else top_bottom_thickness
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 50 / 60)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg
index d9bc39705b..1e2f58a3c3 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg
@@ -22,7 +22,6 @@ infill_overlap = 0
infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -37,8 +36,6 @@ prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
-retraction_count_max = 80
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg
index 03999c27e1..ce5d8a5c89 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg
@@ -21,7 +21,6 @@ cool_min_speed = 7
infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -36,8 +35,6 @@ prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
-retraction_count_max = 80
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg
index de05aa5cac..99d5d7ef1d 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg
@@ -23,7 +23,6 @@ infill_overlap = 0
infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -38,8 +37,6 @@ prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
-retraction_count_max = 80
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg
index 658e118686..15b7a619e8 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg
@@ -22,7 +22,6 @@ cool_min_speed = 5
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -36,8 +35,6 @@ prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
raft_interface_thickness = =max(layer_height * 1.5, 0.225)
-retraction_count_max = 80
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg
index 78eda2718b..bedfaa177a 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg
@@ -18,14 +18,12 @@ material_final_print_temperature = =material_print_temperature - 5
material_shrinkage_percentage_xy = 100.5
material_shrinkage_percentage_z = 100.1
retraction_combing_max_distance = 8
-skin_edge_support_thickness = =0.8 if infill_sparse_density < 30 else 0
skin_overlap = 20
speed_print = 60
speed_layer_0 = =math.ceil(speed_print * 20 / 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)
-top_thickness = =0.8 if infill_sparse_density < 30 and skin_edge_support_thickness == 0.8 else top_bottom_thickness
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
speed_infill = =math.ceil(speed_print * 50 / 60)
initial_layer_line_width_factor = 100
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg
index a9e107d887..e85891cdc8 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg
@@ -22,7 +22,6 @@ material_shrinkage_percentage_xy = 100.2
material_shrinkage_percentage_z = 100.1
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
-skin_edge_support_thickness = =0.8 if infill_sparse_density < 30 else 0
skin_overlap = 20
speed_layer_0 = 10
speed_topbottom = =math.ceil(speed_print * 40 / 70)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print.inst.cfg
index 5087857b86..74161daa57 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print.inst.cfg
@@ -33,7 +33,6 @@ material_shrinkage_percentage_z = 100.1
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
-skin_edge_support_thickness = =0.9 if infill_sparse_density < 30 else 0
skin_overlap = 20
top_bottom_thickness = 0.9
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg
index 5da2b96e2d..4ee2ec2f4e 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg
@@ -21,9 +21,7 @@ cool_min_speed = 2.5
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
-
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
@@ -37,9 +35,8 @@ multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_size = 16
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg
index cc5a911809..bd01a9e7e6 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg
@@ -21,9 +21,7 @@ cool_min_speed = 2.5
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
-
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
@@ -37,9 +35,8 @@ multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_size = 16
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg
index 82646132a0..9cc83fa123 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg
@@ -21,7 +21,6 @@ cool_min_speed = 2.5
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
@@ -37,9 +36,8 @@ multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_size = 16
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg
index e102ff7ac3..535b85955a 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg
@@ -16,7 +16,6 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =cool_fan_speed
cool_min_speed = 7
jerk_print = 25
-jerk_roofing = 1
layer_height_0 = 0.2
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print.inst.cfg
index d3637ca861..48f65ed4da 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print.inst.cfg
@@ -33,7 +33,6 @@ material_shrinkage_percentage_z = 100.1
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
-skin_edge_support_thickness = =0.9 if infill_sparse_density < 30 else 0
skin_overlap = 20
top_bottom_thickness = 1.2
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg
index 8778abc64e..dd4fe11a2c 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg
@@ -22,7 +22,6 @@ infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
@@ -36,9 +35,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 15
material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
skin_line_width = =round(line_width / 0.8, 2)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg
index 1725470319..346bb31931 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg
@@ -22,7 +22,6 @@ infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
@@ -36,9 +35,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 15
material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
skin_line_width = =round(line_width / 0.8, 2)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg
index 782b9d896a..e8617e309f 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg
@@ -22,7 +22,6 @@ infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 10
infill_wipe_dist = 0.1
-jerk_enabled = True
jerk_print = 25
machine_min_cool_heat_time_window = 15
@@ -35,9 +34,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 17
material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_wipe_enabled = True
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.8
-retraction_extrusion_window = 1
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
skin_line_width = =round(line_width / 0.8, 2)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg
index 1d2d0c68fd..aa86db8c84 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg
@@ -26,7 +26,7 @@ prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 10
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.5
retraction_min_travel = 1.5
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg
index 7026544931..4bf0036315 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg
@@ -26,7 +26,7 @@ prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 20
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.5
retraction_min_travel = 1.5
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg
index 98c8df6a6a..69a33b38f8 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg
@@ -25,7 +25,7 @@ prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 15
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.5
retraction_min_travel = 1.5
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg
index f6d8169fe8..9301d7d69f 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg
@@ -28,7 +28,7 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
retraction_hop_only_when_collides = False
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg
index 561acf9fbc..f410bd8c85 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg
@@ -29,7 +29,7 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
retraction_hop_only_when_collides = False
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg
index fa432061bb..3df2f2ca0e 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg
@@ -28,7 +28,7 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
retract_at_layer_change = False
-retraction_count_max = 12
+retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
retraction_hop_only_when_collides = False
diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg
index ef24c27b5a..b4ebe1f4e9 100644
--- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg
@@ -16,5 +16,6 @@ brim_replaces_support = False
material_print_temperature = =default_material_print_temperature + 10
material_standby_temperature = 100
prime_tower_enable = False
+retraction_count_max = 5
skin_overlap = 20
support_brim_enable = True
diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg
index d630c3bd3a..5f14866677 100644
--- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg
@@ -16,6 +16,7 @@ brim_replaces_support = False
material_print_temperature = =default_material_print_temperature + 5
material_standby_temperature = 100
prime_tower_enable = False
+retraction_count_max = 5
skin_overlap = 15
support_brim_enable = True
support_infill_sparse_thickness = 0.3
diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg
index 8d5448aafb..9e35615f14 100644
--- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg
@@ -15,5 +15,6 @@ variant = BB 0.4
brim_replaces_support = False
material_standby_temperature = 100
prime_tower_enable = False
+retraction_count_max = 5
support_brim_enable = True
support_infill_sparse_thickness = 0.18
diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg
index cf4c07a411..b1774d2c27 100644
--- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg
@@ -15,4 +15,5 @@ variant = BB 0.4
brim_replaces_support = False
material_standby_temperature = 100
prime_tower_enable = False
+retraction_count_max = 5
support_brim_enable = True
diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Verydraft_Print.inst.cfg
index e7a9936864..bd85b127a7 100644
--- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Verydraft_Print.inst.cfg
@@ -15,6 +15,7 @@ is_experimental = True
[values]
brim_replaces_support = False
material_standby_temperature = 100
+retraction_count_max = 5
support_brim_enable = True
support_infill_sparse_thickness = 0.3
support_interface_height = 1.2
diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg
index 979295a38d..037e813e7f 100644
--- a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg
@@ -15,4 +15,5 @@ variant = BB 0.8
brim_replaces_support = False
material_print_temperature = =default_material_print_temperature + 5
material_standby_temperature = 100
+retraction_count_max = 5
support_brim_enable = True
diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg
index ffdc9c9d26..9a8a17da20 100644
--- a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg
@@ -14,5 +14,6 @@ variant = BB 0.8
[values]
brim_replaces_support = False
material_standby_temperature = 100
+retraction_count_max = 5
support_brim_enable = True
support_interface_height = 0.9
diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg
index 871af303ed..4229ad1758 100644
--- a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg
@@ -14,6 +14,7 @@ variant = BB 0.8
[values]
brim_replaces_support = False
material_standby_temperature = 100
+retraction_count_max = 5
support_brim_enable = True
support_infill_sparse_thickness = 0.3
support_interface_height = 1.2
diff --git a/resources/texts/change_log.txt b/resources/texts/change_log.txt
index 3051b7c23e..33ac01743d 100644
--- a/resources/texts/change_log.txt
+++ b/resources/texts/change_log.txt
@@ -75,6 +75,7 @@ Ultimaker Cura 5.0 is now compatible with Apple M1.
- Fixed a bug where travels would go through the model with printing PVA
- Fixed a bug where Concentric ironing was affecting the print quality
- Fixed a bug where there were missing infill layers
+- Fixed AppRun permissions, contributed by probonopd
* Printer definitions, profiles and materials:
- Added Atom 3 and Atom 3 Lite printer definitions, contributed by Daniel-Kurth
diff --git a/resources/variants/ultimaker3_aa0.25.inst.cfg b/resources/variants/ultimaker3_aa0.25.inst.cfg
index 2d59246c4a..1763fa9dfd 100644
--- a/resources/variants/ultimaker3_aa0.25.inst.cfg
+++ b/resources/variants/ultimaker3_aa0.25.inst.cfg
@@ -26,8 +26,6 @@ raft_interface_thickness = =layer_height * 1.5
raft_jerk = =jerk_print
raft_margin = 15
raft_surface_layers = 2
-retraction_count_max = 25
-retraction_extrusion_window = 1
retraction_min_travel = 0.7
retraction_prime_speed = =retraction_speed
skin_overlap = 15
diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg
index ead9c3b87a..a9189830ed 100644
--- a/resources/variants/ultimaker3_aa0.8.inst.cfg
+++ b/resources/variants/ultimaker3_aa0.8.inst.cfg
@@ -17,7 +17,6 @@ default_material_print_temperature = 200
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
layer_height = 0.2
machine_min_cool_heat_time_window = 15
@@ -34,8 +33,6 @@ prime_tower_enable = False
prime_tower_wipe_enabled = True
retract_at_layer_change = =not magic_spiralize
retraction_amount = 6.5
-retraction_count_max = 25
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
diff --git a/resources/variants/ultimaker3_aa04.inst.cfg b/resources/variants/ultimaker3_aa04.inst.cfg
index d82cca6b01..bf9e8592d6 100644
--- a/resources/variants/ultimaker3_aa04.inst.cfg
+++ b/resources/variants/ultimaker3_aa04.inst.cfg
@@ -23,7 +23,6 @@ raft_jerk = =jerk_print
raft_margin = 15
raft_surface_layers = 2
retraction_amount = 6.5
-retraction_count_max = 25
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
skin_overlap = 15
diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg
index 09706598ab..148d621a21 100644
--- a/resources/variants/ultimaker3_bb0.8.inst.cfg
+++ b/resources/variants/ultimaker3_bb0.8.inst.cfg
@@ -22,11 +22,7 @@ gradual_support_infill_steps = 2
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
-jerk_support = =max(math.ceil(jerk_print * 15 / 25), 20)
-jerk_support_interface = =max(math.ceil(jerk_support * 10 / 15), 20)
-jerk_support_bottom = =max(math.ceil(jerk_support_interface * 1 / 10), 20)
layer_height = 0.2
machine_min_cool_heat_time_window = 15
machine_nozzle_heat_up_speed = 1.5
@@ -50,8 +46,6 @@ raft_margin = 10
raft_speed = 25
raft_surface_layers = 1
retraction_amount = 4.5
-retraction_count_max = 15
-retraction_extrusion_window = =retraction_amount
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 3
diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg
index 60dfc44e8c..7465a9c802 100644
--- a/resources/variants/ultimaker3_bb04.inst.cfg
+++ b/resources/variants/ultimaker3_bb04.inst.cfg
@@ -15,9 +15,6 @@ acceleration_support_interface = =math.ceil(acceleration_support * 1500 / 2000)
acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 / 1500)
cool_fan_speed_max = =cool_fan_speed
gradual_support_infill_steps = 2
-jerk_support = =math.ceil(jerk_print * 15 / 25)
-jerk_support_interface = =math.ceil(jerk_support * 10 / 15)
-jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
machine_nozzle_heat_up_speed = 1.5
machine_nozzle_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0
@@ -25,8 +22,6 @@ raft_base_speed = 20
raft_interface_speed = 20
raft_speed = 25
retraction_amount = 4.5
-retraction_count_max = 20
-retraction_extrusion_window = =retraction_amount
retraction_min_travel = =3 * line_width
speed_layer_0 = 20
speed_prime_tower = =math.ceil(speed_print * 10 / 35)
diff --git a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg
index d6f375932e..ac7aa996c7 100644
--- a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg
+++ b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg
@@ -26,8 +26,6 @@ raft_interface_thickness = =layer_height * 1.5
raft_jerk = =jerk_print
raft_margin = 15
raft_surface_layers = 2
-retraction_count_max = 25
-retraction_extrusion_window = 1
retraction_min_travel = 0.7
retraction_prime_speed = =retraction_speed
skin_overlap = 15
diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg
index df7e9486a2..e9c918a48e 100644
--- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg
+++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg
@@ -17,7 +17,6 @@ default_material_print_temperature = 200
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
layer_height = 0.2
machine_min_cool_heat_time_window = 15
@@ -34,8 +33,6 @@ prime_tower_enable = False
prime_tower_wipe_enabled = True
retract_at_layer_change = True
retraction_amount = 6.5
-retraction_count_max = 25
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
diff --git a/resources/variants/ultimaker3_extended_aa04.inst.cfg b/resources/variants/ultimaker3_extended_aa04.inst.cfg
index f95c820780..777f5a3a19 100644
--- a/resources/variants/ultimaker3_extended_aa04.inst.cfg
+++ b/resources/variants/ultimaker3_extended_aa04.inst.cfg
@@ -23,7 +23,6 @@ raft_jerk = =jerk_print
raft_margin = 15
raft_surface_layers = 2
retraction_amount = 6.5
-retraction_count_max = 25
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
skin_overlap = 15
diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg
index b50c9cc81b..ed95e4b44a 100644
--- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg
+++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg
@@ -22,11 +22,7 @@ gradual_support_infill_steps = 2
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
-jerk_support = =max(math.ceil(jerk_print * 15 / 25), 20)
-jerk_support_interface = =max(math.ceil(jerk_support * 10 / 15), 20)
-jerk_support_bottom = =max(math.ceil(jerk_support_interface * 1 / 10), 20)
layer_height = 0.2
machine_min_cool_heat_time_window = 15
machine_nozzle_heat_up_speed = 1.5
@@ -50,8 +46,6 @@ raft_margin = 10
raft_speed = 25
raft_surface_layers = 1
retraction_amount = 4.5
-retraction_count_max = 15
-retraction_extrusion_window = =retraction_amount
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 3
diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg
index 798685946f..7ec5df9128 100644
--- a/resources/variants/ultimaker3_extended_bb04.inst.cfg
+++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg
@@ -15,9 +15,6 @@ acceleration_support_interface = =math.ceil(acceleration_support * 1500 / 2000)
acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 / 1500)
cool_fan_speed_max = =cool_fan_speed
gradual_support_infill_steps = 2
-jerk_support = =math.ceil(jerk_print * 15 / 25)
-jerk_support_interface = =math.ceil(jerk_support * 10 / 15)
-jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
machine_nozzle_heat_up_speed = 1.5
machine_nozzle_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0
@@ -25,8 +22,6 @@ raft_base_speed = 20
raft_interface_speed = 20
raft_speed = 25
retraction_amount = 4.5
-retraction_count_max = 20
-retraction_extrusion_window = =retraction_amount
retraction_min_travel = =3 * line_width
speed_layer_0 = 20
speed_prime_tower = =math.ceil(speed_print * 10 / 35)
diff --git a/resources/variants/ultimaker_s3_aa0.25.inst.cfg b/resources/variants/ultimaker_s3_aa0.25.inst.cfg
index fdbd9f6d3b..14d1e3a7b8 100644
--- a/resources/variants/ultimaker_s3_aa0.25.inst.cfg
+++ b/resources/variants/ultimaker_s3_aa0.25.inst.cfg
@@ -26,8 +26,7 @@ raft_interface_thickness = =layer_height * 1.5
raft_jerk = =jerk_print
raft_margin = 15
raft_surface_layers = 2
-retraction_count_max = 25
-retraction_extrusion_window = 1
+
retraction_min_travel = 0.7
retraction_prime_speed = =retraction_speed
skin_overlap = 15
diff --git a/resources/variants/ultimaker_s3_aa0.8.inst.cfg b/resources/variants/ultimaker_s3_aa0.8.inst.cfg
index 237b38fa11..63cfebe329 100644
--- a/resources/variants/ultimaker_s3_aa0.8.inst.cfg
+++ b/resources/variants/ultimaker_s3_aa0.8.inst.cfg
@@ -17,7 +17,6 @@ default_material_print_temperature = 200
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
layer_height = 0.2
machine_min_cool_heat_time_window = 15
@@ -34,8 +33,6 @@ prime_tower_enable = False
prime_tower_wipe_enabled = True
retract_at_layer_change = =not magic_spiralize
retraction_amount = 6.5
-retraction_count_max = 25
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
diff --git a/resources/variants/ultimaker_s3_aa04.inst.cfg b/resources/variants/ultimaker_s3_aa04.inst.cfg
index 181a237405..f6049f3c6d 100644
--- a/resources/variants/ultimaker_s3_aa04.inst.cfg
+++ b/resources/variants/ultimaker_s3_aa04.inst.cfg
@@ -23,7 +23,6 @@ raft_jerk = =jerk_print
raft_margin = 15
raft_surface_layers = 2
retraction_amount = 6.5
-retraction_count_max = 25
retraction_min_travel = =line_width * 2
skin_overlap = 15
speed_print = 70
diff --git a/resources/variants/ultimaker_s3_bb0.8.inst.cfg b/resources/variants/ultimaker_s3_bb0.8.inst.cfg
index 56b2d3a5c3..1766d16d8f 100644
--- a/resources/variants/ultimaker_s3_bb0.8.inst.cfg
+++ b/resources/variants/ultimaker_s3_bb0.8.inst.cfg
@@ -21,11 +21,7 @@ gradual_support_infill_steps = 2
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
-jerk_support = =max(math.ceil(jerk_print * 15 / 25), 20)
-jerk_support_interface = =max(math.ceil(jerk_support * 10 / 15), 20)
-jerk_support_bottom = =max(math.ceil(jerk_support_interface * 1 / 10), 20)
layer_height = 0.2
machine_min_cool_heat_time_window = 15
machine_nozzle_heat_up_speed = 1.5
@@ -49,8 +45,6 @@ raft_margin = 10
raft_speed = 25
raft_surface_layers = 1
retraction_amount = 4.5
-retraction_count_max = 15
-retraction_extrusion_window = =retraction_amount
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 3
diff --git a/resources/variants/ultimaker_s3_bb04.inst.cfg b/resources/variants/ultimaker_s3_bb04.inst.cfg
index 2fad997372..835c96b09e 100644
--- a/resources/variants/ultimaker_s3_bb04.inst.cfg
+++ b/resources/variants/ultimaker_s3_bb04.inst.cfg
@@ -15,9 +15,6 @@ acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 /
acceleration_prime_tower = =math.ceil(acceleration_print * 200 / 3500)
cool_fan_speed_max = =cool_fan_speed
gradual_support_infill_steps = 2
-jerk_support = =math.ceil(jerk_print * 15 / 25)
-jerk_support_interface = =math.ceil(jerk_support * 10 / 15)
-jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
machine_nozzle_heat_up_speed = 1.5
machine_nozzle_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0
@@ -25,8 +22,6 @@ raft_base_speed = 20
raft_interface_speed = 20
raft_speed = 25
retraction_amount = 4.5
-retraction_count_max = 20
-retraction_extrusion_window = =retraction_amount
retraction_min_travel = =3 * line_width
speed_layer_0 = 20
speed_prime_tower = =math.ceil(speed_print * 10 / 35)
diff --git a/resources/variants/ultimaker_s3_cc04.inst.cfg b/resources/variants/ultimaker_s3_cc04.inst.cfg
index f83e60119b..9a5194ad15 100644
--- a/resources/variants/ultimaker_s3_cc04.inst.cfg
+++ b/resources/variants/ultimaker_s3_cc04.inst.cfg
@@ -22,7 +22,6 @@ raft_interface_thickness = =layer_height * 1.5
raft_jerk = =jerk_print
raft_margin = 15
raft_surface_layers = 2
-retraction_count_max = 25
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
speed_infill = =speed_print
diff --git a/resources/variants/ultimaker_s3_cc06.inst.cfg b/resources/variants/ultimaker_s3_cc06.inst.cfg
index 2563ca2c11..8a839f040e 100644
--- a/resources/variants/ultimaker_s3_cc06.inst.cfg
+++ b/resources/variants/ultimaker_s3_cc06.inst.cfg
@@ -22,7 +22,6 @@ raft_interface_thickness = =layer_height * 1.5
raft_jerk = =jerk_print
raft_margin = 15
raft_surface_layers = 2
-retraction_count_max = 25
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
speed_infill = =speed_print
diff --git a/resources/variants/ultimaker_s5_aa0.25.inst.cfg b/resources/variants/ultimaker_s5_aa0.25.inst.cfg
index c57414f18a..edd2141acc 100644
--- a/resources/variants/ultimaker_s5_aa0.25.inst.cfg
+++ b/resources/variants/ultimaker_s5_aa0.25.inst.cfg
@@ -26,8 +26,6 @@ raft_interface_thickness = =layer_height * 1.5
raft_jerk = =jerk_print
raft_margin = 15
raft_surface_layers = 2
-retraction_count_max = 25
-retraction_extrusion_window = 1
retraction_min_travel = 0.7
retraction_prime_speed = =retraction_speed
skin_overlap = 15
diff --git a/resources/variants/ultimaker_s5_aa0.8.inst.cfg b/resources/variants/ultimaker_s5_aa0.8.inst.cfg
index 6eb4ac8e25..5e55770225 100644
--- a/resources/variants/ultimaker_s5_aa0.8.inst.cfg
+++ b/resources/variants/ultimaker_s5_aa0.8.inst.cfg
@@ -34,8 +34,6 @@ prime_tower_enable = False
prime_tower_wipe_enabled = True
retract_at_layer_change = =not magic_spiralize
retraction_amount = 6.5
-retraction_count_max = 25
-retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
diff --git a/resources/variants/ultimaker_s5_aa04.inst.cfg b/resources/variants/ultimaker_s5_aa04.inst.cfg
index 8e4b7780f0..8453254625 100644
--- a/resources/variants/ultimaker_s5_aa04.inst.cfg
+++ b/resources/variants/ultimaker_s5_aa04.inst.cfg
@@ -23,7 +23,6 @@ raft_jerk = =jerk_print
raft_margin = 15
raft_surface_layers = 2
retraction_amount = 6.5
-retraction_count_max = 25
retraction_min_travel = =line_width * 2
skin_overlap = 15
speed_print = 70
diff --git a/resources/variants/ultimaker_s5_bb0.8.inst.cfg b/resources/variants/ultimaker_s5_bb0.8.inst.cfg
index 0c0e162745..8811be723c 100644
--- a/resources/variants/ultimaker_s5_bb0.8.inst.cfg
+++ b/resources/variants/ultimaker_s5_bb0.8.inst.cfg
@@ -21,11 +21,7 @@ gradual_support_infill_steps = 2
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
-jerk_enabled = True
jerk_print = 25
-jerk_support = =math.ceil(jerk_print * 15 / 25)
-jerk_support_interface = =math.ceil(jerk_support * 10 / 15)
-jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
layer_height = 0.2
machine_min_cool_heat_time_window = 15
machine_nozzle_heat_up_speed = 1.5
@@ -49,8 +45,6 @@ raft_margin = 10
raft_speed = 25
raft_surface_layers = 1
retraction_amount = 4.5
-retraction_count_max = 15
-retraction_extrusion_window = =retraction_amount
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 3
diff --git a/resources/variants/ultimaker_s5_bb04.inst.cfg b/resources/variants/ultimaker_s5_bb04.inst.cfg
index 90c19685ba..4b7c64f635 100644
--- a/resources/variants/ultimaker_s5_bb04.inst.cfg
+++ b/resources/variants/ultimaker_s5_bb04.inst.cfg
@@ -15,9 +15,6 @@ acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 /
acceleration_prime_tower = =math.ceil(acceleration_print * 200 / 3500)
cool_fan_speed_max = =cool_fan_speed
gradual_support_infill_steps = 2
-jerk_support = =math.ceil(jerk_print * 15 / 25)
-jerk_support_interface = =math.ceil(jerk_support * 10 / 15)
-jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
machine_nozzle_heat_up_speed = 1.5
machine_nozzle_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0
@@ -25,8 +22,6 @@ raft_base_speed = 20
raft_interface_speed = 20
raft_speed = 25
retraction_amount = 4.5
-retraction_count_max = 20
-retraction_extrusion_window = =retraction_amount
retraction_min_travel = =3 * line_width
speed_layer_0 = 20
speed_prime_tower = =math.ceil(speed_print * 10 / 35)
diff --git a/resources/variants/ultimaker_s5_cc04.inst.cfg b/resources/variants/ultimaker_s5_cc04.inst.cfg
index 356df76f2e..ac5420f127 100644
--- a/resources/variants/ultimaker_s5_cc04.inst.cfg
+++ b/resources/variants/ultimaker_s5_cc04.inst.cfg
@@ -22,7 +22,6 @@ raft_interface_thickness = =layer_height * 1.5
raft_jerk = =jerk_print
raft_margin = 15
raft_surface_layers = 2
-retraction_count_max = 25
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
speed_infill = =speed_print
diff --git a/resources/variants/ultimaker_s5_cc06.inst.cfg b/resources/variants/ultimaker_s5_cc06.inst.cfg
index 027274bca5..0d27f9cdce 100644
--- a/resources/variants/ultimaker_s5_cc06.inst.cfg
+++ b/resources/variants/ultimaker_s5_cc06.inst.cfg
@@ -22,7 +22,6 @@ raft_interface_thickness = =layer_height * 1.5
raft_jerk = =jerk_print
raft_margin = 15
raft_surface_layers = 2
-retraction_count_max = 25
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
speed_infill = =speed_print