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:
-rw-r--r--.github/workflows/conan-recipe-version.yml19
-rw-r--r--CMakeLists.txt63
-rw-r--r--GitVersion.yml55
-rw-r--r--Jenkinsfile74
-rw-r--r--cmake/CuraPluginInstall.cmake92
-rw-r--r--cmake/CuraTests.cmake77
-rwxr-xr-xcmake/mod_bundled_packages_json.py73
-rw-r--r--com.ultimaker.cura.appdata.xml34
-rw-r--r--com.ultimaker.cura.desktop.in19
-rw-r--r--conanfile.py15
-rw-r--r--contributing.md4
-rwxr-xr-xcura/CuraApplication.py4
-rw-r--r--cura/LayerPolygon.py82
-rw-r--r--cura/Machines/MachineErrorChecker.py12
-rw-r--r--cura/Machines/Models/CompatibleMachineModel.py76
-rw-r--r--cura/Machines/Models/GlobalStacksModel.py22
-rw-r--r--cura/Machines/Models/MachineListModel.py42
-rwxr-xr-xcura/PlatformPhysics.py11
-rw-r--r--cura/PrinterOutput/Models/ExtruderConfigurationModel.py6
-rw-r--r--cura/Settings/CuraStackBuilder.py4
-rwxr-xr-xcura/Settings/GlobalStack.py6
-rwxr-xr-xcura/Settings/MachineManager.py4
-rw-r--r--cura/UI/PrintInformation.py12
-rw-r--r--cura/UI/WhatsNewPagesModel.py24
-rwxr-xr-xplugins/3MFReader/ThreeMFWorkspaceReader.py16
-rw-r--r--plugins/GCodeWriter/GCodeWriter.py42
-rw-r--r--plugins/UFPWriter/UFPWriter.py69
-rw-r--r--plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml9
-rw-r--r--plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml9
-rw-r--r--plugins/UM3NetworkPrinting/src/Cloud/AbstractCloudOutputDevice.py47
-rw-r--r--plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py9
-rw-r--r--plugins/UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py2
-rw-r--r--plugins/USBPrinting/USBPrinterOutputDevice.py4
-rw-r--r--requirements.txt3
-rw-r--r--resources/definitions/abax_pri3.def.json1
-rw-r--r--resources/definitions/abax_pri5.def.json1
-rw-r--r--resources/definitions/anycubic_4max.def.json2
-rw-r--r--resources/definitions/builder_premium_large.def.json2
-rw-r--r--resources/definitions/builder_premium_medium.def.json2
-rw-r--r--resources/definitions/builder_premium_small.def.json2
-rw-r--r--resources/definitions/dagoma_pro_430_bowden.def.json1
-rw-r--r--resources/definitions/eryone_thinker.def.json3
-rw-r--r--resources/definitions/fdmprinter.def.json79
-rw-r--r--resources/definitions/flsun_sr.def.json4
-rw-r--r--resources/definitions/liquid.def.json2
-rw-r--r--resources/definitions/mingda_1000pro.def.json24
-rw-r--r--resources/definitions/mingda_4h.def.json19
-rw-r--r--resources/definitions/mingda_600pro.def.json24
-rw-r--r--resources/definitions/mingda_6h.def.json19
-rw-r--r--resources/definitions/mingda_base.def.json25
-rw-r--r--resources/definitions/mingda_d2.def.json7
-rw-r--r--resources/definitions/mingda_d3pro.def.json11
-rw-r--r--resources/definitions/mingda_d4pro.def.json7
-rw-r--r--resources/definitions/mingda_magician_max.def.json9
-rw-r--r--resources/definitions/mingda_magician_pro.def.json12
-rw-r--r--resources/definitions/mingda_magician_x.def.json9
-rw-r--r--resources/definitions/nps.def.json54
-rw-r--r--resources/definitions/renkforce_rf100_xl.def.json114
-rw-r--r--resources/definitions/trimaker_nebula.def.json2
-rw-r--r--resources/definitions/ultimaker.def.json49
-rw-r--r--resources/definitions/ultimaker2_plus_connect.def.json3
-rw-r--r--resources/definitions/ultimaker3.def.json10
-rw-r--r--resources/definitions/ultimaker_s3.def.json15
-rw-r--r--resources/definitions/ultimaker_s5.def.json15
-rw-r--r--resources/definitions/vivedino_base.def.json153
-rw-r--r--resources/definitions/vivedino_trex2plus.def.json34
-rw-r--r--resources/definitions/vivedino_trex3.def.json34
-rw-r--r--resources/definitions/vzbot_235.def.json18
-rw-r--r--resources/definitions/vzbot_330.def.json18
-rw-r--r--resources/definitions/vzbot_base.def.json112
-rw-r--r--resources/definitions/vzbot_custom.def.json17
-rw-r--r--resources/definitions/winbo_dragonl4.def.json1
-rw-r--r--resources/definitions/winbo_mini2.def.json1
-rw-r--r--resources/extruders/nps_extruder_0.def.json15
-rw-r--r--resources/extruders/trex2_extruder_0.def.json25
-rw-r--r--resources/extruders/trex2_extruder_1.def.json25
-rw-r--r--resources/extruders/trex_base_extruder_0.def.json16
-rw-r--r--resources/extruders/trex_extruder_0.def.json25
-rw-r--r--resources/extruders/trex_extruder_1.def.json25
-rw-r--r--resources/extruders/vzbot_extruder_0.def.json16
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg10
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg11
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg11
-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_Fast_Print_Accurate.inst.cfg12
-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_Draft_Print_Quick.inst.cfg15
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg5
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg5
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg15
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg15
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg5
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg5
-rw-r--r--resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg21
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg10
-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.cfg7
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg7
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg7
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg7
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg7
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg7
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg7
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality_Accurate.inst.cfg7
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg7
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg7
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg10
-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.cfg15
-rw-r--r--resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg10
-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.cfg15
-rw-r--r--resources/meshes/mingda_magician_max_base.stlbin0 -> 326084 bytes
-rw-r--r--resources/meshes/mingda_magician_pro_base.stlbin0 -> 389184 bytes
-rw-r--r--resources/meshes/mingda_magician_x_base.stlbin0 -> 291384 bytes
-rw-r--r--resources/meshes/npscura.stlbin0 -> 798684 bytes
-rw-r--r--resources/meshes/vivedino_trex.stlbin0 -> 480984 bytes
-rw-r--r--resources/meshes/vzbot_235_bed.stlbin0 -> 682384 bytes
-rw-r--r--resources/meshes/vzbot_330_bed.stlbin0 -> 1003984 bytes
-rw-r--r--resources/qml/Dialogs/ChoosePrinterDialog.qml94
-rw-r--r--resources/qml/ExtruderIcon.qml16
-rw-r--r--resources/qml/Preferences/GeneralPage.qml21
-rw-r--r--resources/qml/Preferences/MachinesPage.qml2
-rw-r--r--resources/qml/PrinterSelector/PrintSelectorCard.qml143
-rw-r--r--resources/qml/qmldir1
-rw-r--r--resources/quality/abax_pri3/apri3_pla_fast.inst.cfg1
-rw-r--r--resources/quality/abax_pri3/apri3_pla_high.inst.cfg1
-rw-r--r--resources/quality/abax_pri3/apri3_pla_normal.inst.cfg1
-rw-r--r--resources/quality/abax_pri5/apri5_pla_fast.inst.cfg1
-rw-r--r--resources/quality/abax_pri5/apri5_pla_high.inst.cfg1
-rw-r--r--resources/quality/abax_pri5/apri5_pla_normal.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fast.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fine.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_standard.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fast.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fine.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_standard.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_discoultimate_pla_fast.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_discoultimate_pla_fine.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_discoultimate_pla_standard.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg1
-rw-r--r--resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg1
-rw-r--r--resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg2
-rw-r--r--resources/quality/fabtotum/fabtotum_abs_high.inst.cfg2
-rw-r--r--resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg2
-rw-r--r--resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg2
-rw-r--r--resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg2
-rw-r--r--resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg2
-rw-r--r--resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg2
-rw-r--r--resources/quality/fabtotum/fabtotum_pla_high.inst.cfg2
-rw-r--r--resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg2
-rw-r--r--resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg2
-rw-r--r--resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg2
-rw-r--r--resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg2
-rw-r--r--resources/quality/fabxpro/fabxpro_abs_draft.inst.cfg1
-rw-r--r--resources/quality/mingda/ABS/mingda_0.2_ABS_super.inst.cfg2
-rw-r--r--resources/quality/mingda/ABS/mingda_0.2_ABS_ultra.inst.cfg2
-rw-r--r--resources/quality/mingda/ABS/mingda_0.3_ABS_adaptive.inst.cfg2
-rw-r--r--resources/quality/mingda/ABS/mingda_0.3_ABS_low.inst.cfg4
-rw-r--r--resources/quality/mingda/ABS/mingda_0.3_ABS_standard.inst.cfg3
-rw-r--r--resources/quality/mingda/ABS/mingda_0.3_ABS_super.inst.cfg2
-rw-r--r--resources/quality/mingda/ABS/mingda_0.4_ABS_adaptive.inst.cfg2
-rw-r--r--resources/quality/mingda/ABS/mingda_0.4_ABS_low.inst.cfg3
-rw-r--r--resources/quality/mingda/ABS/mingda_0.4_ABS_standard.inst.cfg2
-rw-r--r--resources/quality/mingda/ABS/mingda_0.4_ABS_super.inst.cfg2
-rw-r--r--resources/quality/mingda/ABS/mingda_0.5_ABS_adaptive.inst.cfg2
-rw-r--r--resources/quality/mingda/ABS/mingda_0.5_ABS_low.inst.cfg2
-rw-r--r--resources/quality/mingda/ABS/mingda_0.5_ABS_standard.inst.cfg2
-rw-r--r--resources/quality/mingda/ABS/mingda_0.5_ABS_super.inst.cfg2
-rw-r--r--resources/quality/mingda/ABS/mingda_0.6_ABS_standard.inst.cfg2
-rw-r--r--resources/quality/mingda/ABS/mingda_0.8_ABS_draft.inst.cfg2
-rw-r--r--resources/quality/mingda/ABS/mingda_1.0_ABS_draft.inst.cfg2
-rw-r--r--resources/quality/mingda/PETG/mingda_0.3_PETG_low.inst.cfg3
-rw-r--r--resources/quality/mingda/PETG/mingda_0.3_PETG_standard.inst.cfg2
-rw-r--r--resources/quality/mingda/PETG/mingda_0.4_PETG_low.inst.cfg2
-rw-r--r--resources/quality/mingda/PLA/mingda_0.3_PLA_low.inst.cfg2
-rw-r--r--resources/quality/mingda/PLA/mingda_0.3_PLA_standard.inst.cfg1
-rw-r--r--resources/quality/mingda/PLA/mingda_0.4_PLA_low.inst.cfg1
-rw-r--r--resources/quality/mingda/TPU/mingda_0.3_TPU_standard.inst.cfg1
-rw-r--r--resources/quality/mingda/mingda_global_adaptive.inst.cfg14
-rw-r--r--resources/quality/mingda/mingda_global_draft.inst.cfg18
-rw-r--r--resources/quality/mingda/mingda_global_low.inst.cfg17
-rw-r--r--resources/quality/mingda/mingda_global_standard.inst.cfg17
-rw-r--r--resources/quality/mingda/mingda_global_super.inst.cfg8
-rw-r--r--resources/quality/mingda/mingda_global_ultra.inst.cfg13
-rw-r--r--resources/quality/nps/nps_ABS_A.inst.cfg46
-rw-r--r--resources/quality/nps/nps_ABS_B.inst.cfg42
-rw-r--r--resources/quality/nps/nps_ABS_C.inst.cfg42
-rw-r--r--resources/quality/nps/nps_PC_A.inst.cfg56
-rw-r--r--resources/quality/nps/nps_PC_B.inst.cfg56
-rw-r--r--resources/quality/nps/nps_PC_C.inst.cfg56
-rw-r--r--resources/quality/nps/nps_PETG_A.inst.cfg42
-rw-r--r--resources/quality/nps/nps_PETG_B.inst.cfg42
-rw-r--r--resources/quality/nps/nps_PETG_C.inst.cfg41
-rw-r--r--resources/quality/nps/nps_PLA_A.inst.cfg41
-rw-r--r--resources/quality/nps/nps_PLA_B.inst.cfg41
-rw-r--r--resources/quality/nps/nps_PLA_C.inst.cfg41
-rw-r--r--resources/quality/nps/nps_TPU_A.inst.cfg41
-rw-r--r--resources/quality/nps/nps_TPU_B.inst.cfg41
-rw-r--r--resources/quality/nps/nps_TPU_C.inst.cfg41
-rw-r--r--resources/quality/nps/nps_global_A.inst.cfg15
-rw-r--r--resources/quality/nps/nps_global_B.inst.cfg15
-rw-r--r--resources/quality/nps/nps_global_C.inst.cfg15
-rw-r--r--resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg5
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg5
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg5
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg5
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg9
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg9
-rw-r--r--resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg9
-rw-r--r--resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg4
-rw-r--r--resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg4
-rw-r--r--resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_draft.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_normal.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_draft.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_normal.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_draft.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_normal.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_high.inst.cfg5
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_normal.inst.cfg5
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_fast.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_normal.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_fast.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_normal.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_draft.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_normal.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_high.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_normal.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_fast.inst.cfg5
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_normal.inst.cfg5
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_fast.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_normal.inst.cfg7
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pc_0.8_normal.inst.cfg6
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg9
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.25_high.inst.cfg4
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.4_normal.inst.cfg4
-rw-r--r--resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.6_fast.inst.cfg6
-rw-r--r--resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg7
-rw-r--r--resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg7
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg7
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg7
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg7
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg1
-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.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg6
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg6
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg6
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.25_Nylon_Normal_Quality.inst.cfg7
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg3
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Draft_Print.inst.cfg8
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print.inst.cfg8
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_High_Quality.inst.cfg8
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality.inst.cfg6
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg3
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg3
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg3
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg2
-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.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg2
-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_ABS_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Superdraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Draft_Print.inst.cfg6
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Superdraft_Print.inst.cfg6
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Verydraft_Print.inst.cfg6
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Superdraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg7
-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_PP_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg6
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg6
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg8
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg8
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg2
-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.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg6
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg6
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg6
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg2
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg1
-rw-r--r--resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg1
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.2_ABS_super.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.2_ABS_ultra.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.2_PETG_super.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.2_PETG_ultra.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.2_PLA_super.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.2_PLA_ultra.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_adaptive.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_low.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_standard.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_super.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_adaptive.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_low.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_standard.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_super.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_adaptive.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_low.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_standard.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_super.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.4_TPU_adaptive.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.4_TPU_standard.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.4_TPU_super.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.6_ABS_standard.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.6_PETG_standard.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.6_PLA_draft.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.6_PLA_low.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.6_PLA_standard.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.6_TPU_standard.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.8_ABS_draft.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.8_PETG_draft.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.8_PLA_draft.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_0.8_TPU_draft.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_global_adaptive.inst.cfg19
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_global_draft.inst.cfg18
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_global_low.inst.cfg18
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_global_standard.inst.cfg18
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_global_super.inst.cfg18
-rw-r--r--resources/quality/vivedino/trex2plus/trex2plus_global_ultra.inst.cfg18
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.2_ABS_super.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.2_ABS_ultra.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.2_PETG_super.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.2_PETG_ultra.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.2_PLA_super.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.2_PLA_ultra.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.4_ABS_adaptive.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.4_ABS_low.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.4_ABS_standard.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.4_ABS_super.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.4_PETG_adaptive.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.4_PETG_low.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.4_PETG_standard.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.4_PETG_super.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.4_PLA_adaptive.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.4_PLA_low.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.4_PLA_standard.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.4_PLA_super.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.4_TPU_adaptive.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.4_TPU_standard.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.4_TPU_super.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.6_ABS_standard.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.6_PETG_standard.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.6_PLA_draft.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.6_PLA_low.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.6_PLA_standard.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.6_TPU_standard.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.8_ABS_draft.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.8_PETG_draft.inst.cfg14
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.8_PLA_draft.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex3/trex3_0.8_TPU_draft.inst.cfg13
-rw-r--r--resources/quality/vivedino/trex3/trex3_global_adaptive.inst.cfg19
-rw-r--r--resources/quality/vivedino/trex3/trex3_global_draft.inst.cfg18
-rw-r--r--resources/quality/vivedino/trex3/trex3_global_low.inst.cfg18
-rw-r--r--resources/quality/vivedino/trex3/trex3_global_standard.inst.cfg18
-rw-r--r--resources/quality/vivedino/trex3/trex3_global_super.inst.cfg18
-rw-r--r--resources/quality/vivedino/trex3/trex3_global_ultra.inst.cfg18
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.2_ABS_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.2_ABS_ultra.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_adaptive.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_low.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_adaptive.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_low.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_adaptive.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_low.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.6_ABS_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_0.8_ABS_draft.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/ABS/vzbot_1.0_ABS_draft.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.2_PC_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.2_PC_ultra.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.3_PC_adaptive.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.3_PC_low.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.3_PC_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.3_PC_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.4_PC_adaptive.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.4_PC_low.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.4_PC_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.4_PC_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.5_PC_adaptive.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.5_PC_low.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.5_PC_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.5_PC_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.6_PC_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_0.8_PC_draft.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PC/vzbot_1.0_PC_draft.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.2_PETG_super.inst.cfg17
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.2_PETG_ultra.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_adaptive.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_low.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_standard.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_super.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_adaptive.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_low.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_standard.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_super.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_adaptive.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_low.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_standard.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_super.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.6_PETG_standard.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_0.8_PETG_draft.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PETG/vzbot_1.0_PETG_draft.inst.cfg16
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.2_PLA_super.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.2_PLA_ultra.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_adaptive.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_low.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_standard.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_super.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_adaptive.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_low.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_standard.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_super.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_adaptive.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_low.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_standard.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_super.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.6_PLA_draft.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.6_PLA_low.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.6_PLA_standard.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_0.8_PLA_draft.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PLA/vzbot_1.0_PLA_draft.inst.cfg13
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.2_PVA_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.2_PVA_ultra.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_adaptive.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_low.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_adaptive.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_low.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_adaptive.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_low.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.6_PVA_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_0.8_PVA_draft.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/PVA/vzbot_1.0_PVA_draft.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/TPU/vzbot_0.3_TPU_adaptive.inst.cfg15
-rw-r--r--resources/quality/vzbot/base/TPU/vzbot_0.3_TPU_standard.inst.cfg15
-rw-r--r--resources/quality/vzbot/base/TPU/vzbot_0.3_TPU_super.inst.cfg15
-rw-r--r--resources/quality/vzbot/base/TPU/vzbot_0.4_TPU_adaptive.inst.cfg15
-rw-r--r--resources/quality/vzbot/base/TPU/vzbot_0.4_TPU_standard.inst.cfg15
-rw-r--r--resources/quality/vzbot/base/TPU/vzbot_0.4_TPU_super.inst.cfg15
-rw-r--r--resources/quality/vzbot/base/TPU/vzbot_0.5_TPU_adaptive.inst.cfg15
-rw-r--r--resources/quality/vzbot/base/TPU/vzbot_0.5_TPU_standard.inst.cfg15
-rw-r--r--resources/quality/vzbot/base/TPU/vzbot_0.5_TPU_super.inst.cfg15
-rw-r--r--resources/quality/vzbot/base/TPU/vzbot_0.6_TPU_standard.inst.cfg15
-rw-r--r--resources/quality/vzbot/base/TPU/vzbot_0.8_TPU_draft.inst.cfg15
-rw-r--r--resources/quality/vzbot/base/TPU/vzbot_1.0_TPU_draft.inst.cfg15
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.2_nylon_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.2_nylon_ultra.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_adaptive.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_low.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_adaptive.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_low.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_adaptive.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_low.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_super.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.6_nylon_standard.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_0.8_nylon_draft.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/nylon/vzbot_1.0_nylon_draft.inst.cfg14
-rw-r--r--resources/quality/vzbot/base/vzbot_global_adaptive.inst.cfg19
-rw-r--r--resources/quality/vzbot/base/vzbot_global_draft.inst.cfg18
-rw-r--r--resources/quality/vzbot/base/vzbot_global_low.inst.cfg18
-rw-r--r--resources/quality/vzbot/base/vzbot_global_standard.inst.cfg18
-rw-r--r--resources/quality/vzbot/base/vzbot_global_super.inst.cfg18
-rw-r--r--resources/quality/vzbot/base/vzbot_global_ultra.inst.cfg18
-rw-r--r--resources/texts/change_log.txt9
-rw-r--r--resources/variants/mingda_1000pro_0.2.inst.cfg12
-rw-r--r--resources/variants/mingda_1000pro_0.3.inst.cfg12
-rw-r--r--resources/variants/mingda_1000pro_0.4.inst.cfg12
-rw-r--r--resources/variants/mingda_1000pro_0.5.inst.cfg12
-rw-r--r--resources/variants/mingda_1000pro_0.6.inst.cfg12
-rw-r--r--resources/variants/mingda_1000pro_0.8.inst.cfg12
-rw-r--r--resources/variants/mingda_1000pro_1.0.inst.cfg12
-rw-r--r--resources/variants/mingda_4h_0.2.inst.cfg12
-rw-r--r--resources/variants/mingda_4h_0.3.inst.cfg12
-rw-r--r--resources/variants/mingda_4h_0.4.inst.cfg12
-rw-r--r--resources/variants/mingda_4h_0.5.inst.cfg12
-rw-r--r--resources/variants/mingda_4h_0.6.inst.cfg12
-rw-r--r--resources/variants/mingda_4h_0.8.inst.cfg12
-rw-r--r--resources/variants/mingda_4h_1.0.inst.cfg12
-rw-r--r--resources/variants/mingda_600pro_0.2.inst.cfg12
-rw-r--r--resources/variants/mingda_600pro_0.3.inst.cfg12
-rw-r--r--resources/variants/mingda_600pro_0.4.inst.cfg12
-rw-r--r--resources/variants/mingda_600pro_0.5.inst.cfg12
-rw-r--r--resources/variants/mingda_600pro_0.6.inst.cfg12
-rw-r--r--resources/variants/mingda_600pro_0.8.inst.cfg12
-rw-r--r--resources/variants/mingda_600pro_1.0.inst.cfg12
-rw-r--r--resources/variants/mingda_6h_0.2.inst.cfg12
-rw-r--r--resources/variants/mingda_6h_0.3.inst.cfg12
-rw-r--r--resources/variants/mingda_6h_0.4.inst.cfg12
-rw-r--r--resources/variants/mingda_6h_0.5.inst.cfg12
-rw-r--r--resources/variants/mingda_6h_0.6.inst.cfg12
-rw-r--r--resources/variants/mingda_6h_0.8.inst.cfg12
-rw-r--r--resources/variants/mingda_6h_1.0.inst.cfg12
-rw-r--r--resources/variants/ultimaker3_aa0.25.inst.cfg8
-rw-r--r--resources/variants/ultimaker3_aa0.8.inst.cfg2
-rw-r--r--resources/variants/ultimaker3_aa04.inst.cfg9
-rw-r--r--resources/variants/ultimaker3_bb0.8.inst.cfg10
-rw-r--r--resources/variants/ultimaker3_bb04.inst.cfg3
-rw-r--r--resources/variants/ultimaker3_extended_aa0.25.inst.cfg8
-rw-r--r--resources/variants/ultimaker3_extended_aa0.8.inst.cfg2
-rw-r--r--resources/variants/ultimaker3_extended_aa04.inst.cfg9
-rw-r--r--resources/variants/ultimaker3_extended_bb0.8.inst.cfg10
-rw-r--r--resources/variants/ultimaker3_extended_bb04.inst.cfg3
-rw-r--r--resources/variants/ultimaker_s3_aa0.25.inst.cfg9
-rw-r--r--resources/variants/ultimaker_s3_aa0.8.inst.cfg2
-rw-r--r--resources/variants/ultimaker_s3_aa04.inst.cfg9
-rw-r--r--resources/variants/ultimaker_s3_bb0.8.inst.cfg10
-rw-r--r--resources/variants/ultimaker_s3_bb04.inst.cfg3
-rw-r--r--resources/variants/ultimaker_s3_cc04.inst.cfg9
-rw-r--r--resources/variants/ultimaker_s3_cc06.inst.cfg9
-rw-r--r--resources/variants/ultimaker_s5_aa0.25.inst.cfg8
-rw-r--r--resources/variants/ultimaker_s5_aa0.8.inst.cfg3
-rw-r--r--resources/variants/ultimaker_s5_aa04.inst.cfg9
-rw-r--r--resources/variants/ultimaker_s5_bb0.8.inst.cfg10
-rw-r--r--resources/variants/ultimaker_s5_bb04.inst.cfg3
-rw-r--r--resources/variants/ultimaker_s5_cc04.inst.cfg9
-rw-r--r--resources/variants/ultimaker_s5_cc06.inst.cfg9
-rw-r--r--resources/variants/vivedino_trex2plus_0.2.inst.cfg12
-rw-r--r--resources/variants/vivedino_trex2plus_0.4.inst.cfg12
-rw-r--r--resources/variants/vivedino_trex2plus_0.6.inst.cfg12
-rw-r--r--resources/variants/vivedino_trex2plus_0.8.inst.cfg13
-rw-r--r--resources/variants/vivedino_trex3_0.2.inst.cfg12
-rw-r--r--resources/variants/vivedino_trex3_0.4.inst.cfg12
-rw-r--r--resources/variants/vivedino_trex3_0.6.inst.cfg12
-rw-r--r--resources/variants/vivedino_trex3_0.8.inst.cfg13
-rw-r--r--resources/variants/vzbot_235_0.2.inst.cfg12
-rw-r--r--resources/variants/vzbot_235_0.3.inst.cfg12
-rw-r--r--resources/variants/vzbot_235_0.4.inst.cfg12
-rw-r--r--resources/variants/vzbot_235_0.5.inst.cfg12
-rw-r--r--resources/variants/vzbot_235_0.6.inst.cfg12
-rw-r--r--resources/variants/vzbot_235_0.8.inst.cfg12
-rw-r--r--resources/variants/vzbot_235_1.0.inst.cfg12
-rw-r--r--resources/variants/vzbot_330_0.2.inst.cfg12
-rw-r--r--resources/variants/vzbot_330_0.3.inst.cfg12
-rw-r--r--resources/variants/vzbot_330_0.4.inst.cfg12
-rw-r--r--resources/variants/vzbot_330_0.5.inst.cfg12
-rw-r--r--resources/variants/vzbot_330_0.6.inst.cfg12
-rw-r--r--resources/variants/vzbot_330_0.8.inst.cfg12
-rw-r--r--resources/variants/vzbot_330_1.0.inst.cfg12
-rw-r--r--resources/variants/vzbot_base_0.2.inst.cfg12
-rw-r--r--resources/variants/vzbot_base_0.3.inst.cfg12
-rw-r--r--resources/variants/vzbot_base_0.4.inst.cfg12
-rw-r--r--resources/variants/vzbot_base_0.5.inst.cfg12
-rw-r--r--resources/variants/vzbot_base_0.6.inst.cfg12
-rw-r--r--resources/variants/vzbot_base_0.8.inst.cfg12
-rw-r--r--resources/variants/vzbot_base_1.0.inst.cfg12
-rw-r--r--resources/variants/vzbot_custom_0.2.inst.cfg12
-rw-r--r--resources/variants/vzbot_custom_0.3.inst.cfg12
-rw-r--r--resources/variants/vzbot_custom_0.4.inst.cfg12
-rw-r--r--resources/variants/vzbot_custom_0.5.inst.cfg12
-rw-r--r--resources/variants/vzbot_custom_0.6.inst.cfg12
-rw-r--r--resources/variants/vzbot_custom_0.8.inst.cfg12
-rw-r--r--resources/variants/vzbot_custom_1.0.inst.cfg12
-rw-r--r--run_coverage.py22
-rw-r--r--run_mypy.py85
698 files changed, 6095 insertions, 2049 deletions
diff --git a/.github/workflows/conan-recipe-version.yml b/.github/workflows/conan-recipe-version.yml
index 3e86c880a6..a1f250d40e 100644
--- a/.github/workflows/conan-recipe-version.yml
+++ b/.github/workflows/conan-recipe-version.yml
@@ -122,6 +122,8 @@ jobs:
latest_branch_version = tools.Version("0.0.0")
latest_branch_tag = None
for tag in repo.git.tag(merged = True).splitlines():
+ if str(tag).startswith("firmware") or str(tag).startswith("master"):
+ continue # Quick-fix for the versioning scheme name of the embedded team in fdm_materials(_private) repo
try:
version = tools.Version(tag)
except ConanException:
@@ -145,22 +147,27 @@ jobs:
user = "_"
channel = "_"
else:
+ latest_branch_version_prerelease = latest_branch_version.prerelease
if latest_branch_version.prerelease and not "." in latest_branch_version.prerelease:
# The prerealese did not contain a version number, default it to 1
- latest_branch_version.prerelease += ".1"
+ latest_branch_version_prerelease = f"{latest_branch_version.prerelease}.1"
if event_name == "pull_request":
- actual_version = f"{latest_branch_version.major}.{latest_branch_version.minor}.{latest_branch_version.patch}-{latest_branch_version.prerelease.lower()}+{buildmetadata}pr_{issue_number}_{no_commits}"
+ actual_version = f"{latest_branch_version.major}.{latest_branch_version.minor}.{latest_branch_version.patch}-{latest_branch_version_prerelease.lower()}+{buildmetadata}pr_{issue_number}_{no_commits}"
+ channel_metadata = f"{channel}_{no_commits}"
else:
if channel in ("stable", "_", ""):
channel_metadata = f"{no_commits}"
else:
channel_metadata = f"{channel}_{no_commits}"
- # FIXME: for when we create a new release branch
- if latest_branch_version.prerelease == "":
+ if latest_branch_version.prerelease == "":
+ if is_release_branch:
+ bump_up_patch = int(latest_branch_version.patch) + 1
+ actual_version = f"{latest_branch_version.major}.{latest_branch_version.minor}.{bump_up_patch}-alpha+{buildmetadata}{channel_metadata}"
+ else:
bump_up_minor = int(latest_branch_version.minor) + 1
actual_version = f"{latest_branch_version.major}.{bump_up_minor}.{latest_branch_version.patch}-alpha+{buildmetadata}{channel_metadata}"
- else:
- actual_version = f"{latest_branch_version.major}.{latest_branch_version.minor}.{latest_branch_version.patch}-{latest_branch_version.prerelease.lower()}+{buildmetadata}{channel_metadata}"
+ else:
+ actual_version = f"{latest_branch_version.major}.{latest_branch_version.minor}.{latest_branch_version.patch}-{latest_branch_version.prerelease.lower()}+{buildmetadata}{channel_metadata}"
else:
# FIXME: for external PR's
actual_version = f"5.2.0-alpha+{buildmetadata}pr_{issue_number}"
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9d6e3c709b..61c6d1cf41 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,8 @@
# Copyright (c) 2022 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
+# NOTE: This is only being used for translation scripts.
+
# For MSVC flags, will be ignored on non-Windows OS's and this project in general. Only needed for cura-build-environment.
cmake_policy(SET CMP0091 NEW)
project(cura)
@@ -13,47 +15,8 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
set(URANIUM_DIR "${CMAKE_SOURCE_DIR}/../Uranium" CACHE PATH "The location of the Uranium repository")
set(URANIUM_SCRIPTS_DIR "${URANIUM_DIR}/scripts" CACHE PATH "The location of the scripts directory of the Uranium repository")
-option(CURA_DEBUGMODE "Enable debug dialog and other debug features" OFF)
-if(CURA_DEBUGMODE)
- set(_cura_debugmode "ON")
-endif()
-
option(GENERATE_TRANSLATIONS "Should the translations be generated?" ON)
-set(CURA_APP_NAME "cura" CACHE STRING "Short name of Cura, used for configuration folder")
-set(CURA_APP_DISPLAY_NAME "Ultimaker Cura" CACHE STRING "Display name of Cura")
-set(CURA_VERSION "master" CACHE STRING "Version name of Cura")
-set(CURA_BUILDTYPE "" CACHE STRING "Build type of Cura, eg. 'PPA'")
-set(CURA_CLOUD_API_ROOT "" CACHE STRING "Alternative Cura cloud API root")
-set(CURA_CLOUD_API_VERSION "" CACHE STRING "Alternative Cura cloud API version")
-set(CURA_CLOUD_ACCOUNT_API_ROOT "" CACHE STRING "Alternative Cura cloud account API version")
-set(CURA_MARKETPLACE_ROOT "" CACHE STRING "Alternative Marketplace location")
-set(CURA_DIGITAL_FACTORY_URL "" CACHE STRING "Alternative Digital Factory location")
-
-configure_file(${CMAKE_SOURCE_DIR}/com.ultimaker.cura.desktop.in ${CMAKE_BINARY_DIR}/com.ultimaker.cura.desktop @ONLY)
-
-configure_file(cura/CuraVersion.py.in CuraVersion.py @ONLY)
-
-if(NOT DEFINED Python_VERSION)
- set(Python_VERSION
- 3.10
- CACHE STRING "Python Version" FORCE)
- message(STATUS "Setting Python version to ${Python_VERSION}. Set Python_VERSION if you want to compile against an other version.")
-endif()
-if(APPLE)
- set(Python_FIND_FRAMEWORK NEVER)
-endif()
-find_package(Python ${Python_VERSION} EXACT REQUIRED COMPONENTS Interpreter)
-message(STATUS "Linking and building ${project_name} against Python ${Python_VERSION}")
-if(NOT DEFINED Python_SITELIB_LOCAL)
- set(Python_SITELIB_LOCAL
- "${Python_SITELIB}"
- CACHE PATH "Local alternative site-package location to install Cura" FORCE)
-endif()
-
-# Tests
-include(CuraTests)
-
if(NOT ${URANIUM_DIR} STREQUAL "")
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${URANIUM_DIR}/cmake")
endif()
@@ -66,24 +29,4 @@ if(NOT ${URANIUM_SCRIPTS_DIR} STREQUAL "")
if(${GENERATE_TRANSLATIONS})
CREATE_TRANSLATION_TARGETS()
endif()
-endif()
-
-install(DIRECTORY resources DESTINATION ${CMAKE_INSTALL_DATADIR}/cura)
-
-include(CuraPluginInstall)
-
-install(FILES cura_app.py DESTINATION ${CMAKE_INSTALL_BINDIR}
- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
-install(DIRECTORY cura DESTINATION "${Python_SITELIB_LOCAL}")
-install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py DESTINATION "${Python_SITELIB_LOCAL}/cura/")
-if(NOT APPLE AND NOT WIN32)
- install(FILES ${CMAKE_BINARY_DIR}/com.ultimaker.cura.desktop
- DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
- install(FILES ${CMAKE_SOURCE_DIR}/resources/images/cura-icon.png
- DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/128x128/apps/)
- install(FILES com.ultimaker.cura.appdata.xml
- DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo)
- install(FILES cura.sharedmimeinfo
- DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages/
- RENAME cura.xml )
-endif()
+endif() \ No newline at end of file
diff --git a/GitVersion.yml b/GitVersion.yml
deleted file mode 100644
index 6f94c14540..0000000000
--- a/GitVersion.yml
+++ /dev/null
@@ -1,55 +0,0 @@
-mode: ContinuousDelivery
-next-version: 5.1
-branches:
- main:
- regex: ^main$
- mode: ContinuousDelivery
- tag: alpha
- increment: None
- prevent-increment-of-merged-branch-version: true
- track-merge-target: false
- source-branches: [ ]
- tracks-release-branches: false
- is-release-branch: false
- is-mainline: true
- pre-release-weight: 55000
- develop:
- regex: ^CURA-.*$
- mode: ContinuousDelivery
- tag: alpha
- increment: None
- prevent-increment-of-merged-branch-version: false
- track-merge-target: true
- source-branches: [ 'main' ]
- tracks-release-branches: true
- is-release-branch: false
- is-mainline: false
- pre-release-weight: 0
- release:
- regex: ^[\d]+\.[\d]+$
- mode: ContinuousDelivery
- tag: beta
- increment: None
- prevent-increment-of-merged-branch-version: true
- track-merge-target: false
- source-branches: [ 'main' ]
- tracks-release-branches: false
- is-release-branch: true
- is-mainline: false
- pre-release-weight: 30000
- pull-request-main:
- regex: ^(pull|pull\-requests|pr)[/-]
- mode: ContinuousDelivery
- tag: alpha+
- increment: Inherit
- prevent-increment-of-merged-branch-version: true
- tag-number-pattern: '[/-](?<number>\d+)[-/]'
- track-merge-target: true
- source-branches: [ 'main' ]
- tracks-release-branches: false
- is-release-branch: false
- is-mainline: false
- pre-release-weight: 30000
-ignore:
- sha: [ ]
-merge-message-formats: { }
diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index a345ebbd05..0000000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,74 +0,0 @@
-parallel_nodes(['linux && cura', 'windows && cura'])
-{
- timeout(time: 2, unit: "HOURS")
- {
-
- // Prepare building
- stage('Prepare')
- {
- // Ensure we start with a clean build directory.
- step([$class: 'WsCleanup'])
-
- // Checkout whatever sources are linked to this pipeline.
- checkout scm
- }
-
- // If any error occurs during building, we want to catch it and continue with the "finale" stage.
- catchError
- {
- // Building and testing should happen in a subdirectory.
- dir('build')
- {
- // Perform the "build". Since Uranium is Python code, this basically only ensures CMake is setup.
- stage('Build')
- {
- def branch = env.BRANCH_NAME
- if(!fileExists("${env.CURA_ENVIRONMENT_PATH}/${branch}"))
- {
- branch = "master"
- }
-
- // Ensure CMake is setup. Note that since this is Python code we do not really "build" it.
- def uranium_dir = get_workspace_dir("Ultimaker/Uranium/${branch}")
- cmake("..", "-DCMAKE_PREFIX_PATH=\"${env.CURA_ENVIRONMENT_PATH}/${branch}\" -DCMAKE_BUILD_TYPE=Release -DURANIUM_DIR=\"${uranium_dir}\"")
- }
-
- // Try and run the unit tests. If this stage fails, we consider the build to be "unstable".
- stage('Unit Test')
- {
- if (isUnix())
- {
- // For Linux
- try {
- sh 'make CTEST_OUTPUT_ON_FAILURE=TRUE test'
- } catch(e)
- {
- currentBuild.result = "UNSTABLE"
- }
- }
- else
- {
- // For Windows
- try
- {
- // This also does code style checks.
- bat 'ctest -V'
- } catch(e)
- {
- currentBuild.result = "UNSTABLE"
- }
- }
- }
- }
- }
-
- // Perform any post-build actions like notification and publishing of unit tests.
- stage('Finalize')
- {
- // Publish the test results to Jenkins.
- junit allowEmptyResults: true, testResults: 'build/junit*.xml'
-
- notify_build_result(env.CURA_EMAIL_RECIPIENTS, '#cura-dev', ['master', '2.'])
- }
- }
-}
diff --git a/cmake/CuraPluginInstall.cmake b/cmake/CuraPluginInstall.cmake
deleted file mode 100644
index 79b86ebdc6..0000000000
--- a/cmake/CuraPluginInstall.cmake
+++ /dev/null
@@ -1,92 +0,0 @@
-# Copyright (c) 2022 Ultimaker B.V.
-# CuraPluginInstall.cmake is released under the terms of the LGPLv3 or higher.
-
-#
-# This module detects all plugins that need to be installed and adds them using the CMake install() command.
-# It detects all plugin folder in the path "plugins/*" where there's a "plugin.json" in it.
-#
-# Plugins can be configured to NOT BE INSTALLED via the variable "CURA_NO_INSTALL_PLUGINS" as a list of string in the
-# form of "a;b;c" or "a,b,c". By default all plugins will be installed.
-#
-
-option(PRINT_PLUGIN_LIST "Should the list of plugins that are installed be printed?" ON)
-
-# Options or configuration variables
-set(CURA_NO_INSTALL_PLUGINS "" CACHE STRING "A list of plugins that should not be installed, separated with ';' or ','.")
-
-file(GLOB_RECURSE _plugin_json_list ${CMAKE_SOURCE_DIR}/plugins/*/plugin.json)
-list(LENGTH _plugin_json_list _plugin_json_list_len)
-
-# Sort the lists alphabetically so we can handle cases like this:
-# - plugins/my_plugin/plugin.json
-# - plugins/my_plugin/my_module/plugin.json
-# In this case, only "plugins/my_plugin" should be added via install().
-set(_no_install_plugin_list ${CURA_NO_INSTALL_PLUGINS})
-# Sanitize the string so the comparison will be case-insensitive.
-string(STRIP "${_no_install_plugin_list}" _no_install_plugin_list)
-string(TOLOWER "${_no_install_plugin_list}" _no_install_plugin_list)
-
-# WORKAROUND counterpart of what's in cura-build.
-string(REPLACE "," ";" _no_install_plugin_list "${_no_install_plugin_list}")
-
-list(LENGTH _no_install_plugin_list _no_install_plugin_list_len)
-
-if(_no_install_plugin_list_len GREATER 0)
- list(SORT _no_install_plugin_list)
-endif()
-if(_plugin_json_list_len GREATER 0)
- list(SORT _plugin_json_list)
-endif()
-
-# Check all plugin directories and add them via install() if needed.
-set(_install_plugin_list "")
-foreach(_plugin_json_path ${_plugin_json_list})
- get_filename_component(_plugin_dir ${_plugin_json_path} DIRECTORY)
- file(RELATIVE_PATH _rel_plugin_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_plugin_dir})
- get_filename_component(_plugin_dir_name ${_plugin_dir} NAME)
-
- # Make plugin name comparison case-insensitive
- string(TOLOWER "${_plugin_dir_name}" _plugin_dir_name_lowercase)
-
- # Check if this plugin needs to be skipped for installation
- set(_add_plugin ON) # Indicates if this plugin should be added to the build or not.
- set(_is_no_install_plugin OFF) # If this plugin will not be added, this indicates if it's because the plugin is
- # specified in the NO_INSTALL_PLUGINS list.
- if(_no_install_plugin_list)
- if("${_plugin_dir_name_lowercase}" IN_LIST _no_install_plugin_list)
- set(_add_plugin OFF)
- set(_is_no_install_plugin ON)
- endif()
- endif()
-
- # Make sure this is not a subdirectory in a plugin that's already in the install list
- if(_add_plugin)
- foreach(_known_install_plugin_dir ${_install_plugin_list})
- if(_plugin_dir MATCHES "${_known_install_plugin_dir}.+")
- set(_add_plugin OFF)
- break()
- endif()
- endforeach()
- endif()
-
- if(_add_plugin)
- if(${PRINT_PLUGIN_LIST})
- message(STATUS "[+] PLUGIN TO INSTALL: ${_rel_plugin_dir}")
- endif()
- get_filename_component(_rel_plugin_parent_dir ${_rel_plugin_dir} DIRECTORY)
- install(DIRECTORY ${_rel_plugin_dir}
- DESTINATION lib${LIB_SUFFIX}/cura/${_rel_plugin_parent_dir}
- PATTERN "__pycache__" EXCLUDE
- PATTERN "*.qmlc" EXCLUDE
- )
- list(APPEND _install_plugin_list ${_plugin_dir})
- elseif(_is_no_install_plugin)
- if(${PRINT_PLUGIN_LIST})
- message(STATUS "[-] PLUGIN TO REMOVE : ${_rel_plugin_dir}")
- endif()
- execute_process(COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/mod_bundled_packages_json.py
- -d ${CMAKE_CURRENT_SOURCE_DIR}/resources/bundled_packages
- ${_plugin_dir_name}
- RESULT_VARIABLE _mod_json_result)
- endif()
-endforeach()
diff --git a/cmake/CuraTests.cmake b/cmake/CuraTests.cmake
deleted file mode 100644
index 09e8dadbab..0000000000
--- a/cmake/CuraTests.cmake
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright (c) 2022 Ultimaker B.V.
-# Cura is released under the terms of the LGPLv3 or higher.
-
-include(CTest)
-include(CMakeParseArguments)
-
-add_custom_target(test-verbose COMMAND ${CMAKE_CTEST_COMMAND} --verbose)
-
-function(cura_add_test)
- set(_single_args NAME DIRECTORY PYTHONPATH)
- cmake_parse_arguments("" "" "${_single_args}" "" ${ARGN})
-
- if(NOT _NAME)
- message(FATAL_ERROR "cura_add_test requires a test name argument")
- endif()
-
- if(NOT _DIRECTORY)
- message(FATAL_ERROR "cura_add_test requires a directory to test")
- endif()
-
- if(NOT _PYTHONPATH)
- set(_PYTHONPATH ${_DIRECTORY})
- endif()
-
- if(WIN32)
- string(REPLACE "|" "\\;" _PYTHONPATH ${_PYTHONPATH})
- set(_PYTHONPATH "${_PYTHONPATH}\\;$ENV{PYTHONPATH}")
- else()
- string(REPLACE "|" ":" _PYTHONPATH ${_PYTHONPATH})
- set(_PYTHONPATH "${_PYTHONPATH}:$ENV{PYTHONPATH}")
- endif()
-
- get_test_property(${_NAME} ENVIRONMENT test_exists) #Find out if the test exists by getting a property from it that always exists (such as ENVIRONMENT because we set that ourselves).
- if (NOT ${test_exists})
- add_test(
- NAME ${_NAME}
- COMMAND ${Python_EXECUTABLE} -m pytest --junitxml=${CMAKE_BINARY_DIR}/junit-${_NAME}.xml ${_DIRECTORY}
- )
- set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT LANG=C)
- set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT "PYTHONPATH=${_PYTHONPATH}")
- else()
- message(WARNING "Duplicate test ${_NAME}!")
- endif()
-endfunction()
-
-
-#Add code style test.
-add_test(
- NAME "code-style"
- COMMAND ${Python_EXECUTABLE} run_mypy.py
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
-)
-
-#Add test for import statements which are not compatible with all builds
-add_test(
- NAME "invalid-imports"
- COMMAND ${Python_EXECUTABLE} scripts/check_invalid_imports.py
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
-)
-
-cura_add_test(NAME pytest-main DIRECTORY ${CMAKE_SOURCE_DIR}/tests PYTHONPATH "${CMAKE_SOURCE_DIR}|${URANIUM_DIR}")
-
-file(GLOB_RECURSE _plugins plugins/*/__init__.py)
-foreach(_plugin ${_plugins})
- get_filename_component(_plugin_directory ${_plugin} DIRECTORY)
- if(EXISTS ${_plugin_directory}/tests)
- get_filename_component(_plugin_name ${_plugin_directory} NAME)
- cura_add_test(NAME pytest-${_plugin_name} DIRECTORY ${_plugin_directory} PYTHONPATH "${_plugin_directory}|${CMAKE_SOURCE_DIR}|${URANIUM_DIR}")
- endif()
-endforeach()
-
-#Add test for whether the shortcut alt-keys are unique in every translation.
-add_test(
- NAME "shortcut-keys"
- COMMAND ${Python_EXECUTABLE} scripts/check_shortcut_keys.py
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
-)
diff --git a/cmake/mod_bundled_packages_json.py b/cmake/mod_bundled_packages_json.py
deleted file mode 100755
index e03261b479..0000000000
--- a/cmake/mod_bundled_packages_json.py
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/env python3
-#
-# This script removes the given package entries in the bundled_packages JSON files. This is used by the PluginInstall
-# CMake module.
-#
-
-import argparse
-import collections
-import json
-import os
-import sys
-
-
-def find_json_files(work_dir: str) -> list:
- """Finds all JSON files in the given directory recursively and returns a list of those files in absolute paths.
-
- :param work_dir: The directory to look for JSON files recursively.
- :return: A list of JSON files in absolute paths that are found in the given directory.
- """
-
- json_file_list = []
- for root, dir_names, file_names in os.walk(work_dir):
- for file_name in file_names:
- abs_path = os.path.abspath(os.path.join(root, file_name))
- json_file_list.append(abs_path)
- return json_file_list
-
-
-def remove_entries_from_json_file(file_path: str, entries: list) -> None:
- """Removes the given entries from the given JSON file. The file will modified in-place.
-
- :param file_path: The JSON file to modify.
- :param entries: A list of strings as entries to remove.
- :return: None
- """
-
- try:
- with open(file_path, "r", encoding = "utf-8") as f:
- package_dict = json.load(f, object_hook = collections.OrderedDict)
- except Exception as e:
- msg = "Failed to load '{file_path}' as a JSON file. This file will be ignored Exception: {e}"\
- .format(file_path = file_path, e = e)
- sys.stderr.write(msg + os.linesep)
- return
-
- for entry in entries:
- if entry in package_dict:
- del package_dict[entry]
- print("[INFO] Remove entry [{entry}] from [{file_path}]".format(file_path = file_path, entry = entry))
-
- try:
- with open(file_path, "w", encoding = "utf-8", newline = "\n") as f:
- json.dump(package_dict, f, indent = 4)
- except Exception as e:
- msg = "Failed to write '{file_path}' as a JSON file. Exception: {e}".format(file_path = file_path, e = e)
- raise IOError(msg)
-
-
-def main() -> None:
- parser = argparse.ArgumentParser("mod_bundled_packages_json")
- parser.add_argument("-d", "--dir", dest = "work_dir",
- help = "The directory to look for bundled packages JSON files, recursively.")
- parser.add_argument("entries", metavar = "ENTRIES", type = str, nargs = "+")
-
- args = parser.parse_args()
-
- json_file_list = find_json_files(args.work_dir)
- for json_file_path in json_file_list:
- remove_entries_from_json_file(json_file_path, args.entries)
-
-
-if __name__ == "__main__":
- main()
diff --git a/com.ultimaker.cura.appdata.xml b/com.ultimaker.cura.appdata.xml
deleted file mode 100644
index 3af0e9c352..0000000000
--- a/com.ultimaker.cura.appdata.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2016 Richard Hughes <richard@hughsie.com> -->
-<component type="desktop">
- <id>com.ultimaker.cura.desktop</id>
- <metadata_license>CC0-1.0</metadata_license>
- <project_license>LGPL-3.0 and CC-BY-SA-4.0</project_license>
- <name>Cura</name>
- <summary>The world's most advanced 3d printer software</summary>
- <description>
- <p>
- Cura creates a seamless integration between hardware, software and
- materials for the best 3D printing experience around.
- Cura supports the 3MF, OBJ and STL file formats and is available on
- Windows, Mac and Linux.
- </p>
- <ul>
- <li>Novices can start printing right away</li>
- <li>Experts are able to customize 300 settings to achieve the best results</li>
- <li>Optimized profiles for Ultimaker materials</li>
- <li>Supported by a global network of Ultimaker certified service partners</li>
- <li>Print multiple objects at once with different settings for each object</li>
- <li>Cura supports STL, 3MF and OBJ file formats</li>
- <li>Open source and completely free</li>
- </ul>
- </description>
- <screenshots>
- <screenshot type="default">
- <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/com.ultimaker.cura.desktop.in b/com.ultimaker.cura.desktop.in
deleted file mode 100644
index 1e17e30f4e..0000000000
--- a/com.ultimaker.cura.desktop.in
+++ /dev/null
@@ -1,19 +0,0 @@
-[Desktop Entry]
-Name=Ultimaker Cura
-Name[de]=Ultimaker Cura
-Name[nl]=Ultimaker Cura
-GenericName=3D Printing Software
-GenericName[de]=3D-Druck-Software
-GenericName[nl]=3D-printsoftware
-Comment=Cura converts 3D models into paths for a 3D printer. It prepares your print for maximum accuracy, minimum printing time and good reliability with many extra features that make your print come out great.
-Comment[de]=Cura wandelt 3D-Modelle in Pfade für einen 3D-Drucker um. Es bereitet Ihren Druck für maximale Genauigkeit, minimale Druckzeit und guter Zuverlässigkeit mit vielen zusätzlichen Funktionen vor, damit Ihr Druck großartig wird.
-Comment[nl]=Cura converteert 3D-modellen naar paden voor een 3D printer. Het bereidt je print voor om zeer precies, snel en betrouwbaar te kunnen printen, met veel extra functionaliteit om je print er goed uit te laten komen.
-Exec=@CMAKE_INSTALL_FULL_BINDIR@/cura %F
-TryExec=@CMAKE_INSTALL_FULL_BINDIR@/cura
-Icon=cura-icon
-Terminal=false
-Type=Application
-MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;image/bmp;image/gif;image/jpeg;image/png;text/x-gcode;application/x-amf;application/x-ply;application/x-ctm;model/vnd.collada+xml;model/gltf-binary;model/gltf+json;model/vnd.collada+xml+zip;
-Categories=Graphics;
-Keywords=3D;Printing;Slicer;
-StartupWMClass=cura.real
diff --git a/conanfile.py b/conanfile.py
index c5f584ed16..17cd0260a6 100644
--- a/conanfile.py
+++ b/conanfile.py
@@ -149,9 +149,9 @@ class CuraConan(ConanFile):
with open(Path(__file__).parent.joinpath("CuraVersion.py.jinja"), "r") as f:
cura_version_py = Template(f.read())
- cura_version = self.version
+ cura_version = self.conf_info.get("user.cura:version", default = self.version, check_type = str)
if self.options.internal:
- version = Version(self.version)
+ version = Version(cura_version)
cura_version = f"{version.major}.{version.minor}.{version.patch}-{version.prerelease.replace('+', '+internal_')}"
with open(Path(location, "CuraVersion.py"), "w") as f:
@@ -220,7 +220,8 @@ class CuraConan(ConanFile):
with open(Path(__file__).parent.joinpath("Ultimaker-Cura.spec.jinja"), "r") as f:
pyinstaller = Template(f.read())
- cura_version = Version(self.version) if self.version else Version("0.0.0")
+ version = self.conf_info.get("user.cura:version", default = self.version, check_type = str)
+ cura_version = Version(version)
with open(Path(location, "Ultimaker-Cura.spec"), "w") as f:
f.write(pyinstaller.render(
@@ -239,7 +240,7 @@ class CuraConan(ConanFile):
strip = False, # This should be possible on Linux and MacOS but, it can also cause issues on some distributions. Safest is to disable it for now
target_arch = "'x86_64'" if self.settings.os == "Macos" else "None", # FIXME: Make this dependent on the settings.arch_target
macos = self.settings.os == "Macos",
- version = f"'{self.version}'",
+ version = f"'{version}'",
short_version = f"'{cura_version.major}.{cura_version.minor}.{cura_version.patch}'",
))
@@ -254,7 +255,8 @@ class CuraConan(ConanFile):
self.options["cpython"].shared = True
def validate(self):
- if self.version and Version(self.version) <= Version("4"):
+ version = self.conf_info.get("user.cura:version", default = self.version, check_type = str)
+ if version and Version(version) <= Version("4"):
raise ConanInvalidConfiguration("Only versions 5+ are support")
def requirements(self):
@@ -381,7 +383,8 @@ class CuraConan(ConanFile):
self.copy("*.txt", src = self.cpp_info.resdirs[-1], dst = self._base_dir.joinpath("pip_requirements"))
# Generate the GitHub Action version info Environment
- cura_version = Version(self.version)
+ version = self.conf_info.get("user.cura:version", default = self.version, check_type = str)
+ cura_version = Version(version)
env_prefix = "Env:" if self.settings.os == "Windows" else ""
activate_github_actions_version_env = Template(r"""echo "CURA_VERSION_MAJOR={{ cura_version_major }}" >> ${{ env_prefix }}GITHUB_ENV
echo "CURA_VERSION_MINOR={{ cura_version_minor }}" >> ${{ env_prefix }}GITHUB_ENV
diff --git a/contributing.md b/contributing.md
index 06f9dd472b..180b6b1461 100644
--- a/contributing.md
+++ b/contributing.md
@@ -16,4 +16,6 @@ Making pull requests
--------------------
If you want to propose a change to Cura's source code, please create a pull request in the appropriate repository (being [Cura](https://github.com/Ultimaker/Cura), [Uranium](https://github.com/Ultimaker/Uranium), [CuraEngine](https://github.com/Ultimaker/CuraEngine), [fdm_materials](https://github.com/Ultimaker/fdm_materials), [libArcus](https://github.com/Ultimaker/libArcus), [cura-build](https://github.com/Ultimaker/cura-build), [cura-build-environment](https://github.com/Ultimaker/cura-build-environment), [libSavitar](https://github.com/Ultimaker/libSavitar), [libCharon](https://github.com/Ultimaker/libCharon) or [cura-binary-data](https://github.com/Ultimaker/cura-binary-data)) and if your change requires changes on multiple of these repositories, please link them together so that we know to merge them together.
-Some of these repositories will have automated tests running when you create a pull request, indicated by green check marks or red crosses in the Github web page. If you see a red cross, that means that a test has failed. If the test doesn't fail on the Master branch but does fail on your branch, that indicates that you've probably made a mistake and you need to do that. Click on the cross for more details, or run the test locally by running `cmake . && ctest --verbose`. \ No newline at end of file
+The style guide for code contributions to Cura and other Ultimaker projects can be found [here](https://github.com/Ultimaker/Meta/blob/master/general/generic_code_conventions.md).
+
+Some of these repositories will have automated tests running when you create a pull request, indicated by green check marks or red crosses in the Github web page. If you see a red cross, that means that a test has failed. If the test doesn't fail on the Master branch but does fail on your branch, that indicates that you've probably made a mistake and you need to do that. Click on the cross for more details, or run the test locally by running `cmake . && ctest --verbose`.
diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py
index f690456913..74811e724f 100755
--- a/cura/CuraApplication.py
+++ b/cura/CuraApplication.py
@@ -115,6 +115,7 @@ from . import CuraActions
from . import PlatformPhysics
from . import PrintJobPreviewImageProvider
from .AutoSave import AutoSave
+from .Machines.Models.CompatibleMachineModel import CompatibleMachineModel
from .Machines.Models.MachineListModel import MachineListModel
from .Machines.Models.ActiveIntentQualitiesModel import ActiveIntentQualitiesModel
from .Machines.Models.IntentSelectionModel import IntentSelectionModel
@@ -1191,6 +1192,7 @@ class CuraApplication(QtApplication):
qmlRegisterType(ExtrudersModel, "Cura", 1, 0, "ExtrudersModel")
qmlRegisterType(GlobalStacksModel, "Cura", 1, 0, "GlobalStacksModel")
qmlRegisterType(MachineListModel, "Cura", 1, 0, "MachineListModel")
+ qmlRegisterType(CompatibleMachineModel, "Cura", 1, 0, "CompatibleMachineModel")
self.processEvents()
qmlRegisterType(FavoriteMaterialsModel, "Cura", 1, 0, "FavoriteMaterialsModel")
@@ -1445,7 +1447,7 @@ class CuraApplication(QtApplication):
bounding_box = node.getBoundingBox()
if bounding_box is None or bounding_box.width < self._volume.getBoundingBox().width or bounding_box.depth < self._volume.getBoundingBox().depth:
# Arrange only the unlocked nodes and keep the locked ones in place
- if UM.Util.parseBool(node.getSetting(SceneNodeSettings.LockPosition)):
+ if node.getSetting(SceneNodeSettings.LockPosition):
locked_nodes.append(node)
else:
nodes_to_arrange.append(node)
diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py
index 2c3b432b1d..103703e594 100644
--- a/cura/LayerPolygon.py
+++ b/cura/LayerPolygon.py
@@ -24,9 +24,12 @@ class LayerPolygon:
PrimeTowerType = 11
__number_of_types = 12
- __jump_map = numpy.logical_or(numpy.logical_or(numpy.arange(__number_of_types) == NoneType, numpy.arange(__number_of_types) == MoveCombingType), numpy.arange(__number_of_types) == MoveRetractionType)
+ __jump_map = numpy.logical_or(numpy.logical_or(numpy.arange(__number_of_types) == NoneType,
+ numpy.arange(__number_of_types) == MoveCombingType),
+ numpy.arange(__number_of_types) == MoveRetractionType)
- def __init__(self, extruder: int, line_types: numpy.ndarray, data: numpy.ndarray, line_widths: numpy.ndarray, line_thicknesses: numpy.ndarray, line_feedrates: numpy.ndarray) -> None:
+ def __init__(self, extruder: int, line_types: numpy.ndarray, data: numpy.ndarray,
+ line_widths: numpy.ndarray, line_thicknesses: numpy.ndarray, line_feedrates: numpy.ndarray) -> None:
"""LayerPolygon, used in ProcessSlicedLayersJob
:param extruder: The position of the extruder
@@ -39,10 +42,12 @@ class LayerPolygon:
self._extruder = extruder
self._types = line_types
- for i in range(len(self._types)):
- if self._types[i] >= self.__number_of_types: # Got faulty line data from the engine.
- Logger.log("w", "Found an unknown line type: %s", i)
- self._types[i] = self.NoneType
+ unknown_types = numpy.where(self._types >= self.__number_of_types, self._types, None)
+ if unknown_types.any():
+ # Got faulty line data from the engine.
+ for idx in unknown_types:
+ Logger.warning(f"Found an unknown line type at: {idx}")
+ self._types[idx] = self.NoneType
self._data = data
self._line_widths = line_widths
self._line_thicknesses = line_thicknesses
@@ -58,14 +63,16 @@ class LayerPolygon:
self._mesh_line_count = len(self._types) - self._jump_count
self._vertex_count = self._mesh_line_count + numpy.sum(self._types[1:] == self._types[:-1])
- # Buffering the colors shouldn't be necessary as it is not
+ # Buffering the colors shouldn't be necessary as it is not
# re-used and can save a lot of memory usage.
self._color_map = LayerPolygon.getColorMap()
self._colors = self._color_map[self._types] # type: numpy.ndarray
- # When type is used as index returns true if type == LayerPolygon.InfillType or type == LayerPolygon.SkinType or type == LayerPolygon.SupportInfillType
+ # When type is used as index returns true if type == LayerPolygon.InfillType
+ # or type == LayerPolygon.SkinType
+ # or type == LayerPolygon.SupportInfillType
# Should be generated in better way, not hardcoded.
- self._is_infill_or_skin_type_map = numpy.array([0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0], dtype = bool)
+ self._is_infill_or_skin_type_map = numpy.array([0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0], dtype=bool)
self._build_cache_line_mesh_mask = None # type: Optional[numpy.ndarray]
self._build_cache_needed_points = None # type: Optional[numpy.ndarray]
@@ -80,12 +87,14 @@ class LayerPolygon:
# Only if the type of line segment changes do we need to add an extra vertex to change colors
self._build_cache_needed_points[1:, 0][:, numpy.newaxis] = self._types[1:] != self._types[:-1]
# Mark points as unneeded if they are of types we don't want in the line mesh according to the calculated mask
- numpy.logical_and(self._build_cache_needed_points, self._build_cache_line_mesh_mask, self._build_cache_needed_points )
+ numpy.logical_and(self._build_cache_needed_points, self._build_cache_line_mesh_mask, self._build_cache_needed_points)
self._vertex_begin = 0
self._vertex_end = cast(int, numpy.sum(self._build_cache_needed_points))
- def build(self, vertex_offset: int, index_offset: int, vertices: numpy.ndarray, colors: numpy.ndarray, line_dimensions: numpy.ndarray, feedrates: numpy.ndarray, extruders: numpy.ndarray, line_types: numpy.ndarray, indices: numpy.ndarray) -> None:
+ def build(self, vertex_offset: int, index_offset: int, vertices: numpy.ndarray,
+ colors: numpy.ndarray, line_dimensions: numpy.ndarray, feedrates: numpy.ndarray,
+ extruders: numpy.ndarray, line_types: numpy.ndarray, indices: numpy.ndarray) -> None:
"""Set all the arrays provided by the function caller, representing the LayerPolygon
The arrays are either by vertex or by indices.
@@ -111,19 +120,20 @@ class LayerPolygon:
line_mesh_mask = self._build_cache_line_mesh_mask
needed_points_list = self._build_cache_needed_points
- # Index to the points we need to represent the line mesh. This is constructed by generating simple
- # start and end points for each line. For line segment n these are points n and n+1. Row n reads [n n+1]
- # Then then the indices for the points we don't need are thrown away based on the pre-calculated list.
- index_list = ( numpy.arange(len(self._types)).reshape((-1, 1)) + numpy.array([[0, 1]]) ).reshape((-1, 1))[needed_points_list.reshape((-1, 1))]
+ # Index to the points we need to represent the line mesh.
+ # This is constructed by generating simple start and end points for each line.
+ # For line segment n, these are points n and n+1. Row n reads [n n+1]
+ # Then the indices for the points we don't need are thrown away based on the pre-calculated list.
+ index_list = (numpy.arange(len(self._types)).reshape((-1, 1)) + numpy.array([[0, 1]])).reshape((-1, 1))[needed_points_list.reshape((-1, 1))]
# The relative values of begin and end indices have already been set in buildCache, so we only need to offset them to the parents offset.
self._vertex_begin += vertex_offset
self._vertex_end += vertex_offset
- # Points are picked based on the index list to get the vertices needed.
+ # Points are picked based on the index list to get the vertices needed.
vertices[self._vertex_begin:self._vertex_end, :] = self._data[index_list, :]
- # Create an array with colors for each vertex and remove the color data for the points that has been thrown away.
+ # Create an array with colors for each vertex and remove the color data for the points that has been thrown away.
colors[self._vertex_begin:self._vertex_end, :] = numpy.tile(self._colors, (1, 2)).reshape((-1, 4))[needed_points_list.ravel()]
# Create an array with line widths and thicknesses for each vertex.
@@ -138,14 +148,15 @@ class LayerPolygon:
# Convert type per vertex to type per line
line_types[self._vertex_begin:self._vertex_end] = numpy.tile(self._types, (1, 2)).reshape((-1, 1))[needed_points_list.ravel()][:, 0]
- # The relative values of begin and end indices have already been set in buildCache, so we only need to offset them to the parents offset.
+ # The relative values of begin and end indices have already been set in buildCache,
+ # so we only need to offset them to the parents offset.
self._index_begin += index_offset
self._index_end += index_offset
- indices[self._index_begin:self._index_end, :] = numpy.arange(self._index_end-self._index_begin, dtype = numpy.int32).reshape((-1, 1))
+ indices[self._index_begin:self._index_end, :] = numpy.arange(self._index_end-self._index_begin, dtype=numpy.int32).reshape((-1, 1))
# When the line type changes the index needs to be increased by 2.
indices[self._index_begin:self._index_end, :] += numpy.cumsum(needed_points_list[line_mesh_mask.ravel(), 0], dtype = numpy.int32).reshape((-1, 1))
- # Each line segment goes from it's starting point p to p+1, offset by the vertex index.
+ # Each line segment goes from it's starting point p to p+1, offset by the vertex index.
# The -1 is to compensate for the necessarily True value of needed_points_list[0,0] which causes an unwanted +1 in cumsum above.
indices[self._index_begin:self._index_end, :] += numpy.array([self._vertex_begin - 1, self._vertex_begin])
@@ -214,13 +225,12 @@ class LayerPolygon:
"""
normals = numpy.copy(self._data)
- normals[:, 1] = 0.0 # We are only interested in 2D normals
+ normals[:, 1] = 0.0 # We are only interested in 2D normals
# Calculate the edges between points.
- # The call to numpy.roll shifts the entire array by one so that
- # we end up subtracting each next point from the current, wrapping
- # around. This gives us the edges from the next point to the current
- # point.
+ # The call to numpy.roll shifts the entire array by one
+ # so that we end up subtracting each next point from the current, wrapping around.
+ # This gives us the edges from the next point to the current point.
normals = numpy.diff(normals, 1, 0)
# Calculate the length of each edge using standard Pythagoras
@@ -245,17 +255,17 @@ class LayerPolygon:
if cls.__color_map is None:
theme = cast(Theme, QtApplication.getInstance().getTheme())
cls.__color_map = numpy.array([
- theme.getColor("layerview_none").getRgbF(), # NoneType
- theme.getColor("layerview_inset_0").getRgbF(), # Inset0Type
- theme.getColor("layerview_inset_x").getRgbF(), # InsetXType
- theme.getColor("layerview_skin").getRgbF(), # SkinType
- theme.getColor("layerview_support").getRgbF(), # SupportType
- theme.getColor("layerview_skirt").getRgbF(), # SkirtType
- theme.getColor("layerview_infill").getRgbF(), # InfillType
- theme.getColor("layerview_support_infill").getRgbF(), # SupportInfillType
- theme.getColor("layerview_move_combing").getRgbF(), # MoveCombingType
- theme.getColor("layerview_move_retraction").getRgbF(), # MoveRetractionType
- theme.getColor("layerview_support_interface").getRgbF(), # SupportInterfaceType
+ theme.getColor("layerview_none").getRgbF(), # NoneType
+ theme.getColor("layerview_inset_0").getRgbF(), # Inset0Type
+ theme.getColor("layerview_inset_x").getRgbF(), # InsetXType
+ theme.getColor("layerview_skin").getRgbF(), # SkinType
+ theme.getColor("layerview_support").getRgbF(), # SupportType
+ theme.getColor("layerview_skirt").getRgbF(), # SkirtType
+ theme.getColor("layerview_infill").getRgbF(), # InfillType
+ theme.getColor("layerview_support_infill").getRgbF(), # SupportInfillType
+ theme.getColor("layerview_move_combing").getRgbF(), # MoveCombingType
+ theme.getColor("layerview_move_retraction").getRgbF(), # MoveRetractionType
+ theme.getColor("layerview_support_interface").getRgbF(), # SupportInterfaceType
theme.getColor("layerview_prime_tower").getRgbF() # PrimeTowerType
])
diff --git a/cura/Machines/MachineErrorChecker.py b/cura/Machines/MachineErrorChecker.py
index b113bd6dd7..cc6560378d 100644
--- a/cura/Machines/MachineErrorChecker.py
+++ b/cura/Machines/MachineErrorChecker.py
@@ -43,7 +43,7 @@ class MachineErrorChecker(QObject):
self._application = cura.CuraApplication.CuraApplication.getInstance()
self._machine_manager = self._application.getMachineManager()
- self._start_time = 0. # measure checking time
+ self._check_start_time = time.time()
self._setCheckTimer()
@@ -160,7 +160,7 @@ class MachineErrorChecker(QObject):
self._stacks_and_keys_to_check.append((stack, key))
self._application.callLater(self._checkStack)
- self._start_time = time.time()
+ self._check_start_time = time.time()
Logger.log("d", "New error check scheduled.")
def _checkStack(self) -> None:
@@ -212,12 +212,10 @@ class MachineErrorChecker(QObject):
self._has_errors = result
self.hasErrorUpdated.emit()
self._machine_manager.stacksValidationChanged.emit()
- if keys_to_recheck is None:
- self._keys_to_check = set()
- else:
- self._keys_to_check = keys_to_recheck
+ self._keys_to_check = keys_to_recheck if keys_to_recheck else set()
self._need_to_check = False
self._check_in_progress = False
self.needToWaitForResultChanged.emit()
self.errorCheckFinished.emit()
- Logger.log("i", "Error check finished, result = %s, time = %0.1fs", result, time.time() - self._start_time)
+ execution_time = time.time() - self._check_start_time
+ Logger.info(f"Error check finished, result = {result}, time = {execution_time:.2f}s")
diff --git a/cura/Machines/Models/CompatibleMachineModel.py b/cura/Machines/Models/CompatibleMachineModel.py
new file mode 100644
index 0000000000..029567cdec
--- /dev/null
+++ b/cura/Machines/Models/CompatibleMachineModel.py
@@ -0,0 +1,76 @@
+# Copyright (c) 2022 Ultimaker B.V.
+# Cura is released under the terms of the LGPLv3 or higher.
+
+from typing import Optional
+
+from PyQt6.QtCore import Qt, QObject, pyqtSlot, pyqtProperty, pyqtSignal
+
+from UM.Logger import Logger
+from UM.Qt.ListModel import ListModel
+from UM.i18n import i18nCatalog
+
+
+class CompatibleMachineModel(ListModel):
+ NameRole = Qt.ItemDataRole.UserRole + 1
+ UniqueIdRole = Qt.ItemDataRole.UserRole + 2
+ ExtrudersRole = Qt.ItemDataRole.UserRole + 3
+
+ def __init__(self, parent: Optional[QObject] = None) -> None:
+ super().__init__(parent)
+
+ self._catalog = i18nCatalog("cura")
+
+ self.addRoleName(self.NameRole, "name")
+ self.addRoleName(self.UniqueIdRole, "unique_id")
+ self.addRoleName(self.ExtrudersRole, "extruders")
+
+ self._update()
+
+ from cura.CuraApplication import CuraApplication
+ machine_manager = CuraApplication.getInstance().getMachineManager()
+ machine_manager.globalContainerChanged.connect(self._update)
+ machine_manager.outputDevicesChanged.connect(self._update)
+
+ def _update(self) -> None:
+ self.clear()
+
+ from cura.CuraApplication import CuraApplication
+ machine_manager = CuraApplication.getInstance().getMachineManager()
+
+ # Loop over the output-devices, not the stacks; need all applicable configurations, not just the current loaded one.
+ for output_device in machine_manager.printerOutputDevices:
+ for printer in output_device.printers:
+ extruder_configs = dict()
+
+ # initialize & add current active material:
+ for extruder in printer.extruders:
+ materials = [{
+ "brand": extruder.activeMaterial.brand,
+ "name": extruder.activeMaterial.name,
+ "hexcolor": extruder.activeMaterial.color,
+ }]
+ extruder_configs[extruder.getPosition()] = {
+ "position": extruder.getPosition(),
+ "core": extruder.hotendID,
+ "materials": materials
+ }
+
+ # add currently inactive, but possible materials:
+ for configuration in printer.availableConfigurations:
+ for extruder in configuration.extruderConfigurations:
+ if not extruder.position in extruder_configs:
+ Logger.log("w", f"No active extruder for position {extruder.position}.")
+ continue
+
+ extruder_configs[extruder.position]["materials"].append({
+ "brand": extruder.material.brand,
+ "name": extruder.material.name,
+ "hexcolor": extruder.material.color
+ })
+
+ if any([len(extruder["materials"]) > 0 for extruder in extruder_configs.values()]):
+ self.appendItem({
+ "name": printer.name,
+ "unique_id": printer.name, # <- Can assume the cloud doesn't have duplicate names?
+ "extruders": list(extruder_configs.values())
+ })
diff --git a/cura/Machines/Models/GlobalStacksModel.py b/cura/Machines/Models/GlobalStacksModel.py
index 8f13d34ccf..69f2ec3822 100644
--- a/cura/Machines/Models/GlobalStacksModel.py
+++ b/cura/Machines/Models/GlobalStacksModel.py
@@ -44,6 +44,7 @@ class GlobalStacksModel(ListModel):
self._filter_connection_type = None # type: Optional[ConnectionType]
self._filter_online_only = False
self._filter_capabilities: List[str] = [] # Required capabilities that all listed printers must have.
+ self._filter_abstract_machines: Optional[bool] = None
# Listen to changes
CuraContainerRegistry.getInstance().containerAdded.connect(self._onContainerChanged)
@@ -54,6 +55,7 @@ class GlobalStacksModel(ListModel):
filterConnectionTypeChanged = pyqtSignal()
filterCapabilitiesChanged = pyqtSignal()
filterOnlineOnlyChanged = pyqtSignal()
+ filterAbstractMachinesChanged = pyqtSignal()
def setFilterConnectionType(self, new_filter: Optional[ConnectionType]) -> None:
if self._filter_connection_type != new_filter:
@@ -98,6 +100,22 @@ class GlobalStacksModel(ListModel):
"""
return self._filter_capabilities
+ def setFilterAbstractMachines(self, new_filter: Optional[bool]) -> None:
+ if self._filter_abstract_machines != new_filter:
+ self._filter_abstract_machines = new_filter
+ self.filterAbstractMachinesChanged.emit()
+
+ @pyqtProperty(bool, fset = setFilterAbstractMachines, notify = filterAbstractMachinesChanged)
+ def filterAbstractMachines(self) -> Optional[bool]:
+ """
+ Weather we include abstract printers, non-abstract printers or both
+
+ if this is set to None both abstract and non-abstract printers will be included in the list
+ set to True will only include abstract printers
+ set to False will only inclde non-abstract printers
+ """
+ return self._filter_abstract_machines
+
def _onContainerChanged(self, container) -> None:
"""Handler for container added/removed events from registry"""
@@ -130,6 +148,10 @@ class GlobalStacksModel(ListModel):
if self._filter_online_only and not is_online:
continue
+ is_abstract_machine = parseBool(container_stack.getMetaDataEntry("is_abstract_machine", False))
+ if self._filter_abstract_machines is not None and self._filter_abstract_machines is not is_abstract_machine:
+ continue
+
capabilities = set(container_stack.getMetaDataEntry(META_CAPABILITIES, "").split(","))
if set(self._filter_capabilities) - capabilities: # Not all required capabilities are met.
continue
diff --git a/cura/Machines/Models/MachineListModel.py b/cura/Machines/Models/MachineListModel.py
index 55db072180..4db1082863 100644
--- a/cura/Machines/Models/MachineListModel.py
+++ b/cura/Machines/Models/MachineListModel.py
@@ -5,10 +5,13 @@
# online cloud connected printers are represented within this ListModel. Additional information such as the number of
# connected printers for each printer type is gathered.
-from PyQt6.QtCore import Qt, QTimer, pyqtSlot, pyqtProperty, pyqtSignal
+from typing import Optional
+
+from PyQt6.QtCore import Qt, QTimer, QObject, pyqtSlot, pyqtProperty, pyqtSignal
from UM.Qt.ListModel import ListModel
from UM.Settings.ContainerStack import ContainerStack
+from UM.Settings.Interfaces import ContainerInterface
from UM.i18n import i18nCatalog
from UM.Util import parseBool
from cura.PrinterOutput.PrinterOutputDevice import ConnectionType
@@ -27,7 +30,7 @@ class MachineListModel(ListModel):
IsAbstractMachineRole = Qt.ItemDataRole.UserRole + 7
ComponentTypeRole = Qt.ItemDataRole.UserRole + 8
- def __init__(self, parent=None) -> None:
+ def __init__(self, parent: Optional[QObject] = None) -> None:
super().__init__(parent)
self._show_cloud_printers = False
@@ -66,7 +69,7 @@ class MachineListModel(ListModel):
self._updateDelayed()
self.showCloudPrintersChanged.emit(show_cloud_printers)
- def _onContainerChanged(self, container) -> None:
+ def _onContainerChanged(self, container: ContainerInterface) -> None:
"""Handler for container added/removed events from registry"""
# We only need to update when the added / removed container GlobalStack
@@ -79,26 +82,30 @@ class MachineListModel(ListModel):
def _update(self) -> None:
self.clear()
+ from cura.CuraApplication import CuraApplication
+ machines_manager = CuraApplication.getInstance().getMachineManager()
+
other_machine_stacks = CuraContainerRegistry.getInstance().findContainerStacks(type="machine")
abstract_machine_stacks = CuraContainerRegistry.getInstance().findContainerStacks(is_abstract_machine = "True")
abstract_machine_stacks.sort(key = lambda machine: machine.getName(), reverse = True)
for abstract_machine in abstract_machine_stacks:
definition_id = abstract_machine.definition.getId()
- from cura.CuraApplication import CuraApplication
- machines_manager = CuraApplication.getInstance().getMachineManager()
online_machine_stacks = machines_manager.getMachinesWithDefinition(definition_id, online_only = True)
- # Create a list item for abstract machine
- self.addItem(abstract_machine, len(online_machine_stacks))
+ online_machine_stacks = list(filter(lambda machine: machine.hasNetworkedConnection(), online_machine_stacks))
+
other_machine_stacks.remove(abstract_machine)
if abstract_machine in online_machine_stacks:
online_machine_stacks.remove(abstract_machine)
+ # Create a list item for abstract machine
+ self.addItem(abstract_machine, True, len(online_machine_stacks))
+
# Create list of machines that are children of the abstract machine
for stack in online_machine_stacks:
if self._show_cloud_printers:
- self.addItem(stack)
+ self.addItem(stack, True)
# Remove this machine from the other stack list
if stack in other_machine_stacks:
other_machine_stacks.remove(stack)
@@ -118,25 +125,18 @@ class MachineListModel(ListModel):
})
for stack in other_machine_stacks:
- self.addItem(stack)
+ self.addItem(stack, False)
- def addItem(self, container_stack: ContainerStack, machine_count: int = 0) -> None:
+ def addItem(self, container_stack: ContainerStack, is_online: bool, machine_count: int = 0) -> None:
if parseBool(container_stack.getMetaDataEntry("hidden", False)):
return
- # This is required because machines loaded from projects have the is_online="True" but no connection type.
- # We want to display them the same way as unconnected printers in this case.
- has_connection = False
- has_connection |= parseBool(container_stack.getMetaDataEntry("is_abstract_machine", False))
- for connection_type in [ConnectionType.NetworkConnection.value, ConnectionType.CloudConnection.value]:
- has_connection |= connection_type in container_stack.configuredConnectionTypes
-
self.appendItem({
- "componentType": "MACHINE",
- "name": container_stack.getName(),
+ "componentType": "MACHINE",
+ "name": container_stack.getName(),
"id": container_stack.getId(),
"metadata": container_stack.getMetaData().copy(),
- "isOnline": parseBool(container_stack.getMetaDataEntry("is_online", False)) and has_connection,
+ "isOnline": is_online,
"isAbstractMachine": parseBool(container_stack.getMetaDataEntry("is_abstract_machine", False)),
"machineCount": machine_count,
- })
+ })
diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py
index e054528c42..402b9fe250 100755
--- a/cura/PlatformPhysics.py
+++ b/cura/PlatformPhysics.py
@@ -50,8 +50,13 @@ class PlatformPhysics:
if not self._enabled:
return
+ app_instance = Application.getInstance()
+ app_preferences = app_instance.getPreferences()
+ app_automatic_drop_down = app_preferences.getValue("physics/automatic_drop_down")
+ app_automatic_push_free = app_preferences.getValue("physics/automatic_push_free")
+
root = self._controller.getScene().getRoot()
- build_volume = Application.getInstance().getBuildVolume()
+ build_volume = app_instance.getBuildVolume()
build_volume.updateNodeBoundaryCheck()
# Keep a list of nodes that are moving. We use this so that we don't move two intersecting objects in the
@@ -75,7 +80,7 @@ class PlatformPhysics:
# Move it downwards if bottom is above platform
move_vector = Vector()
- if Application.getInstance().getPreferences().getValue("physics/automatic_drop_down") and not (node.getParent() and node.getParent().callDecoration("isGroup") or node.getParent() != root) and node.isEnabled(): #If an object is grouped, don't move it down
+ if node.getSetting(SceneNodeSettings.AutoDropDown, app_automatic_drop_down) and not (node.getParent() and node.getParent().callDecoration("isGroup") or node.getParent() != root) and node.isEnabled(): #If an object is grouped, don't move it down
z_offset = node.callDecoration("getZOffset") if node.getDecorator(ZOffsetDecorator.ZOffsetDecorator) else 0
move_vector = move_vector.set(y = -bbox.bottom + z_offset)
@@ -84,7 +89,7 @@ class PlatformPhysics:
node.addDecorator(ConvexHullDecorator())
# only push away objects if this node is a printing mesh
- if not node.callDecoration("isNonPrintingMesh") and Application.getInstance().getPreferences().getValue("physics/automatic_push_free"):
+ if not node.callDecoration("isNonPrintingMesh") and app_automatic_push_free:
# Do not move locked nodes
if node.getSetting(SceneNodeSettings.LockPosition):
continue
diff --git a/cura/PrinterOutput/Models/ExtruderConfigurationModel.py b/cura/PrinterOutput/Models/ExtruderConfigurationModel.py
index 4cc3e81f56..d54092b8c9 100644
--- a/cura/PrinterOutput/Models/ExtruderConfigurationModel.py
+++ b/cura/PrinterOutput/Models/ExtruderConfigurationModel.py
@@ -13,9 +13,9 @@ class ExtruderConfigurationModel(QObject):
def __init__(self, position: int = -1) -> None:
super().__init__()
- self._position = position # type: int
- self._material = None # type: Optional[MaterialOutputModel]
- self._hotend_id = None # type: Optional[str]
+ self._position: int = position
+ self._material: Optional[MaterialOutputModel] = None
+ self._hotend_id: Optional[str] = None
def setPosition(self, position: int) -> None:
self._position = position
diff --git a/cura/Settings/CuraStackBuilder.py b/cura/Settings/CuraStackBuilder.py
index c1aeb26151..a25a487c6e 100644
--- a/cura/Settings/CuraStackBuilder.py
+++ b/cura/Settings/CuraStackBuilder.py
@@ -1,6 +1,8 @@
-# Copyright (c) 2019 Ultimaker B.V.
+# Copyright (c) 2022 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
+import copy
+
from typing import Optional, cast
from UM.ConfigurationErrorMessage import ConfigurationErrorMessage
diff --git a/cura/Settings/GlobalStack.py b/cura/Settings/GlobalStack.py
index b94ca45763..041bd19d3a 100755
--- a/cura/Settings/GlobalStack.py
+++ b/cura/Settings/GlobalStack.py
@@ -347,6 +347,12 @@ class GlobalStack(CuraContainerStack):
nameChanged = pyqtSignal()
name = pyqtProperty(str, fget=getName, fset=setName, notify=nameChanged)
+ def hasNetworkedConnection(self) -> bool:
+ has_connection = False
+ for connection_type in [ConnectionType.NetworkConnection.value, ConnectionType.CloudConnection.value]:
+ has_connection |= connection_type in self.configuredConnectionTypes
+ return has_connection
+
## private:
global_stack_mime = MimeType(
name = "application/x-cura-globalstack",
diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py
index ca45cdc4b9..2051ce1b99 100755
--- a/cura/Settings/MachineManager.py
+++ b/cura/Settings/MachineManager.py
@@ -99,7 +99,7 @@ class MachineManager(QObject):
self._application.getPreferences().addPreference("cura/active_machine", "")
- self._printer_output_devices = [] # type: List[PrinterOutputDevice]
+ self._printer_output_devices: List[PrinterOutputDevice] = []
self._application.getOutputDeviceManager().outputDevicesChanged.connect(self._onOutputDevicesChanged)
# There might already be some output devices by the time the signal is connected
self._onOutputDevicesChanged()
@@ -112,7 +112,7 @@ class MachineManager(QObject):
self._application.callLater(self.setInitialActiveMachine)
- containers = CuraContainerRegistry.getInstance().findInstanceContainers(id = self.activeMaterialId) # type: List[InstanceContainer]
+ containers: List[InstanceContainer] = CuraContainerRegistry.getInstance().findInstanceContainers(id = self.activeMaterialId)
if containers:
containers[0].nameChanged.connect(self._onMaterialNameChanged)
diff --git a/cura/UI/PrintInformation.py b/cura/UI/PrintInformation.py
index 2b8e13b09f..936e646946 100644
--- a/cura/UI/PrintInformation.py
+++ b/cura/UI/PrintInformation.py
@@ -23,9 +23,9 @@ catalog = i18nCatalog("cura")
class PrintInformation(QObject):
- """A class for processing and the print times per build plate as well as managing the job name
+ """A class for processing the print times per build plate and managing the job name
- This class also mangles the current machine name and the filename of the first loaded mesh into a job name.
+ This class also combines the current machine name and the filename of the first loaded mesh into a job name.
This job name is requested by the JobSpecs qml file.
"""
@@ -186,7 +186,7 @@ class PrintInformation(QObject):
if time != time: # Check for NaN. Engine can sometimes give us weird values.
duration.setDuration(0)
- Logger.log("w", "Received NaN for print duration message")
+ Logger.warning("Received NaN for print duration message")
continue
total_estimated_time += time
@@ -368,7 +368,7 @@ class PrintInformation(QObject):
mime_type = MimeTypeDatabase.getMimeTypeForFile(name)
data = mime_type.stripExtension(name)
except MimeTypeNotFoundError:
- Logger.log("w", "Unsupported Mime Type Database file extension %s", name)
+ Logger.warning(f"Unsupported Mime Type Database file extension {name}")
if data is not None and check_name is not None:
self._base_name = data
@@ -392,7 +392,7 @@ class PrintInformation(QObject):
return self._base_name
def _defineAbbreviatedMachineName(self) -> None:
- """Created an acronym-like abbreviated machine name from the currently active machine name.
+ """Creates an abbreviated machine name from the currently active machine name.
Called each time the global stack is switched.
"""
@@ -446,7 +446,7 @@ class PrintInformation(QObject):
self.setToZeroPrintInformation(self._active_build_plate)
def _onOutputStart(self, output_device: OutputDevice) -> None:
- """If this is the sort of output 'device' (like local or online file storage, rather than a printer),
+ """If this is a sort of output 'device' (like local or online file storage, rather than a printer),
the user could have altered the file-name, and thus the project name should be altered as well."""
if isinstance(output_device, ProjectOutputDevice):
new_name = output_device.getLastOutputName()
diff --git a/cura/UI/WhatsNewPagesModel.py b/cura/UI/WhatsNewPagesModel.py
index 4fb7802924..1faf9572c7 100644
--- a/cura/UI/WhatsNewPagesModel.py
+++ b/cura/UI/WhatsNewPagesModel.py
@@ -62,15 +62,21 @@ class WhatsNewPagesModel(WelcomePagesModel):
def initialize(self) -> None:
self._pages = []
- self._pages.append({"id": "whats_new",
- "page_url": self._getBuiltinWelcomePagePath("WhatsNewContent.qml"),
- "next_page_button_text": self._catalog.i18nc("@action:button", "Skip"),
- "next_page_id": "changelog"
- })
- self._pages.append({"id": "changelog",
- "page_url": self._getBuiltinWelcomePagePath("ChangelogContent.qml"),
- "next_page_button_text": self._catalog.i18nc("@action:button", "Close"),
- })
+ try:
+ self._pages.append({"id": "whats_new",
+ "page_url": self._getBuiltinWelcomePagePath("WhatsNewContent.qml"),
+ "next_page_button_text": self._catalog.i18nc("@action:button", "Skip"),
+ "next_page_id": "changelog"
+ })
+ except FileNotFoundError:
+ Logger.warning("Unable to find what's new page")
+ try:
+ self._pages.append({"id": "changelog",
+ "page_url": self._getBuiltinWelcomePagePath("ChangelogContent.qml"),
+ "next_page_button_text": self._catalog.i18nc("@action:button", "Close"),
+ })
+ except FileNotFoundError:
+ Logger.warning("Unable to find changelog page")
self.setItems(self._pages)
images, max_image = WhatsNewPagesModel._collectOrdinalFiles(Resources.Images, WhatsNewPagesModel.image_formats)
diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py
index c8f7bc8abd..86be2f0380 100755
--- a/plugins/3MFReader/ThreeMFWorkspaceReader.py
+++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py
@@ -664,10 +664,22 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
cura_file_names = [name for name in archive.namelist() if name.startswith("Cura/")]
- # Create a shadow copy of the preferences (we don't want all of the preferences, but we do want to re-use its
+ # Create a shadow copy of the preferences (We don't want all of the preferences, but we do want to re-use its
# parsing code.
temp_preferences = Preferences()
- serialized = archive.open("Cura/preferences.cfg").read().decode("utf-8")
+ try:
+ serialized = archive.open("Cura/preferences.cfg").read().decode("utf-8")
+ except KeyError:
+ # If there is no preferences file, it's not a workspace, so notify user of failure.
+ Logger.log("w", "File %s is not a valid workspace.", file_name)
+ message = Message(i18n_catalog.i18nc("@info:error Don't translate the XML tags <filename> or <message>!",
+ "Project file <filename>{0}</filename> is corrupt: <message>{1}</message>.",
+ file_name, str(e)),
+ title=i18n_catalog.i18nc("@info:title", "Can't Open Project File"),
+ message_type=Message.MessageType.ERROR)
+ message.show()
+ self.setWorkspaceName("")
+ return [], {}
temp_preferences.deserialize(serialized)
# Copy a number of settings from the temp preferences to the global
diff --git a/plugins/GCodeWriter/GCodeWriter.py b/plugins/GCodeWriter/GCodeWriter.py
index 7323ffd35c..667e064d90 100644
--- a/plugins/GCodeWriter/GCodeWriter.py
+++ b/plugins/GCodeWriter/GCodeWriter.py
@@ -1,9 +1,8 @@
-# Copyright (c) 2019 Ultimaker B.V.
+# Copyright (c) 2022 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
import re # For escaping characters in the settings.
import json
-import copy
from UM.Mesh.MeshWriter import MeshWriter
from UM.Logger import Logger
@@ -12,6 +11,8 @@ from UM.Settings.InstanceContainer import InstanceContainer
from cura.Machines.ContainerTree import ContainerTree
from UM.i18n import i18nCatalog
+from cura.Settings.CuraStackBuilder import CuraStackBuilder
+
catalog = i18nCatalog("cura")
@@ -96,25 +97,6 @@ class GCodeWriter(MeshWriter):
self.setInformation(catalog.i18nc("@warning:status", "Please prepare G-code before exporting."))
return False
- def _createFlattenedContainerInstance(self, instance_container1, instance_container2):
- """Create a new container with container 2 as base and container 1 written over it."""
-
- flat_container = InstanceContainer(instance_container2.getName())
-
- # The metadata includes id, name and definition
- flat_container.setMetaData(copy.deepcopy(instance_container2.getMetaData()))
-
- if instance_container1.getDefinition():
- flat_container.setDefinition(instance_container1.getDefinition().getId())
-
- for key in instance_container2.getAllKeys():
- flat_container.setProperty(key, "value", instance_container2.getProperty(key, "value"))
-
- for key in instance_container1.getAllKeys():
- flat_container.setProperty(key, "value", instance_container1.getProperty(key, "value"))
-
- return flat_container
-
def _serialiseSettings(self, stack):
"""Serialises a container stack to prepare it for writing at the end of the g-code.
@@ -145,22 +127,22 @@ class GCodeWriter(MeshWriter):
container_with_profile.setDefinition(machine_definition_id_for_quality)
container_with_profile.setMetaDataEntry("setting_version", stack.quality.getMetaDataEntry("setting_version"))
- flat_global_container = self._createFlattenedContainerInstance(stack.userChanges, container_with_profile)
+ merged_global_instance_container = InstanceContainer.createMergedInstanceContainer(stack.userChanges, container_with_profile)
# If the quality changes is not set, we need to set type manually
- if flat_global_container.getMetaDataEntry("type", None) is None:
- flat_global_container.setMetaDataEntry("type", "quality_changes")
+ if merged_global_instance_container.getMetaDataEntry("type", None) is None:
+ merged_global_instance_container.setMetaDataEntry("type", "quality_changes")
# Ensure that quality_type is set. (Can happen if we have empty quality changes).
- if flat_global_container.getMetaDataEntry("quality_type", None) is None:
- flat_global_container.setMetaDataEntry("quality_type", stack.quality.getMetaDataEntry("quality_type", "normal"))
+ if merged_global_instance_container.getMetaDataEntry("quality_type", None) is None:
+ merged_global_instance_container.setMetaDataEntry("quality_type", stack.quality.getMetaDataEntry("quality_type", "normal"))
# Get the machine definition ID for quality profiles
- flat_global_container.setMetaDataEntry("definition", machine_definition_id_for_quality)
+ merged_global_instance_container.setMetaDataEntry("definition", machine_definition_id_for_quality)
- serialized = flat_global_container.serialize()
+ serialized = merged_global_instance_container.serialize()
data = {"global_quality": serialized}
- all_setting_keys = flat_global_container.getAllKeys()
+ all_setting_keys = merged_global_instance_container.getAllKeys()
for extruder in stack.extruderList:
extruder_quality = extruder.qualityChanges
if extruder_quality.getId() == "empty_quality_changes":
@@ -174,7 +156,7 @@ class GCodeWriter(MeshWriter):
extruder_quality.setDefinition(machine_definition_id_for_quality)
extruder_quality.setMetaDataEntry("setting_version", stack.quality.getMetaDataEntry("setting_version"))
- flat_extruder_quality = self._createFlattenedContainerInstance(extruder.userChanges, extruder_quality)
+ flat_extruder_quality = InstanceContainer.createMergedInstanceContainer(extruder.userChanges, extruder_quality)
# If the quality changes is not set, we need to set type manually
if flat_extruder_quality.getMetaDataEntry("type", None) is None:
flat_extruder_quality.setMetaDataEntry("type", "quality_changes")
diff --git a/plugins/UFPWriter/UFPWriter.py b/plugins/UFPWriter/UFPWriter.py
index 52dab1efc7..49751e1a2a 100644
--- a/plugins/UFPWriter/UFPWriter.py
+++ b/plugins/UFPWriter/UFPWriter.py
@@ -1,6 +1,6 @@
-# Copyright (c) 2021 Ultimaker B.V.
+# Copyright (c) 2022 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
-
+import json
from typing import cast, List, Dict
from Charon.VirtualFile import VirtualFile # To open UFP files.
@@ -10,6 +10,7 @@ from io import StringIO # For converting g-code to bytes.
from PyQt6.QtCore import QBuffer
+from UM.Application import Application
from UM.Logger import Logger
from UM.Mesh.MeshWriter import MeshWriter # The writer we need to implement.
from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType
@@ -17,12 +18,16 @@ from UM.PluginRegistry import PluginRegistry # To get the g-code writer.
from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
from UM.Scene.SceneNode import SceneNode
+from UM.Settings.InstanceContainer import InstanceContainer
from cura.CuraApplication import CuraApplication
+from cura.Settings.CuraStackBuilder import CuraStackBuilder
+from cura.Settings.GlobalStack import GlobalStack
from cura.Utils.Threading import call_on_qt_thread
from UM.i18n import i18nCatalog
METADATA_OBJECTS_PATH = "metadata/objects"
+SLICE_METADATA_PATH = "Cura/slicemetadata.json"
catalog = i18nCatalog("cura")
@@ -67,7 +72,21 @@ class UFPWriter(MeshWriter):
try:
gcode = archive.getStream("/3D/model.gcode")
gcode.write(gcode_textio.getvalue().encode("UTF-8"))
- archive.addRelation(virtual_path = "/3D/model.gcode", relation_type = "http://schemas.ultimaker.org/package/2018/relationships/gcode")
+ archive.addRelation(virtual_path = "/3D/model.gcode",
+ relation_type = "http://schemas.ultimaker.org/package/2018/relationships/gcode")
+ except EnvironmentError as e:
+ error_msg = catalog.i18nc("@info:error", "Can't write to UFP file:") + " " + str(e)
+ self.setInformation(error_msg)
+ Logger.error(error_msg)
+ return False
+
+ # Write settings
+ try:
+ archive.addContentType(extension="json", mime_type="application/json")
+ setting_textio = StringIO()
+ json.dump(self._getSliceMetadata(), setting_textio, separators=(", ", ": "), indent=4)
+ steam = archive.getStream(SLICE_METADATA_PATH)
+ steam.write(setting_textio.getvalue().encode("UTF-8"))
except EnvironmentError as e:
error_msg = catalog.i18nc("@info:error", "Can't write to UFP file:") + " " + str(e)
self.setInformation(error_msg)
@@ -190,3 +209,47 @@ class UFPWriter(MeshWriter):
return [{"name": item.getName()}
for item in DepthFirstIterator(node)
if item.getMeshData() is not None and not item.callDecoration("isNonPrintingMesh")]
+
+ def _getSliceMetadata(self) -> Dict[str, Dict[str, Dict[str, str]]]:
+ """Get all changed settings and all settings. For each extruder and the global stack"""
+ print_information = CuraApplication.getInstance().getPrintInformation()
+ settings = {
+ "material": {
+ "length": print_information.materialLengths,
+ "weight": print_information.materialWeights,
+ "cost": print_information.materialCosts,
+ },
+ "global": {
+ "changes": {},
+ "all_settings": {},
+ }
+ }
+
+ global_stack = cast(GlobalStack, Application.getInstance().getGlobalContainerStack())
+
+ # Add global user or quality changes
+ global_flattened_changes = InstanceContainer.createMergedInstanceContainer(global_stack.userChanges, global_stack.qualityChanges)
+ for setting in global_flattened_changes.getAllKeys():
+ settings["global"]["changes"][setting] = global_flattened_changes.getProperty(setting, "value")
+
+ # Get global all settings values without user or quality changes
+ for setting in global_stack.getAllKeys():
+ settings["global"]["all_settings"][setting] = global_stack.getProperty(setting, "value")
+
+ for i, extruder in enumerate(global_stack.extruderList):
+ # Add extruder fields to settings dictionary
+ settings[f"extruder_{i}"] = {
+ "changes": {},
+ "all_settings": {},
+ }
+
+ # Add extruder user or quality changes
+ extruder_flattened_changes = InstanceContainer.createMergedInstanceContainer(extruder.userChanges, extruder.qualityChanges)
+ for setting in extruder_flattened_changes.getAllKeys():
+ settings[f"extruder_{i}"]["changes"][setting] = extruder_flattened_changes.getProperty(setting, "value")
+
+ # Get extruder all settings values without user or quality changes
+ for setting in extruder.getAllKeys():
+ settings[f"extruder_{i}"]["all_settings"][setting] = extruder.getProperty(setting, "value")
+
+ return settings
diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml
index c0662cfc82..1b62d6b203 100644
--- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml
+++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml
@@ -172,7 +172,14 @@ Item
{
id: printerConfiguration
anchors.verticalCenter: parent.verticalCenter
- buildplate: catalog.i18nc("@label", "Glass")
+ buildplate: {
+ switch (printJob.assignedPrinter.buildplate) {
+ case "glass":
+ return catalog.i18nc("@label", "Glass");
+ default:
+ return null
+ }
+ }
configurations: base.printJob ? base.printJob.configuration.extruderConfigurations : null
height: Math.round(72 * screenScaleFactor) // TODO: Theme!
}
diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml
index 67f308a64e..9d6ffba17b 100644
--- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml
+++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml
@@ -175,7 +175,14 @@ Item
{
id: printerConfiguration
anchors.verticalCenter: parent.verticalCenter
- buildplate: printer ? catalog.i18nc("@label", "Glass") : null // 'Glass' as a default
+ buildplate: {
+ switch (printer.buildplate) {
+ case "glass":
+ return catalog.i18nc("@label", "Glass");
+ default:
+ return null
+ }
+ }
configurations:
{
var configs = []
diff --git a/plugins/UM3NetworkPrinting/src/Cloud/AbstractCloudOutputDevice.py b/plugins/UM3NetworkPrinting/src/Cloud/AbstractCloudOutputDevice.py
index 8448c095c8..4ee74550a4 100644
--- a/plugins/UM3NetworkPrinting/src/Cloud/AbstractCloudOutputDevice.py
+++ b/plugins/UM3NetworkPrinting/src/Cloud/AbstractCloudOutputDevice.py
@@ -1,15 +1,19 @@
from time import time
-from typing import List
+from typing import Callable, List, Optional
-from PyQt6.QtCore import QObject
+from PyQt6.QtCore import QObject, pyqtSlot
from PyQt6.QtNetwork import QNetworkReply
from UM import i18nCatalog
from UM.Logger import Logger
+from UM.FileHandler.FileHandler import FileHandler
+from UM.Resources import Resources
+from UM.Scene.SceneNode import SceneNode
+
+from cura.CuraApplication import CuraApplication
from cura.PrinterOutput.NetworkedPrinterOutputDevice import AuthState
from cura.PrinterOutput.PrinterOutputDevice import ConnectionType
from .CloudApiClient import CloudApiClient
-from ..Models.Http.CloudClusterResponse import CloudClusterResponse
from ..Models.Http.CloudClusterWithConfigResponse import CloudClusterWithConfigResponse
from ..UltimakerNetworkedPrinterOutputDevice import UltimakerNetworkedPrinterOutputDevice
@@ -19,7 +23,7 @@ I18N_CATALOG = i18nCatalog("cura")
class AbstractCloudOutputDevice(UltimakerNetworkedPrinterOutputDevice):
API_CHECK_INTERVAL = 10.0 # seconds
- def __init__(self, api_client: CloudApiClient, printer_type: str, parent: QObject = None) -> None:
+ def __init__(self, api_client: CloudApiClient, printer_type: str, request_write_callback: Callable, refresh_callback: Callable, parent: QObject = None) -> None:
self._api = api_client
properties = {b"printer_type": printer_type.encode()}
@@ -31,6 +35,11 @@ class AbstractCloudOutputDevice(UltimakerNetworkedPrinterOutputDevice):
parent=parent
)
+ self._on_print_dialog: Optional[QObject] = None
+ self._nodes: List[SceneNode] = None
+ self._request_write_callback = request_write_callback
+ self._refresh_callback = refresh_callback
+
self._setInterfaceElements()
def connect(self) -> None:
@@ -41,7 +50,6 @@ class AbstractCloudOutputDevice(UltimakerNetworkedPrinterOutputDevice):
Logger.log("i", "Attempting to connect AbstractCloudOutputDevice %s", self.key)
super().connect()
- #CuraApplication.getInstance().getBackend().backendStateChange.connect(self._onBackendStateChange)
self._update()
def disconnect(self) -> None:
@@ -84,4 +92,31 @@ class AbstractCloudOutputDevice(UltimakerNetworkedPrinterOutputDevice):
self._updatePrinters(all_configurations)
def _onError(self, reply: QNetworkReply, error: QNetworkReply.NetworkError) -> None:
- pass
+ Logger.log("w", f"Failed to get clusters by machine type: {str(error)}.")
+
+ @pyqtSlot(str)
+ def printerSelected(self, unique_id: str):
+ self._request_write_callback(unique_id, self._nodes)
+ if self._on_print_dialog:
+ self._on_print_dialog.close()
+
+ @pyqtSlot()
+ def refresh(self):
+ self._refresh_callback()
+ self._update()
+
+ def _openChoosePrinterDialog(self) -> None:
+ if self._on_print_dialog is None:
+ qml_path = Resources.getPath(CuraApplication.ResourceTypes.QmlFiles, "Dialogs", "ChoosePrinterDialog.qml")
+ self._on_print_dialog = CuraApplication.getInstance().createQmlComponent(qml_path, {})
+ if self._on_print_dialog is None: # Failed to load QML file.
+ return
+ self._on_print_dialog.setProperty("manager", self)
+ self._on_print_dialog.show()
+
+ def requestWrite(self, nodes: List[SceneNode], file_name: Optional[str] = None, limit_mimetypes: bool = False, file_handler: Optional[FileHandler] = None, **kwargs) -> None:
+ if not nodes or len(nodes) < 1:
+ Logger.log("w", "Nothing to print.")
+ return
+ self._nodes = nodes
+ self._openChoosePrinterDialog()
diff --git a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py
index bdae34a860..abfe863749 100644
--- a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py
+++ b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py
@@ -172,6 +172,13 @@ class CloudOutputDeviceManager:
self._syncing = False
self._account.setSyncState(self.SYNC_SERVICE_NAME, SyncState.ERROR)
+ def _requestWrite(self, unique_id: str, nodes: List["SceneNode"]):
+ for remote in self._remote_clusters.values():
+ if unique_id == remote.name: # No other id-type would match. Assume cloud doesn't have duplicate names.
+ remote.requestWrite(nodes)
+ return
+ Logger.log("e", f"Failed writing to specific cloud printer: {unique_id} not in remote clusters.")
+
def _createMachineStacksForDiscoveredClusters(self, discovered_clusters: List[CloudClusterResponse]) -> None:
"""**Synchronously** create machines for discovered devices
@@ -193,7 +200,7 @@ class CloudOutputDeviceManager:
output_device = CloudOutputDevice(self._api, cluster_data)
if cluster_data.printer_type not in self._abstract_clusters:
- self._abstract_clusters[cluster_data.printer_type] = AbstractCloudOutputDevice(self._api, cluster_data.printer_type)
+ self._abstract_clusters[cluster_data.printer_type] = AbstractCloudOutputDevice(self._api, cluster_data.printer_type, self._requestWrite, self.refreshConnections)
# Ensure that the abstract machine is added (either because it was never added, or it somehow got
# removed)
_abstract_machine = CuraStackBuilder.createAbstractMachine(cluster_data.printer_type)
diff --git a/plugins/UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py b/plugins/UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py
index c875eb183a..caed6ddf91 100644
--- a/plugins/UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py
+++ b/plugins/UM3NetworkPrinting/src/Messages/RemovedPrintersMessage.py
@@ -31,7 +31,7 @@ class RemovedPrintersMessage(Message):
super().__init__(title=self.i18n_catalog.i18ncp("info:status",
"A cloud connection is not available for a printer",
"A cloud connection is not available for some printers",
- len(self.removed_devices)),
+ len(self._removed_devices)),
message_type=Message.MessageType.WARNING,
text = message_text)
diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py
index d91be99f46..1155420b60 100644
--- a/plugins/USBPrinting/USBPrinterOutputDevice.py
+++ b/plugins/USBPrinting/USBPrinterOutputDevice.py
@@ -398,7 +398,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
line = line[:line.find(";")]
line = line.strip()
-
+
# Don't send empty lines. But we do have to send something, so send M105 instead.
# Don't send the M0 or M1 to the machine, as M0 and M1 are handled as an LCD menu pause.
if line == "" or line == "M0" or line == "M1":
@@ -429,7 +429,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
print_job.updateTimeElapsed(elapsed_time)
estimated_time = self._print_estimated_time
if progress > .1:
- estimated_time = self._print_estimated_time * (1 - progress) + elapsed_time
+ estimated_time = int(self._print_estimated_time * (1 - progress) + elapsed_time)
print_job.updateTimeTotal(estimated_time)
self._gcode_position += 1
diff --git a/requirements.txt b/requirements.txt
index c8bb861814..60dcb77bea 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -228,6 +228,9 @@ SecretStorage==3.3.1 \
keyring==23.0.1 \
--hash=sha256:045703609dd3fccfcdb27da201684278823b72af515aedec1a8515719a038cb8 \
--hash=sha256:8f607d7d1cc502c43a932a275a56fe47db50271904513a379d39df1af277ac48
+networkx==2.6.2 \
+ --hash=sha256:2306f1950ce772c5a59a57f5486d59bb9cab98497c45fc49cbc45ac0dec119bb \
+ --hash=sha256:5fcb7004be69e8fbdf07dcb502efa5c77cadcaad6982164134eeb9721f826c2e
pywin32==303; \
sys_platform=="win32" \
--hash=sha256:51cb52c5ec6709f96c3f26e7795b0bf169ee0d8395b2c1d7eb2c029a5008ed51
diff --git a/resources/definitions/abax_pri3.def.json b/resources/definitions/abax_pri3.def.json
index 914dc4d3e0..7f73bea678 100644
--- a/resources/definitions/abax_pri3.def.json
+++ b/resources/definitions/abax_pri3.def.json
@@ -7,6 +7,7 @@
"author": "Abax 3D Technologies",
"manufacturer": "Abax 3D Technologies",
"file_formats": "text/x-gcode",
+ "has_machine_quality": "true",
"machine_extruder_trains":
{
"0": "abax_pri3_extruder_0"
diff --git a/resources/definitions/abax_pri5.def.json b/resources/definitions/abax_pri5.def.json
index cb6566e08c..e97994bd61 100644
--- a/resources/definitions/abax_pri5.def.json
+++ b/resources/definitions/abax_pri5.def.json
@@ -7,6 +7,7 @@
"author": "Abax 3D Technologies",
"manufacturer": "Abax 3D Technologies",
"file_formats": "text/x-gcode",
+ "has_machine_quality": "true",
"machine_extruder_trains":
{
"0": "abax_pri5_extruder_0"
diff --git a/resources/definitions/anycubic_4max.def.json b/resources/definitions/anycubic_4max.def.json
index 838c81f991..bb27619175 100644
--- a/resources/definitions/anycubic_4max.def.json
+++ b/resources/definitions/anycubic_4max.def.json
@@ -37,7 +37,7 @@
"machine_max_jerk_xy": { "default_value": 11.0 },
"machine_max_jerk_z": { "default_value": 0.4 },
"machine_max_jerk_e": { "default_value": 11.0 },
-
+ "acceleration_enabled": { "value": true },
"jerk_enabled": { "value": "True" },
"jerk_layer_0": { "value": "jerk_topbottom" },
"jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" },
diff --git a/resources/definitions/builder_premium_large.def.json b/resources/definitions/builder_premium_large.def.json
index 8f49efedb2..9a8c8dc6f1 100644
--- a/resources/definitions/builder_premium_large.def.json
+++ b/resources/definitions/builder_premium_large.def.json
@@ -35,7 +35,7 @@
"switch_extruder_retraction_speeds": {"default_value": 15 },
"switch_extruder_retraction_amount": {"value": 1 },
-
+ "acceleration_enabled": { "value": true },
"speed_travel": { "value": "100" },
"speed_layer_0": { "value": "20" },
"speed_prime_tower": { "value": "speed_topbottom" },
diff --git a/resources/definitions/builder_premium_medium.def.json b/resources/definitions/builder_premium_medium.def.json
index c87e3f70c4..fcc87ae125 100644
--- a/resources/definitions/builder_premium_medium.def.json
+++ b/resources/definitions/builder_premium_medium.def.json
@@ -28,7 +28,7 @@
"infill_pattern": {"value": "'triangles'" },
"infill_before_walls": {"value": false },
-
+ "acceleration_enabled": { "value": true },
"default_material_print_temperature": { "value": "215" },
"material_print_temperature_layer_0": { "value": "material_print_temperature + 5" },
"material_standby_temperature": { "value": "material_print_temperature" },
diff --git a/resources/definitions/builder_premium_small.def.json b/resources/definitions/builder_premium_small.def.json
index 8a7969ec50..03f4600f4c 100644
--- a/resources/definitions/builder_premium_small.def.json
+++ b/resources/definitions/builder_premium_small.def.json
@@ -34,7 +34,7 @@
"switch_extruder_retraction_speeds": {"default_value": 15 },
"switch_extruder_retraction_amount": {"value": 1 },
-
+ "acceleration_enabled": { "value": true },
"speed_travel": { "value": "100" },
"speed_layer_0": { "value": "20" },
"speed_prime_tower": { "value": "speed_topbottom" },
diff --git a/resources/definitions/dagoma_pro_430_bowden.def.json b/resources/definitions/dagoma_pro_430_bowden.def.json
index 5a2608d4d8..cb7d4126cb 100644
--- a/resources/definitions/dagoma_pro_430_bowden.def.json
+++ b/resources/definitions/dagoma_pro_430_bowden.def.json
@@ -25,6 +25,7 @@
"machine_max_jerk_e": { "value": 5 },
"machine_max_feedrate_e": { "default_value": 200 },
"machine_steps_per_mm_e": { "default_value": 139.5 },
+ "acceleration_enabled": { "value": true },
"acceleration_print": { "value": "1250", "maximum_value": 1500 },
"acceleration_layer_0": { "value": "acceleration_topbottom", "maximum_value": 1500 },
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1000 / 1250)", "maximum_value": 1500 },
diff --git a/resources/definitions/eryone_thinker.def.json b/resources/definitions/eryone_thinker.def.json
index e48803e368..648de5cd03 100644
--- a/resources/definitions/eryone_thinker.def.json
+++ b/resources/definitions/eryone_thinker.def.json
@@ -249,9 +249,6 @@
},
"smooth_spiralized_contours": {
"value": false
- },
- "roofing_monotonic": {
- "value": true
}
}
} \ No newline at end of file
diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json
index 5b6268a875..62e881628a 100644
--- a/resources/definitions/fdmprinter.def.json
+++ b/resources/definitions/fdmprinter.def.json
@@ -1470,8 +1470,7 @@
"label": "Monotonic Top Surface Order",
"description": "Print top surface lines in an ordering that causes them to always overlap with adjacent lines in a single direction. This takes slightly more time to print, but makes flat surfaces look more consistent.",
"type": "bool",
- "default_value": false,
- "value": "skin_monotonic",
+ "value": true,
"enabled": "roofing_layer_count > 0 and top_layers > 0 and roofing_pattern != 'concentric'",
"limit_to_extruder": "roofing_extruder_nr",
"settable_per_mesh": true
@@ -4572,6 +4571,42 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
+ "support_conical_enabled": {
+ "label": "Enable Conical Support",
+ "description": "Make support areas smaller at the bottom than at the overhang.",
+ "type": "bool",
+ "default_value": false,
+ "enabled": "support_enable and support_structure != 'tree'",
+ "limit_to_extruder": "support_infill_extruder_nr",
+ "settable_per_mesh": true
+ },
+ "support_conical_angle": {
+ "label": "Conical Support Angle",
+ "description": "The angle of the tilt of conical support. With 0 degrees being vertical, and 90 degrees being horizontal. Smaller angles cause the support to be more sturdy, but consist of more material. Negative angles cause the base of the support to be wider than the top.",
+ "unit": "°",
+ "type": "float",
+ "minimum_value": "-90",
+ "minimum_value_warning": "-45",
+ "maximum_value_warning": "45",
+ "maximum_value": "90",
+ "default_value": 30,
+ "enabled": "support_conical_enabled and support_enable and support_structure != 'tree'",
+ "limit_to_extruder": "support_infill_extruder_nr",
+ "settable_per_mesh": true
+ },
+ "support_conical_min_width": {
+ "label": "Conical Support Minimum Width",
+ "description": "Minimum width to which the base of the conical support area is reduced. Small widths can lead to unstable support structures.",
+ "unit": "mm",
+ "default_value": 5.0,
+ "minimum_value": "0",
+ "minimum_value_warning": "machine_nozzle_size * 3",
+ "maximum_value_warning": "100.0",
+ "type": "float",
+ "enabled": "support_conical_enabled and support_enable and support_structure != 'tree' and support_conical_angle > 0",
+ "limit_to_extruder": "support_infill_extruder_nr",
+ "settable_per_mesh": true
+ },
"support_type":
{
"label": "Support Placement",
@@ -6956,45 +6991,6 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
- "support_conical_enabled":
- {
- "label": "Enable Conical Support",
- "description": "Make support areas smaller at the bottom than at the overhang.",
- "type": "bool",
- "default_value": false,
- "enabled": "support_enable and support_structure != 'tree'",
- "limit_to_extruder": "support_infill_extruder_nr",
- "settable_per_mesh": true
- },
- "support_conical_angle":
- {
- "label": "Conical Support Angle",
- "description": "The angle of the tilt of conical support. With 0 degrees being vertical, and 90 degrees being horizontal. Smaller angles cause the support to be more sturdy, but consist of more material. Negative angles cause the base of the support to be wider than the top.",
- "unit": "°",
- "type": "float",
- "minimum_value": "-90",
- "minimum_value_warning": "-45",
- "maximum_value_warning": "45",
- "maximum_value": "90",
- "default_value": 30,
- "enabled": "support_conical_enabled and support_enable and support_structure != 'tree'",
- "limit_to_extruder": "support_infill_extruder_nr",
- "settable_per_mesh": true
- },
- "support_conical_min_width":
- {
- "label": "Conical Support Minimum Width",
- "description": "Minimum width to which the base of the conical support area is reduced. Small widths can lead to unstable support structures.",
- "unit": "mm",
- "default_value": 5.0,
- "minimum_value": "0",
- "minimum_value_warning": "machine_nozzle_size * 3",
- "maximum_value_warning": "100.0",
- "type": "float",
- "enabled": "support_conical_enabled and support_enable and support_structure != 'tree' and support_conical_angle > 0",
- "limit_to_extruder": "support_infill_extruder_nr",
- "settable_per_mesh": true
- },
"magic_fuzzy_skin_enabled":
{
"label": "Fuzzy Skin",
@@ -7530,6 +7526,7 @@
"type": "float",
"minimum_value": "0",
"default_value": 5,
+ "value": "line_width + support_xy_distance + 1.0",
"enabled": "bridge_settings_enabled",
"settable_per_mesh": true,
"settable_per_extruder": false
diff --git a/resources/definitions/flsun_sr.def.json b/resources/definitions/flsun_sr.def.json
index 643e8f64de..37487412ab 100644
--- a/resources/definitions/flsun_sr.def.json
+++ b/resources/definitions/flsun_sr.def.json
@@ -65,7 +65,7 @@
"default_value": 15
},
"machine_start_gcode": {
- "default_value": "G21 ; millimeter units\nG90 ; absolute coordinates\nM82 ; E absolute\nM140 S{material_bed_temperature}\nM104 S{material_print_temperature}\nM190 S{material_bed_temperature}\nM109 S{material_print_temperature}\nG28 ; home axis\nM420 S1 ; enable mesh leveling\n; Lower nozzle and move to start position\nG1 Z150\nG1 X-130 Y0 Z0.4 F3000\n; Extrude about 40 mm by printing a 90 degree arc\nG3 X0 Y-130 I130 Z0.3 E40 F2700\n; Retract and move nozzle up\nG92 E0\nG1 E-1.5 F1800\nG0 Z0.5\nG1 E0 F300\n"
+ "default_value": "G21 ; millimeter units\nG90 ; absolute coordinates\nM82 ; E absolute\nM140 S{material_bed_temperature_layer_0}\nM104 S{material_print_temperature_layer_0}\nM190 S{material_bed_temperature_layer_0}\nM109 S{material_initial_print_temperature}\nG28 ; home axis\nM420 S1 ; enable mesh leveling\n; Lower nozzle and move to start position\nG1 Z150\nG1 X-130 Y0 Z0.4 F3000\n; Extrude about 40 mm by printing a 90 degree arc\nG3 X0 Y-130 I130 Z0.3 E40 F2700\n; Retract and move nozzle up\nG92 E0\nG1 E-1.5 F1800\nG0 Z0.5\nG1 E0 F300\n"
},
"machine_end_gcode": {
"default_value": "G91 ; relative coordinates\nG1 E-1 F300 ; retract filament a bit before lifting\nG1 Z+5 E-5 F6000 ; raise platform from current position\nG28 X0 Y0 ; home axis\nG90 ; absolute coordinates\nG92 E0 ; reset extruder\nM104 S0 ; turn off hotend\nM140 S0 ; turn off heat bed\nM107 ; turn off fans\nM84 ; disable motors\n"
@@ -74,4 +74,4 @@
"default_value": "Marlin"
}
}
-} \ No newline at end of file
+}
diff --git a/resources/definitions/liquid.def.json b/resources/definitions/liquid.def.json
index 0d0d5f0a43..e9617ab141 100644
--- a/resources/definitions/liquid.def.json
+++ b/resources/definitions/liquid.def.json
@@ -87,7 +87,7 @@
"value": true,
"enabled": true
},
-
+ "acceleration_enabled": { "value": true },
"acceleration_layer_0": { "value": "acceleration_topbottom" },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" },
"acceleration_print": { "value": "4000" },
diff --git a/resources/definitions/mingda_1000pro.def.json b/resources/definitions/mingda_1000pro.def.json
new file mode 100644
index 0000000000..57c125a9b1
--- /dev/null
+++ b/resources/definitions/mingda_1000pro.def.json
@@ -0,0 +1,24 @@
+{
+ "name": "Mingda 1000Pro",
+ "version": 2,
+ "inherits": "mingda_base",
+ "overrides":
+ {
+ "machine_name": { "default_value": "Mingda 1000Pro" },
+
+ "machine_start_gcode": { "default_value": " G28 ; home all axes\n M420 S1\n M117 ; Purge extruder\n G92 E0 ; reset extruder\n G1 Z1.0 F1200 ; move z up little to prevent scratching of surface\n G1 X4 Y20 Z0.3 F3000.0 ; move to start-line position\n G1 X4 Y380.0 Z0.3 F1500.0 E30 ; draw 1st line\n G1 X4 Y380.0 Z0.4 F3000.0 ; move to side a little\n G1 X4 Y20 Z0.4 F1500.0 E60 ; draw 2nd line\n G92 E0 ; reset extruder\n G1 Z1.0 F1500 ; move z up little to prevent scratching of surface"},
+
+ "machine_end_gcode": { "default_value": " G91; relative positioning\n G1 Z1.0 F3000 ; move z up little to prevent scratching of print\n G90; absolute positioning\n G1 X0 Y0 F1000 ; prepare for part removal\n M104 S0; turn off extruder\n M140 S0 ; turn off bed\n M84 ; disable motors\n M106 S0 ; turn off fan" },
+
+ "machine_width": { "default_value": 1000 },
+ "machine_depth": { "default_value": 1000 },
+ "machine_height": { "default_value": 1000 },
+ "gantry_height": { "value": 25 }
+
+ },
+ "metadata":
+ {
+ "quality_definition": "mingda_base",
+ "visible": true
+ }
+}
diff --git a/resources/definitions/mingda_4h.def.json b/resources/definitions/mingda_4h.def.json
new file mode 100644
index 0000000000..8a977aedda
--- /dev/null
+++ b/resources/definitions/mingda_4h.def.json
@@ -0,0 +1,19 @@
+{
+ "name": "Mingda 4H",
+ "version": 2,
+ "inherits": "mingda_base",
+ "overrides":
+ {
+ "machine_name": { "default_value": "Mingda 4H" },
+
+ "machine_width": { "default_value": 300 },
+ "machine_depth": { "default_value": 200 },
+ "machine_height": { "default_value": 200 },
+ "gantry_height": { "value": 25 }
+ },
+ "metadata":
+ {
+ "quality_definition": "mingda_base",
+ "visible": true
+ }
+}
diff --git a/resources/definitions/mingda_600pro.def.json b/resources/definitions/mingda_600pro.def.json
new file mode 100644
index 0000000000..c1cd812ab4
--- /dev/null
+++ b/resources/definitions/mingda_600pro.def.json
@@ -0,0 +1,24 @@
+{
+ "name": "Mingda 600Pro",
+ "version": 2,
+ "inherits": "mingda_base",
+ "overrides":
+ {
+ "machine_name": { "default_value": "Mingda 600Pro" },
+
+ "machine_start_gcode": { "default_value": " G28 ; home all axes\n M420 S1\n M117 ; Purge extruder\n G92 E0 ; reset extruder\n G1 Z1.0 F1200 ; move z up little to prevent scratching of surface\n G1 X4 Y20 Z0.3 F3000.0 ; move to start-line position\n G1 X4 Y380.0 Z0.3 F1500.0 E30 ; draw 1st line\n G1 X4 Y380.0 Z0.4 F3000.0 ; move to side a little\n G1 X4 Y20 Z0.4 F1500.0 E60 ; draw 2nd line\n G92 E0 ; reset extruder\n G1 Z1.0 F1500 ; move z up little to prevent scratching of surface"},
+
+ "machine_end_gcode": { "default_value": " G91; relative positioning\n G1 Z1.0 F3000 ; move z up little to prevent scratching of print\n G90; absolute positioning\n G1 X0 Y0 F1000 ; prepare for part removal\n M104 S0; turn off extruder\n M140 S0 ; turn off bed\n M84 ; disable motors\n M106 S0 ; turn off fan" },
+
+ "machine_width": { "default_value": 600 },
+ "machine_depth": { "default_value": 600 },
+ "machine_height": { "default_value": 600 },
+ "gantry_height": { "value": 25 }
+
+ },
+ "metadata":
+ {
+ "quality_definition": "mingda_base",
+ "visible": true
+ }
+}
diff --git a/resources/definitions/mingda_6h.def.json b/resources/definitions/mingda_6h.def.json
new file mode 100644
index 0000000000..f306a8f2c4
--- /dev/null
+++ b/resources/definitions/mingda_6h.def.json
@@ -0,0 +1,19 @@
+{
+ "name": "Mingda 6H",
+ "version": 2,
+ "inherits": "mingda_base",
+ "overrides":
+ {
+ "machine_name": { "default_value": "Mingda 6H" },
+
+ "machine_width": { "default_value": 400 },
+ "machine_depth": { "default_value": 300 },
+ "machine_height": { "default_value": 500 },
+ "gantry_height": { "value": 25 }
+ },
+ "metadata":
+ {
+ "quality_definition": "mingda_base",
+ "visible": true
+ }
+}
diff --git a/resources/definitions/mingda_base.def.json b/resources/definitions/mingda_base.def.json
index 169adc8b85..9205be8e4e 100644
--- a/resources/definitions/mingda_base.def.json
+++ b/resources/definitions/mingda_base.def.json
@@ -72,9 +72,9 @@
"overrides": {
"machine_name": { "default_value": "MINGDA Base Printer" },
- "machine_start_gcode": { "default_value": " G28 ; home all axes\n M117 ; Purge extruder\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface\n G1 X2 Y20 Z0.3 F5000.0 ; move to start-line position\n G1 X2 Y200.0 Z0.3 F1500.0 E15 ; draw 1st line\n G1 X2 Y200.0 Z0.4 F5000.0 ; move to side a little\n G1 X2 Y20 Z0.4 F1500.0 E30 ; draw 2nd line\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface"},
+ "machine_start_gcode": { "default_value": " G28 ; home all axes\n M117 ; Purge extruder\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface\n G1 X2 Y20 Z0.3 F5000.0 ; move to start-line position\n G1 X2 Y200.0 Z0.3 F1500.0 E15 ; draw 1st line\n G1 X2 Y200.0 Z0.4 F5000.0 ; move to side a little\n G1 X2 Y20 Z0.4 F1500.0 E30 ; draw 2nd line\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface"},
- "machine_end_gcode": { "default_value": " G91; relative positioning\n G1 Z1.0 F3000 ; move z up little to prevent scratching of print\n G90; absolute positioning\n G1 X0 Y0 F1000 ; prepare for part removal\n M104 S0; turn off extruder\n M140 S0 ; turn off bed\n M84 ; disable motors\n M106 S0 ; turn off fan" },
+ "machine_end_gcode": { "default_value": " G91; relative positioning\n G1 Z1.0 F3000 ; move z up little to prevent scratching of print\n G90; absolute positioning\n G1 X0 Y0 F1000 ; prepare for part removal\n M104 S0; turn off extruder\n M140 S0 ; turn off bed\n M84 ; disable motors\n M106 S0 ; turn off fan" },
"machine_max_feedrate_x": { "value": 500 },
"machine_max_feedrate_y": { "value": 500 },
@@ -110,9 +110,10 @@
"speed_print": { "value": 60.0 } ,
"speed_wall_x": { "value": "speed_wall" },
"speed_roofing": { "value": "speed_topbottom" },
- "speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" },
+ "speed_travel": { "value": "80.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 1.5" },
"speed_layer_0": { "value": 20.0 },
- "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" },
+ "speed_print_layer_0": { "value": "speed_layer_0" },
+ "speed_travel_layer_0": { "value": "60 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 1.5" },
"speed_prime_tower": { "value": "speed_topbottom" },
"speed_support": { "value": "speed_wall_0" },
"speed_support_interface": { "value": "speed_topbottom" },
@@ -120,7 +121,7 @@
"skirt_brim_speed": { "value": "speed_layer_0" },
- "line_width": { "value": "machine_nozzle_size * 1.1" },
+ "line_width": { "value": "machine_nozzle_size * 1" },
"optimize_wall_printing_order": { "value": true },
@@ -131,12 +132,13 @@
"z_seam_corner": { "value": "'z_seam_corner_none'" },
"infill_sparse_density": { "value": "15" },
- "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" },
+ "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'grid'" },
"infill_before_walls": { "value": false },
"infill_overlap": { "value": 30.0 },
"skin_overlap": { "value": 10.0 },
"infill_wipe_dist": { "value": 0.0 },
"wall_0_wipe_dist": { "value": 0.0 },
+ "wall_0_material_flow": { "value": "0.95 * material_flow"},
"fill_outline_gaps": { "value": false },
@@ -162,15 +164,15 @@
"travel_retract_before_outer_wall": { "value": true },
"retraction_amount": { "value": 2 },
-
+ "retraction_enable": { "value": true },
"retraction_count_max": { "value": 100 },
- "retraction_extrusion_window": { "value": 10 },
+ "retraction_extrusion_window": { "value": 3 },
"retraction_min_travel": { "value": 1.5 },
"cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" },
"cool_min_layer_time": { "value": 10 },
- "adhesion_type": { "value": "'none' if support_enable else 'skirt'" },
+ "adhesion_type": { "value": "'none' if support_enable else 'raft'" },
"brim_replaces_support": { "value": false },
"skirt_gap": { "value": 10.0 },
"skirt_line_count": { "value": 4 },
@@ -181,8 +183,8 @@
"meshfix_maximum_resolution": { "value": "0.05" },
"meshfix_maximum_travel_resolution": { "value": "meshfix_maximum_resolution" },
- "support_angle": { "value": "math.floor(math.degrees(math.atan(line_width / 2.0 / layer_height)))" },
- "support_pattern": { "value": "'zigzag'" },
+ "support_angle": { "value": "math.floor(math.degrees(math.atan(line_width / 2.0 / layer_height)))" },
+ "support_pattern": { "value": "'zigzag'" },
"support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" },
"support_use_towers": { "value": false },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
@@ -202,6 +204,5 @@
"minimum_interface_area": { "value": 10 },
"top_bottom_thickness": {"value": "layer_height_0 + layer_height * 3" },
"wall_thickness": {"value": "line_width * 2" }
-
}
}
diff --git a/resources/definitions/mingda_d2.def.json b/resources/definitions/mingda_d2.def.json
index d6278705ad..56ac284156 100644
--- a/resources/definitions/mingda_d2.def.json
+++ b/resources/definitions/mingda_d2.def.json
@@ -2,15 +2,16 @@
"name": "Mingda D2",
"version": 2,
"inherits": "mingda_base",
- "overrides": {
+ "overrides":
+ {
"machine_name": { "default_value": "MINGDA D2" },
"machine_width": { "default_value": 230 },
"machine_depth": { "default_value": 230 },
"machine_height": { "default_value": 260 },
"gantry_height": { "value": 25 }
-
},
- "metadata": {
+ "metadata":
+ {
"quality_definition": "mingda_base",
"visible": true,
"platform": "mingda_d2_base.stl",
diff --git a/resources/definitions/mingda_d3pro.def.json b/resources/definitions/mingda_d3pro.def.json
index 682cd88d88..230e59e4e0 100644
--- a/resources/definitions/mingda_d3pro.def.json
+++ b/resources/definitions/mingda_d3pro.def.json
@@ -2,20 +2,19 @@
"name": "Mingda D3/Pro",
"version": 2,
"inherits": "mingda_base",
- "overrides": {
+ "overrides":
+ {
"machine_name": { "default_value": "MINGDA D3/Pro" },
"machine_width": { "default_value": 320 },
"machine_depth": { "default_value": 320 },
"machine_height": { "default_value": 400 },
"gantry_height": { "value": 25 }
-
-
-
},
- "metadata": {
+ "metadata":
+ {
"quality_definition": "mingda_base",
"visible": true,
- "platform": "mingda_rock3_base.stl",
+ "platform": "mingda_rock3_base.stl",
"platform_offset": [ -179, -108, 150]
}
}
diff --git a/resources/definitions/mingda_d4pro.def.json b/resources/definitions/mingda_d4pro.def.json
index 00d316c925..283fda8165 100644
--- a/resources/definitions/mingda_d4pro.def.json
+++ b/resources/definitions/mingda_d4pro.def.json
@@ -2,16 +2,17 @@
"name": "Mingda D4 Pro",
"version": 2,
"inherits": "mingda_base",
- "overrides": {
+ "overrides":
+ {
"machine_name": { "default_value": "MINGDA D4 Pro" },
"machine_start_gcode": { "default_value": "G28 ; home all axes\n G29; ABL\n M117 Purge extruder\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface\n G1 X2 Y20 Z0.3 F5000.0 ; move to start-line position\n G1 X2 Y200.0 Z0.3 F1500.0 E15 ; draw 1st line\n G1 X2 Y200.0 Z0.4 F5000.0 ; move to side a little\n G1 X2 Y20 Z0.4 F1500.0 E30 ; draw 2nd line\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface"},
"machine_width": { "default_value": 420 },
"machine_depth": { "default_value": 420 },
"machine_height": { "default_value": 400 },
"gantry_height": { "value": 25 }
-
},
- "metadata": {
+ "metadata":
+ {
"quality_definition": "mingda_base",
"visible": true,
"platform": "mingda_d4pro_base.stl",
diff --git a/resources/definitions/mingda_magician_max.def.json b/resources/definitions/mingda_magician_max.def.json
index 444457ab4e..825a63f4ee 100644
--- a/resources/definitions/mingda_magician_max.def.json
+++ b/resources/definitions/mingda_magician_max.def.json
@@ -4,6 +4,11 @@
"inherits": "mingda_base",
"overrides": {
"machine_name": { "default_value": "Mingda Magician Max" },
+
+ "machine_start_gcode": { "default_value": " G28 ; home all axes\n M420 S1\n M117 ; Purge extruder\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface\n G1 X2 Y20 Z0.3 F5000.0 ; move to start-line position\n G1 X2 Y200.0 Z0.3 F1500.0 E15 ; draw 1st line\n G1 X2 Y200.0 Z0.4 F5000.0 ; move to side a little\n G1 X2 Y20 Z0.4 F1500.0 E30 ; draw 2nd line\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface"},
+
+ "machine_end_gcode": { "default_value": " G91; relative positioning\n G1 Z1.0 F3000 ; move z up little to prevent scratching of print\n G90; absolute positioning\n G1 X0 Y0 F1000 ; prepare for part removal\n M104 S0; turn off extruder\n M140 S0 ; turn off bed\n M84 ; disable motors\n M420 S0\n M106 S0 ; turn off fan" },
+
"machine_width": { "default_value": 320 },
"machine_depth": { "default_value": 320 },
"machine_height": { "default_value": 400 },
@@ -13,7 +18,7 @@
"metadata": {
"quality_definition": "mingda_base",
"visible": true,
- "platform": "mingda_rock3_base.stl",
- "platform_offset": [ -179, -108, 150]
+ "platform": "mingda_magician_max_base.stl",
+ "platform_offset": [ 0, 0, 4]
}
}
diff --git a/resources/definitions/mingda_magician_pro.def.json b/resources/definitions/mingda_magician_pro.def.json
index b38e168c65..c261f986e5 100644
--- a/resources/definitions/mingda_magician_pro.def.json
+++ b/resources/definitions/mingda_magician_pro.def.json
@@ -4,9 +4,11 @@
"inherits": "mingda_base",
"overrides": {
"machine_name": { "default_value": "Mingda Magician Pro" },
- "machine_start_gcode": {
- "default_value":" G28 ; home all axes\n M117 ; Purge extruder\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface\n G1 X2 Y20 Z0.3 F5000.0 ; move to start-line position\n G1 X2 Y200.0 Z0.3 F1500.0 E15 ; draw 1st line\n G1 X2 Y200.0 Z0.4 F5000.0 ; move to side a little\n G1 X2 Y20 Z0.4 F1500.0 E30 ; draw 2nd line\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface"
- },
+
+ "machine_start_gcode": { "default_value": " G28 ; home all axes\n M420 S1\n M117 ; Purge extruder\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface\n G1 X2 Y20 Z0.3 F5000.0 ; move to start-line position\n G1 X2 Y200.0 Z0.3 F1500.0 E15 ; draw 1st line\n G1 X2 Y200.0 Z0.4 F5000.0 ; move to side a little\n G1 X2 Y20 Z0.4 F1500.0 E30 ; draw 2nd line\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface"},
+
+ "machine_end_gcode": { "default_value": " G91; relative positioning\n G1 Z1.0 F3000 ; move z up little to prevent scratching of print\n G90; absolute positioning\n G1 X0 Y0 F1000 ; prepare for part removal\n M104 S0; turn off extruder\n M140 S0 ; turn off bed\n M84 ; disable motors\n M420 S0\n M106 S0 ; turn off fan" },
+
"machine_width": { "default_value": 400 },
"machine_depth": { "default_value": 400 },
"machine_height": { "default_value": 400 },
@@ -16,7 +18,7 @@
"metadata": {
"quality_definition": "mingda_base",
"visible": true,
- "platform": "mingda_d4pro_base.stl",
- "platform_offset": [ -177, -140, 170]
+ "platform": "mingda_magician_pro_base.stl",
+ "platform_offset": [ 0, 0, -4]
}
}
diff --git a/resources/definitions/mingda_magician_x.def.json b/resources/definitions/mingda_magician_x.def.json
index 2dd3e5cd82..60b11e8a83 100644
--- a/resources/definitions/mingda_magician_x.def.json
+++ b/resources/definitions/mingda_magician_x.def.json
@@ -4,6 +4,11 @@
"inherits": "mingda_base",
"overrides": {
"machine_name": { "default_value": "Mingda Magician X" },
+
+ "machine_start_gcode": { "default_value": " G28 ; home all axes\n M420 S1\n M117 ; Purge extruder\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface\n G1 X2 Y20 Z0.3 F5000.0 ; move to start-line position\n G1 X2 Y200.0 Z0.3 F1500.0 E15 ; draw 1st line\n G1 X2 Y200.0 Z0.4 F5000.0 ; move to side a little\n G1 X2 Y20 Z0.4 F1500.0 E30 ; draw 2nd line\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface"},
+
+ "machine_end_gcode": { "default_value": " G91; relative positioning\n G1 Z1.0 F3000 ; move z up little to prevent scratching of print\n G90; absolute positioning\n G1 X0 Y0 F1000 ; prepare for part removal\n M104 S0; turn off extruder\n M140 S0 ; turn off bed\n M84 ; disable motors\n M420 S0\n M106 S0 ; turn off fan" },
+
"machine_width": { "default_value": 230 },
"machine_depth": { "default_value": 230 },
"machine_height": { "default_value": 260 },
@@ -13,7 +18,7 @@
"metadata": {
"quality_definition": "mingda_base",
"visible": true,
- "platform": "mingda_d2_base.stl",
- "platform_offset": [ -205, -77, 65]
+ "platform": "mingda_magician_x_base.stl",
+ "platform_offset": [ 0, 0, 0]
}
}
diff --git a/resources/definitions/nps.def.json b/resources/definitions/nps.def.json
new file mode 100644
index 0000000000..b6f0bfffe8
--- /dev/null
+++ b/resources/definitions/nps.def.json
@@ -0,0 +1,54 @@
+{
+ "version": 2,
+ "name": "nps",
+ "inherits": "fdmprinter",
+ "metadata": {
+ "visible": true,
+ "author": "Naxe",
+ "manufacturer": "Naxe",
+ "platform": "npscura.stl",
+ "platform_offset": [ -212, -83, 215],
+ "file_formats": "text/x-gcode",
+ "machine_extruder_trains": {
+ "0": "nps_extruder_0"
+ },
+ "has_machine_quality": true,
+ "has_materials": true
+ },
+
+ "overrides": {
+ "machine_name": { "default_value": "NAXE NP-S" },
+ "machine_heated_bed": { "default_value": true },
+ "machine_width": { "default_value": 300 },
+ "machine_height": { "default_value": 300 },
+ "machine_depth": { "default_value": 300 },
+ "machine_center_is_zero": { "default_value": false },
+ "material_diameter": { "default_value": 1.75 },
+ "machine_nozzle_size": { "default_value": 0.4 },
+ "layer_height": { "default_value": 0.1 },
+ "layer_height_0": { "default_value": 0.2 },
+ "retraction_amount": { "default_value": 0.2 },
+ "retraction_speed": { "default_value": 45 },
+ "adhesion_type": { "default_value": "none" },
+ "infill_sparse_density": { "default_value": 25 },
+ "fill_outline_gaps": { "default_value": true },
+ "retract_at_layer_change": { "default_value": true },
+ "retraction_combing_max_distance": { "default_value": 200 },
+ "machine_head_with_fans_polygon": { "default_value": [[-38,30],[38,30],[38,-40],[-38,-40]] },
+ "machine_max_feedrate_z": { "default_value": 20 },
+ "machine_max_feedrate_e": { "default_value": 60 },
+ "machine_max_acceleration_z": { "default_value": 500 },
+ "machine_acceleration": { "default_value": 1000 },
+ "machine_max_jerk_xy": { "default_value": 12 },
+ "machine_max_jerk_z": { "default_value": 0.5 },
+ "machine_max_jerk_e": { "default_value": 5 },
+ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
+ "machine_extruder_count": {"default_value": 1},
+ "machine_start_gcode": {
+ "default_value": "G28 X Y\nG1 Y10\nM104 S{print_temperature}\nM190 S{print_bed_temperature}\nG28\nG4 S5\nG34\nG29 E0\nG21\nG90\nM83\nG1 X6 Y20 F7200\nG1 Z0.2\nM109 S{print_temperature}\nG1 X10 Y20 Z0.2 F5000.0\nG1 X10 Y200.0 Z0.2 F900.0 E10\nG92 E0.0\nM82\nM117 Printing\n"
+ },
+ "machine_end_gcode": {
+ "default_value": "M104 S0\nM140 S0\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84\n"
+ }
+ }
+}
diff --git a/resources/definitions/renkforce_rf100_xl.def.json b/resources/definitions/renkforce_rf100_xl.def.json
index f0e26487f1..02172dd317 100644
--- a/resources/definitions/renkforce_rf100_xl.def.json
+++ b/resources/definitions/renkforce_rf100_xl.def.json
@@ -18,55 +18,55 @@
"default_value": "skirt"
},
"bottom_thickness": {
- "value": "0.6"
+ "value": 0.6
},
"brim_width": {
- "value": "3.0"
+ "value": 3.0
},
"cool_fan_enabled": {
- "value": "True"
+ "value": true
},
"cool_fan_full_at_height": {
- "value": "0.5"
+ "value": 0.5
},
"cool_fan_speed_max": {
- "value": "100.0"
+ "value": 100.0
},
"cool_fan_speed_min": {
- "value": "100.0"
+ "value": 100.0
},
"cool_lift_head": {
- "value": "True"
+ "value": true
},
"cool_min_layer_time": {
- "value": "1.0"
+ "value": 1.0
},
"cool_min_speed": {
- "value": "5.0"
+ "value": 5.0
},
"infill_before_walls": {
- "value": "True"
+ "value": true
},
"infill_line_width": {
- "value": "0.6"
+ "value": 0.6
},
"infill_overlap": {
- "value": "15.0"
+ "value": 15.0
},
"infill_sparse_density": {
- "value": "26.0"
+ "value": 26.0
},
"ironing_enabled": {
- "value": "True"
+ "value": true
},
"layer_0_z_overlap": {
- "value": "0.11"
+ "value": 0.11
},
"layer_height_0": {
- "value": "0.3"
+ "value": 0.3
},
"machine_depth": {
- "value": "200"
+ "value": 200
},
"machine_end_gcode": {
"default_value": ";End GCode\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-4 F300 ;move Z up a bit and retract filament even more\nM104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG0 Z{machine_height} F1800 ;move the platform all the way down\nG28 X0 Y0 F1800 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning\nM117 Done"
@@ -75,10 +75,10 @@
"default_value": "RepRap (Marlin/Sprinter)"
},
"machine_heated_bed": {
- "default_value": "true"
+ "default_value": true
},
"machine_height": {
- "value": "200"
+ "value": 200
},
"machine_name": {
"default_value": "Renkforce RF100 XL"
@@ -87,109 +87,109 @@
"default_value": ";Sliced at: {day} {date} {time}\nG21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG1 Z5.0 F1800 ;move Z to 5mm\nG28 X0 Y0 F1800 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstop\nG92 E0 ;zero the extruded length\nG1 F200 E6.0 ;extrude 6.0mm of feed stock to build pressure\nG1 Z5.0 F300 ;move the platform down 5mm\nG92 E0 ;zero the extruded length again\nG1 F1800\n;Put printing message on LCD screen\nM117 Printing..."
},
"machine_width": {
- "value": "200"
+ "value": 200
},
"material_bed_temperature": {
- "value": "70"
+ "value": 70
},
"ooze_shield_enabled": {
- "value": "True"
+ "value": true
},
"raft_airgap": {
- "value": "0.33"
+ "value": 0.33
},
"raft_base_line_spacing": {
- "value": "3.0"
+ "value": 3.0
},
"raft_base_line_width": {
- "value": "1.0"
+ "value": 1.0
},
"raft_base_thickness": {
- "value": "0.3"
+ "value": 0.3
},
"raft_interface_line_spacing": {
- "value": "3.0"
+ "value": 3.0
},
"raft_interface_line_width": {
- "value": "0.4"
+ "value": 0.4
},
"raft_interface_thickness": {
- "value": "0.27"
+ "value": 0.27
},
"raft_margin": {
- "value": "6.0"
+ "value": 6.0
},
"raft_speed": {
- "value": "20.0"
+ "value": 20.0
},
"raft_surface_layers": {
- "value": "2"
+ "value": 2
},
"raft_surface_line_spacing": {
- "value": "0.4"
+ "value": 0.4
},
"raft_surface_line_width": {
- "value": "0.4"
+ "value": 0.4
},
"raft_surface_thickness": {
- "value": "0.1"
+ "value": 0.1
},
"retraction_amount": {
- "value": "5.0"
+ "value": 5.0
},
"retraction_combing": {
- "value": "'all'"
+ "value": "all"
},
"retraction_enable": {
- "value": "True"
+ "value": true
},
"retraction_min_travel": {
- "value": "1.5"
+ "value": 1.5
},
"skin_overlap": {
- "value": "15.0"
+ "value": 15.0
},
"skirt_brim_minimal_length": {
- "value": "150.0"
+ "value": 150.0
},
"skirt_gap": {
- "value": "3.0"
+ "value": 3.0
},
"skirt_line_count": {
- "value": "3"
+ "value": 3
},
"speed_infill": {
- "value": "50.0"
+ "value": 50.0
},
"speed_layer_0": {
- "value": "15.0"
+ "value": 15.0
},
"speed_print": {
- "value": "50.0"
+ "value": 50.0
},
"speed_topbottom": {
- "value": "30.0"
+ "value": 30.0
},
"speed_travel": {
- "value": "50.0"
+ "value": 50.0
},
"speed_wall_0": {
- "value": "25.0"
+ "value": 25.0
},
"speed_wall_x": {
- "value": "35.0"
+ "value": 35.0
},
"support_angle": {
- "value": "60.0"
+ "value": 60.0
},
"support_enable": {
- "value": "False"
+ "value": false
},
"support_infill_rate": {
"value": "15 if support_enable and support_structure == 'normal' else 0 if support_enable and support_structure == 'tree' else 15"
},
"support_line_width": {
- "value": "0.6"
+ "value": 0.6
},
"support_pattern": {
"default_value": "lines"
@@ -198,16 +198,16 @@
"default_value": "everywhere"
},
"support_xy_distance": {
- "value": "0.7"
+ "value": 0.7
},
"support_z_distance": {
- "value": "0.35"
+ "value": 0.35
},
"top_bottom_thickness": {
- "value": "0.8"
+ "value": 0.8
},
"wall_thickness": {
- "value": "0.8"
+ "value": 0.8
}
}
}
diff --git a/resources/definitions/trimaker_nebula.def.json b/resources/definitions/trimaker_nebula.def.json
index c475bc074b..2e789b97dd 100644
--- a/resources/definitions/trimaker_nebula.def.json
+++ b/resources/definitions/trimaker_nebula.def.json
@@ -109,7 +109,7 @@
"machine_width": {"default_value": 230},
"machine_depth": {"default_value": 230},
"machine_height": {"default_value": 260},
-
+ "acceleration_enabled": { "value": true },
"layer_height": {"default_value": 0.2},
"material_flow": {"value": 100},
"xy_offset": {"default_value": 0},
diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json
index 57d6904aaf..aab796e0a8 100644
--- a/resources/definitions/ultimaker.def.json
+++ b/resources/definitions/ultimaker.def.json
@@ -79,7 +79,7 @@
"value": "skin_material_flow"
},
"skin_monotonic" : {
- "value": true
+ "value": "roofing_layer_count == 0"
},
"speed_equalize_flow_width_factor": {
"value": "110.0"
@@ -112,10 +112,7 @@
"value": "4 * layer_height if infill_sparse_density < 30 else 0"
},
"bridge_settings_enabled": {
- "value": false
- },
- "bridge_wall_min_length": {
- "value": 0
+ "value": true
},
"bridge_skin_support_threshold": {
"value": 50
@@ -127,7 +124,7 @@
"value": 0
},
"bridge_wall_speed": {
- "value": "speed_wall"
+ "value": "bridge_skin_speed"
},
"bridge_wall_material_flow": {
"value": "wall_material_flow"
@@ -237,10 +234,37 @@
"value": "2 if support_interface_enable else 0"
},
"gradual_support_infill_step_height": {
- "value": "4*layer_height"
+ "value": "4 * layer_height"
+ },
+ "raft_base_speed": {
+ "value": "raft_speed"
+ },
+ "raft_base_thickness": {
+ "value": "min(machine_nozzle_size * 0.75, 0.3)"
+ },
+ "raft_interface_fan_speed": {
+ "value": "(raft_base_fan_speed + raft_surface_fan_speed) / 2"
+ },
+ "raft_interface_line_width": {
+ "value": "(raft_base_line_width + raft_surface_line_width) / 2"
+ },
+ "raft_interface_speed": {
+ "value": "(raft_surface_speed + raft_base_speed) / 2"
+ },
+ "raft_interface_thickness": {
+ "value": "(raft_base_thickness + raft_surface_thickness) / 2"
+ },
+ "raft_speed": {
+ "value": 15
+ },
+ "raft_surface_fan_speed": {
+ "value": "cool_fan_speed"
+ },
+ "raft_surface_speed": {
+ "value": "speed_topbottom"
},
"support_interface_height": {
- "value": "2*layer_height"
+ "value": "2 * layer_height"
},
"support_offset": {
"value": "support_xy_distance if support_interface_enable else 0"
@@ -268,6 +292,15 @@
},
"support_z_distance": {
"value": "0"
+ },
+ "support_conical_enabled": {
+ "value": true
+ },
+ "support_conical_min_width": {
+ "value": 10
+ },
+ "top_bottom_pattern": {
+ "value": "'zigzag'"
}
}
}
diff --git a/resources/definitions/ultimaker2_plus_connect.def.json b/resources/definitions/ultimaker2_plus_connect.def.json
index adb5efadcf..6a69bb8ff4 100644
--- a/resources/definitions/ultimaker2_plus_connect.def.json
+++ b/resources/definitions/ultimaker2_plus_connect.def.json
@@ -83,6 +83,7 @@
"meshfix_maximum_travel_resolution": { "value": 0.5 },
"prime_blob_enable": { "enabled": true, "default_value": true, "value": "resolveOrValue('print_sequence') != 'one_at_a_time'" },
"retraction_prime_speed": { "value": "15" },
- "retraction_speed": {"value": "45" }
+ "retraction_speed": {"value": "45" },
+ "speed_wall_x": { "value": "speed_wall" }
}
}
diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json
index 97a83c5ee7..fad1eaf2ea 100644
--- a/resources/definitions/ultimaker3.def.json
+++ b/resources/definitions/ultimaker3.def.json
@@ -81,7 +81,7 @@
"prime_tower_wipe_enabled": { "default_value": false },
"prime_blob_enable": { "enabled": true, "default_value": true, "value": "resolveOrValue('print_sequence') != 'one_at_a_time'" },
-
+ "acceleration_enabled": { "value": true },
"acceleration_layer_0": { "value": "acceleration_topbottom" },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 3500)" },
"acceleration_print": { "value": "3500" },
@@ -111,14 +111,6 @@
"multiple_mesh_overlap": { "value": "0" },
"optimize_wall_printing_order": { "value": "True" },
"prime_tower_enable": { "default_value": true },
- "raft_airgap": { "value": "0" },
- "raft_base_thickness": { "value": "0.3" },
- "raft_interface_line_spacing": { "value": "0.5" },
- "raft_interface_line_width": { "value": "0.5" },
- "raft_interface_thickness": { "value": "0.2" },
- "raft_jerk": { "value": "jerk_layer_0" },
- "raft_margin": { "value": "10" },
- "raft_surface_layers": { "value": "1" },
"retraction_amount": { "value": "6.5" },
"retraction_hop": { "value": "2" },
"retraction_hop_enabled": { "value": "extruders_enabled_count > 1" },
diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json
index 5d1464396f..78986133a7 100644
--- a/resources/definitions/ultimaker_s3.def.json
+++ b/resources/definitions/ultimaker_s3.def.json
@@ -35,7 +35,7 @@
"update_url": "https://ultimaker.com/firmware?utm_source=cura&utm_medium=software&utm_campaign=fw-update"
},
"bom_numbers": [
- 213482
+ 213482, 213483
]
},
@@ -68,7 +68,7 @@
"machine_start_gcode": { "default_value": "" },
"machine_end_gcode": { "default_value": "" },
"prime_blob_enable": { "enabled": true, "default_value": false },
-
+ "acceleration_enabled": { "value": true },
"speed_travel":
{
"maximum_value": "150",
@@ -100,17 +100,6 @@
"multiple_mesh_overlap": { "value": "0" },
"optimize_wall_printing_order": { "value": "True" },
"prime_tower_enable": { "value": "True" },
- "raft_airgap": { "value": "0" },
- "raft_base_speed": { "value": "20" },
- "raft_base_thickness": { "value": "0.3" },
- "raft_interface_line_spacing": { "value": "0.5" },
- "raft_interface_line_width": { "value": "0.5" },
- "raft_interface_speed": { "value": "20" },
- "raft_interface_thickness": { "value": "0.2" },
- "raft_jerk": { "value": "jerk_layer_0" },
- "raft_margin": { "value": "10" },
- "raft_speed": { "value": "25" },
- "raft_surface_layers": { "value": "1" },
"retraction_amount": { "value": "6.5" },
"retraction_hop": { "value": "2" },
"retraction_hop_enabled": { "value": "extruders_enabled_count > 1" },
diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json
index 314da546de..33b3f926e5 100644
--- a/resources/definitions/ultimaker_s5.def.json
+++ b/resources/definitions/ultimaker_s5.def.json
@@ -36,7 +36,7 @@
"update_url": "https://ultimaker.com/firmware?utm_source=cura&utm_medium=software&utm_campaign=fw-update"
},
"bom_numbers": [
- 9051, 214475
+ 9051, 214475, 214476
]
},
@@ -76,7 +76,7 @@
"maximum_value": "150",
"value": "150"
},
-
+ "acceleration_enabled": { "value": true },
"acceleration_layer_0": { "value": "acceleration_topbottom" },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 3500)" },
"acceleration_print": { "value": "3500" },
@@ -101,17 +101,6 @@
"default_material_print_temperature": { "value": "200" },
"multiple_mesh_overlap": { "value": "0" },
"prime_tower_enable": { "value": "True" },
- "raft_airgap": { "value": "0" },
- "raft_base_speed": { "value": "20" },
- "raft_base_thickness": { "value": "0.3" },
- "raft_interface_line_spacing": { "value": "0.5" },
- "raft_interface_line_width": { "value": "0.5" },
- "raft_interface_speed": { "value": "20" },
- "raft_interface_thickness": { "value": "0.2" },
- "raft_jerk": { "value": "jerk_layer_0" },
- "raft_margin": { "value": "10" },
- "raft_speed": { "value": "25" },
- "raft_surface_layers": { "value": "1" },
"retraction_amount": { "value": "6.5" },
"retraction_combing": { "value": "'no_outer_surfaces'"},
"retraction_hop": { "value": "2" },
diff --git a/resources/definitions/vivedino_base.def.json b/resources/definitions/vivedino_base.def.json
new file mode 100644
index 0000000000..0a024c7792
--- /dev/null
+++ b/resources/definitions/vivedino_base.def.json
@@ -0,0 +1,153 @@
+{
+ "name": "Vivedino/FormBot Base Printer",
+ "version": 2,
+ "inherits": "fdmprinter",
+ "metadata": {
+ "visible": false,
+ "author": "bitflipper11",
+ "manufacturer": "Vivedino, Formbot",
+ "file_formats": "text/x-gcode",
+ "first_start_actions": ["MachineSettingsAction"],
+
+ "machine_extruder_trains": {
+ "0": "trex_base_extruder_0"
+ },
+
+ "has_materials": true,
+ "has_variants": true,
+ "has_machine_quality": true,
+ "variants_name": "Nozzle Size",
+
+ "preferred_variant_name": "0.4mm Nozzle",
+ "preferred_quality_type": "standard",
+ "preferred_material": "generic_pla"
+ },
+ "overrides": {
+ "machine_name": { "default_value": "Vivedino Base Printer" },
+ "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n" },
+ "machine_end_gcode": { "default_value": "G91 ;Relative positioning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z more\nG90 ;Absolute positioning\n\nG1 X0 Y{machine_depth} ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z\n" },
+
+ "machine_max_feedrate_x": { "value": 500 },
+ "machine_max_feedrate_y": { "value": 500 },
+ "machine_max_feedrate_z": { "value": 10 },
+ "machine_max_feedrate_e": { "value": 50 },
+
+ "machine_max_acceleration_x": { "value": 500 },
+ "machine_max_acceleration_y": { "value": 500 },
+ "machine_max_acceleration_z": { "value": 100 },
+ "machine_max_acceleration_e": { "value": 5000 },
+ "machine_acceleration": { "value": 500 },
+
+ "machine_max_jerk_xy": { "value": 10 },
+ "machine_max_jerk_z": { "value": 0.4 },
+ "machine_max_jerk_e": { "value": 5 },
+
+ "machine_heated_bed": { "default_value": true },
+
+ "material_diameter": { "default_value": 1.75 },
+
+ "acceleration_print": { "value": 500 },
+ "acceleration_travel": { "value": 500 },
+ "acceleration_travel_layer_0": { "value": "acceleration_travel" },
+ "acceleration_roofing": { "enabled": "acceleration_enabled and roofing_layer_count > 0 and top_layers > 0" },
+
+ "jerk_print": { "value": 8 },
+ "jerk_travel": { "value": "jerk_print" },
+ "jerk_travel_layer_0": { "value": "jerk_travel" },
+
+ "speed_print": { "value": 50.0 } ,
+ "speed_wall_x": { "value": "speed_wall" },
+ "speed_roofing": { "value": "speed_topbottom" },
+ "speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" },
+ "speed_layer_0": { "value": 20.0 },
+ "speed_print_layer_0": { "value": "speed_layer_0" },
+ "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" },
+ "speed_prime_tower": { "value": "speed_topbottom" },
+ "speed_support": { "value": "speed_wall_0" },
+ "speed_support_interface": { "value": "speed_topbottom" },
+ "speed_z_hop": { "value": 5 },
+
+ "skirt_brim_speed": { "value": "speed_layer_0" },
+
+ "line_width": { "value": "machine_nozzle_size * 0.95" },
+
+ "optimize_wall_printing_order": { "value": true },
+
+ "material_initial_print_temperature": { "value": "material_print_temperature" },
+ "material_final_print_temperature": { "value": "material_print_temperature" },
+ "material_flow": { "value": 100 },
+
+ "z_seam_type": { "value": "'back'" },
+ "z_seam_corner": { "value": "'z_seam_corner_weighted'" },
+
+ "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" },
+ "infill_before_walls": { "value": false },
+ "infill_overlap": { "value": 30.0 },
+ "skin_overlap": { "value": 10.0 },
+ "infill_wipe_dist": { "value": 0.0 },
+ "wall_0_wipe_dist": { "value": 0.0 },
+
+ "fill_outline_gaps": { "value": false },
+
+ "retraction_speed": {
+ "maximum_value": 200
+ },
+ "retraction_retract_speed": {
+ "maximum_value": 200
+ },
+ "retraction_prime_speed": {
+ "maximum_value": 200
+ },
+
+ "retraction_hop_enabled": { "value": false },
+ "retraction_hop": { "value": 0.2 },
+ "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'noskin'" },
+ "retraction_combing_max_distance": { "value": 30 },
+ "travel_avoid_other_parts": { "value": true },
+ "travel_avoid_supports": { "value": true },
+ "travel_retract_before_outer_wall": { "value": true },
+
+ "retraction_enable": { "value": true },
+ "retraction_count_max": { "value": 100 },
+ "retraction_extrusion_window": { "value": 10 },
+ "retraction_min_travel": { "value": 1.5 },
+
+ "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" },
+ "cool_fan_enabled": { "value": true },
+ "cool_min_layer_time": { "value": 10 },
+
+ "adhesion_type": { "value": "'skirt'" },
+ "brim_replaces_support": { "value": false },
+ "skirt_gap": { "value": 10.0 },
+ "skirt_line_count": { "value": 3 },
+
+ "adaptive_layer_height_variation": { "value": 0.04 },
+ "adaptive_layer_height_variation_step": { "value": 0.04 },
+
+ "meshfix_maximum_resolution": { "value": 0.25 },
+ "meshfix_maximum_travel_resolution": { "value": "meshfix_maximum_resolution" },
+
+ "support_angle": { "value": "math.floor(math.degrees(math.atan(line_width/2.0/layer_height)))" },
+ "support_pattern": { "value": "'zigzag'" },
+ "support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" },
+ "support_use_towers": { "value": false },
+ "support_xy_distance": { "value": "wall_line_width_0 * 2" },
+ "support_xy_distance_overhang": { "value": "wall_line_width_0" },
+ "support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height*2" },
+ "support_xy_overrides_z": { "value": "'xy_overrides_z'" },
+ "support_wall_count": { "value": 1 },
+ "support_brim_enable": { "value": true },
+ "support_brim_width": { "value": 4 },
+
+ "support_interface_enable": { "value": true },
+ "support_interface_height": { "value": "layer_height * 4" },
+ "support_interface_density": { "value": 33.333 },
+ "support_interface_pattern": { "value": "'grid'" },
+ "support_interface_skip_height": { "value": 0.2 },
+ "minimum_support_area": { "value": 10 },
+ "minimum_interface_area": { "value": 10 },
+ "top_bottom_thickness": {"value": "layer_height_0 + layer_height * 3" },
+ "wall_thickness": {"value": "line_width * 2" }
+ }
+}
+
diff --git a/resources/definitions/vivedino_trex2plus.def.json b/resources/definitions/vivedino_trex2plus.def.json
new file mode 100644
index 0000000000..51e5fafaed
--- /dev/null
+++ b/resources/definitions/vivedino_trex2plus.def.json
@@ -0,0 +1,34 @@
+{
+ "name": "Vivedino T-REX 2+",
+ "version": 2,
+ "inherits": "vivedino_base",
+ "overrides": {
+ "retraction_amount": { "value": "2" },
+ "machine_heat_zone_length": {"value": "10"},
+ "machine_extruder_count": { "default_value": 2 },
+ "machine_start_gcode": { "default_value": "T0\nG28 ; home all axes\nM420 S1\nG1 X-42 F8000\nG92 E0\nG1 E5 F500\nG1 X0 F5000\nG1 X-40\nG1 X0\nG1 X-40\nG1 X0\nG1 X-40\nG1 X200\nG1 Y200 F5000" },
+ "machine_end_gcode": { "default_value": "G28 X0 Y0\nM104 S0 T1 ; turn off extruder\nM104 S0 T0\nM140 S0 ; turn off bed\nG28 X0\nM106 P0 S0\nM106 P1 S0\nM84 S0\nM84 XYE; disable motors except Z"},
+ "machine_width": { "default_value": 400 },
+ "machine_depth": { "default_value": 400 },
+ "machine_height": { "default_value": 500 },
+ "machine_head_with_fans_polygon": { "default_value": [
+ [-30, 34],
+ [-30, -32],
+ [30, -32],
+ [30, 34]
+ ]
+ },
+
+ "gantry_height": { "value": 30 }
+
+ },
+ "metadata": {
+ "visible": true,
+ "quality_definition": "vivedino_trex2plus",
+ "platform": "vivedino_trex.stl",
+ "machine_extruder_trains": {
+ "0": "trex2_extruder_0",
+ "1": "trex2_extruder_1"
+ }
+ }
+} \ No newline at end of file
diff --git a/resources/definitions/vivedino_trex3.def.json b/resources/definitions/vivedino_trex3.def.json
new file mode 100644
index 0000000000..0195b94b54
--- /dev/null
+++ b/resources/definitions/vivedino_trex3.def.json
@@ -0,0 +1,34 @@
+{
+ "name": "Vivedino T-REX 3",
+ "version": 2,
+ "inherits": "vivedino_base",
+ "overrides": {
+ "retraction_amount": { "value": "2" },
+ "machine_heat_zone_length": {"value": "10"},
+ "machine_extruder_count": { "default_value": 2 },
+ "machine_start_gcode": { "default_value": "M605 S1 ; Set dual carriage mode S0 slicer full control | S1 AutoPark inactive head | S2 duplicate\nT0\nM106 P0 S[fan_speed_pwm]\nM106 P1 S[fan_speed_pwm]\nG28 ; home all axes\nM420 S1 ; Enable bed leveling compensation using current grid/mesh\nG1 X-42 F8000\nG92 E0\nG1 E5 F500\nG1 X0 F5000\nG1 X-40\nG1 X0\nG1 X-40\nG1 X0\nG1 X-40\nG1 X200\nG1 Y200 F5000\nT1\nG1 X440 F8000 ; park T0 head at X=440\nG92 E0 ; Zero extruder count" },
+ "machine_end_gcode": { "default_value": "G28 X0 Y0\nM104 S0 T1 ; turn off extruder\nM104 S0 T0\nM140 S0 ; turn off bed\nG28 X0\nM106 P0 S0\nM106 P1 S0\nM84 S0\nM84 XYE; disable motors except Z"},
+ "machine_width": { "default_value": 400 },
+ "machine_depth": { "default_value": 400 },
+ "machine_height": { "default_value": 500 },
+ "machine_head_with_fans_polygon": { "default_value": [
+ [-30, 34],
+ [-30, -32],
+ [30, -32],
+ [30, 34]
+ ]
+ },
+
+ "gantry_height": { "value": 30 }
+
+ },
+ "metadata": {
+ "visible": true,
+ "quality_definition": "vivedino_trex3",
+ "platform": "vivedino_trex.stl",
+ "machine_extruder_trains": {
+ "0": "trex_extruder_0",
+ "1": "trex_extruder_1"
+ }
+ }
+}
diff --git a/resources/definitions/vzbot_235.def.json b/resources/definitions/vzbot_235.def.json
new file mode 100644
index 0000000000..2752cb4241
--- /dev/null
+++ b/resources/definitions/vzbot_235.def.json
@@ -0,0 +1,18 @@
+{
+ "name": "VzBot 235",
+ "version": 2,
+ "inherits": "vzbot_base",
+ "metadata":
+ {
+ "visible": true,
+ "platform": "vzbot_235_bed.stl",
+ "quality_definition": "vzbot_base"
+ },
+ "overrides":
+ {
+ "machine_name": { "default_value": "VzBot 235" },
+ "machine_width": { "default_value": 235 },
+ "machine_depth": { "default_value": 235 },
+ "machine_height": { "default_value": 240 }
+ }
+} \ No newline at end of file
diff --git a/resources/definitions/vzbot_330.def.json b/resources/definitions/vzbot_330.def.json
new file mode 100644
index 0000000000..74e65ea289
--- /dev/null
+++ b/resources/definitions/vzbot_330.def.json
@@ -0,0 +1,18 @@
+{
+ "name": "VzBot 330",
+ "version": 2,
+ "inherits": "vzbot_base",
+ "metadata":
+ {
+ "visible": true,
+ "platform": "vzbot_330_bed.stl",
+ "quality_definition": "vzbot_base"
+ },
+ "overrides":
+ {
+ "machine_name": { "default_value": "VzBot 330" },
+ "machine_width": { "default_value": 330 },
+ "machine_depth": { "default_value": 330 },
+ "machine_height": { "default_value": 400 }
+ }
+} \ No newline at end of file
diff --git a/resources/definitions/vzbot_base.def.json b/resources/definitions/vzbot_base.def.json
new file mode 100644
index 0000000000..a3802664d4
--- /dev/null
+++ b/resources/definitions/vzbot_base.def.json
@@ -0,0 +1,112 @@
+{
+ "name": "VzBot Base",
+ "version": 2,
+ "inherits": "fdmprinter",
+ "metadata":
+ {
+ "visible": false,
+ "author": "Chris, ckvsoft.at",
+ "manufacturer": "VzBot",
+ "file_formats": "text/x-gcode",
+ "first_start_actions": ["MachineSettingsAction"],
+ "machine_extruder_trains": { "0": "vzbot_extruder_0" },
+
+ "has_machine_quality": true,
+ "has_materials": true,
+ "has_variants": true,
+ "variants_name": "Nozzle Size",
+ "preferred_quality_type": "standard",
+ "preferred_variant_name": "0.4mm Nozzle",
+ "preferred_material": "generic_abs"
+ },
+ "overrides":
+ {
+ "machine_name": { "default_value": "VzBot" },
+ "machine_width": { "default_value": 330 },
+ "machine_depth": { "default_value": 330 },
+ "machine_height": { "default_value": 400 },
+ "gantry_height": { "value": 34 },
+ "machine_heated_bed": { "default_value": true },
+ "machine_max_acceleration_x": { "default_value": 15000 },
+ "machine_max_acceleration_y": { "default_value": 15000 },
+ "machine_max_acceleration_z": { "default_value": 2000 },
+ "machine_acceleration": { "default_value": 15000 },
+ "machine_max_jerk_xy": { "default_value": 20 },
+ "machine_max_jerk_z": { "default_value": 1 },
+ "machine_max_jerk_e": { "default_value": 60 },
+ "machine_steps_per_mm_x": { "default_value": 80 },
+ "machine_steps_per_mm_y": { "default_value": 80 },
+ "machine_steps_per_mm_z": { "default_value": 400 },
+ "machine_endstop_positive_direction_x": { "default_value": true },
+ "machine_endstop_positive_direction_y": { "default_value": true },
+ "machine_endstop_positive_direction_z": { "default_value": false },
+ "machine_feeder_wheel_diameter": { "default_value": 7.5 },
+ "machine_head_with_fans_polygon": { "default_value": [ [-35, 65], [-35, -50], [35, -50], [35, 65] ] },
+ "machine_max_feedrate_z": { "default_value": 40 },
+ "machine_max_feedrate_e": { "default_value": 120 },
+ "machine_gcode_flavor": { "default_value": "Marlin" },
+ "machine_start_gcode": { "default_value": "start_print B={material_bed_temperature_layer_0} H={material_print_temperature_layer_0} C={build_volume_temperature}" },
+ "machine_end_gcode": { "default_value": "end_print" },
+ "adhesion_type": { "default_value": "skirt" },
+ "retraction_amount": { "default_value": 0.65 },
+ "skirt_brim_minimal_length": { "default_value": 550 },
+ "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 },
+ "retraction_hop": { "default_value": 0.2 },
+ "retraction_combing": { "value": "'noskin'" },
+ "retraction_combing_max_distance": { "default_value": 10 },
+ "travel_avoid_other_parts": { "default_value": false },
+ "speed_print": { "value": 300, "maximum_value_warning": 1001 },
+ "speed_infill": { "maximum_value_warning": 1001 },
+ "speed_travel": { "value": 300, "maximum_value_warning": 1001 },
+ "speed_travel_layer_0": { "value": "math.ceil(speed_travel * 0.4)", "maximum_value_warning": 1001 },
+ "speed_layer_0": { "value": "math.ceil(speed_print * 0.25)", "maximum_value_warning": 1001 },
+ "speed_wall": { "value": "math.ceil(speed_print * 0.5)", "maximum_value_warning": 1001 },
+ "speed_wall_0": { "value": "math.ceil(speed_print * 0.5)", "maximum_value_warning": 1001 },
+ "speed_wall_x": { "value": "math.ceil(speed_print)", "maximum_value_warning": 1001 },
+ "speed_topbottom": { "value": "math.ceil(speed_print * 0.5)", "maximum_value_warning": 1001 },
+ "speed_roofing": { "value": "math.ceil(speed_print * 0.5)", "maximum_value_warning": 1001 },
+ "speed_slowdown_layers": { "default_value": 4 },
+ "roofing_layer_count": { "value": 1 },
+ "optimize_wall_printing_order": { "default_value": true },
+ "infill_enable_travel_optimization": { "default_value": true },
+ "minimum_polygon_circumference": { "default_value": 0.2 },
+ "wall_overhang_angle": { "default_value": 75 },
+ "wall_overhang_speed_factor": { "default_value": 50 },
+ "bridge_settings_enabled": { "default_value": true },
+ "bridge_wall_coast": { "default_value": 10 },
+ "bridge_fan_speed": { "default_value": 100 },
+ "bridge_fan_speed_2": { "resolve": "max(cool_fan_speed, 50)" },
+ "bridge_fan_speed_3": { "resolve": "max(cool_fan_speed, 20)" },
+ "alternate_extra_perimeter": { "default_value": true },
+ "cool_min_layer_time_fan_speed_max": { "default_value": 20 },
+ "cool_min_layer_time": { "default_value": 15 },
+ "cool_fan_speed_min": { "value": "cool_fan_speed" },
+ "cool_fan_full_at_height": { "value": "resolveOrValue('layer_height_0') + resolveOrValue('layer_height') * max(1, cool_fan_full_layer - 1)" },
+ "cool_fan_full_layer": { "value": 4 },
+ "layer_height_0": { "resolve": "max(0.2, min(extruderValues('layer_height')))" },
+ "line_width": { "value": "machine_nozzle_size * 1.125" },
+ "wall_line_width": { "value": "machine_nozzle_size" },
+ "fill_outline_gaps": { "default_value": true },
+ "meshfix_maximum_resolution": { "default_value": 0.01 },
+ "infill_before_walls": { "default_value": false },
+ "zig_zaggify_infill": { "value": true },
+ "min_infill_area": { "default_value": 5.0 },
+ "acceleration_enabled": { "default_value": false },
+ "acceleration_print": { "default_value": 15000, "maximum_value_warning": 50000 },
+ "acceleration_wall_0": { "value": 15000, "maximum_value_warning": 50000 },
+ "acceleration_wall_x": { "value": 15000, "maximum_value_warning": 50000 },
+ "acceleration_layer_0": { "value": 15000, "maximum_value_warning": 50000 },
+ "acceleration_travel_layer_0": { "value": 15000, "maximum_value_warning": 50000 },
+ "acceleration_roofing": { "value": 15000, "maximum_value_warning": 50000 },
+ "acceleration_topbottom": { "value": 15000, "maximum_value_warning": 50000 },
+ "acceleration_travel": { "value": 20000, "maximum_value_warning": 50000 },
+ "acceleration_skirt_brim": { "value": 15000, "maximum_value_warning": 50000 },
+ "acceleration_print_layer_0": { "value": 15000, "maximum_value_warning": 50000 },
+ "jerk_enabled": { "default_value": false },
+ "jerk_wall_0": { "value": 10 },
+ "jerk_roofing": { "value": 10 }
+ }
+}
diff --git a/resources/definitions/vzbot_custom.def.json b/resources/definitions/vzbot_custom.def.json
new file mode 100644
index 0000000000..537b6c089c
--- /dev/null
+++ b/resources/definitions/vzbot_custom.def.json
@@ -0,0 +1,17 @@
+{
+ "name": "VzBot Custom",
+ "version": 2,
+ "inherits": "vzbot_base",
+ "metadata":
+ {
+ "visible": true,
+ "quality_definition": "vzbot_base"
+ },
+ "overrides":
+ {
+ "machine_name": { "default_value": "VzBot Custom" },
+ "machine_width": { "default_value": 400 },
+ "machine_depth": { "default_value": 400 },
+ "machine_height": { "default_value": 400 }
+ }
+} \ No newline at end of file
diff --git a/resources/definitions/winbo_dragonl4.def.json b/resources/definitions/winbo_dragonl4.def.json
index d365cb2672..86bac9f4e3 100644
--- a/resources/definitions/winbo_dragonl4.def.json
+++ b/resources/definitions/winbo_dragonl4.def.json
@@ -34,6 +34,7 @@
"machine_max_feedrate_x": { "default_value": 300 },
"machine_max_feedrate_y": { "default_value": 300 },
"machine_max_feedrate_z": { "default_value": 40 },
+ "acceleration_enabled": { "value": true },
"machine_acceleration": { "default_value": 2000 },
"gantry_height": { "value": "80" },
"machine_extruder_count": { "default_value": 1 },
diff --git a/resources/definitions/winbo_mini2.def.json b/resources/definitions/winbo_mini2.def.json
index 73c6562edd..4c517a375e 100644
--- a/resources/definitions/winbo_mini2.def.json
+++ b/resources/definitions/winbo_mini2.def.json
@@ -30,6 +30,7 @@
[ -52, 30 ],[ -52, -40 ],[ 13, -40 ],[ 13, 30 ]
]
},
+ "acceleration_enabled": { "value": true },
"machine_gcode_flavor": { "default_value": "Marlin" },
"machine_max_feedrate_x": { "default_value": 250 },
"machine_max_feedrate_y": { "default_value": 200 },
diff --git a/resources/extruders/nps_extruder_0.def.json b/resources/extruders/nps_extruder_0.def.json
new file mode 100644
index 0000000000..48865b1a2e
--- /dev/null
+++ b/resources/extruders/nps_extruder_0.def.json
@@ -0,0 +1,15 @@
+{
+ "version": 2,
+ "name": "Extruder 1",
+ "inherits": "fdmextruder",
+ "metadata": {
+ "machine": "nps",
+ "position": "0"
+ },
+
+ "overrides": {
+ "extruder_nr": { "default_value": 0 },
+ "machine_nozzle_size": { "default_value": 0.4 },
+ "material_diameter": { "default_value": 1.75 }
+ }
+}
diff --git a/resources/extruders/trex2_extruder_0.def.json b/resources/extruders/trex2_extruder_0.def.json
new file mode 100644
index 0000000000..cd5e61530f
--- /dev/null
+++ b/resources/extruders/trex2_extruder_0.def.json
@@ -0,0 +1,25 @@
+{
+ "version": 2,
+ "name": "Left Extruder",
+ "inherits": "fdmextruder",
+ "metadata": {
+ "machine": "vivedino_trex2plus",
+ "position": "0"
+ },
+
+ "overrides": {
+ "extruder_nr": {
+ "default_value": 0,
+ "maximum_value": "3"
+ },
+ "machine_nozzle_offset_x": { "default_value": 0.0 },
+ "machine_nozzle_offset_y": { "default_value": 0.0 },
+ "material_diameter": { "default_value": 1.75 },
+ "machine_extruder_start_code": {
+ "default_value": "G0 X-40"
+ },
+ "machine_extruder_end_code": {
+ "default_value": ""
+ }
+ }
+} \ No newline at end of file
diff --git a/resources/extruders/trex2_extruder_1.def.json b/resources/extruders/trex2_extruder_1.def.json
new file mode 100644
index 0000000000..73ffd7cada
--- /dev/null
+++ b/resources/extruders/trex2_extruder_1.def.json
@@ -0,0 +1,25 @@
+{
+ "version": 2,
+ "name": "Right Extruder",
+ "inherits": "fdmextruder",
+ "metadata": {
+ "machine": "vivedino_trex2plus",
+ "position": "1"
+ },
+
+ "overrides": {
+ "extruder_nr": {
+ "default_value": 1,
+ "maximum_value": "3"
+ },
+ "machine_nozzle_offset_x": { "default_value": 0.0 },
+ "machine_nozzle_offset_y": { "default_value": 0.0 },
+ "material_diameter": { "default_value": 1.75 },
+ "machine_extruder_start_code": {
+ "default_value": "G0 X438.2"
+ },
+ "machine_extruder_end_code": {
+ "default_value": ""
+ }
+ }
+} \ No newline at end of file
diff --git a/resources/extruders/trex_base_extruder_0.def.json b/resources/extruders/trex_base_extruder_0.def.json
new file mode 100644
index 0000000000..93feda7fa8
--- /dev/null
+++ b/resources/extruders/trex_base_extruder_0.def.json
@@ -0,0 +1,16 @@
+{
+ "version": 2,
+ "name": "Extruder 1",
+ "inherits": "fdmextruder",
+ "metadata": {
+ "machine": "vivedino_base",
+ "position": "0"
+ },
+
+ "overrides": {
+ "extruder_nr": { "default_value": 0 },
+ "machine_nozzle_size": { "default_value": 0.4 },
+ "material_diameter": { "default_value": 1.75 }
+
+ }
+}
diff --git a/resources/extruders/trex_extruder_0.def.json b/resources/extruders/trex_extruder_0.def.json
new file mode 100644
index 0000000000..7a3b5bfbdc
--- /dev/null
+++ b/resources/extruders/trex_extruder_0.def.json
@@ -0,0 +1,25 @@
+{
+ "version": 2,
+ "name": "Left Extruder",
+ "inherits": "fdmextruder",
+ "metadata": {
+ "machine": "vivedino_trex3",
+ "position": "0"
+ },
+
+ "overrides": {
+ "extruder_nr": {
+ "default_value": 0,
+ "maximum_value": "3"
+ },
+ "machine_nozzle_offset_x": { "default_value": 0.0 },
+ "machine_nozzle_offset_y": { "default_value": 0.0 },
+ "material_diameter": { "default_value": 1.75 },
+ "machine_extruder_start_code": {
+ "default_value": "M106 P0 S[fan_speed_pwm]"
+ },
+ "machine_extruder_end_code": {
+ "default_value": "M106 P0 S0"
+ }
+ }
+} \ No newline at end of file
diff --git a/resources/extruders/trex_extruder_1.def.json b/resources/extruders/trex_extruder_1.def.json
new file mode 100644
index 0000000000..e0500e98bf
--- /dev/null
+++ b/resources/extruders/trex_extruder_1.def.json
@@ -0,0 +1,25 @@
+{
+ "version": 2,
+ "name": "Right Extruder",
+ "inherits": "fdmextruder",
+ "metadata": {
+ "machine": "vivedino_trex3",
+ "position": "1"
+ },
+
+ "overrides": {
+ "extruder_nr": {
+ "default_value": 1,
+ "maximum_value": "3"
+ },
+ "machine_nozzle_offset_x": { "default_value": 0.0 },
+ "machine_nozzle_offset_y": { "default_value": 0.0 },
+ "material_diameter": { "default_value": 1.75 },
+ "machine_extruder_start_code": {
+ "default_value": "M106 P1 S[fan_speed_pwm]"
+ },
+ "machine_extruder_end_code": {
+ "default_value": "M106 P1 S0"
+ }
+ }
+} \ No newline at end of file
diff --git a/resources/extruders/vzbot_extruder_0.def.json b/resources/extruders/vzbot_extruder_0.def.json
new file mode 100644
index 0000000000..8b1f9abc74
--- /dev/null
+++ b/resources/extruders/vzbot_extruder_0.def.json
@@ -0,0 +1,16 @@
+{
+ "version": 2,
+ "name": "Extruder 1",
+ "inherits": "fdmextruder",
+ "metadata":
+ {
+ "machine": "vzbot_base",
+ "position": "0"
+ },
+
+ "overrides": {
+ "extruder_nr": { "default_value": 0 },
+ "machine_nozzle_size": { "default_value": 0.4 },
+ "material_diameter": { "default_value": 1.75 }
+ }
+}
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 f2095ba055..1a82100882 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
@@ -12,16 +12,12 @@ material = generic_abs
variant = AA 0.4
[values]
+infill_sparse_density = 15
+jerk_print = 30
speed_infill = =speed_print
+speed_layer_0 = 20
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-speed_layer_0 = 20
top_bottom_thickness = 0.8
-infill_sparse_density = 15
-
-jerk_print = 30
-
-
-
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg
index ed17a36b8a..468528e62c 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg
@@ -12,22 +12,13 @@ material = generic_abs
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
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg
index 4ec7a841a5..48dee963d1 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg
@@ -12,22 +12,13 @@ material = generic_abs
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
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
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 b74cd522ac..5ece30afd9 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
@@ -12,17 +12,13 @@ material = generic_cpe_plus
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-
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 1caacdf72f..4afeb44758 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
@@ -12,17 +12,13 @@ material = generic_cpe_plus
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print_Accurate.inst.cfg
index de109c9810..85a2b0f773 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print_Accurate.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print_Accurate.inst.cfg
@@ -12,23 +12,13 @@ material = generic_cpe
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
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-
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 315b26a3b1..88843e549e 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
@@ -12,17 +12,13 @@ material = generic_cpe
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-
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 d4a999d8eb..e0d70d45f2 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
@@ -12,17 +12,13 @@ material = generic_nylon
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-
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 aa371be6f3..e60b654426 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
@@ -12,17 +12,13 @@ material = generic_nylon
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-
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 abd125f483..944362e745 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
@@ -12,17 +12,13 @@ material = generic_pc
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-
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 c8cf2a3bd4..006b3cac4c 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
@@ -12,17 +12,13 @@ material = generic_pc
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-
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 b4bbdddff7..2686ff7e34 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
@@ -12,17 +12,13 @@ material = generic_petg
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-
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 19418812af..d0f84a8755 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
@@ -12,17 +12,13 @@ material = generic_petg
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg
index 3186c6be4e..8ca43ef884 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg
@@ -12,21 +12,12 @@ material = generic_pla
variant = AA 0.4
[values]
+infill_sparse_density = 15
+jerk_print = 30
speed_infill = =speed_print
+speed_layer_0 = 20
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-speed_layer_0 = 20
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_PLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg
index 36ea7c975e..565387bed6 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
@@ -12,16 +12,13 @@ material = generic_pla
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
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 88691ef1d6..d84c7c3a1a 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
@@ -12,16 +12,13 @@ material = generic_pla
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
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 b59ed875b4..3b6a5b6486 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
@@ -11,22 +11,17 @@ quality_type = verydraft
material = generic_pla
variant = AA 0.4
is_experimental = True
-
[values]
-infill_sparse_density = 10
-
-jerk_print = 30
-
acceleration_print = 4000
acceleration_wall = 2000
acceleration_wall_0 = 2000
-
-speed_print = 50
+infill_sparse_density = 10
+jerk_print = 30
speed_infill = =speed_print
+speed_layer_0 = 20
+speed_print = 50
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-speed_layer_0 = 20
-
-top_bottom_thickness = 0.8 \ No newline at end of file
+top_bottom_thickness = 0.8
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg
index 1ca1775990..b2557b3f5e 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg
@@ -12,21 +12,12 @@ material = generic_tough_pla
variant = AA 0.4
[values]
+infill_sparse_density = 15
+jerk_print = 30
speed_infill = =speed_print
+speed_layer_0 = 20
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-speed_layer_0 = 20
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_TPLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg
index 924edf577d..3b43a028b4 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
@@ -12,16 +12,13 @@ material = generic_tough_pla
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
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 b92e07a877..c8a0053010 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
@@ -12,16 +12,13 @@ material = generic_tough_pla
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg
index 21cd1059f0..48fe33a990 100644
--- a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg
+++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg
@@ -11,28 +11,17 @@ quality_type = verydraft
material = generic_tough_pla
variant = AA 0.4
is_experimental = True
-
[values]
-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
acceleration_wall_0 = 2000
-
-speed_print = 50
+infill_sparse_density = 10
+jerk_print = 30
speed_infill = =speed_print
+speed_layer_0 = 20
+speed_print = 50
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-speed_layer_0 = 20
-
-top_bottom_thickness = 0.8 \ No newline at end of file
+top_bottom_thickness = 0.8
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 98ad3af40b..994699e382 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
@@ -12,16 +12,12 @@ material = generic_abs
variant = AA 0.4
[values]
+infill_sparse_density = 15
+jerk_print = 30
speed_infill = =speed_print
+speed_layer_0 = 20
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-speed_layer_0 = 20
top_bottom_thickness = 0.8
-infill_sparse_density = 15
-
-jerk_print = 30
-
-
-
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 8939d670b1..592ca35859 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
@@ -12,17 +12,13 @@ material = generic_abs
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
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 44f76d561f..6143b0d78d 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
@@ -12,17 +12,13 @@ material = generic_abs
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
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 7bf1fc834a..6d729bcea9 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
@@ -12,18 +12,13 @@ material = generic_cpe_plus
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
-
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 a95862c35a..86e7cc0505 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
@@ -12,18 +12,13 @@ material = generic_cpe_plus
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
-
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 bfdd35017c..12902a388c 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
@@ -12,18 +12,13 @@ material = generic_cpe
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
-
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 022fb2b50d..642a8e2b3c 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
@@ -12,18 +12,13 @@ material = generic_cpe
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
-
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 3637040c4c..1725da9733 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
@@ -12,18 +12,13 @@ material = generic_nylon
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
-
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 6cce98ca60..0bba4ccb0f 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
@@ -12,18 +12,13 @@ material = generic_nylon
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
-
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 32e0463447..f3a372c8b2 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
@@ -12,18 +12,13 @@ material = generic_pc
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
-
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 0b7ffb4154..cca4d4af10 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
@@ -12,18 +12,13 @@ material = generic_pc
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
-
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 186281c17c..6b06cb6164 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
@@ -12,18 +12,13 @@ material = generic_petg
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
-
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 545a8b5654..345dc02a8c 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
@@ -12,18 +12,13 @@ material = generic_petg
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
-
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 76d9191fc1..2baf1418a4 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
@@ -12,16 +12,12 @@ material = generic_pla
variant = AA 0.4
[values]
+infill_sparse_density = 15
+jerk_print = 30
speed_infill = =speed_print
+speed_layer_0 = 20
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-speed_layer_0 = 20
top_bottom_thickness = 0.8
-infill_sparse_density = 15
-
-jerk_print = 30
-
-
-
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 ca098b5bfa..aa880fba07 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
@@ -12,17 +12,13 @@ material = generic_pla
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
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 472c0b4359..65b3df86d6 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
@@ -12,17 +12,13 @@ material = generic_pla
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
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 51cfaebe34..97d631d300 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
@@ -11,22 +11,17 @@ quality_type = verydraft
material = generic_pla
variant = AA 0.4
is_experimental = True
-
[values]
-infill_sparse_density = 10
-
-jerk_print = 30
-
acceleration_print = 4000
acceleration_wall = 2000
acceleration_wall_0 = 2000
-
-speed_print = 50
+infill_sparse_density = 10
+jerk_print = 30
speed_infill = =speed_print
+speed_layer_0 = 20
+speed_print = 50
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-speed_layer_0 = 20
-
-top_bottom_thickness = 0.8 \ No newline at end of file
+top_bottom_thickness = 0.8
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 7851ecd793..5c603860e5 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
@@ -12,16 +12,12 @@ material = generic_tough_pla
variant = AA 0.4
[values]
+infill_sparse_density = 15
+jerk_print = 30
speed_infill = =speed_print
+speed_layer_0 = 20
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-speed_layer_0 = 20
top_bottom_thickness = 0.8
-infill_sparse_density = 15
-
-jerk_print = 30
-
-
-
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 2b1b769595..69f421288c 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
@@ -12,17 +12,13 @@ material = generic_tough_pla
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
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 daa327a2f5..079403efb2 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
@@ -12,17 +12,13 @@ material = generic_tough_pla
variant = AA 0.4
[values]
-
jerk_print = 30
-
-speed_print = 30
speed_infill = =speed_print
speed_layer_0 = 20
+speed_print = 30
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness
-
wall_thickness = =line_width * 3
-xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset
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 ec93cc5599..0b2666bf23 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
@@ -11,22 +11,17 @@ quality_type = verydraft
material = generic_tough_pla
variant = AA 0.4
is_experimental = True
-
[values]
-infill_sparse_density = 10
-
-jerk_print = 30
-
acceleration_print = 4000
acceleration_wall = 2000
acceleration_wall_0 = 2000
-
-speed_print = 50
+infill_sparse_density = 10
+jerk_print = 30
speed_infill = =speed_print
+speed_layer_0 = 20
+speed_print = 50
speed_topbottom = =speed_print
speed_wall = =speed_print
speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall
-speed_layer_0 = 20
-
-top_bottom_thickness = 0.8 \ No newline at end of file
+top_bottom_thickness = 0.8
diff --git a/resources/meshes/mingda_magician_max_base.stl b/resources/meshes/mingda_magician_max_base.stl
new file mode 100644
index 0000000000..84bdca2349
--- /dev/null
+++ b/resources/meshes/mingda_magician_max_base.stl
Binary files differ
diff --git a/resources/meshes/mingda_magician_pro_base.stl b/resources/meshes/mingda_magician_pro_base.stl
new file mode 100644
index 0000000000..0fc883bc2b
--- /dev/null
+++ b/resources/meshes/mingda_magician_pro_base.stl
Binary files differ
diff --git a/resources/meshes/mingda_magician_x_base.stl b/resources/meshes/mingda_magician_x_base.stl
new file mode 100644
index 0000000000..b47f0f30fc
--- /dev/null
+++ b/resources/meshes/mingda_magician_x_base.stl
Binary files differ
diff --git a/resources/meshes/npscura.stl b/resources/meshes/npscura.stl
new file mode 100644
index 0000000000..95a6432fd1
--- /dev/null
+++ b/resources/meshes/npscura.stl
Binary files differ
diff --git a/resources/meshes/vivedino_trex.stl b/resources/meshes/vivedino_trex.stl
new file mode 100644
index 0000000000..d3948fb741
--- /dev/null
+++ b/resources/meshes/vivedino_trex.stl
Binary files differ
diff --git a/resources/meshes/vzbot_235_bed.stl b/resources/meshes/vzbot_235_bed.stl
new file mode 100644
index 0000000000..e1c67491d0
--- /dev/null
+++ b/resources/meshes/vzbot_235_bed.stl
Binary files differ
diff --git a/resources/meshes/vzbot_330_bed.stl b/resources/meshes/vzbot_330_bed.stl
new file mode 100644
index 0000000000..bc92a35751
--- /dev/null
+++ b/resources/meshes/vzbot_330_bed.stl
Binary files differ
diff --git a/resources/qml/Dialogs/ChoosePrinterDialog.qml b/resources/qml/Dialogs/ChoosePrinterDialog.qml
new file mode 100644
index 0000000000..b7079fcabd
--- /dev/null
+++ b/resources/qml/Dialogs/ChoosePrinterDialog.qml
@@ -0,0 +1,94 @@
+// Copyright (c) 2022 Ultimaker B.V.
+// Cura is released under the terms of the LGPLv3 or higher.
+
+import QtQuick 2.2
+import QtQuick.Controls 2.9
+import QtQuick.Layouts 2.10
+
+import UM 1.5 as UM
+import Cura 1.0 as Cura
+
+UM.Dialog
+{
+ property var manager
+
+ id: base
+
+ title: catalog.i18nc("@title:window", "Select Printer")
+
+ backgroundColor: UM.Theme.getColor("background_2")
+
+ width: minimumWidth
+ minimumWidth: 550 * screenScaleFactor
+ height: minimumHeight
+ minimumHeight: 550 * screenScaleFactor
+
+ modality: Qt.ApplicationModal
+
+ ScrollView
+ {
+ // Workaround for Windowing bugs in Qt:
+ width: 550 * screenScaleFactor - 3 * UM.Theme.getSize("default_margin").width
+ height: 550 * screenScaleFactor - 3 * UM.Theme.getSize("default_margin").height
+
+ UM.I18nCatalog
+ {
+ id: catalog
+ name: "cura"
+ }
+
+ anchors.fill: parent
+ Column
+ {
+ anchors.fill: parent
+ spacing: UM.Theme.getSize("default_margin").height
+
+ Item
+ {
+ width: parent.width
+ height: childrenRect.height
+
+ UM.Label
+ {
+ anchors.left: parent.left
+ text: catalog.i18nc("@title:label", "Compatible Printers")
+ font: UM.Theme.getFont("large")
+ }
+
+ UM.SimpleButton
+ {
+ anchors.right: parent.right
+
+ width: UM.Theme.getSize("small_button").width
+ height: UM.Theme.getSize("small_button").height
+ iconSource: UM.Theme.getIcon("ArrowDoubleCircleRight")
+ color: UM.Theme.getColor("text_link")
+ hoverColor: UM.Theme.getColor("text_scene_hover")
+
+ onClicked: manager.refresh()
+ }
+ }
+
+ Repeater
+ {
+ id: contents
+
+ model: Cura.CompatibleMachineModel {}
+
+ delegate: Cura.PrintSelectorCard
+ {
+ name: model.name
+ unique_id: model.unique_id
+ extruders: model.extruders
+ manager: base.manager
+ }
+ }
+
+ UM.Label
+ {
+ visible: contents.count < 1
+ text: catalog.i18nc("@description", "No compatible printers, that are currently online, where found.")
+ }
+ }
+ }
+}
diff --git a/resources/qml/ExtruderIcon.qml b/resources/qml/ExtruderIcon.qml
index fb3269ca78..718f1bcd87 100644
--- a/resources/qml/ExtruderIcon.qml
+++ b/resources/qml/ExtruderIcon.qml
@@ -8,16 +8,16 @@ Item
{
id: extruderIconItem
- implicitWidth: UM.Theme.getSize("extruder_icon").width
- implicitHeight: UM.Theme.getSize("extruder_icon").height
-
property bool checked: true
property color materialColor
property alias textColor: extruderNumberText.color
property bool extruderEnabled: true
- property var iconSize
+ property var iconSize: UM.Theme.getSize("extruder_icon").width
property string iconVariant: "medium"
+ implicitWidth: iconSize
+ implicitHeight: iconSize
+
Item
{
opacity: extruderEnabled ? 1 : UM.Theme.getColor("extruder_disabled").a
@@ -27,8 +27,8 @@ Item
UM.ColorImage
{
anchors.fill: parent
- width: mainIcon.width
- height: mainIcon.height
+ width: iconSize
+ height: iconSize
source: UM.Theme.getIcon("ExtruderColor", iconVariant)
color: materialColor
@@ -37,8 +37,8 @@ Item
{
id: mainIcon
anchors.fill: parent
- width: UM.Theme.getSize("extruder_icon").width
- height: UM.Theme.getSize("extruder_icon").height
+ width: iconSize
+ height: iconSize
source: UM.Theme.getIcon("Extruder", iconVariant)
color: extruderNumberText.color
diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml
index 2934edf508..f285bc0c75 100644
--- a/resources/qml/Preferences/GeneralPage.qml
+++ b/resources/qml/Preferences/GeneralPage.qml
@@ -73,6 +73,9 @@ UM.PreferencesPage
var defaultTheme = UM.Preferences.getValue("general/theme")
setDefaultTheme(defaultTheme)
+ UM.Preferences.resetPreference("general/use_tray_icon")
+ trayIconCheckbox.checked = boolCheck(UM.Preferences.getValue("cura/use_tray_icon"))
+
UM.Preferences.resetPreference("cura/single_instance")
singleInstanceCheckbox.checked = boolCheck(UM.Preferences.getValue("cura/single_instance"))
UM.Preferences.resetPreference("cura/single_instance_clear_before_load")
@@ -329,6 +332,23 @@ UM.PreferencesPage
}
}
+ UM.TooltipArea
+ {
+ width: childrenRect.width;
+ height: childrenRect.height;
+
+ text: catalog.i18nc("@info:tooltip", "Show an icon and notifications in the system notification area.")
+
+ UM.CheckBox
+ {
+ id: trayIconCheckbox
+ checked: boolCheck(UM.Preferences.getValue("general/use_tray_icon"))
+ onClicked: UM.Preferences.setValue("general/use_tray_icon", checked)
+
+ text: catalog.i18nc("@option:check", "Add icon to system tray *");
+ }
+ }
+
UM.Label
{
id: languageCaption
@@ -337,6 +357,7 @@ UM.PreferencesPage
text: catalog.i18nc("@label", "*You will need to restart the application for these changes to have effect.")
wrapMode: Text.WordWrap
font.italic: true
+
}
Item
diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml
index c77545bc03..258b45292e 100644
--- a/resources/qml/Preferences/MachinesPage.qml
+++ b/resources/qml/Preferences/MachinesPage.qml
@@ -17,7 +17,7 @@ UM.ManagementPage
title: catalog.i18nc("@title:tab", "Printers")
detailsPlaneCaption: base.currentItem && base.currentItem.name ? base.currentItem.name : ""
- model: Cura.GlobalStacksModel { }
+ model: Cura.GlobalStacksModel { filterAbstractMachines: false }
sectionRole: "discoverySource"
diff --git a/resources/qml/PrinterSelector/PrintSelectorCard.qml b/resources/qml/PrinterSelector/PrintSelectorCard.qml
new file mode 100644
index 0000000000..517a0e164a
--- /dev/null
+++ b/resources/qml/PrinterSelector/PrintSelectorCard.qml
@@ -0,0 +1,143 @@
+// Copyright (c) 2022 Ultimaker B.V.
+// Cura is released under the terms of the LGPLv3 or higher.
+
+import QtQuick 2.2
+import QtQuick.Controls 2.9
+import QtQuick.Layouts 2.10
+
+import UM 1.5 as UM
+import Cura 1.0 as Cura
+
+Rectangle
+{
+ property alias name: printerTitle.text
+ property string unique_id
+ property var extruders
+ property var manager
+
+ width: parent.width
+ height: childrenRect.height + 2 * UM.Theme.getSize("default_margin").height
+
+ color: UM.Theme.getColor("background_1")
+ border.color: UM.Theme.getColor("border_main")
+ border.width: UM.Theme.getSize("default_lining").width
+
+ RowLayout
+ {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.margins: UM.Theme.getSize("default_margin").width
+
+ Cura.IconWithText
+ {
+ id: printerTitle
+
+ Layout.preferredWidth: parent.width / 3
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignTop
+ Layout.fillHeight: false
+
+ source: UM.Theme.getIcon("Printer")
+ spacing: UM.Theme.getSize("thin_margin").width
+ iconSize: UM.Theme.getSize("medium_button_icon").width
+ font: UM.Theme.getFont("medium_bold")
+ }
+
+ ColumnLayout
+ {
+ id: extruderInformation
+ Layout.fillWidth: true
+ Layout.preferredWidth: parent.width / 2
+ Layout.alignment: Qt.AlignTop
+ spacing: UM.Theme.getSize("default_margin").width
+
+ Repeater
+ {
+ model: extruders
+
+ Item
+ {
+ height: childrenRect.height
+
+ Cura.ExtruderIcon
+ {
+ id: extruderIcon
+ anchors.top: parent.top
+ anchors.left: parent.left
+ materialColor: modelData.materials.length == 1 ? modelData.materials[0].hexcolor : "white"
+ iconSize: UM.Theme.getSize("medium_button_icon").width
+ }
+
+ UM.Label
+ {
+ id: extruderCore
+ anchors.verticalCenter: extruderIcon.verticalCenter
+ anchors.left: extruderIcon.right
+ anchors.leftMargin: UM.Theme.getSize("default_margin").width
+ text: modelData.core
+ font: UM.Theme.getFont("default_bold")
+ }
+
+ UM.Label
+ {
+ id: singleMaterialText
+ anchors.left: extruderCore.right
+ anchors.verticalCenter: extruderCore.verticalCenter
+ anchors.leftMargin: UM.Theme.getSize("default_margin").width
+ text: modelData.materials.length == 1 ? `${modelData.materials[0].brand} ${modelData.materials[0].name}` : ""
+ visible: modelData.materials.length == 1
+ }
+
+ ColumnLayout
+ {
+ id: multiMaterialText
+ anchors.top: extruderCore.bottom
+ anchors.left: extruderCore.left
+ anchors.topMargin: UM.Theme.getSize("narrow_margin").height
+ visible: modelData.materials.length > 1
+ Repeater
+ {
+ model: modelData.materials
+ UM.Label
+ {
+ text: `${modelData.brand} ${modelData.name}`
+ }
+ }
+ }
+ }
+ }
+ }
+
+ Button
+ {
+ id: printButton
+
+ implicitWidth: UM.Theme.getSize("medium_button").width
+ implicitHeight: implicitWidth
+ Layout.alignment: Qt.AlignTop
+ padding: 0
+
+ background: Rectangle
+ {
+ border.width: UM.Theme.getSize("default_lining").width
+ border.color: UM.Theme.getColor("border_accent_1")
+ color: printButton.hovered ? UM.Theme.getColor("toolbar_button_hover"): UM.Theme.getColor("background_1")
+ }
+
+ contentItem: Item
+ {
+ UM.ColorImage
+ {
+ anchors.centerIn: parent
+ source: UM.Theme.getIcon("Printer")
+ color: UM.Theme.getColor("border_accent_1")
+ width: UM.Theme.getSize("small_button_icon").width
+ height: width
+ }
+ }
+
+ onClicked: manager.printerSelected(unique_id)
+ }
+ }
+}
diff --git a/resources/qml/qmldir b/resources/qml/qmldir
index 6ec3ca91c8..d5184f1d8c 100644
--- a/resources/qml/qmldir
+++ b/resources/qml/qmldir
@@ -17,6 +17,7 @@ PrinterTypeLabel 1.0 PrinterTypeLabel.qml
ViewsSelector 1.0 ViewsSelector.qml
SettingView 1.0 SettingView.qml
ProfileMenu 1.0 ProfileMenu.qml
+PrintSelectorCard 1.0 PrintSelectorCard.qml
# Cura/WelcomePages
diff --git a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg
index 58141d7ac9..3e8e09032d 100644
--- a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg
+++ b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg
@@ -11,7 +11,6 @@ weight = 0
material = generic_pla
[values]
-layer_height = 0.2
wall_thickness = 1.05
top_bottom_thickness = 0.8
infill_sparse_density = 20
diff --git a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg
index 4051885819..808ec25a37 100644
--- a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg
+++ b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg
@@ -11,7 +11,6 @@ weight = 1
material = generic_pla
[values]
-layer_height = 0.1
wall_thickness = 1.05
top_bottom_thickness = 0.8
infill_sparse_density = 20
diff --git a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg
index d76eac4014..526493b90b 100644
--- a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg
+++ b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg
@@ -11,7 +11,6 @@ weight = 0
material = generic_pla
[values]
-layer_height = 0.2
wall_thickness = 1.05
top_bottom_thickness = 0.8
infill_sparse_density = 20
diff --git a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg
index ef6ec00ede..f582449a8e 100644
--- a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg
+++ b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg
@@ -11,7 +11,6 @@ weight = 0
material = generic_pla
[values]
-layer_height = 0.2
wall_thickness = 1.05
top_bottom_thickness = 0.8
infill_sparse_density = 20
diff --git a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg
index 00c5a67cf9..08d86375c9 100644
--- a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg
+++ b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg
@@ -11,7 +11,6 @@ weight = 1
material = generic_pla
[values]
-layer_height = 0.1
wall_thickness = 1.05
top_bottom_thickness = 0.8
infill_sparse_density = 20
diff --git a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg
index 1934b4af25..6bb5667a30 100644
--- a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg
+++ b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg
@@ -11,7 +11,6 @@ weight = 0
material = generic_pla
[values]
-layer_height = 0.2
wall_thickness = 1.05
top_bottom_thickness = 0.8
infill_sparse_density = 20
diff --git a/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fast.inst.cfg
index 63f9920bf3..1073729905 100644
--- a/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fast.inst.cfg
+++ b/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fast.inst.cfg
@@ -11,7 +11,6 @@ weight = -2
material = chromatik_pla
[values]
-layer_height = 0.2
line_width = =machine_nozzle_size * 0.875
material_print_temperature = =default_material_print_temperature + 10
diff --git a/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fine.inst.cfg
index c9828cca5a..e3a5c6eac9 100644
--- a/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fine.inst.cfg
+++ b/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_fine.inst.cfg
@@ -11,7 +11,6 @@ weight = 0
material = chromatik_pla
[values]
-layer_height = 0.1
line_width = =machine_nozzle_size * 0.875
speed_print = 35
diff --git a/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_standard.inst.cfg
index 1ac89bfcb6..e1f8934019 100644
--- a/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_standard.inst.cfg
+++ b/resources/quality/dagoma/dagoma_discoeasy200_bicolor_pla_standard.inst.cfg
@@ -11,7 +11,6 @@ weight = -1
material = chromatik_pla
[values]
-layer_height = 0.15
line_width = =machine_nozzle_size * 0.875
material_print_temperature = =default_material_print_temperature + 5
diff --git a/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg
index f739b02303..f8635d2cc7 100644
--- a/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg
+++ b/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg
@@ -11,7 +11,6 @@ weight = -2
material = chromatik_pla
[values]
-layer_height = 0.2
line_width = =machine_nozzle_size * 0.875
material_print_temperature = =default_material_print_temperature + 10
diff --git a/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg
index 3b25824cbc..6c0597409c 100644
--- a/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg
+++ b/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg
@@ -11,7 +11,6 @@ weight = 0
material = chromatik_pla
[values]
-layer_height = 0.1
line_width = =machine_nozzle_size * 0.875
speed_print = 35
diff --git a/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg
index 913af36eb3..5254504da5 100644
--- a/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg
+++ b/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg
@@ -11,7 +11,6 @@ weight = -1
material = chromatik_pla
[values]
-layer_height = 0.15
line_width = =machine_nozzle_size * 0.875
material_print_temperature = =default_material_print_temperature + 5
diff --git a/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fast.inst.cfg
index 87c089438f..5e4467e5ed 100644
--- a/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fast.inst.cfg
+++ b/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fast.inst.cfg
@@ -11,7 +11,6 @@ weight = -2
material = chromatik_pla
[values]
-layer_height = 0.2
line_width = =machine_nozzle_size * 0.875
material_print_temperature = =default_material_print_temperature + 10
diff --git a/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fine.inst.cfg
index e927d2addf..d5d21af6e2 100644
--- a/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fine.inst.cfg
+++ b/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_fine.inst.cfg
@@ -11,7 +11,6 @@ weight = 0
material = chromatik_pla
[values]
-layer_height = 0.1
line_width = =machine_nozzle_size * 0.875
speed_print = 35
diff --git a/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_standard.inst.cfg
index ccbaa8f506..4163399ccc 100644
--- a/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_standard.inst.cfg
+++ b/resources/quality/dagoma/dagoma_discoultimate_bicolor_pla_standard.inst.cfg
@@ -11,7 +11,6 @@ weight = -1
material = chromatik_pla
[values]
-layer_height = 0.15
line_width = =machine_nozzle_size * 0.875
material_print_temperature = =default_material_print_temperature + 5
diff --git a/resources/quality/dagoma/dagoma_discoultimate_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_discoultimate_pla_fast.inst.cfg
index 290d4be38d..90336926f8 100644
--- a/resources/quality/dagoma/dagoma_discoultimate_pla_fast.inst.cfg
+++ b/resources/quality/dagoma/dagoma_discoultimate_pla_fast.inst.cfg
@@ -11,7 +11,6 @@ weight = -2
material = chromatik_pla
[values]
-layer_height = 0.2
line_width = =machine_nozzle_size * 0.875
material_print_temperature = =default_material_print_temperature + 10
diff --git a/resources/quality/dagoma/dagoma_discoultimate_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_discoultimate_pla_fine.inst.cfg
index 3c0d4a70ca..4b70708d41 100644
--- a/resources/quality/dagoma/dagoma_discoultimate_pla_fine.inst.cfg
+++ b/resources/quality/dagoma/dagoma_discoultimate_pla_fine.inst.cfg
@@ -11,7 +11,6 @@ weight = 0
material = chromatik_pla
[values]
-layer_height = 0.1
line_width = =machine_nozzle_size * 0.875
speed_print = 35
diff --git a/resources/quality/dagoma/dagoma_discoultimate_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_discoultimate_pla_standard.inst.cfg
index d7c8fa3360..61b8bb8d2d 100644
--- a/resources/quality/dagoma/dagoma_discoultimate_pla_standard.inst.cfg
+++ b/resources/quality/dagoma/dagoma_discoultimate_pla_standard.inst.cfg
@@ -11,7 +11,6 @@ weight = -1
material = chromatik_pla
[values]
-layer_height = 0.15
line_width = =machine_nozzle_size * 0.875
material_print_temperature = =default_material_print_temperature + 5
diff --git a/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg
index be852a2446..3fc2e53381 100644
--- a/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg
+++ b/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg
@@ -11,7 +11,6 @@ weight = -2
material = chromatik_pla
[values]
-layer_height = 0.2
line_width = =machine_nozzle_size * 0.875
material_print_temperature = =default_material_print_temperature + 10
diff --git a/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg
index cf7f6f6545..ee7fec9712 100644
--- a/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg
+++ b/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg
@@ -11,7 +11,6 @@ weight = 0
material = chromatik_pla
[values]
-layer_height = 0.1
line_width = =machine_nozzle_size * 0.875
speed_print = 30
diff --git a/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg
index 0ad63679ec..6d5890a74c 100644
--- a/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg
+++ b/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg
@@ -11,7 +11,6 @@ weight = -1
material = chromatik_pla
[values]
-layer_height = 0.15
line_width = =machine_nozzle_size * 0.875
material_print_temperature = =default_material_print_temperature + 5
diff --git a/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg
index 6d08b2a27e..d1b723fe0a 100644
--- a/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg
+++ b/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg
@@ -11,7 +11,6 @@ weight = -2
material = chromatik_pla
[values]
-layer_height = 0.2
line_width = =machine_nozzle_size * 0.875
material_print_temperature = =default_material_print_temperature + 10
diff --git a/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg
index 96d0a51d95..a57a833f5c 100644
--- a/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg
+++ b/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg
@@ -11,7 +11,6 @@ weight = 0
material = chromatik_pla
[values]
-layer_height = 0.1
line_width = =machine_nozzle_size * 0.875
speed_print = 30
diff --git a/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg
index f24ae61f71..c63ec93a63 100644
--- a/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg
+++ b/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg
@@ -11,7 +11,6 @@ weight = -1
material = chromatik_pla
[values]
-layer_height = 0.15
line_width = =machine_nozzle_size * 0.875
material_print_temperature = =default_material_print_temperature + 5
diff --git a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg
index aa36a94cbd..641a52be30 100644
--- a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg
+++ b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg
@@ -14,8 +14,6 @@ variant = Lite 0.4 mm
[values]
adhesion_type = raft
speed_print = 80
-layer_height = 0.2
-layer_height_0 = 0.2
cool_fan_enabled = False
cool_fan_full_at_height = 0.4
cool_fan_speed = 50
diff --git a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg
index 8afdd25424..a4e802f37a 100644
--- a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg
+++ b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg
@@ -14,8 +14,6 @@ variant = Lite 0.4 mm
[values]
adhesion_type = raft
speed_print = 45
-layer_height = 0.1
-layer_height_0 = 0.1
cool_fan_enabled = False
cool_fan_full_at_height = 0.2
cool_fan_speed = 50
diff --git a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg
index 5b4501657f..99f8ec4e56 100644
--- a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg
+++ b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg
@@ -14,8 +14,6 @@ variant = Lite 0.4 mm
[values]
adhesion_type = raft
speed_print = 60
-layer_height = 0.15
-layer_height_0 = 0.15
cool_fan_enabled = False
cool_fan_full_at_height = 0.3
cool_fan_speed = 50
diff --git a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg
index a2f97e6fdc..9a61677c9d 100644
--- a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg
+++ b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg
@@ -23,8 +23,6 @@ cool_min_layer_time = 5
cool_min_speed = 0
infill_overlap = 15
infill_sparse_density = 24
-layer_height = 0.20
-layer_height_0 = 0.15
line_width = =machine_nozzle_size
material_flow = 100
raft_airgap = 0.22
diff --git a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg
index 6d8ebac406..1d1eedf3f4 100644
--- a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg
+++ b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg
@@ -23,8 +23,6 @@ cool_min_layer_time = 5
cool_min_speed = 0
infill_overlap = 15
infill_sparse_density = 24
-layer_height = 0.10
-layer_height_0 = 0.10
line_width = =machine_nozzle_size
material_flow = 100
raft_airgap = 0.22
diff --git a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg
index b29dd370f5..4920f1750f 100644
--- a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg
+++ b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg
@@ -23,8 +23,6 @@ cool_min_layer_time = 5
cool_min_speed = 0
infill_overlap = 15
infill_sparse_density = 24
-layer_height = 0.15
-layer_height_0 = 0.10
line_width = =machine_nozzle_size
material_flow = 100
raft_airgap = 0.22
diff --git a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg
index 0df61d9b21..5247ca4719 100644
--- a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg
+++ b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg
@@ -14,8 +14,6 @@ variant = Lite 0.4 mm
[values]
adhesion_type = skirt
speed_print = 80
-layer_height = 0.2
-layer_height_0 = 0.2
cool_fan_enabled = True
cool_fan_full_at_height = 0.4
cool_fan_speed = 100
diff --git a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg
index e20a86e503..20a2340870 100644
--- a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg
+++ b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg
@@ -14,8 +14,6 @@ variant = Lite 0.4 mm
[values]
adhesion_type = skirt
speed_print = 45
-layer_height = 0.1
-layer_height_0 = 0.1
cool_fan_enabled = True
cool_fan_full_at_height = 0.2
cool_fan_speed = 100
diff --git a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg
index 70cb0d7f67..ea267e88ac 100644
--- a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg
+++ b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg
@@ -14,8 +14,6 @@ variant = Lite 0.4 mm
[values]
adhesion_type = skirt
speed_print = 60
-layer_height = 0.15
-layer_height_0 = 0.15
cool_fan_enabled = True
cool_fan_full_at_height = 0.3
cool_fan_speed = 100
diff --git a/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg
index cdd814e02d..ddad87e2d1 100644
--- a/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg
+++ b/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg
@@ -14,8 +14,6 @@ weight = -1
[values]
adhesion_type = skirt
speed_print = 80
-layer_height = 0.2
-layer_height_0 = 0.2
cool_fan_enabled = True
cool_fan_full_at_height = 0.4
cool_fan_speed = 100
diff --git a/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg
index 1f287605ee..5db8f1172e 100644
--- a/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg
+++ b/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg
@@ -13,8 +13,6 @@ weight = 1
[values]
adhesion_type = skirt
-layer_height = 0.1
-layer_height_0 = 0.1
cool_fan_enabled = True
cool_fan_full_at_height = 0.2
cool_fan_speed = 100
diff --git a/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg
index f146a41ef2..3f09c8ea16 100644
--- a/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg
+++ b/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg
@@ -14,8 +14,6 @@ weight = 0
[values]
adhesion_type = skirt
speed_print = 80
-layer_height = 0.15
-layer_height_0 = 0.15
cool_fan_enabled = True
cool_fan_full_at_height = 0.3
cool_fan_speed = 100
diff --git a/resources/quality/fabxpro/fabxpro_abs_draft.inst.cfg b/resources/quality/fabxpro/fabxpro_abs_draft.inst.cfg
index b944d37e6d..cf71e68d00 100644
--- a/resources/quality/fabxpro/fabxpro_abs_draft.inst.cfg
+++ b/resources/quality/fabxpro/fabxpro_abs_draft.inst.cfg
@@ -11,7 +11,6 @@ weight = -2
material = redd_abs
global_quality = True
-
[values]
layer_height = 0.3
layer_height_0 = 0.35
diff --git a/resources/quality/mingda/ABS/mingda_0.2_ABS_super.inst.cfg b/resources/quality/mingda/ABS/mingda_0.2_ABS_super.inst.cfg
index f1f6748183..a290d894e0 100644
--- a/resources/quality/mingda/ABS/mingda_0.2_ABS_super.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.2_ABS_super.inst.cfg
@@ -12,3 +12,5 @@ variant = 0.2mm Nozzle
[values]
wall_thickness = =line_width*8
+
+raft_airgap = 0.1
diff --git a/resources/quality/mingda/ABS/mingda_0.2_ABS_ultra.inst.cfg b/resources/quality/mingda/ABS/mingda_0.2_ABS_ultra.inst.cfg
index e86ddc6a3c..7b4f45bbb9 100644
--- a/resources/quality/mingda/ABS/mingda_0.2_ABS_ultra.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.2_ABS_ultra.inst.cfg
@@ -12,3 +12,5 @@ variant = 0.2mm Nozzle
[values]
wall_thickness = =line_width*8
+
+raft_airgap = 0.1
diff --git a/resources/quality/mingda/ABS/mingda_0.3_ABS_adaptive.inst.cfg b/resources/quality/mingda/ABS/mingda_0.3_ABS_adaptive.inst.cfg
index 98d763841f..aea32319cd 100644
--- a/resources/quality/mingda/ABS/mingda_0.3_ABS_adaptive.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.3_ABS_adaptive.inst.cfg
@@ -12,3 +12,5 @@ variant = 0.3mm Nozzle
[values]
wall_thickness = =line_width*4
+
+raft_airgap = 0.1
diff --git a/resources/quality/mingda/ABS/mingda_0.3_ABS_low.inst.cfg b/resources/quality/mingda/ABS/mingda_0.3_ABS_low.inst.cfg
index 5386760786..dcc0c48812 100644
--- a/resources/quality/mingda/ABS/mingda_0.3_ABS_low.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.3_ABS_low.inst.cfg
@@ -12,3 +12,7 @@ variant = 0.3mm Nozzle
[values]
wall_thickness = =line_width*4
+
+raft_airgap = 0.1
+raft_interface_thickness = 0.2
+raft_surface_thickness = 0.2
diff --git a/resources/quality/mingda/ABS/mingda_0.3_ABS_standard.inst.cfg b/resources/quality/mingda/ABS/mingda_0.3_ABS_standard.inst.cfg
index b9d05ce302..687a605422 100644
--- a/resources/quality/mingda/ABS/mingda_0.3_ABS_standard.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.3_ABS_standard.inst.cfg
@@ -12,3 +12,6 @@ variant = 0.3mm Nozzle
[values]
wall_thickness = =line_width*4
+
+raft_airgap = 0.1
+raft_interface_thickness = =round(layer_height, 2)
diff --git a/resources/quality/mingda/ABS/mingda_0.3_ABS_super.inst.cfg b/resources/quality/mingda/ABS/mingda_0.3_ABS_super.inst.cfg
index 1473d22be8..c67c5e9ea6 100644
--- a/resources/quality/mingda/ABS/mingda_0.3_ABS_super.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.3_ABS_super.inst.cfg
@@ -12,3 +12,5 @@ variant = 0.3mm Nozzle
[values]
wall_thickness = =line_width*4
+
+raft_airgap = 0.1
diff --git a/resources/quality/mingda/ABS/mingda_0.4_ABS_adaptive.inst.cfg b/resources/quality/mingda/ABS/mingda_0.4_ABS_adaptive.inst.cfg
index ace730f1dc..cd3ba80866 100644
--- a/resources/quality/mingda/ABS/mingda_0.4_ABS_adaptive.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.4_ABS_adaptive.inst.cfg
@@ -12,3 +12,5 @@ variant = 0.4mm Nozzle
[values]
wall_thickness = =line_width*4
+
+raft_airgap = 0.1
diff --git a/resources/quality/mingda/ABS/mingda_0.4_ABS_low.inst.cfg b/resources/quality/mingda/ABS/mingda_0.4_ABS_low.inst.cfg
index 424825d1b4..2f335102fe 100644
--- a/resources/quality/mingda/ABS/mingda_0.4_ABS_low.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.4_ABS_low.inst.cfg
@@ -12,3 +12,6 @@ variant = 0.4mm Nozzle
[values]
wall_thickness = =line_width*4
+
+raft_airgap = 0.1
+raft_interface_thickness = 0.3
diff --git a/resources/quality/mingda/ABS/mingda_0.4_ABS_standard.inst.cfg b/resources/quality/mingda/ABS/mingda_0.4_ABS_standard.inst.cfg
index 69bc7a850e..fcf26711f7 100644
--- a/resources/quality/mingda/ABS/mingda_0.4_ABS_standard.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.4_ABS_standard.inst.cfg
@@ -12,3 +12,5 @@ variant = 0.4mm Nozzle
[values]
wall_thickness = =line_width*4
+
+raft_airgap = 0.1
diff --git a/resources/quality/mingda/ABS/mingda_0.4_ABS_super.inst.cfg b/resources/quality/mingda/ABS/mingda_0.4_ABS_super.inst.cfg
index 102f30a9a2..f18e33b7bd 100644
--- a/resources/quality/mingda/ABS/mingda_0.4_ABS_super.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.4_ABS_super.inst.cfg
@@ -12,3 +12,5 @@ variant = 0.4mm Nozzle
[values]
wall_thickness = =line_width*4
+
+raft_airgap = 0.1
diff --git a/resources/quality/mingda/ABS/mingda_0.5_ABS_adaptive.inst.cfg b/resources/quality/mingda/ABS/mingda_0.5_ABS_adaptive.inst.cfg
index 361cc1b51d..71f24f53dd 100644
--- a/resources/quality/mingda/ABS/mingda_0.5_ABS_adaptive.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.5_ABS_adaptive.inst.cfg
@@ -12,3 +12,5 @@ variant = 0.5mm Nozzle
[values]
wall_thickness = =line_width*4
+
+raft_airgap = 0.1
diff --git a/resources/quality/mingda/ABS/mingda_0.5_ABS_low.inst.cfg b/resources/quality/mingda/ABS/mingda_0.5_ABS_low.inst.cfg
index d56abbea8a..8a7f59c5d3 100644
--- a/resources/quality/mingda/ABS/mingda_0.5_ABS_low.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.5_ABS_low.inst.cfg
@@ -12,3 +12,5 @@ variant = 0.5mm Nozzle
[values]
wall_thickness = =line_width*4
+
+raft_airgap = 0.1
diff --git a/resources/quality/mingda/ABS/mingda_0.5_ABS_standard.inst.cfg b/resources/quality/mingda/ABS/mingda_0.5_ABS_standard.inst.cfg
index 89c414d44f..7a9bc4b647 100644
--- a/resources/quality/mingda/ABS/mingda_0.5_ABS_standard.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.5_ABS_standard.inst.cfg
@@ -12,3 +12,5 @@ variant = 0.5mm Nozzle
[values]
wall_thickness = =line_width*4
+
+raft_airgap = 0.1
diff --git a/resources/quality/mingda/ABS/mingda_0.5_ABS_super.inst.cfg b/resources/quality/mingda/ABS/mingda_0.5_ABS_super.inst.cfg
index c66b2bda76..4604328d8c 100644
--- a/resources/quality/mingda/ABS/mingda_0.5_ABS_super.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.5_ABS_super.inst.cfg
@@ -12,3 +12,5 @@ variant = 0.5mm Nozzle
[values]
wall_thickness = =line_width*4
+
+raft_airgap = 0.1
diff --git a/resources/quality/mingda/ABS/mingda_0.6_ABS_standard.inst.cfg b/resources/quality/mingda/ABS/mingda_0.6_ABS_standard.inst.cfg
index 74f22e5a69..6dad91e842 100644
--- a/resources/quality/mingda/ABS/mingda_0.6_ABS_standard.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.6_ABS_standard.inst.cfg
@@ -12,3 +12,5 @@ variant = 0.6mm Nozzle
[values]
wall_thickness = =line_width*3
+
+raft_airgap = 0.1
diff --git a/resources/quality/mingda/ABS/mingda_0.8_ABS_draft.inst.cfg b/resources/quality/mingda/ABS/mingda_0.8_ABS_draft.inst.cfg
index 27a89a4b0b..4c2df1ef24 100644
--- a/resources/quality/mingda/ABS/mingda_0.8_ABS_draft.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_0.8_ABS_draft.inst.cfg
@@ -12,3 +12,5 @@ variant = 0.8mm Nozzle
[values]
wall_thickness = =line_width*3
+
+raft_airgap = 0.1
diff --git a/resources/quality/mingda/ABS/mingda_1.0_ABS_draft.inst.cfg b/resources/quality/mingda/ABS/mingda_1.0_ABS_draft.inst.cfg
index cefd94a01d..5c38398af0 100644
--- a/resources/quality/mingda/ABS/mingda_1.0_ABS_draft.inst.cfg
+++ b/resources/quality/mingda/ABS/mingda_1.0_ABS_draft.inst.cfg
@@ -12,3 +12,5 @@ variant = 1.0mm Nozzle
[values]
wall_thickness = =line_width*3
+
+raft_airgap = 0.1
diff --git a/resources/quality/mingda/PETG/mingda_0.3_PETG_low.inst.cfg b/resources/quality/mingda/PETG/mingda_0.3_PETG_low.inst.cfg
index 9936912b26..a6f2784f8d 100644
--- a/resources/quality/mingda/PETG/mingda_0.3_PETG_low.inst.cfg
+++ b/resources/quality/mingda/PETG/mingda_0.3_PETG_low.inst.cfg
@@ -13,3 +13,6 @@ variant = 0.3mm Nozzle
[values]
speed_layer_0 = 15
wall_thickness = =line_width*4
+
+raft_interface_thickness = 0.2
+raft_surface_thickness = 0.2
diff --git a/resources/quality/mingda/PETG/mingda_0.3_PETG_standard.inst.cfg b/resources/quality/mingda/PETG/mingda_0.3_PETG_standard.inst.cfg
index e7731f6eb2..f57e3db198 100644
--- a/resources/quality/mingda/PETG/mingda_0.3_PETG_standard.inst.cfg
+++ b/resources/quality/mingda/PETG/mingda_0.3_PETG_standard.inst.cfg
@@ -13,3 +13,5 @@ variant = 0.3mm Nozzle
[values]
speed_layer_0 = 15
wall_thickness = =line_width*4
+
+raft_interface_thickness = =round(layer_height, 2)
diff --git a/resources/quality/mingda/PETG/mingda_0.4_PETG_low.inst.cfg b/resources/quality/mingda/PETG/mingda_0.4_PETG_low.inst.cfg
index b5410324bc..e2b1d88690 100644
--- a/resources/quality/mingda/PETG/mingda_0.4_PETG_low.inst.cfg
+++ b/resources/quality/mingda/PETG/mingda_0.4_PETG_low.inst.cfg
@@ -13,3 +13,5 @@ variant = 0.4mm Nozzle
[values]
speed_layer_0 = 15
wall_thickness = =line_width*4
+
+raft_interface_thickness = 0.3
diff --git a/resources/quality/mingda/PLA/mingda_0.3_PLA_low.inst.cfg b/resources/quality/mingda/PLA/mingda_0.3_PLA_low.inst.cfg
index 80d5b97081..73143d9c9d 100644
--- a/resources/quality/mingda/PLA/mingda_0.3_PLA_low.inst.cfg
+++ b/resources/quality/mingda/PLA/mingda_0.3_PLA_low.inst.cfg
@@ -11,3 +11,5 @@ material = generic_pla
variant = 0.3mm Nozzle
[values]
+raft_interface_thickness = 0.2
+raft_surface_thickness = 0.2
diff --git a/resources/quality/mingda/PLA/mingda_0.3_PLA_standard.inst.cfg b/resources/quality/mingda/PLA/mingda_0.3_PLA_standard.inst.cfg
index 03fffbabf0..0da6cf8201 100644
--- a/resources/quality/mingda/PLA/mingda_0.3_PLA_standard.inst.cfg
+++ b/resources/quality/mingda/PLA/mingda_0.3_PLA_standard.inst.cfg
@@ -11,3 +11,4 @@ material = generic_pla
variant = 0.3mm Nozzle
[values]
+raft_interface_thickness = =round(layer_height, 2)
diff --git a/resources/quality/mingda/PLA/mingda_0.4_PLA_low.inst.cfg b/resources/quality/mingda/PLA/mingda_0.4_PLA_low.inst.cfg
index 4405c5ae6c..c8970c8d0c 100644
--- a/resources/quality/mingda/PLA/mingda_0.4_PLA_low.inst.cfg
+++ b/resources/quality/mingda/PLA/mingda_0.4_PLA_low.inst.cfg
@@ -11,3 +11,4 @@ material = generic_pla
variant = 0.4mm Nozzle
[values]
+raft_interface_thickness = 0.3
diff --git a/resources/quality/mingda/TPU/mingda_0.3_TPU_standard.inst.cfg b/resources/quality/mingda/TPU/mingda_0.3_TPU_standard.inst.cfg
index 64f66a9fca..b2a607705f 100644
--- a/resources/quality/mingda/TPU/mingda_0.3_TPU_standard.inst.cfg
+++ b/resources/quality/mingda/TPU/mingda_0.3_TPU_standard.inst.cfg
@@ -11,3 +11,4 @@ material = generic_tpu
variant = 0.3mm Nozzle
[values]
+raft_interface_thickness = =round(layer_height, 2)
diff --git a/resources/quality/mingda/mingda_global_adaptive.inst.cfg b/resources/quality/mingda/mingda_global_adaptive.inst.cfg
index a900091816..7fcfaa3c96 100644
--- a/resources/quality/mingda/mingda_global_adaptive.inst.cfg
+++ b/resources/quality/mingda/mingda_global_adaptive.inst.cfg
@@ -17,3 +17,17 @@ top_bottom_thickness = =layer_height_0+layer_height*4
wall_thickness = =line_width*3
support_interface_height = =layer_height*6
adaptive_layer_height_enabled = true
+
+infill_line_width = =round(line_width * 0.4 / 0.35, 2)
+infill_sparse_density = 20
+
+speed_print = 60
+speed_layer_0 = 10
+speed_topbottom = =math.ceil(speed_print * 30 / 60)
+speed_wall = =math.ceil(speed_print * 40 / 60)
+speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
+
+jerk_travel = 50
+raft_airgap = 0.18
+raft_base_thickness = =round(layer_height*1.5, 2)
+raft_interface_thickness = =round(layer_height*1.2, 2)
diff --git a/resources/quality/mingda/mingda_global_draft.inst.cfg b/resources/quality/mingda/mingda_global_draft.inst.cfg
index 4af8021880..bb6ae41101 100644
--- a/resources/quality/mingda/mingda_global_draft.inst.cfg
+++ b/resources/quality/mingda/mingda_global_draft.inst.cfg
@@ -16,3 +16,21 @@ layer_height_0 = 0.32
top_bottom_thickness = =layer_height_0+layer_height*3
wall_thickness = =line_width*2
support_interface_height = =layer_height*4
+
+jerk_travel = 20
+acceleration_print = 2000
+acceleration_wall = 1500
+acceleration_wall_0 = 1000
+acceleration_topbottom = 1000
+acceleration_travel = 2000
+
+infill_sparse_density = 10
+infill_line_width = =line_width*1
+
+speed_print = 50
+speed_wall = 50
+
+raft_airgap = 0.18
+raft_base_thickness = =round(layer_height*1.5, 2)
+raft_interface_thickness = =round(layer_height*1.2, 2)
+
diff --git a/resources/quality/mingda/mingda_global_low.inst.cfg b/resources/quality/mingda/mingda_global_low.inst.cfg
index f6483ef64f..080e5da12b 100644
--- a/resources/quality/mingda/mingda_global_low.inst.cfg
+++ b/resources/quality/mingda/mingda_global_low.inst.cfg
@@ -16,3 +16,20 @@ layer_height_0 = 0.28
top_bottom_thickness = =layer_height_0+layer_height*3
wall_thickness = =line_width*2
support_interface_height = =layer_height*4
+
+jerk_travel = 20
+acceleration_print = 2000
+acceleration_wall = 1500
+acceleration_wall_0 = 1000
+acceleration_topbottom = 1000
+acceleration_travel = 2000
+
+infill_sparse_density = 10
+infill_line_width = =line_width*1
+
+speed_print = 50
+speed_wall = 50
+
+raft_airgap = 0.18
+raft_base_thickness = =round(layer_height*1.5, 2)
+raft_interface_thickness = =round(layer_height*1.2, 2)
diff --git a/resources/quality/mingda/mingda_global_standard.inst.cfg b/resources/quality/mingda/mingda_global_standard.inst.cfg
index f80d7f4c37..e59e66882d 100644
--- a/resources/quality/mingda/mingda_global_standard.inst.cfg
+++ b/resources/quality/mingda/mingda_global_standard.inst.cfg
@@ -16,3 +16,20 @@ layer_height_0 = 0.2
top_bottom_thickness = =layer_height_0+layer_height*3
wall_thickness = =line_width*3
support_interface_height = =layer_height*5
+
+infill_line_width = =round(line_width * 0.4 / 0.35, 2)
+infill_sparse_density = 20
+
+speed_print = 60
+speed_layer_0 = 10
+speed_topbottom = =math.ceil(speed_print * 30 / 60)
+speed_wall = =math.ceil(speed_print * 40 / 60)
+speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
+
+acceleration_wall = 2000
+acceleration_wall_0 = 2000
+jerk_travel = 50
+
+raft_airgap = 0.18
+raft_base_thickness = =round(layer_height*1.5, 2)
+raft_interface_thickness = =round(layer_height*1.2, 2)
diff --git a/resources/quality/mingda/mingda_global_super.inst.cfg b/resources/quality/mingda/mingda_global_super.inst.cfg
index 6abe36ffd2..ce20114662 100644
--- a/resources/quality/mingda/mingda_global_super.inst.cfg
+++ b/resources/quality/mingda/mingda_global_super.inst.cfg
@@ -16,3 +16,11 @@ layer_height_0 = 0.12
top_bottom_thickness = =layer_height_0+layer_height*6
wall_thickness = =line_width*3
support_interface_height = =layer_height*8
+
+infill_line_width = =round(line_width * 0.42 / 0.35, 2)
+infill_sparse_density = 20
+
+jerk_travel = 50
+raft_airgap = 0.18
+raft_base_thickness = =round(layer_height*1.5, 2)
+raft_interface_thickness = =round(layer_height*1.2, 2)
diff --git a/resources/quality/mingda/mingda_global_ultra.inst.cfg b/resources/quality/mingda/mingda_global_ultra.inst.cfg
index b383c4c799..c2b616cb1a 100644
--- a/resources/quality/mingda/mingda_global_ultra.inst.cfg
+++ b/resources/quality/mingda/mingda_global_ultra.inst.cfg
@@ -16,3 +16,16 @@ layer_height_0 = 0.12
top_bottom_thickness = =layer_height_0+layer_height*10
wall_thickness = =line_width*3
support_interface_height = =layer_height*12
+
+skin_overlap = 10
+speed_print = 50
+speed_layer_0 = 10
+speed_topbottom = =math.ceil(speed_print * 35 / 50)
+speed_wall = =math.ceil(speed_print * 35 / 50)
+top_bottom_thickness = 1
+
+infill_line_width = =round(line_width * 0.42 / 0.35, 2)
+jerk_travel = 50
+raft_airgap = 0.18
+raft_base_thickness = =round(layer_height*1.5, 2)
+raft_interface_thickness = =round(layer_height*1.2, 2)
diff --git a/resources/quality/nps/nps_ABS_A.inst.cfg b/resources/quality/nps/nps_ABS_A.inst.cfg
new file mode 100644
index 0000000000..e920d95be1
--- /dev/null
+++ b/resources/quality/nps/nps_ABS_A.inst.cfg
@@ -0,0 +1,46 @@
+[general]
+version = 4
+name = A
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = a
+weight = 1
+material = generic_abs
+
+[values]
+layer_height_0 = =round(0.5*machine_nozzle_size, 2)
+line_width = =machine_nozzle_size/machine_nozzle_size*0.4
+wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
+wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
+wall_0_wipe_dist = =machine_nozzle_size/2
+speed_print = 50
+speed_wall = =math.ceil(speed_print * 35/50)
+speed_wall_0 = =math.ceil(speed_wall * 30/35)
+speed_topbottom = =math.ceil(speed_print * 35/50)
+speed_layer_0 = =math.ceil(speed_print * 20/50)
+speed_slowdown_layers = 2
+cool_fan_enabled = True
+cool_fan_speed = 35
+cool_fan_speed_max = 100
+cool_min_layer_time_fan_speed_max = 20
+cool_min_layer_time = 11
+cool_fan_full_at_height = =layer_height_0 + 19 * layer_height
+cool_min_speed = 10
+support_angle = 65
+material_print_temperature = =default_material_print_temperature + 10
+material_print_temperature_layer_0 = =240
+material_bed_temperature = 100
+material_flow = 100
+retraction_extra_prime_amount = 0.1
+retraction_min_travel = =3*line_width
+retraction_hop_only_when_collides = True
+skin_overlap = 10
+support_z_distance = =layer_height
+support_bottom_distance = =support_z_distance
+support_xy_distance = =line_width * 1.7
+support_xy_distance_overhang = =wall_line_width_0
+support_offset = 1
+support_interface_density = 100 \ No newline at end of file
diff --git a/resources/quality/nps/nps_ABS_B.inst.cfg b/resources/quality/nps/nps_ABS_B.inst.cfg
new file mode 100644
index 0000000000..cf57c8afdc
--- /dev/null
+++ b/resources/quality/nps/nps_ABS_B.inst.cfg
@@ -0,0 +1,42 @@
+[general]
+version = 4
+name = B
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = b
+weight = 0
+material = generic_abs
+
+[values]
+speed_print = 55
+speed_wall = =math.ceil(speed_print * 37/55)
+speed_wall_0 = =math.ceil(speed_wall * 33/37)
+speed_topbottom = =math.ceil(speed_print * 37/55)
+speed_layer_0 = =math.ceil(speed_print * 25/55)
+speed_slowdown_layers = 2
+cool_fan_enabled = True
+cool_fan_speed = 35
+cool_fan_speed_max = 100
+cool_min_layer_time_fan_speed_max = 20
+cool_min_layer_time = 11
+cool_fan_full_at_height = =layer_height_0 + 14 * layer_height
+cool_min_speed = 10
+support_angle = 60
+material_print_temperature = =default_material_print_temperature + 13
+material_print_temperature_layer_0 = =243
+material_bed_temperature = 100
+material_flow = 96
+retraction_extra_prime_amount = 0.1
+retraction_min_travel = =3*line_width
+retraction_hop_only_when_collides = True
+skin_overlap = 15
+support_z_distance = =layer_height
+support_bottom_distance = =support_z_distance
+support_xy_distance = =line_width * 1.7
+support_xy_distance_overhang = =wall_line_width_0
+support_offset = 1
+support_interface_density = 100
+prime_tower_enable = True \ No newline at end of file
diff --git a/resources/quality/nps/nps_ABS_C.inst.cfg b/resources/quality/nps/nps_ABS_C.inst.cfg
new file mode 100644
index 0000000000..b0e435d9bc
--- /dev/null
+++ b/resources/quality/nps/nps_ABS_C.inst.cfg
@@ -0,0 +1,42 @@
+[general]
+version = 4
+name = C
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = c
+weight = -1
+material = generic_abs
+
+[values]
+speed_print = 60
+speed_wall = =math.ceil(speed_print * 40/60)
+speed_wall_0 = =math.ceil(speed_wall * 35/40)
+speed_topbottom = =math.ceil(speed_print * 40/60)
+speed_layer_0 = =math.ceil(speed_print * 30/60)
+speed_slowdown_layers = 2
+cool_fan_enabled = True
+cool_fan_speed = 35
+cool_fan_speed_max = 100
+cool_min_layer_time_fan_speed_max = 20
+cool_min_layer_time = 11
+cool_fan_full_at_height = =layer_height_0 + 9 * layer_height
+cool_min_speed = 10
+support_angle = 55
+material_print_temperature = =default_material_print_temperature + 15
+material_print_temperature_layer_0 = =245
+material_bed_temperature = 100
+material_flow = 91
+retraction_extra_prime_amount = 0.1
+retraction_min_travel = =3*line_width
+retraction_hop_only_when_collides = True
+skin_overlap = 20
+support_z_distance = =layer_height
+support_bottom_distance = =support_z_distance
+support_xy_distance = =line_width * 1.7
+support_xy_distance_overhang = =wall_line_width_0
+support_offset = 1
+support_interface_density = 100
+prime_tower_enable = True \ No newline at end of file
diff --git a/resources/quality/nps/nps_PC_A.inst.cfg b/resources/quality/nps/nps_PC_A.inst.cfg
new file mode 100644
index 0000000000..96a84784ab
--- /dev/null
+++ b/resources/quality/nps/nps_PC_A.inst.cfg
@@ -0,0 +1,56 @@
+[general]
+version = 4
+name = A
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = a
+weight = 1
+material = generic_pc
+
+[values]
+speed_print = 35
+speed_wall = =math.ceil(speed_print * 35/50)
+speed_wall_0 = =math.ceil(speed_wall * 30/35)
+speed_topbottom = =math.ceil(speed_print * 35/50)
+speed_layer_0 = =math.ceil(speed_print * 20/50)
+speed_slowdown_layers = 2
+cool_fan_enabled = True
+cool_fan_speed = 10
+cool_fan_speed_max = 10
+cool_min_layer_time_fan_speed_max = 20
+cool_min_layer_time = 2
+cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
+cool_min_speed = 12
+support_angle = 60
+cool_lift_head = true
+material_print_temperature = =default_material_print_temperature + 10
+material_print_temperature_layer_0 = =280
+material_bed_temperature = 110
+material_flow = 100
+wall_line_count = 3
+retraction_extra_prime_amount = 0.1
+retraction_speed = 30
+retraction_min_travel = =3*line_width
+retraction_hop_only_when_collides = True
+skin_overlap = 10
+support_z_distance = =layer_height
+support_bottom_distance = =support_z_distance*0.5
+support_xy_distance = =line_width * 1.7
+support_xy_distance_overhang = =wall_line_width_0
+support_offset = 1
+support_interface_density = 100
+prime_tower_enable = True
+adhesion_type = brim
+
+bridge_settings_enabled = True
+bridge_wall_coast = 50
+bridge_wall_speed = 12
+bridge_wall_material_flow = 50
+bridge_skin_speed = 12.5
+bridge_skin_material_flow = 100
+bridge_skin_density = 80
+bridge_fan_speed = 100
+
diff --git a/resources/quality/nps/nps_PC_B.inst.cfg b/resources/quality/nps/nps_PC_B.inst.cfg
new file mode 100644
index 0000000000..4700d063a1
--- /dev/null
+++ b/resources/quality/nps/nps_PC_B.inst.cfg
@@ -0,0 +1,56 @@
+[general]
+version = 4
+name = B
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = b
+weight = 0
+material = generic_pc
+
+[values]
+speed_print = 35
+speed_wall = =math.ceil(speed_print * 37/55)
+speed_wall_0 = =math.ceil(speed_wall * 33/37)
+speed_topbottom = =math.ceil(speed_print * 37/55)
+speed_layer_0 = =math.ceil(speed_print * 25/55)
+speed_slowdown_layers = 2
+cool_fan_enabled = True
+cool_fan_speed = 10
+cool_fan_speed_max = 10
+cool_min_layer_time_fan_speed_max = 20
+cool_min_layer_time = 2
+cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
+cool_min_speed = 12
+cool_lift_head = true
+support_angle = 60
+material_print_temperature = =default_material_print_temperature
+material_print_temperature_layer_0 = 275
+material_bed_temperature = 110
+material_flow = 88
+wall_line_count = 3
+retraction_speed = 30
+retraction_extra_prime_amount = 0.1
+retraction_min_travel = =3*line_width
+retraction_hop_only_when_collides = True
+skin_overlap = 15
+support_z_distance = =layer_height
+support_bottom_distance = =support_z_distance*0.5
+support_xy_distance = =line_width * 1.7
+support_xy_distance_overhang = =wall_line_width_0
+support_offset = 1
+support_interface_density = 100
+prime_tower_enable = True
+
+adhesion_type = brim
+
+bridge_settings_enabled = True
+bridge_wall_coast = 50
+bridge_wall_speed = 12
+bridge_wall_material_flow = 50
+bridge_skin_speed = 12.5
+bridge_skin_material_flow = 100
+bridge_skin_density = 80
+bridge_fan_speed = 100
diff --git a/resources/quality/nps/nps_PC_C.inst.cfg b/resources/quality/nps/nps_PC_C.inst.cfg
new file mode 100644
index 0000000000..7e85fe319c
--- /dev/null
+++ b/resources/quality/nps/nps_PC_C.inst.cfg
@@ -0,0 +1,56 @@
+[general]
+version = 4
+name = C
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = c
+weight = -1
+material = generic_pc
+
+[values]
+speed_print = 35
+speed_wall = =math.ceil(speed_print * 40/60)
+speed_wall_0 = =math.ceil(speed_wall * 35/40)
+speed_topbottom = =math.ceil(speed_print * 40/60)
+speed_layer_0 = =math.ceil(speed_print * 30/60)
+speed_slowdown_layers = 2
+cool_fan_enabled = True
+cool_fan_speed = 10
+cool_fan_speed_max = 10
+cool_min_layer_time_fan_speed_max = 20
+cool_min_layer_time = 2
+cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
+cool_min_speed = 12
+support_angle = 60
+cool_lift_head = true
+material_print_temperature = =default_material_print_temperature
+material_print_temperature_layer_0 = 275
+material_bed_temperature = 110
+material_flow = 88
+wall_line_count = 3
+retraction_speed = 30
+retraction_extra_prime_amount = 0.1
+retraction_min_travel = =3*line_width
+retraction_hop_only_when_collides = True
+skin_overlap = 20
+support_z_distance = =layer_height
+support_bottom_distance = =support_z_distance*0.5
+support_xy_distance = =line_width * 1.7
+support_xy_distance_overhang = =wall_line_width_0
+support_offset = 1
+support_interface_density = 100
+prime_tower_enable = True
+
+adhesion_type = brim
+
+bridge_settings_enabled = True
+bridge_wall_coast = 50
+bridge_wall_speed = 12
+bridge_wall_material_flow = 50
+bridge_skin_speed = 12.5
+bridge_skin_material_flow = 100
+bridge_skin_density = 80
+bridge_fan_speed = 100
diff --git a/resources/quality/nps/nps_PETG_A.inst.cfg b/resources/quality/nps/nps_PETG_A.inst.cfg
new file mode 100644
index 0000000000..1881d25206
--- /dev/null
+++ b/resources/quality/nps/nps_PETG_A.inst.cfg
@@ -0,0 +1,42 @@
+[general]
+version = 4
+name = A
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = a
+weight = 1
+material = generic_petg
+
+[values]
+speed_print = 50
+speed_wall = =math.ceil(speed_print * 35/50)
+speed_wall_0 = =math.ceil(speed_wall * 30/35)
+speed_topbottom = =math.ceil(speed_print * 35/50)
+speed_layer_0 = =math.ceil(speed_print * 20/50)
+speed_slowdown_layers = 2
+cool_fan_enabled = True
+cool_fan_speed = 50
+cool_fan_speed_max = 100
+cool_min_layer_time_fan_speed_max = 20
+cool_min_layer_time = 11
+cool_fan_full_at_height = =layer_height_0 + 3 * layer_height
+cool_min_speed = 10
+support_angle = 65
+material_print_temperature = =default_material_print_temperature + 20
+material_print_temperature_layer_0 = =230
+material_bed_temperature = 80
+material_flow = 98
+retraction_extra_prime_amount = 0
+retraction_min_travel = =3*line_width
+retraction_hop_only_when_collides = True
+skin_overlap = 10
+support_z_distance = =layer_height*2
+support_bottom_distance = =support_z_distance*0.5
+support_xy_distance = =line_width * 1.7
+support_xy_distance_overhang = =wall_line_width_0
+support_offset = 1
+support_interface_density = 100
+prime_tower_enable = True \ No newline at end of file
diff --git a/resources/quality/nps/nps_PETG_B.inst.cfg b/resources/quality/nps/nps_PETG_B.inst.cfg
new file mode 100644
index 0000000000..156959e020
--- /dev/null
+++ b/resources/quality/nps/nps_PETG_B.inst.cfg
@@ -0,0 +1,42 @@
+[general]
+version = 4
+name = B
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = b
+weight = 0
+material = generic_petg
+
+[values]
+speed_print = 55
+speed_wall = =math.ceil(speed_print * 37/55)
+speed_wall_0 = =math.ceil(speed_wall * 33/37)
+speed_topbottom = =math.ceil(speed_print * 37/55)
+speed_layer_0 = =math.ceil(speed_print * 25/55)
+speed_slowdown_layers = 2
+cool_fan_enabled = True
+cool_fan_speed = 50
+cool_fan_speed_max = 100
+cool_min_layer_time_fan_speed_max = 20
+cool_min_layer_time = 11
+cool_fan_full_at_height = =layer_height_0 + 3 * layer_height
+cool_min_speed = 10
+support_angle = 60
+material_print_temperature = =default_material_print_temperature + 20
+material_print_temperature_layer_0 = =230
+material_bed_temperature = 80
+material_flow = 95
+retraction_extra_prime_amount = 0
+retraction_min_travel = =3*line_width
+retraction_hop_only_when_collides = True
+skin_overlap = 15
+support_z_distance = =layer_height*2
+support_bottom_distance = =support_z_distance*0.5
+support_xy_distance = =line_width * 1.7
+support_xy_distance_overhang = =wall_line_width_0
+support_offset = 1
+support_interface_density = 100
+prime_tower_enable = True \ No newline at end of file
diff --git a/resources/quality/nps/nps_PETG_C.inst.cfg b/resources/quality/nps/nps_PETG_C.inst.cfg
new file mode 100644
index 0000000000..d84858e55a
--- /dev/null
+++ b/resources/quality/nps/nps_PETG_C.inst.cfg
@@ -0,0 +1,41 @@
+[general]
+version = 4
+name = C
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = c
+weight = -1
+material = generic_petg
+
+[values]
+speed_print = 60
+speed_wall = =math.ceil(speed_print * 40/60)
+speed_wall_0 = =math.ceil(speed_wall * 35/40)
+speed_topbottom = =math.ceil(speed_print * 40/60)
+speed_layer_0 = =math.ceil(speed_print * 30/60)
+speed_slowdown_layers = 2
+cool_fan_enabled = True
+cool_fan_speed = 50
+cool_fan_speed_max = 100
+cool_min_layer_time_fan_speed_max = 20
+cool_min_layer_time = 11
+cool_fan_full_at_height = =layer_height_0 + 3 * layer_height
+cool_min_speed = 10
+support_angle = 55
+material_print_temperature = =default_material_print_temperature + 20
+material_print_temperature_layer_0 = =230
+material_bed_temperature = 80
+material_flow = 91
+retraction_extra_prime_amount = 0
+retraction_min_travel = =3*line_width
+retraction_hop_only_when_collides = True
+skin_overlap = 20
+support_z_distance = =layer_height*2
+support_bottom_distance = =support_z_distance*0.5
+support_xy_distance = =line_width * 1.7
+support_xy_distance_overhang = =wall_line_width_0
+support_offset = 1
+support_interface_density = 100 \ No newline at end of file
diff --git a/resources/quality/nps/nps_PLA_A.inst.cfg b/resources/quality/nps/nps_PLA_A.inst.cfg
new file mode 100644
index 0000000000..3c9d8e8b20
--- /dev/null
+++ b/resources/quality/nps/nps_PLA_A.inst.cfg
@@ -0,0 +1,41 @@
+[general]
+version = 4
+name = A
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = a
+weight = 1
+material = generic_pla
+
+[values]
+speed_print = 50
+speed_wall = =math.ceil(speed_print * 35/50)
+speed_wall_0 = =math.ceil(speed_wall * 30/35)
+speed_topbottom = =math.ceil(speed_print * 35/50)
+speed_layer_0 = =math.ceil(speed_print * 20/50)
+speed_slowdown_layers = 2
+cool_fan_enabled = True
+cool_fan_speed = 100
+cool_fan_speed_max = 100
+cool_min_layer_time_fan_speed_max = 20
+cool_min_layer_time = 11
+cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
+cool_min_speed = 10
+support_angle = 65
+material_print_temperature = =default_material_print_temperature + 15
+material_print_temperature_layer_0 = =210
+material_bed_temperature = 60
+material_flow = 98
+retraction_extra_prime_amount = 0.1
+retraction_min_travel = =3*line_width
+retraction_hop_only_when_collides = True
+skin_overlap = 10
+support_z_distance = =layer_height*2
+support_bottom_distance = =support_z_distance*0.5
+support_xy_distance = =line_width * 1.7
+support_xy_distance_overhang = =wall_line_width_0
+support_offset = 1
+support_interface_density = 100 \ No newline at end of file
diff --git a/resources/quality/nps/nps_PLA_B.inst.cfg b/resources/quality/nps/nps_PLA_B.inst.cfg
new file mode 100644
index 0000000000..e870274500
--- /dev/null
+++ b/resources/quality/nps/nps_PLA_B.inst.cfg
@@ -0,0 +1,41 @@
+[general]
+version = 4
+name = B
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = b
+weight = 0
+material = generic_pla
+
+[values]
+speed_print = 55
+speed_wall = =math.ceil(speed_print * 37/55)
+speed_wall_0 = =math.ceil(speed_wall * 33/37)
+speed_topbottom = =math.ceil(speed_print * 37/55)
+speed_layer_0 = =math.ceil(speed_print * 25/55)
+speed_slowdown_layers = 2
+cool_fan_enabled = True
+cool_fan_speed = 100
+cool_fan_speed_max = 100
+cool_min_layer_time_fan_speed_max = 20
+cool_min_layer_time = 11
+cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
+cool_min_speed = 10
+support_angle = 60
+material_print_temperature = =default_material_print_temperature + 15
+material_print_temperature_layer_0 = =220
+material_bed_temperature = 60
+material_flow = 100
+retraction_extra_prime_amount = 0.0
+retraction_min_travel = =3*line_width
+retraction_hop_only_when_collides = True
+skin_overlap = 15
+support_z_distance = =layer_height*2
+support_bottom_distance = =support_z_distance*0.5
+support_xy_distance = =line_width * 1.7
+support_xy_distance_overhang = =wall_line_width_0
+support_offset = 1
+support_interface_density = 100 \ No newline at end of file
diff --git a/resources/quality/nps/nps_PLA_C.inst.cfg b/resources/quality/nps/nps_PLA_C.inst.cfg
new file mode 100644
index 0000000000..955ea3875c
--- /dev/null
+++ b/resources/quality/nps/nps_PLA_C.inst.cfg
@@ -0,0 +1,41 @@
+[general]
+version = 4
+name = C
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = c
+weight = -1
+material = generic_pla
+
+[values]
+speed_print = 60
+speed_wall = =math.ceil(speed_print * 40/60)
+speed_wall_0 = =math.ceil(speed_wall * 35/40)
+speed_topbottom = =math.ceil(speed_print * 40/60)
+speed_layer_0 = =math.ceil(speed_print * 30/60)
+speed_slowdown_layers = 2
+cool_fan_enabled = True
+cool_fan_speed = 100
+cool_fan_speed_max = 100
+cool_min_layer_time_fan_speed_max = 20
+cool_min_layer_time = 11
+cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
+cool_min_speed = 10
+support_angle = 55
+material_print_temperature = =default_material_print_temperature + 15
+material_print_temperature_layer_0 = =220
+material_bed_temperature = 60
+material_flow = 91
+retraction_extra_prime_amount = 0.1
+retraction_min_travel = =3*line_width
+retraction_hop_only_when_collides = True
+skin_overlap = 20
+support_z_distance = =layer_height*2
+support_bottom_distance = =support_z_distance*0.5
+support_xy_distance = =line_width * 1.7
+support_xy_distance_overhang = =wall_line_width_0
+support_offset = 1
+support_interface_density = 100 \ No newline at end of file
diff --git a/resources/quality/nps/nps_TPU_A.inst.cfg b/resources/quality/nps/nps_TPU_A.inst.cfg
new file mode 100644
index 0000000000..679b6f8e31
--- /dev/null
+++ b/resources/quality/nps/nps_TPU_A.inst.cfg
@@ -0,0 +1,41 @@
+[general]
+version = 4
+name = A
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = a
+weight = 1
+material = generic_tpu
+
+[values]
+speed_print = 30
+speed_wall = =math.ceil(speed_print * 30/30)
+speed_wall_0 = =math.ceil(speed_print * 25/30)
+speed_topbottom = =math.ceil(speed_print * 25/30)
+speed_layer_0 = =math.ceil(speed_print * 20/30)
+speed_slowdown_layers = 1
+cool_fan_enabled = True
+cool_fan_speed = 50
+cool_fan_speed_max = 100
+cool_min_layer_time_fan_speed_max = 20
+cool_min_layer_time = 11
+cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
+cool_min_speed = 10
+support_angle = 50
+material_print_temperature = =default_material_print_temperature - 13
+material_print_temperature_layer_0 = =215
+material_bed_temperature = 45
+material_flow = 107
+retraction_extra_prime_amount = 0.2
+retraction_min_travel = =3*line_width
+retraction_hop_only_when_collides = False
+skin_overlap = 5
+support_z_distance = =layer_height*2
+support_bottom_distance = =support_z_distance*0.5
+support_xy_distance = =line_width * 2.5
+support_xy_distance_overhang = =wall_line_width_0
+support_offset = 0.5
+support_interface_density = 100 \ No newline at end of file
diff --git a/resources/quality/nps/nps_TPU_B.inst.cfg b/resources/quality/nps/nps_TPU_B.inst.cfg
new file mode 100644
index 0000000000..af4c9f26bf
--- /dev/null
+++ b/resources/quality/nps/nps_TPU_B.inst.cfg
@@ -0,0 +1,41 @@
+[general]
+version = 4
+name = B
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = b
+weight = 0
+material = generic_tpu
+
+[values]
+speed_print = 35
+speed_wall = =math.ceil(speed_print * 35/35)
+speed_wall_0 = =math.ceil(speed_print * 27/35)
+speed_topbottom = =math.ceil(speed_print * 25/35)
+speed_layer_0 = =math.ceil(speed_print * 20/35)
+speed_slowdown_layers = 1
+cool_fan_enabled = True
+cool_fan_speed = 50
+cool_fan_speed_max = 100
+cool_min_layer_time_fan_speed_max = 20
+cool_min_layer_time = 11
+cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
+cool_min_speed = 10
+support_angle = 50
+material_print_temperature = =default_material_print_temperature - 13
+material_print_temperature_layer_0 = =210
+material_bed_temperature = 45
+material_flow = 103
+retraction_extra_prime_amount = 0.2
+retraction_min_travel = =3*line_width
+retraction_hop_only_when_collides = False
+skin_overlap = 5
+support_z_distance = =layer_height*2
+support_bottom_distance = =support_z_distance*0.5
+support_xy_distance = =line_width * 2.5
+support_xy_distance_overhang = =wall_line_width_0
+support_offset = 0.5
+support_interface_density = 100 \ No newline at end of file
diff --git a/resources/quality/nps/nps_TPU_C.inst.cfg b/resources/quality/nps/nps_TPU_C.inst.cfg
new file mode 100644
index 0000000000..809ffc91b6
--- /dev/null
+++ b/resources/quality/nps/nps_TPU_C.inst.cfg
@@ -0,0 +1,41 @@
+[general]
+version = 4
+name = C
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = c
+weight = -1
+material = generic_tpu
+
+[values]
+speed_print = 40
+speed_wall = =math.ceil(speed_print * 40/40)
+speed_wall_0 = =math.ceil(speed_print * 30/40)
+speed_topbottom = =math.ceil(speed_print * 27/40)
+speed_layer_0 = =math.ceil(speed_print * 20/40)
+speed_slowdown_layers = 1
+cool_fan_enabled = True
+cool_fan_speed = 50
+cool_fan_speed_max = 100
+cool_min_layer_time_fan_speed_max = 20
+cool_min_layer_time = 11
+cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
+cool_min_speed = 10
+support_angle = 50
+material_print_temperature = =default_material_print_temperature - 13
+material_print_temperature_layer_0 = =215
+material_bed_temperature = 45
+material_flow = 101
+retraction_extra_prime_amount = 0.2
+retraction_min_travel = =3*line_width
+retraction_hop_only_when_collides = False
+skin_overlap = 5
+support_z_distance = =layer_height*2
+support_bottom_distance = =support_z_distance*0.5
+support_xy_distance = =line_width * 2.5
+support_xy_distance_overhang = =wall_line_width_0
+support_offset = 0.5
+support_interface_density = 100
diff --git a/resources/quality/nps/nps_global_A.inst.cfg b/resources/quality/nps/nps_global_A.inst.cfg
new file mode 100644
index 0000000000..aa3ba1c71a
--- /dev/null
+++ b/resources/quality/nps/nps_global_A.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Extra Fine Qualité
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = a
+weight = 0
+global_quality = True
+
+[values]
+layer_height = 0.1
+top_bottom_thickness = =5*layer_height \ No newline at end of file
diff --git a/resources/quality/nps/nps_global_B.inst.cfg b/resources/quality/nps/nps_global_B.inst.cfg
new file mode 100644
index 0000000000..fcc9a5cc0b
--- /dev/null
+++ b/resources/quality/nps/nps_global_B.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Fine Qualité
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = b
+weight = 0
+global_quality = True
+
+[values]
+layer_height = 0.16
+top_bottom_thickness = =3*layer_height \ No newline at end of file
diff --git a/resources/quality/nps/nps_global_C.inst.cfg b/resources/quality/nps/nps_global_C.inst.cfg
new file mode 100644
index 0000000000..d5870296a3
--- /dev/null
+++ b/resources/quality/nps/nps_global_C.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Haute qualité
+definition = nps
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = c
+weight = 0
+global_quality = True
+
+[values]
+layer_height = 0.25
+top_bottom_thickness = =5*layer_height \ No newline at end of file
diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg
index 881571c5a3..49703c592d 100644
--- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg
@@ -21,12 +21,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 30
layer_0_z_overlap = 0.22
raft_airgap = 0.37
-raft_base_line_spacing = 1.6
-raft_base_line_width = 0.8
-raft_interface_line_spacing = 1
-raft_interface_line_width = 0.8
-raft_margin = 15
-raft_surface_line_width = 0.38
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 20 / 25)
diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg
index 627eb26587..6503460702 100644
--- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg
@@ -21,12 +21,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 30
layer_0_z_overlap = 0.22
raft_airgap = 0.37
-raft_base_line_spacing = 1.6
-raft_base_line_width = 0.8
-raft_interface_line_spacing = 1
-raft_interface_line_width = 0.8
-raft_margin = 15
-raft_surface_line_width = 0.38
speed_layer_0 = =math.ceil(speed_print * 15 / 35)
speed_print = 35
speed_topbottom = =math.ceil(speed_print * 20 / 35)
diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg
index afb26d0ddb..9dec35e4a5 100644
--- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg
@@ -22,13 +22,6 @@ infill_sparse_density = 35
layer_0_z_overlap = 0.22
raft_airgap = 0.37
-raft_base_line_spacing = 2.4
-raft_base_line_width = 1.2
-raft_interface_line_spacing = 1.4
-raft_interface_line_width = 1.2
-raft_margin = 15
-raft_surface_line_width = 0.57
-raft_surface_thickness = 0.2
speed_layer_0 = =round(speed_print * 30 / 50)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 20 / 25)
diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg
index cb9ade1813..b3751e0bbc 100644
--- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg
@@ -22,13 +22,6 @@ infill_sparse_density = 35
layer_0_z_overlap = 0.22
raft_airgap = 0.37
-raft_base_line_spacing = 2.4
-raft_base_line_width = 1.2
-raft_interface_line_spacing = 1.4
-raft_interface_line_width = 1.2
-raft_margin = 15
-raft_surface_line_width = 0.57
-raft_surface_thickness = 0.2
speed_layer_0 = =math.ceil(speed_print * 30 / 35)
speed_print = 35
speed_topbottom = =math.ceil(speed_print * 20 / 35)
diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg
index 431e39c85f..492d54f63c 100644
--- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg
@@ -21,12 +21,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 40
layer_0_z_overlap = 0.22
raft_airgap = 0.37
-raft_base_line_width = 1.6
-raft_interface_line_spacing = 1.8
-raft_interface_line_width = 1.6
-raft_margin = 15
-raft_surface_line_width = 0.7
-raft_surface_thickness = 0.2
speed_layer_0 = =round(speed_print * 30 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 20 / 25)
diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg
index f0a60e8af3..79cd4cb0b2 100644
--- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg
@@ -21,12 +21,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 40
layer_0_z_overlap = 0.22
raft_airgap = 0.37
-raft_base_line_width = 1.6
-raft_interface_line_spacing = 1.8
-raft_interface_line_width = 1.6
-raft_margin = 15
-raft_surface_line_width = 0.7
-raft_surface_thickness = 0.2
speed_layer_0 = =round(speed_print * 30 / 30)
speed_print = 30
speed_topbottom = =math.ceil(speed_print * 20 / 30)
diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg
index 404023db87..21ed3ff9ee 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg
@@ -21,11 +21,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 25
layer_0_z_overlap = 0.1
raft_airgap = 0.15
-raft_base_line_width = 0.5
-raft_interface_line_spacing = 0.7
-raft_interface_line_width = 0.5
-raft_margin = 15
-raft_surface_line_width = 0.2
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_nylon_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg
index 2f77288341..4746d98537 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg
@@ -21,11 +21,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 25
layer_0_z_overlap = 0.1
raft_airgap = 0.15
-raft_base_line_width = 0.5
-raft_interface_line_spacing = 0.7
-raft_interface_line_width = 0.5
-raft_margin = 15
-raft_surface_line_width = 0.2
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_nylon_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg
index 71f03adfd9..19d0dd03aa 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg
@@ -20,13 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 30
layer_0_z_overlap = 0.22
raft_airgap = 0.57
-raft_base_line_spacing = 1.6
-raft_base_line_width = 0.8
-raft_interface_line_spacing = 1
-raft_interface_line_width = 0.8
-raft_margin = 15
-raft_surface_line_width = 0.5
-raft_surface_thickness = 0.15
speed_layer_0 = =math.ceil(speed_print * 30 / 45)
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 20 / 45)
diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg
index bd2372dc16..4e7e6981a5 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg
@@ -20,13 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 30
layer_0_z_overlap = 0.22
raft_airgap = 0.57
-raft_base_line_spacing = 1.6
-raft_base_line_width = 0.8
-raft_interface_line_spacing = 1
-raft_interface_line_width = 0.8
-raft_margin = 15
-raft_surface_line_width = 0.5
-raft_surface_thickness = 0.15
speed_layer_0 = =math.ceil(speed_print * 30 / 45)
speed_print = 45
speed_travel = 150
diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg
index cd5a66151d..7e9be134b7 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg
@@ -20,13 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 35
layer_0_z_overlap = 0.22
raft_airgap = 0.44
-raft_base_line_spacing = 2.4
-raft_base_line_width = 1.2
-raft_interface_line_spacing = 1.4
-raft_interface_line_width = 1.2
-raft_margin = 15
-raft_surface_line_width = 0.6
-raft_surface_thickness = 0.15
retraction_hop_enabled = 0.2
speed_layer_0 = =math.ceil(speed_print * 30 / 55)
speed_print = 55
diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg
index 7c03a0faeb..c8bd8b8055 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg
@@ -20,13 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 35
layer_0_z_overlap = 0.22
raft_airgap = 0.44
-raft_base_line_spacing = 2.4
-raft_base_line_width = 1.2
-raft_interface_line_spacing = 1.4
-raft_interface_line_width = 1.2
-raft_margin = 15
-raft_surface_line_width = 0.6
-raft_surface_thickness = 0.15
retraction_hop_enabled = 0.2
speed_layer_0 = =math.ceil(speed_print * 30 / 55)
speed_print = 55
diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg
index 9f4c534c86..c3eeef66a6 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg
@@ -20,12 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 40
layer_0_z_overlap = 0.25
raft_airgap = 0.44
-raft_base_line_width = 1.6
-raft_interface_line_spacing = 1.8
-raft_interface_line_width = 1.6
-raft_margin = 15
-raft_surface_line_width = 0.7
-raft_surface_thickness = 0.2
retraction_hop_enabled = 0.2
speed_layer_0 = =math.ceil(speed_print * 30 / 55)
speed_print = 55
diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg
index 1239c43800..243169012a 100644
--- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg
@@ -20,12 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 40
layer_0_z_overlap = 0.25
raft_airgap = 0.44
-raft_base_line_width = 1.6
-raft_interface_line_spacing = 1.8
-raft_interface_line_width = 1.6
-raft_margin = 15
-raft_surface_line_width = 0.7
-raft_surface_thickness = 0.2
retraction_hop_enabled = 0.2
speed_layer_0 = =round(speed_print * 30 / 55)
speed_print = 55
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg
index a3e95a3a88..6a15d8959d 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg
@@ -22,12 +22,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 25
layer_0_z_overlap = 0.2
raft_airgap = 0.25
-raft_base_line_spacing = 1
-raft_base_line_width = 0.5
-raft_interface_line_spacing = 0.7
-raft_interface_line_width = 0.5
-raft_margin = 15
-raft_surface_line_width = 0.2
speed_layer_0 = =round(speed_print * 30 / 30)
speed_print = 30
support_enable = True
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg
index e81cece3d1..2c498c3e5b 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg
@@ -22,12 +22,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 25
layer_0_z_overlap = 0.2
raft_airgap = 0.25
-raft_base_line_spacing = 1
-raft_base_line_width = 0.5
-raft_interface_line_spacing = 0.7
-raft_interface_line_width = 0.5
-raft_margin = 15
-raft_surface_line_width = 0.2
speed_layer_0 = =round(speed_print * 30 / 30)
speed_print = 30
support_enable = True
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg
index bca94eb325..4bc50328e8 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg
@@ -21,11 +21,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 30
layer_0_z_overlap = 0.3
raft_airgap = 0.35
-raft_base_line_spacing = 1.6
-raft_base_line_width = 0.8
-raft_interface_line_spacing = 1
-raft_interface_line_width = 0.8
-raft_margin = 15
speed_layer_0 = =round(speed_print * 30 / 45)
speed_print = 45
speed_wall_0 = =math.ceil(speed_print * 20 / 45)
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg
index 7d8f4f7f74..f26d676a04 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg
@@ -21,11 +21,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 30
layer_0_z_overlap = 0.3
raft_airgap = 0.35
-raft_base_line_spacing = 1.6
-raft_base_line_width = 0.8
-raft_interface_line_spacing = 1
-raft_interface_line_width = 0.8
-raft_margin = 15
speed_layer_0 = =round(speed_print * 30 / 45)
speed_print = 45
speed_wall_0 = =math.ceil(speed_print * 20 / 45)
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg
index 2c3c3172ac..7adbef71a2 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg
@@ -21,13 +21,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 35
layer_0_z_overlap = 0.22
raft_airgap = 0.52
-raft_base_line_spacing = 2.4
-raft_base_line_width = 1.2
-raft_interface_line_spacing = 1.4
-raft_interface_line_width = 1.2
-raft_margin = 15
-raft_surface_line_width = 0.6
-raft_surface_thickness = 0.15
speed_layer_0 = =math.ceil(speed_print * 30 / 45)
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 20 / 45)
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg
index 80967c9543..8c627e7507 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg
@@ -21,13 +21,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 35
layer_0_z_overlap = 0.22
raft_airgap = 0.52
-raft_base_line_spacing = 2.4
-raft_base_line_width = 1.2
-raft_interface_line_spacing = 1.4
-raft_interface_line_width = 1.2
-raft_margin = 15
-raft_surface_line_width = 0.6
-raft_surface_thickness = 0.15
speed_layer_0 = =math.ceil(speed_print * 30 / 45)
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 20 / 45)
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg
index 952265384c..a0422892c3 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg
@@ -21,12 +21,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 40
layer_0_z_overlap = 0.22
raft_airgap = 0.47
-raft_base_line_width = 1.6
-raft_interface_line_spacing = 1.8
-raft_interface_line_width = 1.6
-raft_margin = 15
-raft_surface_line_width = 0.7
-raft_surface_thickness = 0.2
speed_layer_0 = =round(speed_print * 30 / 40)
speed_print = 40
support_angle = 45
diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg
index c082f75d52..3fa7cd089f 100644
--- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg
@@ -21,12 +21,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 40
layer_0_z_overlap = 0.22
raft_airgap = 0.47
-raft_base_line_width = 1.6
-raft_interface_line_spacing = 1.8
-raft_interface_line_width = 1.6
-raft_margin = 15
-raft_surface_line_width = 0.7
-raft_surface_thickness = 0.2
speed_layer_0 = =round(speed_print * 30 / 40)
speed_print = 40
support_angle = 45
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 f16b0747ab..29a303c877 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
@@ -29,15 +29,6 @@ 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 = 15
retraction_hop = 0.15
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 f3a1ea0e98..75b8deff80 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
@@ -29,15 +29,6 @@ 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 = 15
retraction_hop = 0.15
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 b902d16032..fc6a0aad3f 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
@@ -29,15 +29,6 @@ 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 = 15
retraction_hop = 0.15
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 e8fcf8b392..0c0e9e8913 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
@@ -21,10 +21,6 @@ cool_min_speed = 15
infill_sparse_density = 10
layer_0_z_overlap = 0.1
raft_airgap = 0.2
-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)
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 3a4c443011..48d88baa8d 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
@@ -19,10 +19,6 @@ cool_fan_speed_min = =cool_fan_speed * 35 / 60
cool_min_layer_time = 10
cool_min_speed = 15
infill_sparse_density = 10
-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)
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 7381cddcfc..7d32b1e6c4 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
@@ -20,12 +20,6 @@ cool_min_speed = 15
infill_sparse_density = 10
layer_0_z_overlap = 0.12
raft_airgap = 0.24
-raft_base_line_spacing = 1.2
-raft_base_line_width = 0.6
-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)
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_draft.inst.cfg
index 076caebf21..a496c9b024 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_draft.inst.cfg
@@ -20,12 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.37
-raft_base_line_spacing = 1.6
-raft_base_line_width = 0.8
-raft_interface_line_spacing = 1
-raft_interface_line_width = 0.8
-raft_margin = 15
-raft_surface_line_width = 0.38
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_normal.inst.cfg
index eb2eb45552..67c5c16e65 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.4_normal.inst.cfg
@@ -20,12 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.37
-raft_base_line_spacing = 1.6
-raft_base_line_width = 0.8
-raft_interface_line_spacing = 1
-raft_interface_line_width = 0.8
-raft_margin = 15
-raft_surface_line_width = 0.38
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_layer_0 = =math.ceil(speed_print * 15 / 35)
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_draft.inst.cfg
index 255979e3a6..90396b40a7 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_draft.inst.cfg
@@ -20,13 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.37
-raft_base_line_spacing = 2.4
-raft_base_line_width = 1.2
-raft_interface_line_spacing = 1.4
-raft_interface_line_width = 1.2
-raft_margin = 15
-raft_surface_line_width = 0.57
-raft_surface_thickness = 0.2
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_layer_0 = =round(speed_print * 30 / 50)
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_normal.inst.cfg
index 88eda6c8ec..7df3ca1322 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.6_normal.inst.cfg
@@ -20,13 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.37
-raft_base_line_spacing = 2.4
-raft_base_line_width = 1.2
-raft_interface_line_spacing = 1.4
-raft_interface_line_width = 1.2
-raft_margin = 15
-raft_surface_line_width = 0.57
-raft_surface_thickness = 0.2
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_layer_0 = =math.ceil(speed_print * 30 / 35)
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_draft.inst.cfg
index 9d7a3851d8..5ad74de77b 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_draft.inst.cfg
@@ -20,12 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.37
-raft_base_line_width = 1.6
-raft_interface_line_spacing = 1.8
-raft_interface_line_width = 1.6
-raft_margin = 15
-raft_surface_line_width = 0.7
-raft_surface_thickness = 0.2
speed_layer_0 = =round(speed_print * 30 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 20 / 25)
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_normal.inst.cfg
index 4801f03a05..dec0f67c1e 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_cpep_0.8_normal.inst.cfg
@@ -20,12 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.37
-raft_base_line_width = 1.6
-raft_interface_line_spacing = 1.8
-raft_interface_line_width = 1.6
-raft_margin = 15
-raft_surface_line_width = 0.7
-raft_surface_thickness = 0.2
speed_layer_0 = =round(speed_print * 30 / 30)
speed_print = 30
speed_topbottom = =math.ceil(speed_print * 20 / 30)
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_high.inst.cfg
index f08257d7d6..bd76fb2c17 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_high.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_high.inst.cfg
@@ -20,11 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.1
raft_airgap = 0.15
-raft_base_line_width = 0.5
-raft_interface_line_spacing = 0.7
-raft_interface_line_width = 0.5
-raft_margin = 15
-raft_surface_line_width = 0.2
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_nylon_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_normal.inst.cfg
index ab17f0589d..2e3e72b354 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.25_normal.inst.cfg
@@ -20,11 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.1
raft_airgap = 0.15
-raft_base_line_width = 0.5
-raft_interface_line_spacing = 0.7
-raft_interface_line_width = 0.5
-raft_margin = 15
-raft_surface_line_width = 0.2
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_nylon_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_fast.inst.cfg
index d23859a47f..ecababf038 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_fast.inst.cfg
@@ -19,13 +19,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.57
-raft_base_line_spacing = 1.6
-raft_base_line_width = 0.8
-raft_interface_line_spacing = 1
-raft_interface_line_width = 0.8
-raft_margin = 15
-raft_surface_line_width = 0.5
-raft_surface_thickness = 0.15
retraction_prime_speed = =retraction_speed
speed_layer_0 = =math.ceil(speed_print * 30 / 45)
speed_print = 45
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_normal.inst.cfg
index e5d05294f2..3bc6cdd0de 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.4_normal.inst.cfg
@@ -19,13 +19,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.57
-raft_base_line_spacing = 1.6
-raft_base_line_width = 0.8
-raft_interface_line_spacing = 1
-raft_interface_line_width = 0.8
-raft_margin = 15
-raft_surface_line_width = 0.5
-raft_surface_thickness = 0.15
retraction_prime_speed = =retraction_speed
speed_layer_0 = =math.ceil(speed_print * 30 / 45)
speed_print = 45
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_fast.inst.cfg
index 59834b551d..5b71703b7f 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_fast.inst.cfg
@@ -19,13 +19,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.44
-raft_base_line_spacing = 2.4
-raft_base_line_width = 1.2
-raft_interface_line_spacing = 1.4
-raft_interface_line_width = 1.2
-raft_margin = 15
-raft_surface_line_width = 0.6
-raft_surface_thickness = 0.15
retraction_hop_enabled = 0.2
retraction_prime_speed = =retraction_speed
speed_layer_0 = =math.ceil(speed_print * 30 / 55)
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_normal.inst.cfg
index 25480e1e7d..f439ac8971 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.6_normal.inst.cfg
@@ -19,13 +19,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.44
-raft_base_line_spacing = 2.4
-raft_base_line_width = 1.2
-raft_interface_line_spacing = 1.4
-raft_interface_line_width = 1.2
-raft_margin = 15
-raft_surface_line_width = 0.6
-raft_surface_thickness = 0.15
retraction_hop_enabled = 0.2
retraction_prime_speed = =retraction_speed
speed_layer_0 = =math.ceil(speed_print * 30 / 55)
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_draft.inst.cfg
index ee0a2bd2a5..9fc2a85950 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_draft.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_draft.inst.cfg
@@ -19,12 +19,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.25
raft_airgap = 0.44
-raft_base_line_width = 1.6
-raft_interface_line_spacing = 1.8
-raft_interface_line_width = 1.6
-raft_margin = 15
-raft_surface_line_width = 0.7
-raft_surface_thickness = 0.2
retraction_hop_enabled = 0.2
speed_layer_0 = =math.ceil(speed_print * 30 / 55)
speed_print = 55
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_normal.inst.cfg
index 9ac5d56bd7..560acf1335 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_nylon_0.8_normal.inst.cfg
@@ -19,12 +19,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.25
raft_airgap = 0.44
-raft_base_line_width = 1.6
-raft_interface_line_spacing = 1.8
-raft_interface_line_width = 1.6
-raft_margin = 15
-raft_surface_line_width = 0.7
-raft_surface_thickness = 0.2
retraction_hop_enabled = 0.2
speed_layer_0 = =round(speed_print * 30 / 55)
speed_print = 55
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_high.inst.cfg
index 4898c72327..8366aea6c2 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_high.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_high.inst.cfg
@@ -21,12 +21,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.2
raft_airgap = 0.25
-raft_base_line_spacing = 1
-raft_base_line_width = 0.5
-raft_interface_line_spacing = 0.7
-raft_interface_line_width = 0.5
-raft_margin = 15
-raft_surface_line_width = 0.2
speed_layer_0 = =round(speed_print * 30 / 30)
speed_print = 30
support_enable = True
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_normal.inst.cfg
index 2d159792c9..2979294168 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.25_normal.inst.cfg
@@ -21,12 +21,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.2
raft_airgap = 0.25
-raft_base_line_spacing = 1
-raft_base_line_width = 0.5
-raft_interface_line_spacing = 0.7
-raft_interface_line_width = 0.5
-raft_margin = 15
-raft_surface_line_width = 0.2
speed_layer_0 = =round(speed_print * 30 / 30)
speed_print = 30
support_enable = True
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_fast.inst.cfg
index 86a965d441..f32a6969ad 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_fast.inst.cfg
@@ -20,11 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.3
raft_airgap = 0.35
-raft_base_line_spacing = 1.6
-raft_base_line_width = 0.8
-raft_interface_line_spacing = 1
-raft_interface_line_width = 0.8
-raft_margin = 15
speed_layer_0 = =round(speed_print * 30 / 45)
speed_print = 45
speed_wall_0 = =math.ceil(speed_print * 20 / 45)
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_normal.inst.cfg
index b782ea63d4..0e52da4cca 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.4_normal.inst.cfg
@@ -20,11 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.3
raft_airgap = 0.35
-raft_base_line_spacing = 1.6
-raft_base_line_width = 0.8
-raft_interface_line_spacing = 1
-raft_interface_line_width = 0.8
-raft_margin = 15
speed_layer_0 = =round(speed_print * 30 / 45)
speed_print = 45
speed_wall_0 = =math.ceil(speed_print * 20 / 45)
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_fast.inst.cfg
index 739d72072f..b8c0c431d4 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_fast.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_fast.inst.cfg
@@ -20,13 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.52
-raft_base_line_spacing = 2.4
-raft_base_line_width = 1.2
-raft_interface_line_spacing = 1.4
-raft_interface_line_width = 1.2
-raft_margin = 15
-raft_surface_line_width = 0.6
-raft_surface_thickness = 0.15
speed_layer_0 = =math.ceil(speed_print * 30 / 45)
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 20 / 45)
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_normal.inst.cfg
index d95596953e..7668a9c941 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.6_normal.inst.cfg
@@ -20,13 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.52
-raft_base_line_spacing = 2.4
-raft_base_line_width = 1.2
-raft_interface_line_spacing = 1.4
-raft_interface_line_width = 1.2
-raft_margin = 15
-raft_surface_line_width = 0.6
-raft_surface_thickness = 0.15
speed_layer_0 = =math.ceil(speed_print * 30 / 45)
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 20 / 45)
diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.8_normal.inst.cfg
index 751696ca93..c170588b34 100644
--- a/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.8_normal.inst.cfg
+++ b/resources/quality/ultimaker2_plus_connect/um2pc_pc_0.8_normal.inst.cfg
@@ -20,12 +20,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 5
infill_sparse_density = 20
layer_0_z_overlap = 0.22
raft_airgap = 0.47
-raft_base_line_width = 1.6
-raft_interface_line_spacing = 1.8
-raft_interface_line_width = 1.6
-raft_margin = 15
-raft_surface_line_width = 0.7
-raft_surface_thickness = 0.2
speed_layer_0 = =round(speed_print * 30 / 40)
speed_print = 40
support_angle = 45
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 bb5876dcd6..b0fbab6934 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
@@ -29,15 +29,6 @@ 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 = 15
retraction_hop = 0.15
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 42c185a769..c9cc3bb528 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
@@ -21,10 +21,6 @@ cool_min_speed = 15
infill_sparse_density = 10
layer_0_z_overlap = 0.1
raft_airgap = 0.2
-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)
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 acf28f2ad3..752dcaadd2 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
@@ -19,10 +19,6 @@ cool_fan_speed_min = =cool_fan_speed * 35 / 60
cool_min_layer_time = 10
cool_min_speed = 15
infill_sparse_density = 10
-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)
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 db3a812f97..4a8a99ce10 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
@@ -20,12 +20,6 @@ cool_min_speed = 15
infill_sparse_density = 10
layer_0_z_overlap = 0.12
raft_airgap = 0.24
-raft_base_line_spacing = 1.2
-raft_base_line_width = 0.6
-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)
diff --git a/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg
index 3507862091..7cb72ef3e0 100644
--- a/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg
@@ -17,12 +17,7 @@ cool_min_speed = 12
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
ooze_shield_angle = 40
-raft_acceleration = =acceleration_layer_0
-raft_airgap = =round(layer_height_0 * 0.85, 2)
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 3)
-raft_jerk = =jerk_layer_0
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
+raft_airgap = 0.15
retraction_min_travel = 5
skin_overlap = 50
speed_print = 70
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 e4af6a3846..6e23de0aa7 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,14 +21,12 @@ 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_print = 25
machine_min_cool_heat_time_window = 15
multiple_mesh_overlap = 0
ooze_shield_angle = 40
prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
-raft_interface_thickness = =max(layer_height * 1.5, 0.225)
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 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 f26fcd025f..6ce295d546 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
@@ -19,8 +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
material_final_print_temperature = =material_print_temperature - 10
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 eeffba6de3..3bbbce3193 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_print = 25
layer_height = 0.2
machine_min_cool_heat_time_window = 15
material_final_print_temperature = =material_print_temperature - 10
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 e8802d28cc..0963636810 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_print = 25
layer_height = 0.15
machine_min_cool_heat_time_window = 15
material_final_print_temperature = =material_print_temperature - 10
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 45a2d6d896..714de20118 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_print = 25
layer_height = 0.06
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
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 f9dff14d6a..293fe24d6b 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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg
index 94e99ee79d..babf6f1306 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg
@@ -19,12 +19,7 @@ material_print_temperature = =default_material_print_temperature + 10
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
ooze_shield_angle = 40
-raft_acceleration = =acceleration_layer_0
-raft_airgap = =round(layer_height_0 * 0.85, 2)
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_jerk = =jerk_layer_0
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
+raft_airgap = 0.25
skin_overlap = 50
speed_layer_0 = =math.ceil(speed_print * 20 / 70)
switch_extruder_prime_speed = 30
diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg
index 054784226a..cbf61a838f 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg
@@ -19,12 +19,7 @@ material_print_temperature = =default_material_print_temperature + 5
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
ooze_shield_angle = 40
-raft_acceleration = =acceleration_layer_0
-raft_airgap = =round(layer_height_0 * 0.85, 2)
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_jerk = =jerk_layer_0
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
+raft_airgap = 0.25
skin_overlap = 50
speed_layer_0 = =math.ceil(speed_print * 20 / 70)
switch_extruder_prime_speed = 30
diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg
index b534a68129..31e1d559f3 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg
@@ -18,12 +18,7 @@ cool_min_speed = 15
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
ooze_shield_angle = 40
-raft_acceleration = =acceleration_layer_0
-raft_airgap = =round(layer_height_0 * 0.85, 2)
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_jerk = =jerk_layer_0
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
+raft_airgap = 0.25
skin_overlap = 50
speed_layer_0 = =math.ceil(speed_print * 20 / 70)
switch_extruder_prime_speed = 30
diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg
index e3e027a62b..761ab7d56d 100644
--- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg
@@ -18,12 +18,7 @@ cool_min_speed = 12
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
ooze_shield_angle = 40
-raft_acceleration = =acceleration_layer_0
-raft_airgap = =round(layer_height_0 * 0.85, 2)
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_jerk = =jerk_layer_0
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
+raft_airgap = 0.25
skin_overlap = 50
speed_layer_0 = =math.ceil(speed_print * 20 / 70)
switch_extruder_prime_speed = 30
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 48393099d2..8627ccd4a3 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_print = 25
layer_height = 0.2
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -36,7 +35,6 @@ ooze_shield_angle = 40
prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
-raft_interface_thickness = =max(layer_height * 1.5, 0.225)
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 5ecbe7b8cd..1119e3e7ac 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_print = 25
layer_height = 0.15
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -34,7 +33,6 @@ ooze_shield_angle = 40
prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
-raft_interface_thickness = =max(layer_height * 1.5, 0.225)
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 aff9a53cd7..5cfe7b7d62 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_print = 25
layer_height = 0.06
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
@@ -36,7 +35,6 @@ ooze_shield_angle = 40
prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
-raft_interface_thickness = =max(layer_height * 1.5, 0.225)
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 948e1a5180..8f471a9507 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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
@@ -33,7 +32,6 @@ ooze_shield_angle = 40
prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
-raft_interface_thickness = =max(layer_height * 1.5, 0.225)
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 95ec7d97a8..b0e27707f6 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
@@ -21,8 +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
layer_height = 0.2
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
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 e6a7d11f43..04fe8cfe38 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
@@ -21,8 +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
layer_height = 0.15
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
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 06256a73dc..6f9ee5672b 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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
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 bac7a7b48b..8f018c5aa5 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
@@ -15,7 +15,6 @@ variant = AA 0.4
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
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 6f2a606ac2..956f955055 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_print = 25
layer_height = 0.2
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.5
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 9747894cf6..592916489d 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_print = 25
layer_height = 0.15
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.5
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 c27f3ced54..5d00904dca 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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg
index 5013bcb3f8..a171427548 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg
@@ -19,11 +19,7 @@ machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
ooze_shield_angle = 40
prime_tower_enable = True
-raft_acceleration = =acceleration_layer_0
-raft_airgap = =round(layer_height_0 * 0.85, 2)
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
+raft_airgap = 0.45
support_angle = 70
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg
index fb59a2aa76..e80a6c73fd 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg
@@ -20,11 +20,7 @@ machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
ooze_shield_angle = 40
prime_tower_enable = True
-raft_acceleration = =acceleration_layer_0
-raft_airgap = =round(layer_height_0 * 0.85, 2)
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
+raft_airgap = 0.45
support_angle = 70
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg
index 23587d6a81..a2ca3a769f 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg
@@ -20,11 +20,7 @@ machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
ooze_shield_angle = 40
prime_tower_enable = True
-raft_acceleration = =acceleration_layer_0
-raft_airgap = =round(layer_height_0 * 0.85, 2)
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
+raft_airgap = 0.45
support_angle = 70
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg
index df89b2769b..4480855c43 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg
@@ -18,7 +18,6 @@ cool_fan_full_at_height = =layer_height_0 + 14 * layer_height
material_print_temperature = =default_material_print_temperature - 5
material_print_temperature_layer_0 = =material_print_temperature
raft_airgap = 0.5
-raft_margin = 15
skin_overlap = 0
speed_layer_0 = =math.ceil(speed_print * 15 / 50)
speed_print = 50
diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg
index 0532884c0e..757c716dad 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg
@@ -19,7 +19,6 @@ cool_fan_full_at_height = =layer_height_0 + 7 * layer_height
layer_height = 0.4
material_print_temperature_layer_0 = =material_print_temperature
raft_airgap = 0.5
-raft_margin = 15
skin_overlap = 0
speed_layer_0 = =math.ceil(speed_print * 15 / 50)
speed_print = 50
diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg
index 91f11ad52a..a8e3d3a957 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg
@@ -20,7 +20,6 @@ layer_height = 0.3
material_print_temperature = =default_material_print_temperature - 2
material_print_temperature_layer_0 = =material_print_temperature
raft_airgap = 0.5
-raft_margin = 15
skin_overlap = 0
speed_layer_0 = =math.ceil(speed_print * 15 / 50)
speed_print = 50
diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg
index bd6a63d912..3e9965034b 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg
@@ -23,7 +23,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg
index 138f2f1e4b..137e93d019 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg
@@ -24,8 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 15
prime_tower_enable = True
-raft_margin = 10
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 35 / 45)
diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg
index b69188646b..4afe312ac3 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg
@@ -24,7 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
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 6b0cabd0ea..ed79b9ab61 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
@@ -24,7 +24,6 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 10
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.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 0baec213e4..ad6ecd7a11 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
@@ -24,7 +24,6 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 20
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.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 05ea628527..a146ef9313 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
@@ -24,7 +24,6 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 15
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.5
diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg
index 569a214004..e05d0df6cb 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg
@@ -24,7 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 0
prime_tower_enable = False
-retract_at_layer_change = False
speed_print = 45
support_angle = 70
top_bottom_thickness = =layer_height * 6
diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg
index 85442a1a0e..7595124338 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg
@@ -24,8 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 5
prime_tower_enable = False
-raft_margin = 10
-retract_at_layer_change = False
speed_infill = =math.ceil(speed_print * 30 / 30)
speed_print = 30
speed_topbottom = =math.ceil(speed_print * 20 / 30)
diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg
index de029fef56..13166a25f1 100644
--- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg
@@ -25,7 +25,6 @@ material_initial_print_temperature = =max(-273.15, material_print_temperature -
material_print_temperature = =default_material_print_temperature + 5
material_print_temperature_layer_0 = =material_print_temperature
prime_tower_enable = False
-retract_at_layer_change = False
speed_infill = =math.ceil(speed_print * 30 / 35)
speed_topbottom = =math.ceil(speed_print * 20 / 35)
speed_wall = =math.ceil(speed_print * 25/ 35)
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 21ebf50a79..3e7242fea2 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
@@ -28,7 +28,6 @@ material_print_temperature_layer_0 = =material_print_temperature + 19
multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
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 bc910a1ae6..872c811411 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
@@ -29,7 +29,6 @@ material_print_temperature_layer_0 = =material_print_temperature +15
multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
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 3b8a6076de..d0e673c585 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
@@ -28,7 +28,6 @@ material_print_temperature_layer_0 = =material_print_temperature + 17
multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_Nylon_Normal_Quality.inst.cfg
index 671c079def..4e2114909a 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.25_Nylon_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_Nylon_Normal_Quality.inst.cfg
@@ -17,12 +17,7 @@ cool_min_speed = 12
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
ooze_shield_angle = 40
-raft_acceleration = =acceleration_layer_0
raft_airgap = 0.4
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 3)
-raft_jerk = =jerk_layer_0
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_min_travel = 5
skin_overlap = 50
speed_print = 70
@@ -31,6 +26,4 @@ speed_wall = =math.ceil(speed_print * 30 / 70)
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
-
-raft_surface_speed = 45
speed_layer_0 = 10
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 49ecf8eb7c..705b63ad02 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
@@ -20,15 +20,12 @@ 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
ooze_shield_angle = 40
prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
-raft_interface_thickness = =max(layer_height * 1.5, 0.225)
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_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg
index 8ae871f4fe..74c7370130 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_print = 25
machine_min_cool_heat_time_window = 15
material_bed_temperature_layer_0 = =material_bed_temperature + 5
material_final_print_temperature = =material_print_temperature - 10
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 35c97346bb..5d01e40230 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_print = 25
machine_min_cool_heat_time_window = 15
material_final_print_temperature = =material_print_temperature - 10
material_initial_print_temperature = =material_print_temperature - 5
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 e6270bd4c5..73ea3d5cea 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
@@ -17,8 +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
material_initial_print_temperature = =material_print_temperature - 5
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 ef8cb6847a..56ec94d871 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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
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 4f99061468..8fda5b84c6 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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Draft_Print.inst.cfg
index 5d04d3730c..a0c909af75 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Draft_Print.inst.cfg
@@ -18,16 +18,10 @@ material_print_temperature = =default_material_print_temperature + 10
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
ooze_shield_angle = 40
-raft_acceleration = =acceleration_layer_0
raft_airgap = 0.4
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_jerk = =jerk_layer_0
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
-switch_extruder_retraction_speeds = 40
-raft_surface_speed = 45
+switch_extruder_retraction_speeds = 40 \ No newline at end of file
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print.inst.cfg
index ee6b31d104..58b6f80f5d 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print.inst.cfg
@@ -18,16 +18,10 @@ material_print_temperature = =default_material_print_temperature + 5
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
ooze_shield_angle = 40
-raft_acceleration = =acceleration_layer_0
raft_airgap = 0.4
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_jerk = =jerk_layer_0
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
-switch_extruder_retraction_speeds = 40
-raft_surface_speed = 45
+switch_extruder_retraction_speeds = 40 \ No newline at end of file
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_High_Quality.inst.cfg
index 81fa776bba..0dd7ec5a0d 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_High_Quality.inst.cfg
@@ -17,16 +17,10 @@ cool_min_speed = 15
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
ooze_shield_angle = 40
-raft_acceleration = =acceleration_layer_0
raft_airgap = 0.4
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_jerk = =jerk_layer_0
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
-switch_extruder_retraction_speeds = 40
-raft_surface_speed = 45
+switch_extruder_retraction_speeds = 40 \ No newline at end of file
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality.inst.cfg
index 3b785f2999..8f17f79616 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality.inst.cfg
@@ -17,16 +17,10 @@ cool_min_speed = 12
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
ooze_shield_angle = 40
-raft_acceleration = =acceleration_layer_0
raft_airgap = 0.4
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_jerk = =jerk_layer_0
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
-raft_surface_speed = 45
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 a0fae041a4..c34bf1bfde 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
@@ -21,8 +21,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
machine_nozzle_heat_up_speed = 1.5
@@ -34,7 +32,6 @@ ooze_shield_angle = 40
prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
-raft_interface_thickness = =max(layer_height * 1.5, 0.225)
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 7b26bb0613..6e115a9c37 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
@@ -20,7 +20,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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
@@ -32,7 +31,6 @@ ooze_shield_angle = 40
prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
-raft_interface_thickness = =max(layer_height * 1.5, 0.225)
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 893fc789f2..b3f3aa6cd0 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
@@ -22,8 +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
machine_nozzle_heat_up_speed = 1.5
@@ -35,7 +33,6 @@ ooze_shield_angle = 40
prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
-raft_interface_thickness = =max(layer_height * 1.5, 0.225)
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 ef6fc99b12..eaf031fe52 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
@@ -21,8 +21,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
machine_nozzle_heat_up_speed = 1.5
@@ -33,7 +31,6 @@ ooze_shield_angle = 40
prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
-raft_interface_thickness = =max(layer_height * 1.5, 0.225)
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 2b12e3380b..d20c1303b8 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
@@ -34,5 +34,5 @@ top_bottom_thickness = 0.9
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
-raft_airgap = =0.25
+raft_airgap = 0.25
wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) \ No newline at end of file
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 7561336d15..d68e3dd779 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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
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 92fc11be1f..7eed793e6a 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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
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 b732c33d38..97c92f934c 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,8 +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_print = 25
-
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
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 a551417536..f2625cd9d7 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
@@ -15,7 +15,6 @@ variant = AA 0.4
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
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 1b508e3a23..2d05a15f3c 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
@@ -34,5 +34,5 @@ top_bottom_thickness = 1.2
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
-raft_airgap = =0.25
+raft_airgap = 0.25
wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) \ No newline at end of file
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 b912faa1b1..24ae39f8b1 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,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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
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 4069d1a9ad..468184028c 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,8 +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_print = 25
-
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
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 a91280d99e..333307e533 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
@@ -22,9 +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
machine_nozzle_heat_up_speed = 2.5
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Draft_Print.inst.cfg
index 2bc16834c5..e314a6080d 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Draft_Print.inst.cfg
@@ -18,4 +18,3 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
-retract_at_layer_change = False
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Superdraft_Print.inst.cfg
index ce0d107138..c983a4558c 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Superdraft_Print.inst.cfg
@@ -19,4 +19,3 @@ speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 37 / 50)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
speed_infill = =math.ceil(speed_print * 37 / 50)
-retract_at_layer_change = False
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Verydraft_Print.inst.cfg
index 1cceef1af6..199e80e9ac 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Verydraft_Print.inst.cfg
@@ -18,4 +18,3 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
-retract_at_layer_change = False
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Draft_Print.inst.cfg
index 0f436de811..09de59ba20 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Draft_Print.inst.cfg
@@ -21,11 +21,7 @@ machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
ooze_shield_angle = 40
prime_tower_enable = True
-raft_acceleration = =acceleration_layer_0
-raft_airgap = =round(layer_height_0 * 0.85, 2)
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
+raft_airgap = 0.45
support_angle = 70
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Superdraft_Print.inst.cfg
index b7a36e6c71..d6e11ca953 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Superdraft_Print.inst.cfg
@@ -21,11 +21,7 @@ machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
ooze_shield_angle = 40
prime_tower_enable = True
-raft_acceleration = =acceleration_layer_0
-raft_airgap = =round(layer_height_0 * 0.85, 2)
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
+raft_airgap = 0.45
support_angle = 70
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Verydraft_Print.inst.cfg
index 15d2fc250f..599789f528 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Verydraft_Print.inst.cfg
@@ -21,11 +21,7 @@ machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
ooze_shield_angle = 40
prime_tower_enable = True
-raft_acceleration = =acceleration_layer_0
-raft_airgap = =round(layer_height_0 * 0.85, 2)
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
+raft_airgap = 0.45
support_angle = 70
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg
index 27c05bc0c6..61d0cc5109 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg
@@ -20,7 +20,6 @@ cool_fan_full_at_height = =layer_height_0 + 14 * layer_height
material_print_temperature = =default_material_print_temperature - 5
material_print_temperature_layer_0 = =material_print_temperature
raft_airgap = 0.5
-raft_margin = 15
skin_overlap = 0
speed_layer_0 = =math.ceil(speed_print * 15 / 50)
speed_print = 50
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Superdraft_Print.inst.cfg
index 8182ee03e2..f441c0acac 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Superdraft_Print.inst.cfg
@@ -19,7 +19,6 @@ cool_fan_full_at_height = =layer_height_0 + 7 * layer_height
material_print_temperature_layer_0 = =material_print_temperature
raft_airgap = 0.5
-raft_margin = 15
skin_overlap = 0
speed_layer_0 = =math.ceil(speed_print * 15 / 50)
speed_print = 50
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Verydraft_Print.inst.cfg
index 0bbc14ae81..a044987670 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Verydraft_Print.inst.cfg
@@ -20,7 +20,6 @@ cool_fan_full_at_height = =layer_height_0 + 9 * layer_height
material_print_temperature = =default_material_print_temperature - 2
material_print_temperature_layer_0 = =material_print_temperature
raft_airgap = 0.5
-raft_margin = 15
skin_overlap = 0
speed_layer_0 = =math.ceil(speed_print * 15 / 50)
speed_print = 50
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Draft_Print.inst.cfg
index 5321690d9c..60244f52af 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Draft_Print.inst.cfg
@@ -24,7 +24,6 @@ material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
support_angle = 70
top_bottom_thickness = =layer_height * 4
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Superdraft_Print.inst.cfg
index a559d0f912..a2e863cb8d 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Superdraft_Print.inst.cfg
@@ -22,10 +22,8 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 15
prime_tower_enable = True
-raft_margin = 10
support_angle = 70
top_bottom_thickness = =layer_height * 4
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 35 / 45)
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Verydraft_Print.inst.cfg
index 21425a4920..a67dc3be1b 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Verydraft_Print.inst.cfg
@@ -24,7 +24,6 @@ material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
support_angle = 70
top_bottom_thickness = =layer_height * 4
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
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 1a3f1cd850..e2904aa1e7 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
@@ -24,7 +24,6 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 10
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.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 5ecf58efb9..d4508c05c0 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
@@ -24,7 +24,6 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 20
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.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 ffaf2ffcbb..b68839785f 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
@@ -23,7 +23,6 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 15
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.5
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg
index aaa7981b3d..2c322c0565 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg
@@ -24,7 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 0
prime_tower_enable = False
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =round(speed_print * 35 / 45)
speed_wall = =round(speed_print * 40 / 45)
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg
index dfec5abf1b..3b47b687ab 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg
@@ -24,8 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 5
prime_tower_enable = False
-raft_margin = 10
-retract_at_layer_change = False
speed_infill = =math.ceil(speed_print * 30 / 30)
speed_print = 30
speed_topbottom = =math.ceil(speed_print * 20 / 30)
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg
index b9a4a05ec3..b024316179 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg
@@ -25,7 +25,6 @@ material_initial_print_temperature = =max(-273.15, material_print_temperature -
material_print_temperature = =default_material_print_temperature + 5
material_print_temperature_layer_0 = =material_print_temperature
prime_tower_enable = False
-retract_at_layer_change = False
speed_infill = =math.ceil(speed_print * 30 / 35)
speed_print = 35
speed_topbottom = =math.ceil(speed_print * 20 / 35)
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 f4d65fbe04..f611f7d17e 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
@@ -26,7 +26,6 @@ material_print_temperature_layer_0 = =material_print_temperature + 19
multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
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 c71889b1fd..e7d370cb8a 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
@@ -27,7 +27,6 @@ material_print_temperature_layer_0 = =material_print_temperature + 15
multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
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 a307bc96c6..f318034971 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
@@ -26,7 +26,6 @@ material_print_temperature_layer_0 = =material_print_temperature + 17
multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Draft_Print.inst.cfg
index 4cba6c87f4..1a4abc69eb 100644
--- a/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Draft_Print.inst.cfg
@@ -24,7 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Fast_Print.inst.cfg
index 70b93730d3..64640ddc5f 100644
--- a/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_PLA_Fast_Print.inst.cfg
@@ -24,7 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg
index 08bbc9125e..b80ecb7ed0 100644
--- a/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg
@@ -24,7 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg
index 4cb210bba3..1644b7d2ff 100644
--- a/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg
@@ -24,7 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg
index 1d3d811ba7..b06a514334 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg
@@ -18,12 +18,7 @@ cool_min_speed = 12
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
ooze_shield_angle = 40
-raft_acceleration = =acceleration_layer_0
-raft_airgap = =round(layer_height_0 * 0.85, 2)
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 3)
-raft_jerk = =jerk_layer_0
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
+raft_airgap = 0.15
retraction_min_travel = 5
skin_overlap = 50
speed_print = 70
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 21619933c7..abb891489e 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
@@ -20,14 +20,12 @@ 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_print = 25
machine_min_cool_heat_time_window = 15
multiple_mesh_overlap = 0
ooze_shield_angle = 40
prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
-raft_interface_thickness = =max(layer_height * 1.5, 0.225)
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_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg
index df673c641c..e49dce4989 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_print = 25
machine_min_cool_heat_time_window = 15
material_bed_temperature_layer_0 = =material_bed_temperature + 5
material_final_print_temperature = =material_print_temperature - 10
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 267a36d681..ecc8682f28 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_print = 25
machine_min_cool_heat_time_window = 15
material_final_print_temperature = =material_print_temperature - 10
material_initial_print_temperature = =material_print_temperature - 5
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 c493b0d445..fa3b571769 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_print = 25
machine_min_cool_heat_time_window = 15
material_final_print_temperature = =material_print_temperature - 10
material_initial_print_temperature = =material_print_temperature - 5
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 500f0a4428..26a8059fed 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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
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 ccedad12ec..1795b2086f 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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg
index de31626bc4..f0ced52d33 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg
@@ -18,16 +18,10 @@ material_print_temperature = =default_material_print_temperature + 10
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
ooze_shield_angle = 40
-raft_acceleration = =acceleration_layer_0
raft_airgap = 0.4
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_jerk = =jerk_layer_0
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
-raft_surface_speed = 45
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg
index 76637899fc..90fd37a5fb 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg
@@ -18,16 +18,10 @@ material_print_temperature = =default_material_print_temperature + 5
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
ooze_shield_angle = 40
-raft_acceleration = =acceleration_layer_0
raft_airgap = 0.4
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_jerk = =jerk_layer_0
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
-raft_surface_speed = 45
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg
index b0c2360339..c6a9e2b017 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg
@@ -17,16 +17,10 @@ cool_min_speed = 15
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
ooze_shield_angle = 40
-raft_acceleration = =acceleration_layer_0
raft_airgap = 0.4
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_jerk = =jerk_layer_0
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
-switch_extruder_retraction_speeds = 40
-raft_surface_speed = 45
+switch_extruder_retraction_speeds = 40 \ No newline at end of file
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg
index 4c1c0a1871..0b0ea1fb9f 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg
@@ -17,16 +17,10 @@ cool_min_speed = 12
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
ooze_shield_angle = 40
-raft_acceleration = =acceleration_layer_0
raft_airgap = 0.4
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_jerk = =jerk_layer_0
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
-switch_extruder_retraction_speeds = 40
-raft_surface_speed = 45
+switch_extruder_retraction_speeds = 40 \ No newline at end of file
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 11c316f5d6..d2926843a6 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
@@ -21,7 +21,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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
@@ -33,7 +32,6 @@ ooze_shield_angle = 40
prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
-raft_interface_thickness = =max(layer_height * 1.5, 0.225)
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 fd8f30f78f..3fa9480c24 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
@@ -20,7 +20,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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
@@ -32,7 +31,6 @@ ooze_shield_angle = 40
prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
-raft_interface_thickness = =max(layer_height * 1.5, 0.225)
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 c3cff67a2c..e574b8cca5 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
@@ -21,7 +21,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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
@@ -33,7 +32,6 @@ ooze_shield_angle = 40
prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
-raft_interface_thickness = =max(layer_height * 1.5, 0.225)
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 868de66c25..4103986e65 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
@@ -20,7 +20,6 @@ cool_min_speed = 5
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0.1
-jerk_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
@@ -31,7 +30,6 @@ ooze_shield_angle = 40
prime_tower_enable = True
prime_tower_wipe_enabled = True
raft_airgap = 0.25
-raft_interface_thickness = =max(layer_height * 1.5, 0.225)
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_PLA_VeryDraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print.inst.cfg
index 3b20559564..962f906e74 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
@@ -35,5 +35,5 @@ top_bottom_thickness = 0.9
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
-raft_airgap = =0.25
+raft_airgap = 0.25
wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) \ No newline at end of file
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 2bdd3801aa..082e20d372 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,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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
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 d1170be743..d98cbc9037 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,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_print = 25
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
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 76c7468d7e..ebc2639424 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,8 +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_print = 25
-
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
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 e1d45bbbc6..079a95b46c 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
@@ -15,7 +15,6 @@ variant = AA 0.4
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
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 bfb76f20c8..5150537256 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
@@ -34,5 +34,5 @@ top_bottom_thickness = 1.2
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
-raft_airgap = =0.25
+raft_airgap = 0.25
wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) \ No newline at end of file
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 7b2cba17cf..dc8fb80084 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,8 +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_print = 25
-
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
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 7f08f03b06..ed9a9e7756 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,8 +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_print = 25
-
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
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 c1c389efd2..61602c2e7b 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,8 +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_print = 25
-
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg
index 83957e6d0f..ee5dff1264 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg
@@ -18,4 +18,3 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
-retract_at_layer_change = False
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg
index 011a962d8d..8de9e328d9 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg
@@ -19,4 +19,3 @@ speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 37 / 50)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
speed_infill = =math.ceil(speed_print * 37 / 50)
-retract_at_layer_change = False
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg
index 910592f909..3255684648 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg
@@ -18,4 +18,3 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
-retract_at_layer_change = False
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg
index b7d767a40b..addfe52641 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg
@@ -19,11 +19,7 @@ machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
ooze_shield_angle = 40
prime_tower_enable = True
-raft_acceleration = =acceleration_layer_0
-raft_airgap = =round(layer_height_0 * 0.85, 2)
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
+raft_airgap = 0.45
support_angle = 70
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg
index 23b93082f6..aec980aa48 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg
@@ -19,11 +19,7 @@ machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
ooze_shield_angle = 40
prime_tower_enable = True
-raft_acceleration = =acceleration_layer_0
-raft_airgap = =round(layer_height_0 * 0.85, 2)
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
+raft_airgap = 0.45
support_angle = 70
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg
index a12ef5caf3..fc9d586503 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg
@@ -21,11 +21,7 @@ machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
ooze_shield_angle = 40
prime_tower_enable = True
-raft_acceleration = =acceleration_layer_0
-raft_airgap = =round(layer_height_0 * 0.85, 2)
-raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
-raft_margin = 10
-raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
+raft_airgap = 0.45
support_angle = 70
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg
index 8c762a2286..30877bf726 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg
@@ -20,7 +20,6 @@ cool_fan_full_at_height = =layer_height_0 + 14 * layer_height
material_print_temperature = =default_material_print_temperature - 5
material_print_temperature_layer_0 = =material_print_temperature
raft_airgap = 0.5
-raft_margin = 15
skin_overlap = 0
speed_layer_0 = =math.ceil(speed_print * 15 / 50)
speed_print = 50
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg
index b5b54af8ea..fd3ae94a9e 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg
@@ -19,7 +19,6 @@ cool_fan_full_at_height = =layer_height_0 + 7 * layer_height
material_print_temperature_layer_0 = =material_print_temperature
raft_airgap = 0.5
-raft_margin = 15
skin_overlap = 0
speed_layer_0 = =math.ceil(speed_print * 15 / 50)
speed_print = 50
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg
index 87f2af5e8f..6fe4bd5999 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg
@@ -18,7 +18,6 @@ cool_fan_full_at_height = =layer_height_0 + 9 * layer_height
material_print_temperature = =default_material_print_temperature - 2
material_print_temperature_layer_0 = =material_print_temperature
raft_airgap = 0.5
-raft_margin = 15
skin_overlap = 0
speed_layer_0 = =math.ceil(speed_print * 15 / 50)
speed_print = 50
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg
index b465c3d95c..5a75d250ae 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg
@@ -24,7 +24,6 @@ material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
support_angle = 70
top_bottom_thickness = =layer_height * 4
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg
index 0f2aa42b8d..7f1cf80f12 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg
@@ -22,10 +22,8 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 15
prime_tower_enable = True
-raft_margin = 10
support_angle = 70
top_bottom_thickness = =layer_height * 4
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 35 / 45)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg
index e6e1a9c718..9da869a34e 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg
@@ -24,7 +24,6 @@ material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
support_angle = 70
top_bottom_thickness = =layer_height * 4
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
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 0714319001..f3deb0b0f9 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
@@ -24,7 +24,6 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 10
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.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 9b669346eb..859f408ffb 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
@@ -24,7 +24,6 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 20
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.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 498a099bfb..85ca930444 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
@@ -23,7 +23,6 @@ multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
prime_tower_min_volume = 15
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 0.5
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg
index d0bbce15a0..d2d69e4870 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg
@@ -24,7 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 0
prime_tower_enable = False
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =round(speed_print * 35 / 45)
speed_wall = =round(speed_print * 40 / 45)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg
index 62a9b616b0..b298611623 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg
@@ -24,8 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 5
prime_tower_enable = False
-raft_margin = 10
-retract_at_layer_change = False
speed_infill = =math.ceil(speed_print * 30 / 30)
speed_print = 30
speed_topbottom = =math.ceil(speed_print * 20 / 30)
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg
index 48bbe5b568..1133c1c194 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg
@@ -25,7 +25,6 @@ material_initial_print_temperature = =max(-273.15, material_print_temperature -
material_print_temperature = =default_material_print_temperature + 5
material_print_temperature_layer_0 = =material_print_temperature
prime_tower_enable = False
-retract_at_layer_change = False
speed_infill = =math.ceil(speed_print * 30 / 35)
speed_print = 35
speed_topbottom = =math.ceil(speed_print * 20 / 35)
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 a6574f6eec..32351241f7 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
@@ -26,7 +26,6 @@ material_print_temperature_layer_0 = =material_print_temperature + 19
multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
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 eda3b32597..6e3732f812 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
@@ -27,7 +27,6 @@ material_print_temperature_layer_0 = =material_print_temperature + 15
multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
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 24eb4a0b06..ab43aa6af3 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
@@ -26,7 +26,6 @@ material_print_temperature_layer_0 = =material_print_temperature + 17
multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100
-retract_at_layer_change = False
retraction_count_max = 15
retraction_extra_prime_amount = 0.5
retraction_hop = 1.5
diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Draft_Print.inst.cfg
index a8bcf6d444..16d916f56a 100644
--- a/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Draft_Print.inst.cfg
@@ -24,7 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Fast_Print.inst.cfg
index ecffafed57..80e101c1a6 100644
--- a/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_PLA_Fast_Print.inst.cfg
@@ -24,7 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg
index 68da56447b..af5bb5b9b2 100644
--- a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg
@@ -24,7 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg
index 58e377a417..e2dbe4a511 100644
--- a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg
@@ -24,7 +24,6 @@ material_final_print_temperature = =max(-273.15, material_print_temperature - 15
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
-retract_at_layer_change = False
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.2_ABS_super.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.2_ABS_super.inst.cfg
new file mode 100644
index 0000000000..f99ae5b6b6
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.2_ABS_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_abs
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.2_ABS_ultra.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.2_ABS_ultra.inst.cfg
new file mode 100644
index 0000000000..98f0cec759
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.2_ABS_ultra.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Ultra Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = ultra
+material = generic_abs
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.2_PETG_super.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.2_PETG_super.inst.cfg
new file mode 100644
index 0000000000..46bd7ff59c
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.2_PETG_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_petg
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.2_PETG_ultra.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.2_PETG_ultra.inst.cfg
new file mode 100644
index 0000000000..c1ca8cdaec
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.2_PETG_ultra.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Ultra Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = ultra
+material = generic_petg
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.2_PLA_super.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.2_PLA_super.inst.cfg
new file mode 100644
index 0000000000..cd77d27698
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.2_PLA_super.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pla
+variant = 0.2mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.2_PLA_ultra.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.2_PLA_ultra.inst.cfg
new file mode 100644
index 0000000000..4ce7e57ab8
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.2_PLA_ultra.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Ultra Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = ultra
+material = generic_pla
+variant = 0.2mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_adaptive.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_adaptive.inst.cfg
new file mode 100644
index 0000000000..96491e5f33
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_abs
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_low.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_low.inst.cfg
new file mode 100644
index 0000000000..78c7d967bf
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_abs
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_standard.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_standard.inst.cfg
new file mode 100644
index 0000000000..b25bf07d6d
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_abs
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_super.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_super.inst.cfg
new file mode 100644
index 0000000000..5481bbb7fa
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.4_ABS_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_abs
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_adaptive.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_adaptive.inst.cfg
new file mode 100644
index 0000000000..40461e12bd
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_petg
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_low.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_low.inst.cfg
new file mode 100644
index 0000000000..6ab649f390
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_petg
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_standard.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_standard.inst.cfg
new file mode 100644
index 0000000000..fc39cfe622
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_petg
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_super.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_super.inst.cfg
new file mode 100644
index 0000000000..777f3bd180
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PETG_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_petg
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_adaptive.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_adaptive.inst.cfg
new file mode 100644
index 0000000000..4a39782cfe
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_adaptive.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_pla
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_low.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_low.inst.cfg
new file mode 100644
index 0000000000..0c0ee0e14d
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_low.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Low Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_pla
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_standard.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_standard.inst.cfg
new file mode 100644
index 0000000000..39dd4ce0cc
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_standard.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pla
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_super.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_super.inst.cfg
new file mode 100644
index 0000000000..6d3befd8ab
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.4_PLA_super.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pla
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.4_TPU_adaptive.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.4_TPU_adaptive.inst.cfg
new file mode 100644
index 0000000000..6d956519d1
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.4_TPU_adaptive.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_tpu
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.4_TPU_standard.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.4_TPU_standard.inst.cfg
new file mode 100644
index 0000000000..3374e6a002
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.4_TPU_standard.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_tpu
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.4_TPU_super.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.4_TPU_super.inst.cfg
new file mode 100644
index 0000000000..f52548b0eb
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.4_TPU_super.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_tpu
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.6_ABS_standard.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.6_ABS_standard.inst.cfg
new file mode 100644
index 0000000000..c39987c4e6
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.6_ABS_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_abs
+variant = 0.6mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.6_PETG_standard.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.6_PETG_standard.inst.cfg
new file mode 100644
index 0000000000..b4f13906f6
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.6_PETG_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_petg
+variant = 0.6mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.6_PLA_draft.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.6_PLA_draft.inst.cfg
new file mode 100644
index 0000000000..4bd83c9467
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.6_PLA_draft.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_pla
+variant = 0.6mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.6_PLA_low.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.6_PLA_low.inst.cfg
new file mode 100644
index 0000000000..35810aec66
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.6_PLA_low.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Low Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_pla
+variant = 0.6mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.6_PLA_standard.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.6_PLA_standard.inst.cfg
new file mode 100644
index 0000000000..9fdce8acb6
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.6_PLA_standard.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pla
+variant = 0.6mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.6_TPU_standard.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.6_TPU_standard.inst.cfg
new file mode 100644
index 0000000000..4214a1084c
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.6_TPU_standard.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_tpu
+variant = 0.6mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.8_ABS_draft.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.8_ABS_draft.inst.cfg
new file mode 100644
index 0000000000..a5c6a69ab6
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.8_ABS_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_abs
+variant = 0.8mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.8_PETG_draft.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.8_PETG_draft.inst.cfg
new file mode 100644
index 0000000000..f8acd86c0a
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.8_PETG_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_petg
+variant = 0.8mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.8_PLA_draft.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.8_PLA_draft.inst.cfg
new file mode 100644
index 0000000000..d4c0d0d998
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.8_PLA_draft.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_pla
+variant = 0.8mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_0.8_TPU_draft.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_0.8_TPU_draft.inst.cfg
new file mode 100644
index 0000000000..b17d0c9130
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_0.8_TPU_draft.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_tpu
+variant = 0.8mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_global_adaptive.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_global_adaptive.inst.cfg
new file mode 100644
index 0000000000..749bbc7a7d
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_global_adaptive.inst.cfg
@@ -0,0 +1,19 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+weight = -2
+global_quality = True
+
+[values]
+layer_height = 0.16
+layer_height_0 = 0.20
+top_bottom_thickness = =layer_height_0+layer_height*4
+wall_thickness = =line_width*3
+support_interface_height = =layer_height*6
+adaptive_layer_height_enabled = true
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_global_draft.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_global_draft.inst.cfg
new file mode 100644
index 0000000000..6d1beff1ec
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_global_draft.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+weight = -5
+global_quality = True
+
+[values]
+layer_height = 0.32
+layer_height_0 = 0.32
+top_bottom_thickness = =layer_height_0+layer_height*3
+wall_thickness = =line_width*2
+support_interface_height = =layer_height*4
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_global_low.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_global_low.inst.cfg
new file mode 100644
index 0000000000..a6610dcad4
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_global_low.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+version = 4
+name = Low Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+weight = -4
+global_quality = True
+
+[values]
+layer_height = 0.28
+layer_height_0 = 0.28
+top_bottom_thickness = =layer_height_0+layer_height*3
+wall_thickness = =line_width*2
+support_interface_height = =layer_height*4
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_global_standard.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_global_standard.inst.cfg
new file mode 100644
index 0000000000..e577d3f20a
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_global_standard.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+weight = -3
+global_quality = True
+
+[values]
+layer_height = 0.2
+layer_height_0 = 0.2
+top_bottom_thickness = =layer_height_0+layer_height*3
+wall_thickness = =line_width*3
+support_interface_height = =layer_height*5
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_global_super.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_global_super.inst.cfg
new file mode 100644
index 0000000000..4355434c6a
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_global_super.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+weight = -1
+global_quality = True
+
+[values]
+layer_height = 0.12
+layer_height_0 = 0.12
+top_bottom_thickness = =layer_height_0+layer_height*6
+wall_thickness = =line_width*3
+support_interface_height = =layer_height*8
diff --git a/resources/quality/vivedino/trex2plus/trex2plus_global_ultra.inst.cfg b/resources/quality/vivedino/trex2plus/trex2plus_global_ultra.inst.cfg
new file mode 100644
index 0000000000..98cc762a68
--- /dev/null
+++ b/resources/quality/vivedino/trex2plus/trex2plus_global_ultra.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+version = 4
+name = Ultra Quality
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = ultra
+weight = 0
+global_quality = True
+
+[values]
+layer_height = 0.08
+layer_height_0 = 0.12
+top_bottom_thickness = =layer_height_0+layer_height*10
+wall_thickness = =line_width*3
+support_interface_height = =layer_height*12
diff --git a/resources/quality/vivedino/trex3/trex3_0.2_ABS_super.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.2_ABS_super.inst.cfg
new file mode 100644
index 0000000000..c7a0b6b9bb
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.2_ABS_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_abs
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vivedino/trex3/trex3_0.2_ABS_ultra.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.2_ABS_ultra.inst.cfg
new file mode 100644
index 0000000000..aa52a8ae49
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.2_ABS_ultra.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Ultra Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = ultra
+material = generic_abs
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vivedino/trex3/trex3_0.2_PETG_super.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.2_PETG_super.inst.cfg
new file mode 100644
index 0000000000..b465c69bf6
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.2_PETG_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_petg
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vivedino/trex3/trex3_0.2_PETG_ultra.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.2_PETG_ultra.inst.cfg
new file mode 100644
index 0000000000..c7d5a6cc27
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.2_PETG_ultra.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Ultra Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = ultra
+material = generic_petg
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vivedino/trex3/trex3_0.2_PLA_super.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.2_PLA_super.inst.cfg
new file mode 100644
index 0000000000..852182aff7
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.2_PLA_super.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pla
+variant = 0.2mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex3/trex3_0.2_PLA_ultra.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.2_PLA_ultra.inst.cfg
new file mode 100644
index 0000000000..69c24a35b3
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.2_PLA_ultra.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Ultra Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = ultra
+material = generic_pla
+variant = 0.2mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex3/trex3_0.4_ABS_adaptive.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.4_ABS_adaptive.inst.cfg
new file mode 100644
index 0000000000..29cdecbf6e
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.4_ABS_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_abs
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex3/trex3_0.4_ABS_low.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.4_ABS_low.inst.cfg
new file mode 100644
index 0000000000..7ea9d32ef7
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.4_ABS_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_abs
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex3/trex3_0.4_ABS_standard.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.4_ABS_standard.inst.cfg
new file mode 100644
index 0000000000..efa77a35c4
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.4_ABS_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_abs
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex3/trex3_0.4_ABS_super.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.4_ABS_super.inst.cfg
new file mode 100644
index 0000000000..94fe6aaffe
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.4_ABS_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_abs
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex3/trex3_0.4_PETG_adaptive.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.4_PETG_adaptive.inst.cfg
new file mode 100644
index 0000000000..c733acc63a
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.4_PETG_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_petg
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex3/trex3_0.4_PETG_low.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.4_PETG_low.inst.cfg
new file mode 100644
index 0000000000..23e2890a9f
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.4_PETG_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_petg
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex3/trex3_0.4_PETG_standard.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.4_PETG_standard.inst.cfg
new file mode 100644
index 0000000000..81bb778563
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.4_PETG_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_petg
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex3/trex3_0.4_PETG_super.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.4_PETG_super.inst.cfg
new file mode 100644
index 0000000000..bc71d9fc30
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.4_PETG_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_petg
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vivedino/trex3/trex3_0.4_PLA_adaptive.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.4_PLA_adaptive.inst.cfg
new file mode 100644
index 0000000000..5ffc041592
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.4_PLA_adaptive.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_pla
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex3/trex3_0.4_PLA_low.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.4_PLA_low.inst.cfg
new file mode 100644
index 0000000000..9dc6038f71
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.4_PLA_low.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Low Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_pla
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex3/trex3_0.4_PLA_standard.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.4_PLA_standard.inst.cfg
new file mode 100644
index 0000000000..e943c737ec
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.4_PLA_standard.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pla
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex3/trex3_0.4_PLA_super.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.4_PLA_super.inst.cfg
new file mode 100644
index 0000000000..9f21138eaa
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.4_PLA_super.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pla
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex3/trex3_0.4_TPU_adaptive.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.4_TPU_adaptive.inst.cfg
new file mode 100644
index 0000000000..3fcfe4fc0d
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.4_TPU_adaptive.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_tpu
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex3/trex3_0.4_TPU_standard.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.4_TPU_standard.inst.cfg
new file mode 100644
index 0000000000..0d7a47db26
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.4_TPU_standard.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_tpu
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex3/trex3_0.4_TPU_super.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.4_TPU_super.inst.cfg
new file mode 100644
index 0000000000..5ac8c78775
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.4_TPU_super.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_tpu
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex3/trex3_0.6_ABS_standard.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.6_ABS_standard.inst.cfg
new file mode 100644
index 0000000000..255fc6a027
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.6_ABS_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_abs
+variant = 0.6mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vivedino/trex3/trex3_0.6_PETG_standard.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.6_PETG_standard.inst.cfg
new file mode 100644
index 0000000000..7aa80259c3
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.6_PETG_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_petg
+variant = 0.6mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vivedino/trex3/trex3_0.6_PLA_draft.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.6_PLA_draft.inst.cfg
new file mode 100644
index 0000000000..79243dffc6
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.6_PLA_draft.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_pla
+variant = 0.6mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex3/trex3_0.6_PLA_low.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.6_PLA_low.inst.cfg
new file mode 100644
index 0000000000..a7a6ca0ff4
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.6_PLA_low.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Low Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_pla
+variant = 0.6mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex3/trex3_0.6_PLA_standard.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.6_PLA_standard.inst.cfg
new file mode 100644
index 0000000000..2adc9d9df2
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.6_PLA_standard.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pla
+variant = 0.6mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex3/trex3_0.6_TPU_standard.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.6_TPU_standard.inst.cfg
new file mode 100644
index 0000000000..3f9d1b4357
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.6_TPU_standard.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_tpu
+variant = 0.6mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex3/trex3_0.8_ABS_draft.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.8_ABS_draft.inst.cfg
new file mode 100644
index 0000000000..aa4f49fded
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.8_ABS_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_abs
+variant = 0.8mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vivedino/trex3/trex3_0.8_PETG_draft.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.8_PETG_draft.inst.cfg
new file mode 100644
index 0000000000..18c0196048
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.8_PETG_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_petg
+variant = 0.8mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vivedino/trex3/trex3_0.8_PLA_draft.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.8_PLA_draft.inst.cfg
new file mode 100644
index 0000000000..1807b92ec0
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.8_PLA_draft.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_pla
+variant = 0.8mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex3/trex3_0.8_TPU_draft.inst.cfg b/resources/quality/vivedino/trex3/trex3_0.8_TPU_draft.inst.cfg
new file mode 100644
index 0000000000..c61b71e642
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_0.8_TPU_draft.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_tpu
+variant = 0.8mm Nozzle
+
+[values]
diff --git a/resources/quality/vivedino/trex3/trex3_global_adaptive.inst.cfg b/resources/quality/vivedino/trex3/trex3_global_adaptive.inst.cfg
new file mode 100644
index 0000000000..acd544c611
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_global_adaptive.inst.cfg
@@ -0,0 +1,19 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+weight = -2
+global_quality = True
+
+[values]
+layer_height = 0.16
+layer_height_0 = 0.20
+top_bottom_thickness = =layer_height_0+layer_height*4
+wall_thickness = =line_width*3
+support_interface_height = =layer_height*6
+adaptive_layer_height_enabled = true
diff --git a/resources/quality/vivedino/trex3/trex3_global_draft.inst.cfg b/resources/quality/vivedino/trex3/trex3_global_draft.inst.cfg
new file mode 100644
index 0000000000..fbb8559ca1
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_global_draft.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+weight = -5
+global_quality = True
+
+[values]
+layer_height = 0.32
+layer_height_0 = 0.32
+top_bottom_thickness = =layer_height_0+layer_height*3
+wall_thickness = =line_width*2
+support_interface_height = =layer_height*4
diff --git a/resources/quality/vivedino/trex3/trex3_global_low.inst.cfg b/resources/quality/vivedino/trex3/trex3_global_low.inst.cfg
new file mode 100644
index 0000000000..b0d02b9202
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_global_low.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+version = 4
+name = Low Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+weight = -4
+global_quality = True
+
+[values]
+layer_height = 0.28
+layer_height_0 = 0.28
+top_bottom_thickness = =layer_height_0+layer_height*3
+wall_thickness = =line_width*2
+support_interface_height = =layer_height*4
diff --git a/resources/quality/vivedino/trex3/trex3_global_standard.inst.cfg b/resources/quality/vivedino/trex3/trex3_global_standard.inst.cfg
new file mode 100644
index 0000000000..eba6690e88
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_global_standard.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+weight = -3
+global_quality = True
+
+[values]
+layer_height = 0.2
+layer_height_0 = 0.2
+top_bottom_thickness = =layer_height_0+layer_height*3
+wall_thickness = =line_width*3
+support_interface_height = =layer_height*5
diff --git a/resources/quality/vivedino/trex3/trex3_global_super.inst.cfg b/resources/quality/vivedino/trex3/trex3_global_super.inst.cfg
new file mode 100644
index 0000000000..5e440bfd03
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_global_super.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+version = 4
+name = Super Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+weight = -1
+global_quality = True
+
+[values]
+layer_height = 0.12
+layer_height_0 = 0.12
+top_bottom_thickness = =layer_height_0+layer_height*6
+wall_thickness = =line_width*3
+support_interface_height = =layer_height*8
diff --git a/resources/quality/vivedino/trex3/trex3_global_ultra.inst.cfg b/resources/quality/vivedino/trex3/trex3_global_ultra.inst.cfg
new file mode 100644
index 0000000000..219d13b6dc
--- /dev/null
+++ b/resources/quality/vivedino/trex3/trex3_global_ultra.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+version = 4
+name = Ultra Quality
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = ultra
+weight = 0
+global_quality = True
+
+[values]
+layer_height = 0.08
+layer_height_0 = 0.12
+top_bottom_thickness = =layer_height_0+layer_height*10
+wall_thickness = =line_width*3
+support_interface_height = =layer_height*12
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.2_ABS_super.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.2_ABS_super.inst.cfg
new file mode 100644
index 0000000000..1172d8936e
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.2_ABS_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_abs
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.2_ABS_ultra.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.2_ABS_ultra.inst.cfg
new file mode 100644
index 0000000000..0edb3cc21e
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.2_ABS_ultra.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Ultra Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = ultra
+material = generic_abs
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_adaptive.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_adaptive.inst.cfg
new file mode 100644
index 0000000000..4e0838328b
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_abs
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_low.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_low.inst.cfg
new file mode 100644
index 0000000000..b7e74e6828
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_abs
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_standard.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_standard.inst.cfg
new file mode 100644
index 0000000000..ffb06a5ed5
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_abs
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_super.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_super.inst.cfg
new file mode 100644
index 0000000000..096008f445
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.3_ABS_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_abs
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_adaptive.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_adaptive.inst.cfg
new file mode 100644
index 0000000000..44330c66ff
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_abs
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_low.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_low.inst.cfg
new file mode 100644
index 0000000000..db55af0707
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_abs
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_standard.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_standard.inst.cfg
new file mode 100644
index 0000000000..c900d791dc
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_abs
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_super.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_super.inst.cfg
new file mode 100644
index 0000000000..dee4930c45
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.4_ABS_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_abs
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_adaptive.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_adaptive.inst.cfg
new file mode 100644
index 0000000000..62503a0e57
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_abs
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_low.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_low.inst.cfg
new file mode 100644
index 0000000000..3893a57516
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_abs
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_standard.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_standard.inst.cfg
new file mode 100644
index 0000000000..074f737974
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_abs
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_super.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_super.inst.cfg
new file mode 100644
index 0000000000..d38191adf6
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.5_ABS_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_abs
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.6_ABS_standard.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.6_ABS_standard.inst.cfg
new file mode 100644
index 0000000000..ff2a7be6f8
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.6_ABS_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_abs
+variant = 0.6mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vzbot/base/ABS/vzbot_0.8_ABS_draft.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_0.8_ABS_draft.inst.cfg
new file mode 100644
index 0000000000..f9f87c4bde
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_0.8_ABS_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_abs
+variant = 0.8mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vzbot/base/ABS/vzbot_1.0_ABS_draft.inst.cfg b/resources/quality/vzbot/base/ABS/vzbot_1.0_ABS_draft.inst.cfg
new file mode 100644
index 0000000000..49acfd6c32
--- /dev/null
+++ b/resources/quality/vzbot/base/ABS/vzbot_1.0_ABS_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_abs
+variant = 1.0mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.2_PC_super.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.2_PC_super.inst.cfg
new file mode 100644
index 0000000000..d81e378b7e
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.2_PC_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pc
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.2_PC_ultra.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.2_PC_ultra.inst.cfg
new file mode 100644
index 0000000000..0138d8a2b1
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.2_PC_ultra.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Ultra Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = ultra
+material = generic_pc
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.3_PC_adaptive.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.3_PC_adaptive.inst.cfg
new file mode 100644
index 0000000000..b05b418263
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.3_PC_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_pc
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.3_PC_low.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.3_PC_low.inst.cfg
new file mode 100644
index 0000000000..9ef0d4a9d5
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.3_PC_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_pc
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.3_PC_standard.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.3_PC_standard.inst.cfg
new file mode 100644
index 0000000000..ce4fa4ec3b
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.3_PC_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pc
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.3_PC_super.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.3_PC_super.inst.cfg
new file mode 100644
index 0000000000..bccbe5fd30
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.3_PC_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pc
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.4_PC_adaptive.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.4_PC_adaptive.inst.cfg
new file mode 100644
index 0000000000..007bf4a739
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.4_PC_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_pc
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.4_PC_low.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.4_PC_low.inst.cfg
new file mode 100644
index 0000000000..258b44c446
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.4_PC_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_pc
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.4_PC_standard.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.4_PC_standard.inst.cfg
new file mode 100644
index 0000000000..066563b61e
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.4_PC_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pc
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.4_PC_super.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.4_PC_super.inst.cfg
new file mode 100644
index 0000000000..4064f8105d
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.4_PC_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pc
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.5_PC_adaptive.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.5_PC_adaptive.inst.cfg
new file mode 100644
index 0000000000..d05afb5d20
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.5_PC_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_pc
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.5_PC_low.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.5_PC_low.inst.cfg
new file mode 100644
index 0000000000..237b0f5143
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.5_PC_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_pc
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.5_PC_standard.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.5_PC_standard.inst.cfg
new file mode 100644
index 0000000000..5a80deba10
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.5_PC_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pc
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.5_PC_super.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.5_PC_super.inst.cfg
new file mode 100644
index 0000000000..274d9a325d
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.5_PC_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pc
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.6_PC_standard.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.6_PC_standard.inst.cfg
new file mode 100644
index 0000000000..24f08de191
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.6_PC_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pc
+variant = 0.6mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vzbot/base/PC/vzbot_0.8_PC_draft.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_0.8_PC_draft.inst.cfg
new file mode 100644
index 0000000000..4b677368fc
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_0.8_PC_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_pc
+variant = 0.8mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vzbot/base/PC/vzbot_1.0_PC_draft.inst.cfg b/resources/quality/vzbot/base/PC/vzbot_1.0_PC_draft.inst.cfg
new file mode 100644
index 0000000000..e50c5f689f
--- /dev/null
+++ b/resources/quality/vzbot/base/PC/vzbot_1.0_PC_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_pc
+variant = 1.0mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.2_PETG_super.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.2_PETG_super.inst.cfg
new file mode 100644
index 0000000000..04d751e946
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.2_PETG_super.inst.cfg
@@ -0,0 +1,17 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_petg
+variant = 0.2mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*8
+#retraction_extra_prime_amount = 0.5
+
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.2_PETG_ultra.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.2_PETG_ultra.inst.cfg
new file mode 100644
index 0000000000..476c1d668b
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.2_PETG_ultra.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Ultra Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = ultra
+material = generic_petg
+variant = 0.2mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*8
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_adaptive.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_adaptive.inst.cfg
new file mode 100644
index 0000000000..a06d17c654
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_adaptive.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_petg
+variant = 0.3mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_low.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_low.inst.cfg
new file mode 100644
index 0000000000..d6ee8ad833
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_low.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_petg
+variant = 0.3mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_standard.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_standard.inst.cfg
new file mode 100644
index 0000000000..043ba4c6c9
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_standard.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_petg
+variant = 0.3mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_super.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_super.inst.cfg
new file mode 100644
index 0000000000..9d4c369e21
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.3_PETG_super.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_petg
+variant = 0.3mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_adaptive.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_adaptive.inst.cfg
new file mode 100644
index 0000000000..9fdd362428
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_adaptive.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_petg
+variant = 0.4mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_low.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_low.inst.cfg
new file mode 100644
index 0000000000..235f85aac9
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_low.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_petg
+variant = 0.4mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_standard.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_standard.inst.cfg
new file mode 100644
index 0000000000..5d7cbd0316
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_standard.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_petg
+variant = 0.4mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_super.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_super.inst.cfg
new file mode 100644
index 0000000000..9bd75af91e
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.4_PETG_super.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_petg
+variant = 0.4mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_adaptive.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_adaptive.inst.cfg
new file mode 100644
index 0000000000..2c81e446cd
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_adaptive.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_petg
+variant = 0.5mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_low.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_low.inst.cfg
new file mode 100644
index 0000000000..9ac33529c2
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_low.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_petg
+variant = 0.5mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_standard.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_standard.inst.cfg
new file mode 100644
index 0000000000..041afa5a51
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_standard.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_petg
+variant = 0.5mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_super.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_super.inst.cfg
new file mode 100644
index 0000000000..1774c159c8
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.5_PETG_super.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_petg
+variant = 0.5mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.6_PETG_standard.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.6_PETG_standard.inst.cfg
new file mode 100644
index 0000000000..b8bb0b9c2e
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.6_PETG_standard.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_petg
+variant = 0.6mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*3
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PETG/vzbot_0.8_PETG_draft.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_0.8_PETG_draft.inst.cfg
new file mode 100644
index 0000000000..6743af5426
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_0.8_PETG_draft.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_petg
+variant = 0.8mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*3
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PETG/vzbot_1.0_PETG_draft.inst.cfg b/resources/quality/vzbot/base/PETG/vzbot_1.0_PETG_draft.inst.cfg
new file mode 100644
index 0000000000..2d5ce7738a
--- /dev/null
+++ b/resources/quality/vzbot/base/PETG/vzbot_1.0_PETG_draft.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_petg
+variant = 1.0mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*3
+#retraction_extra_prime_amount = 0.5
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.2_PLA_super.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.2_PLA_super.inst.cfg
new file mode 100644
index 0000000000..33a189c97a
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.2_PLA_super.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pla
+variant = 0.2mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.2_PLA_ultra.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.2_PLA_ultra.inst.cfg
new file mode 100644
index 0000000000..bdb0837012
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.2_PLA_ultra.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Ultra Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = ultra
+material = generic_pla
+variant = 0.2mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_adaptive.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_adaptive.inst.cfg
new file mode 100644
index 0000000000..e3b1f21133
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_adaptive.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_pla
+variant = 0.3mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_low.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_low.inst.cfg
new file mode 100644
index 0000000000..5c10f5fe44
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_low.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_pla
+variant = 0.3mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_standard.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_standard.inst.cfg
new file mode 100644
index 0000000000..31cc0964cc
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_standard.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pla
+variant = 0.3mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_super.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_super.inst.cfg
new file mode 100644
index 0000000000..db65a7a5fd
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.3_PLA_super.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pla
+variant = 0.3mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_adaptive.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_adaptive.inst.cfg
new file mode 100644
index 0000000000..5168a91040
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_adaptive.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_pla
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_low.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_low.inst.cfg
new file mode 100644
index 0000000000..fb1bc859aa
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_low.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_pla
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_standard.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_standard.inst.cfg
new file mode 100644
index 0000000000..dbc0304fb1
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_standard.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pla
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_super.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_super.inst.cfg
new file mode 100644
index 0000000000..5d7ed6eda2
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.4_PLA_super.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pla
+variant = 0.4mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_adaptive.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_adaptive.inst.cfg
new file mode 100644
index 0000000000..1f34441e00
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_adaptive.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_pla
+variant = 0.5mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_low.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_low.inst.cfg
new file mode 100644
index 0000000000..600905790b
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_low.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_pla
+variant = 0.5mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_standard.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_standard.inst.cfg
new file mode 100644
index 0000000000..9beb4f15ed
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_standard.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pla
+variant = 0.5mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_super.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_super.inst.cfg
new file mode 100644
index 0000000000..df89cc112f
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.5_PLA_super.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pla
+variant = 0.5mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.6_PLA_draft.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.6_PLA_draft.inst.cfg
new file mode 100644
index 0000000000..ea70262be7
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.6_PLA_draft.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_pla
+variant = 0.6mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.6_PLA_low.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.6_PLA_low.inst.cfg
new file mode 100644
index 0000000000..7b2de73fb6
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.6_PLA_low.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_pla
+variant = 0.6mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.6_PLA_standard.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.6_PLA_standard.inst.cfg
new file mode 100644
index 0000000000..0cf308feed
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.6_PLA_standard.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pla
+variant = 0.6mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_0.8_PLA_draft.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_0.8_PLA_draft.inst.cfg
new file mode 100644
index 0000000000..f57384d4f8
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_0.8_PLA_draft.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_pla
+variant = 0.8mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PLA/vzbot_1.0_PLA_draft.inst.cfg b/resources/quality/vzbot/base/PLA/vzbot_1.0_PLA_draft.inst.cfg
new file mode 100644
index 0000000000..a8ff4828cf
--- /dev/null
+++ b/resources/quality/vzbot/base/PLA/vzbot_1.0_PLA_draft.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_pla
+variant = 1.0mm Nozzle
+
+[values]
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.2_PVA_super.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.2_PVA_super.inst.cfg
new file mode 100644
index 0000000000..44cd9ab901
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.2_PVA_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pva
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.2_PVA_ultra.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.2_PVA_ultra.inst.cfg
new file mode 100644
index 0000000000..da03a40dbc
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.2_PVA_ultra.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Ultra Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = ultra
+material = generic_pva
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_adaptive.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_adaptive.inst.cfg
new file mode 100644
index 0000000000..8d123ae44a
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_pva
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_low.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_low.inst.cfg
new file mode 100644
index 0000000000..028c68fc97
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_pva
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_standard.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_standard.inst.cfg
new file mode 100644
index 0000000000..430edb0ef4
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pva
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_super.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_super.inst.cfg
new file mode 100644
index 0000000000..be21aab260
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.3_PVA_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pva
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_adaptive.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_adaptive.inst.cfg
new file mode 100644
index 0000000000..e5cb2b3206
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_pva
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_low.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_low.inst.cfg
new file mode 100644
index 0000000000..8b40061ad9
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_pva
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_standard.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_standard.inst.cfg
new file mode 100644
index 0000000000..fd3ae9365e
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pva
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_super.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_super.inst.cfg
new file mode 100644
index 0000000000..51b94b8f25
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.4_PVA_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pva
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_adaptive.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_adaptive.inst.cfg
new file mode 100644
index 0000000000..71582cac63
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_pva
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_low.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_low.inst.cfg
new file mode 100644
index 0000000000..4d05101be5
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_pva
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_standard.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_standard.inst.cfg
new file mode 100644
index 0000000000..64033125b5
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pva
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_super.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_super.inst.cfg
new file mode 100644
index 0000000000..cf53742dd9
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.5_PVA_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_pva
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.6_PVA_standard.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.6_PVA_standard.inst.cfg
new file mode 100644
index 0000000000..fcd17e7c77
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.6_PVA_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_pva
+variant = 0.6mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vzbot/base/PVA/vzbot_0.8_PVA_draft.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_0.8_PVA_draft.inst.cfg
new file mode 100644
index 0000000000..b38d437bb6
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_0.8_PVA_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_pva
+variant = 0.8mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vzbot/base/PVA/vzbot_1.0_PVA_draft.inst.cfg b/resources/quality/vzbot/base/PVA/vzbot_1.0_PVA_draft.inst.cfg
new file mode 100644
index 0000000000..ef83c1e707
--- /dev/null
+++ b/resources/quality/vzbot/base/PVA/vzbot_1.0_PVA_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_pva
+variant = 1.0mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vzbot/base/TPU/vzbot_0.3_TPU_adaptive.inst.cfg b/resources/quality/vzbot/base/TPU/vzbot_0.3_TPU_adaptive.inst.cfg
new file mode 100644
index 0000000000..9ca773979e
--- /dev/null
+++ b/resources/quality/vzbot/base/TPU/vzbot_0.3_TPU_adaptive.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_tpu
+variant = 0.3mm Nozzle
+
+[values]
+retraction_enable = False
+speed_print = 150
diff --git a/resources/quality/vzbot/base/TPU/vzbot_0.3_TPU_standard.inst.cfg b/resources/quality/vzbot/base/TPU/vzbot_0.3_TPU_standard.inst.cfg
new file mode 100644
index 0000000000..db460cc2ae
--- /dev/null
+++ b/resources/quality/vzbot/base/TPU/vzbot_0.3_TPU_standard.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_tpu
+variant = 0.3mm Nozzle
+
+[values]
+retraction_enable = False
+speed_print = 150
diff --git a/resources/quality/vzbot/base/TPU/vzbot_0.3_TPU_super.inst.cfg b/resources/quality/vzbot/base/TPU/vzbot_0.3_TPU_super.inst.cfg
new file mode 100644
index 0000000000..d19f4e96ea
--- /dev/null
+++ b/resources/quality/vzbot/base/TPU/vzbot_0.3_TPU_super.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_tpu
+variant = 0.3mm Nozzle
+
+[values]
+retraction_enable = False
+speed_print = 150
diff --git a/resources/quality/vzbot/base/TPU/vzbot_0.4_TPU_adaptive.inst.cfg b/resources/quality/vzbot/base/TPU/vzbot_0.4_TPU_adaptive.inst.cfg
new file mode 100644
index 0000000000..4d40a7a6ac
--- /dev/null
+++ b/resources/quality/vzbot/base/TPU/vzbot_0.4_TPU_adaptive.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_tpu
+variant = 0.4mm Nozzle
+
+[values]
+retraction_enable = False
+speed_print = 150
diff --git a/resources/quality/vzbot/base/TPU/vzbot_0.4_TPU_standard.inst.cfg b/resources/quality/vzbot/base/TPU/vzbot_0.4_TPU_standard.inst.cfg
new file mode 100644
index 0000000000..e3ba8d9aa2
--- /dev/null
+++ b/resources/quality/vzbot/base/TPU/vzbot_0.4_TPU_standard.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_tpu
+variant = 0.4mm Nozzle
+
+[values]
+retraction_enable = False
+speed_print = 150
diff --git a/resources/quality/vzbot/base/TPU/vzbot_0.4_TPU_super.inst.cfg b/resources/quality/vzbot/base/TPU/vzbot_0.4_TPU_super.inst.cfg
new file mode 100644
index 0000000000..26d5dd1e9e
--- /dev/null
+++ b/resources/quality/vzbot/base/TPU/vzbot_0.4_TPU_super.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_tpu
+variant = 0.4mm Nozzle
+
+[values]
+retraction_enable = False
+speed_print = 150
diff --git a/resources/quality/vzbot/base/TPU/vzbot_0.5_TPU_adaptive.inst.cfg b/resources/quality/vzbot/base/TPU/vzbot_0.5_TPU_adaptive.inst.cfg
new file mode 100644
index 0000000000..14a2dce709
--- /dev/null
+++ b/resources/quality/vzbot/base/TPU/vzbot_0.5_TPU_adaptive.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_tpu
+variant = 0.5mm Nozzle
+
+[values]
+retraction_enable = False
+speed_print = 150
diff --git a/resources/quality/vzbot/base/TPU/vzbot_0.5_TPU_standard.inst.cfg b/resources/quality/vzbot/base/TPU/vzbot_0.5_TPU_standard.inst.cfg
new file mode 100644
index 0000000000..e139231910
--- /dev/null
+++ b/resources/quality/vzbot/base/TPU/vzbot_0.5_TPU_standard.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_tpu
+variant = 0.5mm Nozzle
+
+[values]
+retraction_enable = False
+speed_print = 150
diff --git a/resources/quality/vzbot/base/TPU/vzbot_0.5_TPU_super.inst.cfg b/resources/quality/vzbot/base/TPU/vzbot_0.5_TPU_super.inst.cfg
new file mode 100644
index 0000000000..ac167cee50
--- /dev/null
+++ b/resources/quality/vzbot/base/TPU/vzbot_0.5_TPU_super.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_tpu
+variant = 0.5mm Nozzle
+
+[values]
+retraction_enable = False
+speed_print = 150
diff --git a/resources/quality/vzbot/base/TPU/vzbot_0.6_TPU_standard.inst.cfg b/resources/quality/vzbot/base/TPU/vzbot_0.6_TPU_standard.inst.cfg
new file mode 100644
index 0000000000..c1b93cdb67
--- /dev/null
+++ b/resources/quality/vzbot/base/TPU/vzbot_0.6_TPU_standard.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_tpu
+variant = 0.6mm Nozzle
+
+[values]
+retraction_enable = False
+speed_print = 150
diff --git a/resources/quality/vzbot/base/TPU/vzbot_0.8_TPU_draft.inst.cfg b/resources/quality/vzbot/base/TPU/vzbot_0.8_TPU_draft.inst.cfg
new file mode 100644
index 0000000000..26fac84680
--- /dev/null
+++ b/resources/quality/vzbot/base/TPU/vzbot_0.8_TPU_draft.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_tpu
+variant = 0.8mm Nozzle
+
+[values]
+retraction_enable = False
+speed_print = 150
diff --git a/resources/quality/vzbot/base/TPU/vzbot_1.0_TPU_draft.inst.cfg b/resources/quality/vzbot/base/TPU/vzbot_1.0_TPU_draft.inst.cfg
new file mode 100644
index 0000000000..3e0586e119
--- /dev/null
+++ b/resources/quality/vzbot/base/TPU/vzbot_1.0_TPU_draft.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_tpu
+variant = 1.0mm Nozzle
+
+[values]
+retraction_enable = False
+speed_print = 150
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.2_nylon_super.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.2_nylon_super.inst.cfg
new file mode 100644
index 0000000000..e6a89b1c87
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.2_nylon_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_nylon
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.2_nylon_ultra.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.2_nylon_ultra.inst.cfg
new file mode 100644
index 0000000000..9c86dcd8b1
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.2_nylon_ultra.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Ultra Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = ultra
+material = generic_nylon
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_adaptive.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_adaptive.inst.cfg
new file mode 100644
index 0000000000..1a81dca16b
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_nylon
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_low.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_low.inst.cfg
new file mode 100644
index 0000000000..8aa09c3fad
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_nylon
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_standard.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_standard.inst.cfg
new file mode 100644
index 0000000000..f7686ef1e9
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_nylon
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_super.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_super.inst.cfg
new file mode 100644
index 0000000000..b9c5d88753
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.3_nylon_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_nylon
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_adaptive.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_adaptive.inst.cfg
new file mode 100644
index 0000000000..b50b782a2c
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_nylon
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_low.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_low.inst.cfg
new file mode 100644
index 0000000000..0cceeee6ba
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_nylon
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_standard.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_standard.inst.cfg
new file mode 100644
index 0000000000..23e7d27895
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_nylon
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_super.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_super.inst.cfg
new file mode 100644
index 0000000000..2f94a9aa13
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.4_nylon_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_nylon
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_adaptive.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_adaptive.inst.cfg
new file mode 100644
index 0000000000..ccd20b204d
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+material = generic_nylon
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_low.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_low.inst.cfg
new file mode 100644
index 0000000000..cba8ccba33
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+material = generic_nylon
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_standard.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_standard.inst.cfg
new file mode 100644
index 0000000000..964a50083b
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_nylon
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_super.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_super.inst.cfg
new file mode 100644
index 0000000000..f2c7dab429
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.5_nylon_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+material = generic_nylon
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.6_nylon_standard.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.6_nylon_standard.inst.cfg
new file mode 100644
index 0000000000..966e963d61
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.6_nylon_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+material = generic_nylon
+variant = 0.6mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vzbot/base/nylon/vzbot_0.8_nylon_draft.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_0.8_nylon_draft.inst.cfg
new file mode 100644
index 0000000000..82589b81ac
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_0.8_nylon_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_nylon
+variant = 0.8mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vzbot/base/nylon/vzbot_1.0_nylon_draft.inst.cfg b/resources/quality/vzbot/base/nylon/vzbot_1.0_nylon_draft.inst.cfg
new file mode 100644
index 0000000000..bd465e599e
--- /dev/null
+++ b/resources/quality/vzbot/base/nylon/vzbot_1.0_nylon_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+material = generic_nylon
+variant = 1.0mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
diff --git a/resources/quality/vzbot/base/vzbot_global_adaptive.inst.cfg b/resources/quality/vzbot/base/vzbot_global_adaptive.inst.cfg
new file mode 100644
index 0000000000..118d1d406d
--- /dev/null
+++ b/resources/quality/vzbot/base/vzbot_global_adaptive.inst.cfg
@@ -0,0 +1,19 @@
+[general]
+version = 4
+name = Dynamic Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = adaptive
+weight = -2
+global_quality = True
+
+[values]
+layer_height = 0.16
+layer_height_0 = 0.20
+top_bottom_thickness = =layer_height_0+layer_height*4
+wall_thickness = =line_width*3
+support_interface_height = =layer_height*6
+adaptive_layer_height_enabled = true
diff --git a/resources/quality/vzbot/base/vzbot_global_draft.inst.cfg b/resources/quality/vzbot/base/vzbot_global_draft.inst.cfg
new file mode 100644
index 0000000000..5aa89ed91b
--- /dev/null
+++ b/resources/quality/vzbot/base/vzbot_global_draft.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+version = 4
+name = Draft Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = draft
+weight = -5
+global_quality = True
+
+[values]
+layer_height = 0.32
+layer_height_0 = 0.32
+top_bottom_thickness = =layer_height_0+layer_height*3
+wall_thickness = =line_width*2
+support_interface_height = =layer_height*4
diff --git a/resources/quality/vzbot/base/vzbot_global_low.inst.cfg b/resources/quality/vzbot/base/vzbot_global_low.inst.cfg
new file mode 100644
index 0000000000..096f6243cc
--- /dev/null
+++ b/resources/quality/vzbot/base/vzbot_global_low.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+version = 4
+name = Low Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = low
+weight = -4
+global_quality = True
+
+[values]
+layer_height = 0.28
+layer_height_0 = 0.28
+top_bottom_thickness = =layer_height_0+layer_height*3
+wall_thickness = =line_width*2
+support_interface_height = =layer_height*4
diff --git a/resources/quality/vzbot/base/vzbot_global_standard.inst.cfg b/resources/quality/vzbot/base/vzbot_global_standard.inst.cfg
new file mode 100644
index 0000000000..1728f05845
--- /dev/null
+++ b/resources/quality/vzbot/base/vzbot_global_standard.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+version = 4
+name = Standard Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = standard
+weight = -3
+global_quality = True
+
+[values]
+layer_height = 0.2
+layer_height_0 = 0.2
+top_bottom_thickness = =layer_height_0+layer_height*3
+wall_thickness = =line_width*2
+support_interface_height = =layer_height*4
diff --git a/resources/quality/vzbot/base/vzbot_global_super.inst.cfg b/resources/quality/vzbot/base/vzbot_global_super.inst.cfg
new file mode 100644
index 0000000000..edaab249fd
--- /dev/null
+++ b/resources/quality/vzbot/base/vzbot_global_super.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+version = 4
+name = Super Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = super
+weight = -1
+global_quality = True
+
+[values]
+layer_height = 0.12
+layer_height_0 = 0.12
+top_bottom_thickness = =layer_height_0+layer_height*6
+wall_thickness = =line_width*3
+support_interface_height = =layer_height*8
diff --git a/resources/quality/vzbot/base/vzbot_global_ultra.inst.cfg b/resources/quality/vzbot/base/vzbot_global_ultra.inst.cfg
new file mode 100644
index 0000000000..b0be2d68d1
--- /dev/null
+++ b/resources/quality/vzbot/base/vzbot_global_ultra.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+version = 4
+name = Ultra Quality
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = quality
+quality_type = ultra
+weight = 0
+global_quality = True
+
+[values]
+layer_height = 0.08
+layer_height_0 = 0.12
+top_bottom_thickness = =layer_height_0+layer_height*10
+wall_thickness = =line_width*3
+support_interface_height = =layer_height*12
diff --git a/resources/texts/change_log.txt b/resources/texts/change_log.txt
index d68840bba8..c402291178 100644
--- a/resources/texts/change_log.txt
+++ b/resources/texts/change_log.txt
@@ -1,3 +1,10 @@
+[5.1.1]
+* New features:
+- Added support for the Ultimaker S3 and Ultimaker S5 updated mainbord
+
+
+<i>MacOS 10.15 is no longer supported. Technically this means Ultimaker will stop testing and developing for such operating systems. However, even though it is no longer supported, there is still a high likelihood the application keeps functioning.</i>
+
[5.1]
<i>For an overview of the new features in Cura 5.1, please watch <a href="https://youtu.be/7jetjsHLIvk">our video</a>.</i>
@@ -374,4 +381,4 @@ When searching in the settings visibility menu you will also search in the descr
[4.10]
-The release notes of versions &lt;= 4.10 can be found in our <a href="https://github.com/Ultimaker/Cura/releases?page=2">releases GitHub page</a>. \ No newline at end of file
+The release notes of versions &lt;= 4.10 can be found in our <a href="https://github.com/Ultimaker/Cura/releases?page=2">releases GitHub page</a>.
diff --git a/resources/variants/mingda_1000pro_0.2.inst.cfg b/resources/variants/mingda_1000pro_0.2.inst.cfg
new file mode 100644
index 0000000000..a3b44c9cd3
--- /dev/null
+++ b/resources/variants/mingda_1000pro_0.2.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.2mm Nozzle
+version = 4
+definition = mingda_1000pro
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.2
diff --git a/resources/variants/mingda_1000pro_0.3.inst.cfg b/resources/variants/mingda_1000pro_0.3.inst.cfg
new file mode 100644
index 0000000000..67b65d8e88
--- /dev/null
+++ b/resources/variants/mingda_1000pro_0.3.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.3mm Nozzle
+version = 4
+definition = mingda_1000pro
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.3
diff --git a/resources/variants/mingda_1000pro_0.4.inst.cfg b/resources/variants/mingda_1000pro_0.4.inst.cfg
new file mode 100644
index 0000000000..aa147e1904
--- /dev/null
+++ b/resources/variants/mingda_1000pro_0.4.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.4mm Nozzle
+version = 4
+definition = mingda_1000pro
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/mingda_1000pro_0.5.inst.cfg b/resources/variants/mingda_1000pro_0.5.inst.cfg
new file mode 100644
index 0000000000..8bce8b1212
--- /dev/null
+++ b/resources/variants/mingda_1000pro_0.5.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.5mm Nozzle
+version = 4
+definition = mingda_1000pro
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.5
diff --git a/resources/variants/mingda_1000pro_0.6.inst.cfg b/resources/variants/mingda_1000pro_0.6.inst.cfg
new file mode 100644
index 0000000000..e7e8282c61
--- /dev/null
+++ b/resources/variants/mingda_1000pro_0.6.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.6mm Nozzle
+version = 4
+definition = mingda_1000pro
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/mingda_1000pro_0.8.inst.cfg b/resources/variants/mingda_1000pro_0.8.inst.cfg
new file mode 100644
index 0000000000..d48fbd6f78
--- /dev/null
+++ b/resources/variants/mingda_1000pro_0.8.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.8mm Nozzle
+version = 4
+definition = mingda_1000pro
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/mingda_1000pro_1.0.inst.cfg b/resources/variants/mingda_1000pro_1.0.inst.cfg
new file mode 100644
index 0000000000..64169a9235
--- /dev/null
+++ b/resources/variants/mingda_1000pro_1.0.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 1.0mm Nozzle
+version = 4
+definition = mingda_1000pro
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.0
diff --git a/resources/variants/mingda_4h_0.2.inst.cfg b/resources/variants/mingda_4h_0.2.inst.cfg
new file mode 100644
index 0000000000..82979eaa2f
--- /dev/null
+++ b/resources/variants/mingda_4h_0.2.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.2mm Nozzle
+version = 4
+definition = mingda_4h
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.2
diff --git a/resources/variants/mingda_4h_0.3.inst.cfg b/resources/variants/mingda_4h_0.3.inst.cfg
new file mode 100644
index 0000000000..f5fc189870
--- /dev/null
+++ b/resources/variants/mingda_4h_0.3.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.3mm Nozzle
+version = 4
+definition = mingda_4h
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.3
diff --git a/resources/variants/mingda_4h_0.4.inst.cfg b/resources/variants/mingda_4h_0.4.inst.cfg
new file mode 100644
index 0000000000..7b7ff66695
--- /dev/null
+++ b/resources/variants/mingda_4h_0.4.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.4mm Nozzle
+version = 4
+definition = mingda_4h
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/mingda_4h_0.5.inst.cfg b/resources/variants/mingda_4h_0.5.inst.cfg
new file mode 100644
index 0000000000..07b5993ac3
--- /dev/null
+++ b/resources/variants/mingda_4h_0.5.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.5mm Nozzle
+version = 4
+definition = mingda_4h
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.5
diff --git a/resources/variants/mingda_4h_0.6.inst.cfg b/resources/variants/mingda_4h_0.6.inst.cfg
new file mode 100644
index 0000000000..13ca72144e
--- /dev/null
+++ b/resources/variants/mingda_4h_0.6.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.6mm Nozzle
+version = 4
+definition = mingda_4h
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/mingda_4h_0.8.inst.cfg b/resources/variants/mingda_4h_0.8.inst.cfg
new file mode 100644
index 0000000000..b9041d5a5f
--- /dev/null
+++ b/resources/variants/mingda_4h_0.8.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.8mm Nozzle
+version = 4
+definition = mingda_4h
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/mingda_4h_1.0.inst.cfg b/resources/variants/mingda_4h_1.0.inst.cfg
new file mode 100644
index 0000000000..c02f646bbe
--- /dev/null
+++ b/resources/variants/mingda_4h_1.0.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 1.0mm Nozzle
+version = 4
+definition = mingda_4h
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.0
diff --git a/resources/variants/mingda_600pro_0.2.inst.cfg b/resources/variants/mingda_600pro_0.2.inst.cfg
new file mode 100644
index 0000000000..5427e0b86d
--- /dev/null
+++ b/resources/variants/mingda_600pro_0.2.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.2mm Nozzle
+version = 4
+definition = mingda_600pro
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.2
diff --git a/resources/variants/mingda_600pro_0.3.inst.cfg b/resources/variants/mingda_600pro_0.3.inst.cfg
new file mode 100644
index 0000000000..31e8f8352b
--- /dev/null
+++ b/resources/variants/mingda_600pro_0.3.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.3mm Nozzle
+version = 4
+definition = mingda_600pro
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.3
diff --git a/resources/variants/mingda_600pro_0.4.inst.cfg b/resources/variants/mingda_600pro_0.4.inst.cfg
new file mode 100644
index 0000000000..a1a4d9826f
--- /dev/null
+++ b/resources/variants/mingda_600pro_0.4.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.4mm Nozzle
+version = 4
+definition = mingda_600pro
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/mingda_600pro_0.5.inst.cfg b/resources/variants/mingda_600pro_0.5.inst.cfg
new file mode 100644
index 0000000000..8d37c0040f
--- /dev/null
+++ b/resources/variants/mingda_600pro_0.5.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.5mm Nozzle
+version = 4
+definition = mingda_600pro
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.5
diff --git a/resources/variants/mingda_600pro_0.6.inst.cfg b/resources/variants/mingda_600pro_0.6.inst.cfg
new file mode 100644
index 0000000000..6ef72845ce
--- /dev/null
+++ b/resources/variants/mingda_600pro_0.6.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.6mm Nozzle
+version = 4
+definition = mingda_600pro
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/mingda_600pro_0.8.inst.cfg b/resources/variants/mingda_600pro_0.8.inst.cfg
new file mode 100644
index 0000000000..0282114c25
--- /dev/null
+++ b/resources/variants/mingda_600pro_0.8.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.8mm Nozzle
+version = 4
+definition = mingda_600pro
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/mingda_600pro_1.0.inst.cfg b/resources/variants/mingda_600pro_1.0.inst.cfg
new file mode 100644
index 0000000000..e9f90e72f6
--- /dev/null
+++ b/resources/variants/mingda_600pro_1.0.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 1.0mm Nozzle
+version = 4
+definition = mingda_600pro
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.0
diff --git a/resources/variants/mingda_6h_0.2.inst.cfg b/resources/variants/mingda_6h_0.2.inst.cfg
new file mode 100644
index 0000000000..d1a06c52c3
--- /dev/null
+++ b/resources/variants/mingda_6h_0.2.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.2mm Nozzle
+version = 4
+definition = mingda_6h
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.2
diff --git a/resources/variants/mingda_6h_0.3.inst.cfg b/resources/variants/mingda_6h_0.3.inst.cfg
new file mode 100644
index 0000000000..a6f08c9008
--- /dev/null
+++ b/resources/variants/mingda_6h_0.3.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.3mm Nozzle
+version = 4
+definition = mingda_6h
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.3
diff --git a/resources/variants/mingda_6h_0.4.inst.cfg b/resources/variants/mingda_6h_0.4.inst.cfg
new file mode 100644
index 0000000000..49a821f436
--- /dev/null
+++ b/resources/variants/mingda_6h_0.4.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.4mm Nozzle
+version = 4
+definition = mingda_6h
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/mingda_6h_0.5.inst.cfg b/resources/variants/mingda_6h_0.5.inst.cfg
new file mode 100644
index 0000000000..2878a0d31b
--- /dev/null
+++ b/resources/variants/mingda_6h_0.5.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.5mm Nozzle
+version = 4
+definition = mingda_6h
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.5
diff --git a/resources/variants/mingda_6h_0.6.inst.cfg b/resources/variants/mingda_6h_0.6.inst.cfg
new file mode 100644
index 0000000000..d0964923b2
--- /dev/null
+++ b/resources/variants/mingda_6h_0.6.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.6mm Nozzle
+version = 4
+definition = mingda_6h
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/mingda_6h_0.8.inst.cfg b/resources/variants/mingda_6h_0.8.inst.cfg
new file mode 100644
index 0000000000..c028e29567
--- /dev/null
+++ b/resources/variants/mingda_6h_0.8.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.8mm Nozzle
+version = 4
+definition = mingda_6h
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/mingda_6h_1.0.inst.cfg b/resources/variants/mingda_6h_1.0.inst.cfg
new file mode 100644
index 0000000000..6a3cabaa84
--- /dev/null
+++ b/resources/variants/mingda_6h_1.0.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 1.0mm Nozzle
+version = 4
+definition = mingda_6h
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.0
diff --git a/resources/variants/ultimaker3_aa0.25.inst.cfg b/resources/variants/ultimaker3_aa0.25.inst.cfg
index 79b8afeebd..15fc789f66 100644
--- a/resources/variants/ultimaker3_aa0.25.inst.cfg
+++ b/resources/variants/ultimaker3_aa0.25.inst.cfg
@@ -18,14 +18,6 @@ machine_nozzle_size = 0.25
machine_nozzle_tip_outer_diameter = 0.65
material_final_print_temperature = =material_print_temperature - 10
material_initial_print_temperature = =material_print_temperature - 5
-raft_airgap = 0.3
-raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
-raft_interface_line_spacing = =raft_interface_line_width + 0.2
-raft_interface_line_width = =line_width * 2
-raft_interface_thickness = =layer_height * 1.5
-raft_jerk = =jerk_print
-raft_margin = 15
-raft_surface_layers = 2
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 e46f7f8258..4adec1540b 100644
--- a/resources/variants/ultimaker3_aa0.8.inst.cfg
+++ b/resources/variants/ultimaker3_aa0.8.inst.cfg
@@ -30,7 +30,7 @@ material_initial_print_temperature = =material_print_temperature - 5
multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_wipe_enabled = True
-retract_at_layer_change = =not magic_spiralize
+raft_surface_layers = 1
retraction_amount = 6.5
retraction_hop = 2
retraction_hop_only_when_collides = True
diff --git a/resources/variants/ultimaker3_aa04.inst.cfg b/resources/variants/ultimaker3_aa04.inst.cfg
index 68a3a8768f..c81caf4164 100644
--- a/resources/variants/ultimaker3_aa04.inst.cfg
+++ b/resources/variants/ultimaker3_aa04.inst.cfg
@@ -13,15 +13,6 @@ brim_width = 7
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_id = AA 0.4
machine_nozzle_tip_outer_diameter = 1.0
-raft_acceleration = =acceleration_print
-raft_airgap = 0.3
-raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
-raft_interface_line_spacing = =raft_interface_line_width + 0.2
-raft_interface_line_width = =line_width * 2
-raft_interface_thickness = =layer_height * 1.5
-raft_jerk = =jerk_print
-raft_margin = 15
-raft_surface_layers = 2
retraction_amount = 6.5
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg
index fb09362b67..fd516c48b2 100644
--- a/resources/variants/ultimaker3_bb0.8.inst.cfg
+++ b/resources/variants/ultimaker3_bb0.8.inst.cfg
@@ -31,16 +31,6 @@ material_print_temperature = =default_material_print_temperature + 10
multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_wipe_enabled = True
-raft_acceleration = =acceleration_layer_0
-raft_airgap = 0
-raft_base_speed = 20
-raft_base_thickness = 0.3
-raft_interface_line_spacing = 0.5
-raft_interface_line_width = 0.5
-raft_interface_speed = 20
-raft_interface_thickness = 0.2
-raft_margin = 10
-raft_speed = 25
raft_surface_layers = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg
index 49837e24ea..05e91d0752 100644
--- a/resources/variants/ultimaker3_bb04.inst.cfg
+++ b/resources/variants/ultimaker3_bb04.inst.cfg
@@ -17,9 +17,6 @@ cool_fan_speed_max = =cool_fan_speed
machine_nozzle_heat_up_speed = 1.5
machine_nozzle_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0
-raft_base_speed = 20
-raft_interface_speed = 20
-raft_speed = 25
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 ea9b294671..e6a9abfe1e 100644
--- a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg
+++ b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg
@@ -18,14 +18,6 @@ machine_nozzle_size = 0.25
machine_nozzle_tip_outer_diameter = 0.65
material_final_print_temperature = =material_print_temperature - 10
material_initial_print_temperature = =material_print_temperature - 5
-raft_airgap = 0.3
-raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
-raft_interface_line_spacing = =raft_interface_line_width + 0.2
-raft_interface_line_width = =line_width * 2
-raft_interface_thickness = =layer_height * 1.5
-raft_jerk = =jerk_print
-raft_margin = 15
-raft_surface_layers = 2
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 4110cf8679..a215c4f455 100644
--- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg
+++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg
@@ -30,7 +30,7 @@ material_initial_print_temperature = =material_print_temperature - 5
multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_wipe_enabled = True
-retract_at_layer_change = True
+raft_surface_layers = 1
retraction_amount = 6.5
retraction_hop = 2
retraction_hop_only_when_collides = True
diff --git a/resources/variants/ultimaker3_extended_aa04.inst.cfg b/resources/variants/ultimaker3_extended_aa04.inst.cfg
index e928d24745..be07b56cdc 100644
--- a/resources/variants/ultimaker3_extended_aa04.inst.cfg
+++ b/resources/variants/ultimaker3_extended_aa04.inst.cfg
@@ -13,15 +13,6 @@ brim_width = 7
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_id = AA 0.4
machine_nozzle_tip_outer_diameter = 1.0
-raft_acceleration = =acceleration_print
-raft_airgap = 0.3
-raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
-raft_interface_line_spacing = =raft_interface_line_width + 0.2
-raft_interface_line_width = =line_width * 2
-raft_interface_thickness = =layer_height * 1.5
-raft_jerk = =jerk_print
-raft_margin = 15
-raft_surface_layers = 2
retraction_amount = 6.5
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg
index b1317d77f5..e052df63eb 100644
--- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg
+++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg
@@ -31,16 +31,6 @@ material_print_temperature = =default_material_print_temperature + 10
multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_wipe_enabled = True
-raft_acceleration = =acceleration_layer_0
-raft_airgap = 0
-raft_base_speed = 20
-raft_base_thickness = 0.3
-raft_interface_line_spacing = 0.5
-raft_interface_line_width = 0.5
-raft_interface_speed = 20
-raft_interface_thickness = 0.2
-raft_margin = 10
-raft_speed = 25
raft_surface_layers = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg
index 94a687c951..69968e721e 100644
--- a/resources/variants/ultimaker3_extended_bb04.inst.cfg
+++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg
@@ -17,9 +17,6 @@ cool_fan_speed_max = =cool_fan_speed
machine_nozzle_heat_up_speed = 1.5
machine_nozzle_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0
-raft_base_speed = 20
-raft_interface_speed = 20
-raft_speed = 25
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 c62479b084..059f3ece2f 100644
--- a/resources/variants/ultimaker_s3_aa0.25.inst.cfg
+++ b/resources/variants/ultimaker_s3_aa0.25.inst.cfg
@@ -18,15 +18,6 @@ machine_nozzle_size = 0.25
machine_nozzle_tip_outer_diameter = 0.65
material_final_print_temperature = =material_print_temperature - 10
material_initial_print_temperature = =material_print_temperature - 5
-raft_airgap = 0.3
-raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
-raft_interface_line_spacing = =raft_interface_line_width + 0.2
-raft_interface_line_width = =line_width * 2
-raft_interface_thickness = =layer_height * 1.5
-raft_jerk = =jerk_print
-raft_margin = 15
-raft_surface_layers = 2
-
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 c3ff805ba0..6e477f15e6 100644
--- a/resources/variants/ultimaker_s3_aa0.8.inst.cfg
+++ b/resources/variants/ultimaker_s3_aa0.8.inst.cfg
@@ -30,7 +30,7 @@ material_initial_print_temperature = =material_print_temperature - 5
multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_wipe_enabled = True
-retract_at_layer_change = =not magic_spiralize
+raft_surface_layers = 1
retraction_amount = 6.5
retraction_hop = 2
retraction_hop_only_when_collides = True
diff --git a/resources/variants/ultimaker_s3_aa04.inst.cfg b/resources/variants/ultimaker_s3_aa04.inst.cfg
index d69988c9f5..fb995635ff 100644
--- a/resources/variants/ultimaker_s3_aa04.inst.cfg
+++ b/resources/variants/ultimaker_s3_aa04.inst.cfg
@@ -13,15 +13,6 @@ brim_width = 7
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_id = AA 0.4
machine_nozzle_tip_outer_diameter = 1.0
-raft_acceleration = =acceleration_print
-raft_airgap = 0.3
-raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
-raft_interface_line_spacing = =raft_interface_line_width + 0.2
-raft_interface_line_width = =line_width * 2
-raft_interface_thickness = =layer_height * 1.5
-raft_jerk = =jerk_print
-raft_margin = 15
-raft_surface_layers = 2
retraction_amount = 6.5
retraction_min_travel = =line_width * 2
skin_overlap = 15
diff --git a/resources/variants/ultimaker_s3_bb0.8.inst.cfg b/resources/variants/ultimaker_s3_bb0.8.inst.cfg
index 123386d1b3..0305245e08 100644
--- a/resources/variants/ultimaker_s3_bb0.8.inst.cfg
+++ b/resources/variants/ultimaker_s3_bb0.8.inst.cfg
@@ -30,16 +30,6 @@ material_print_temperature = =default_material_print_temperature + 10
multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_wipe_enabled = True
-raft_acceleration = =acceleration_layer_0
-raft_airgap = 0
-raft_base_speed = 20
-raft_base_thickness = 0.3
-raft_interface_line_spacing = 0.5
-raft_interface_line_width = 0.5
-raft_interface_speed = 20
-raft_interface_thickness = 0.2
-raft_margin = 10
-raft_speed = 25
raft_surface_layers = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
diff --git a/resources/variants/ultimaker_s3_bb04.inst.cfg b/resources/variants/ultimaker_s3_bb04.inst.cfg
index 526f724eea..9c18713818 100644
--- a/resources/variants/ultimaker_s3_bb04.inst.cfg
+++ b/resources/variants/ultimaker_s3_bb04.inst.cfg
@@ -17,9 +17,6 @@ cool_fan_speed_max = =cool_fan_speed
machine_nozzle_heat_up_speed = 1.5
machine_nozzle_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0
-raft_base_speed = 20
-raft_interface_speed = 20
-raft_speed = 25
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 ce432577ac..0c22958955 100644
--- a/resources/variants/ultimaker_s3_cc04.inst.cfg
+++ b/resources/variants/ultimaker_s3_cc04.inst.cfg
@@ -13,15 +13,6 @@ brim_width = 7
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_id = CC 0.4
machine_nozzle_size = 0.4
-raft_acceleration = =acceleration_print
-raft_airgap = 0.3
-raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
-raft_interface_line_spacing = =raft_interface_line_width + 0.2
-raft_interface_line_width = =line_width * 2
-raft_interface_thickness = =layer_height * 1.5
-raft_jerk = =jerk_print
-raft_margin = 15
-raft_surface_layers = 2
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 69f478d128..caa1616d4d 100644
--- a/resources/variants/ultimaker_s3_cc06.inst.cfg
+++ b/resources/variants/ultimaker_s3_cc06.inst.cfg
@@ -13,15 +13,6 @@ brim_width = 7
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_id = CC 0.6
machine_nozzle_size = 0.6
-raft_acceleration = =acceleration_print
-raft_airgap = 0.3
-raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
-raft_interface_line_spacing = =raft_interface_line_width + 0.2
-raft_interface_line_width = =line_width * 2
-raft_interface_thickness = =layer_height * 1.5
-raft_jerk = =jerk_print
-raft_margin = 15
-raft_surface_layers = 2
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 664c252577..3b9d08b278 100644
--- a/resources/variants/ultimaker_s5_aa0.25.inst.cfg
+++ b/resources/variants/ultimaker_s5_aa0.25.inst.cfg
@@ -18,14 +18,6 @@ machine_nozzle_size = 0.25
machine_nozzle_tip_outer_diameter = 0.65
material_final_print_temperature = =material_print_temperature - 10
material_initial_print_temperature = =material_print_temperature - 5
-raft_airgap = 0.3
-raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
-raft_interface_line_spacing = =raft_interface_line_width + 0.2
-raft_interface_line_width = =line_width * 2
-raft_interface_thickness = =layer_height * 1.5
-raft_jerk = =jerk_print
-raft_margin = 15
-raft_surface_layers = 2
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 f2e3421b67..4433739430 100644
--- a/resources/variants/ultimaker_s5_aa0.8.inst.cfg
+++ b/resources/variants/ultimaker_s5_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
@@ -31,7 +30,7 @@ material_initial_print_temperature = =material_print_temperature - 5
multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_wipe_enabled = True
-retract_at_layer_change = =not magic_spiralize
+raft_surface_layers = 1
retraction_amount = 6.5
retraction_hop = 2
retraction_hop_only_when_collides = True
diff --git a/resources/variants/ultimaker_s5_aa04.inst.cfg b/resources/variants/ultimaker_s5_aa04.inst.cfg
index bb1c355321..4d361e51c8 100644
--- a/resources/variants/ultimaker_s5_aa04.inst.cfg
+++ b/resources/variants/ultimaker_s5_aa04.inst.cfg
@@ -13,15 +13,6 @@ brim_width = 7
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_id = AA 0.4
machine_nozzle_tip_outer_diameter = 1.0
-raft_acceleration = =acceleration_print
-raft_airgap = 0.3
-raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
-raft_interface_line_spacing = =raft_interface_line_width + 0.2
-raft_interface_line_width = =line_width * 2
-raft_interface_thickness = =layer_height * 1.5
-raft_jerk = =jerk_print
-raft_margin = 15
-raft_surface_layers = 2
retraction_amount = 6.5
retraction_min_travel = =line_width * 2
skin_overlap = 15
diff --git a/resources/variants/ultimaker_s5_bb0.8.inst.cfg b/resources/variants/ultimaker_s5_bb0.8.inst.cfg
index acab25be4e..3c2e9d14cb 100644
--- a/resources/variants/ultimaker_s5_bb0.8.inst.cfg
+++ b/resources/variants/ultimaker_s5_bb0.8.inst.cfg
@@ -30,16 +30,6 @@ material_print_temperature = =default_material_print_temperature + 10
multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_wipe_enabled = True
-raft_acceleration = =acceleration_layer_0
-raft_airgap = 0
-raft_base_speed = 20
-raft_base_thickness = 0.3
-raft_interface_line_spacing = 0.5
-raft_interface_line_width = 0.5
-raft_interface_speed = 20
-raft_interface_thickness = 0.2
-raft_margin = 10
-raft_speed = 25
raft_surface_layers = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
diff --git a/resources/variants/ultimaker_s5_bb04.inst.cfg b/resources/variants/ultimaker_s5_bb04.inst.cfg
index 18770b1c4d..6e378bbb82 100644
--- a/resources/variants/ultimaker_s5_bb04.inst.cfg
+++ b/resources/variants/ultimaker_s5_bb04.inst.cfg
@@ -17,9 +17,6 @@ cool_fan_speed_max = =cool_fan_speed
machine_nozzle_heat_up_speed = 1.5
machine_nozzle_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0
-raft_base_speed = 20
-raft_interface_speed = 20
-raft_speed = 25
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 36c9a0e417..174a4f7c62 100644
--- a/resources/variants/ultimaker_s5_cc04.inst.cfg
+++ b/resources/variants/ultimaker_s5_cc04.inst.cfg
@@ -13,15 +13,6 @@ brim_width = 7
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_id = CC 0.4
machine_nozzle_size = 0.4
-raft_acceleration = =acceleration_print
-raft_airgap = 0.3
-raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
-raft_interface_line_spacing = =raft_interface_line_width + 0.2
-raft_interface_line_width = =line_width * 2
-raft_interface_thickness = =layer_height * 1.5
-raft_jerk = =jerk_print
-raft_margin = 15
-raft_surface_layers = 2
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 c5ade7780f..e8934377a1 100644
--- a/resources/variants/ultimaker_s5_cc06.inst.cfg
+++ b/resources/variants/ultimaker_s5_cc06.inst.cfg
@@ -13,15 +13,6 @@ brim_width = 7
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_id = CC 0.6
machine_nozzle_size = 0.6
-raft_acceleration = =acceleration_print
-raft_airgap = 0.3
-raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
-raft_interface_line_spacing = =raft_interface_line_width + 0.2
-raft_interface_line_width = =line_width * 2
-raft_interface_thickness = =layer_height * 1.5
-raft_jerk = =jerk_print
-raft_margin = 15
-raft_surface_layers = 2
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
speed_infill = =speed_print
diff --git a/resources/variants/vivedino_trex2plus_0.2.inst.cfg b/resources/variants/vivedino_trex2plus_0.2.inst.cfg
new file mode 100644
index 0000000000..d2cfe24e79
--- /dev/null
+++ b/resources/variants/vivedino_trex2plus_0.2.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.2mm Nozzle
+version = 4
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.2
diff --git a/resources/variants/vivedino_trex2plus_0.4.inst.cfg b/resources/variants/vivedino_trex2plus_0.4.inst.cfg
new file mode 100644
index 0000000000..ca1590f819
--- /dev/null
+++ b/resources/variants/vivedino_trex2plus_0.4.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.4mm Nozzle
+version = 4
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/vivedino_trex2plus_0.6.inst.cfg b/resources/variants/vivedino_trex2plus_0.6.inst.cfg
new file mode 100644
index 0000000000..8a69ab0161
--- /dev/null
+++ b/resources/variants/vivedino_trex2plus_0.6.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.6mm Nozzle
+version = 4
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6 \ No newline at end of file
diff --git a/resources/variants/vivedino_trex2plus_0.8.inst.cfg b/resources/variants/vivedino_trex2plus_0.8.inst.cfg
new file mode 100644
index 0000000000..d9843d5497
--- /dev/null
+++ b/resources/variants/vivedino_trex2plus_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+name = 0.8mm Nozzle
+version = 4
+definition = vivedino_trex2plus
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/vivedino_trex3_0.2.inst.cfg b/resources/variants/vivedino_trex3_0.2.inst.cfg
new file mode 100644
index 0000000000..30548fd3d3
--- /dev/null
+++ b/resources/variants/vivedino_trex3_0.2.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.2mm Nozzle
+version = 4
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.2
diff --git a/resources/variants/vivedino_trex3_0.4.inst.cfg b/resources/variants/vivedino_trex3_0.4.inst.cfg
new file mode 100644
index 0000000000..fedd92b5a9
--- /dev/null
+++ b/resources/variants/vivedino_trex3_0.4.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.4mm Nozzle
+version = 4
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/vivedino_trex3_0.6.inst.cfg b/resources/variants/vivedino_trex3_0.6.inst.cfg
new file mode 100644
index 0000000000..6dd8ddf460
--- /dev/null
+++ b/resources/variants/vivedino_trex3_0.6.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.6mm Nozzle
+version = 4
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6 \ No newline at end of file
diff --git a/resources/variants/vivedino_trex3_0.8.inst.cfg b/resources/variants/vivedino_trex3_0.8.inst.cfg
new file mode 100644
index 0000000000..f207d55bf3
--- /dev/null
+++ b/resources/variants/vivedino_trex3_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+name = 0.8mm Nozzle
+version = 4
+definition = vivedino_trex3
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/vzbot_235_0.2.inst.cfg b/resources/variants/vzbot_235_0.2.inst.cfg
new file mode 100644
index 0000000000..5c2b903dda
--- /dev/null
+++ b/resources/variants/vzbot_235_0.2.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.2mm Nozzle
+version = 4
+definition = vzbot_235
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.2
diff --git a/resources/variants/vzbot_235_0.3.inst.cfg b/resources/variants/vzbot_235_0.3.inst.cfg
new file mode 100644
index 0000000000..4a5bced2d4
--- /dev/null
+++ b/resources/variants/vzbot_235_0.3.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.3mm Nozzle
+version = 4
+definition = vzbot_235
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.3
diff --git a/resources/variants/vzbot_235_0.4.inst.cfg b/resources/variants/vzbot_235_0.4.inst.cfg
new file mode 100644
index 0000000000..9ecffce8ed
--- /dev/null
+++ b/resources/variants/vzbot_235_0.4.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.4mm Nozzle
+version = 4
+definition = vzbot_235
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/vzbot_235_0.5.inst.cfg b/resources/variants/vzbot_235_0.5.inst.cfg
new file mode 100644
index 0000000000..893d31971f
--- /dev/null
+++ b/resources/variants/vzbot_235_0.5.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.5mm Nozzle
+version = 4
+definition = vzbot_235
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.5
diff --git a/resources/variants/vzbot_235_0.6.inst.cfg b/resources/variants/vzbot_235_0.6.inst.cfg
new file mode 100644
index 0000000000..817d15cc1e
--- /dev/null
+++ b/resources/variants/vzbot_235_0.6.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.6mm Nozzle
+version = 4
+definition = vzbot_235
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/vzbot_235_0.8.inst.cfg b/resources/variants/vzbot_235_0.8.inst.cfg
new file mode 100644
index 0000000000..2fc4f93e35
--- /dev/null
+++ b/resources/variants/vzbot_235_0.8.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.8mm Nozzle
+version = 4
+definition = vzbot_235
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/vzbot_235_1.0.inst.cfg b/resources/variants/vzbot_235_1.0.inst.cfg
new file mode 100644
index 0000000000..a7579393f4
--- /dev/null
+++ b/resources/variants/vzbot_235_1.0.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 1.0mm Nozzle
+version = 4
+definition = vzbot_235
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.0
diff --git a/resources/variants/vzbot_330_0.2.inst.cfg b/resources/variants/vzbot_330_0.2.inst.cfg
new file mode 100644
index 0000000000..8282d0b515
--- /dev/null
+++ b/resources/variants/vzbot_330_0.2.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.2mm Nozzle
+version = 4
+definition = vzbot_330
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.2
diff --git a/resources/variants/vzbot_330_0.3.inst.cfg b/resources/variants/vzbot_330_0.3.inst.cfg
new file mode 100644
index 0000000000..47aa3da7a4
--- /dev/null
+++ b/resources/variants/vzbot_330_0.3.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.3mm Nozzle
+version = 4
+definition = vzbot_330
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.3
diff --git a/resources/variants/vzbot_330_0.4.inst.cfg b/resources/variants/vzbot_330_0.4.inst.cfg
new file mode 100644
index 0000000000..0ab8682c14
--- /dev/null
+++ b/resources/variants/vzbot_330_0.4.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.4mm Nozzle
+version = 4
+definition = vzbot_330
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/vzbot_330_0.5.inst.cfg b/resources/variants/vzbot_330_0.5.inst.cfg
new file mode 100644
index 0000000000..2f6c769157
--- /dev/null
+++ b/resources/variants/vzbot_330_0.5.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.5mm Nozzle
+version = 4
+definition = vzbot_330
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.5
diff --git a/resources/variants/vzbot_330_0.6.inst.cfg b/resources/variants/vzbot_330_0.6.inst.cfg
new file mode 100644
index 0000000000..af6056193b
--- /dev/null
+++ b/resources/variants/vzbot_330_0.6.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.6mm Nozzle
+version = 4
+definition = vzbot_330
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/vzbot_330_0.8.inst.cfg b/resources/variants/vzbot_330_0.8.inst.cfg
new file mode 100644
index 0000000000..e3cc83dc14
--- /dev/null
+++ b/resources/variants/vzbot_330_0.8.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.8mm Nozzle
+version = 4
+definition = vzbot_330
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/vzbot_330_1.0.inst.cfg b/resources/variants/vzbot_330_1.0.inst.cfg
new file mode 100644
index 0000000000..941923dbc4
--- /dev/null
+++ b/resources/variants/vzbot_330_1.0.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 1.0mm Nozzle
+version = 4
+definition = vzbot_330
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.0
diff --git a/resources/variants/vzbot_base_0.2.inst.cfg b/resources/variants/vzbot_base_0.2.inst.cfg
new file mode 100644
index 0000000000..096566ba7e
--- /dev/null
+++ b/resources/variants/vzbot_base_0.2.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.2mm Nozzle
+version = 4
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.2
diff --git a/resources/variants/vzbot_base_0.3.inst.cfg b/resources/variants/vzbot_base_0.3.inst.cfg
new file mode 100644
index 0000000000..30846ff01e
--- /dev/null
+++ b/resources/variants/vzbot_base_0.3.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.3mm Nozzle
+version = 4
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.3
diff --git a/resources/variants/vzbot_base_0.4.inst.cfg b/resources/variants/vzbot_base_0.4.inst.cfg
new file mode 100644
index 0000000000..0a688f554f
--- /dev/null
+++ b/resources/variants/vzbot_base_0.4.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.4mm Nozzle
+version = 4
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/vzbot_base_0.5.inst.cfg b/resources/variants/vzbot_base_0.5.inst.cfg
new file mode 100644
index 0000000000..a0f1a78052
--- /dev/null
+++ b/resources/variants/vzbot_base_0.5.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.5mm Nozzle
+version = 4
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.5
diff --git a/resources/variants/vzbot_base_0.6.inst.cfg b/resources/variants/vzbot_base_0.6.inst.cfg
new file mode 100644
index 0000000000..f6b8b1e26e
--- /dev/null
+++ b/resources/variants/vzbot_base_0.6.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.6mm Nozzle
+version = 4
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/vzbot_base_0.8.inst.cfg b/resources/variants/vzbot_base_0.8.inst.cfg
new file mode 100644
index 0000000000..e8edeebd0c
--- /dev/null
+++ b/resources/variants/vzbot_base_0.8.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.8mm Nozzle
+version = 4
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/vzbot_base_1.0.inst.cfg b/resources/variants/vzbot_base_1.0.inst.cfg
new file mode 100644
index 0000000000..146af12ed5
--- /dev/null
+++ b/resources/variants/vzbot_base_1.0.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 1.0mm Nozzle
+version = 4
+definition = vzbot_base
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.0
diff --git a/resources/variants/vzbot_custom_0.2.inst.cfg b/resources/variants/vzbot_custom_0.2.inst.cfg
new file mode 100644
index 0000000000..0995beb6aa
--- /dev/null
+++ b/resources/variants/vzbot_custom_0.2.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.2mm Nozzle
+version = 4
+definition = vzbot_custom
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.2
diff --git a/resources/variants/vzbot_custom_0.3.inst.cfg b/resources/variants/vzbot_custom_0.3.inst.cfg
new file mode 100644
index 0000000000..e69dccecf5
--- /dev/null
+++ b/resources/variants/vzbot_custom_0.3.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.3mm Nozzle
+version = 4
+definition = vzbot_custom
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.3
diff --git a/resources/variants/vzbot_custom_0.4.inst.cfg b/resources/variants/vzbot_custom_0.4.inst.cfg
new file mode 100644
index 0000000000..92aa190807
--- /dev/null
+++ b/resources/variants/vzbot_custom_0.4.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.4mm Nozzle
+version = 4
+definition = vzbot_custom
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.4
diff --git a/resources/variants/vzbot_custom_0.5.inst.cfg b/resources/variants/vzbot_custom_0.5.inst.cfg
new file mode 100644
index 0000000000..eecc26ea6d
--- /dev/null
+++ b/resources/variants/vzbot_custom_0.5.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.5mm Nozzle
+version = 4
+definition = vzbot_custom
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.5
diff --git a/resources/variants/vzbot_custom_0.6.inst.cfg b/resources/variants/vzbot_custom_0.6.inst.cfg
new file mode 100644
index 0000000000..3b094400b2
--- /dev/null
+++ b/resources/variants/vzbot_custom_0.6.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.6mm Nozzle
+version = 4
+definition = vzbot_custom
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.6
diff --git a/resources/variants/vzbot_custom_0.8.inst.cfg b/resources/variants/vzbot_custom_0.8.inst.cfg
new file mode 100644
index 0000000000..d8a16a7e99
--- /dev/null
+++ b/resources/variants/vzbot_custom_0.8.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 0.8mm Nozzle
+version = 4
+definition = vzbot_custom
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 0.8
diff --git a/resources/variants/vzbot_custom_1.0.inst.cfg b/resources/variants/vzbot_custom_1.0.inst.cfg
new file mode 100644
index 0000000000..74b029a6a0
--- /dev/null
+++ b/resources/variants/vzbot_custom_1.0.inst.cfg
@@ -0,0 +1,12 @@
+[general]
+name = 1.0mm Nozzle
+version = 4
+definition = vzbot_custom
+
+[metadata]
+setting_version = 20
+type = variant
+hardware_type = nozzle
+
+[values]
+machine_nozzle_size = 1.0
diff --git a/run_coverage.py b/run_coverage.py
deleted file mode 100644
index 2fd60f9342..0000000000
--- a/run_coverage.py
+++ /dev/null
@@ -1,22 +0,0 @@
-import pytest
-from pathlib import Path
-
-# Small helper script to run the coverage of main code & all plugins
-
-path = Path("plugins")
-args = ["--cov" ,"cura" , "--cov-report", "html"]
-all_paths = []
-for p in path.glob('**/*'):
- if p.is_dir():
- if p.name in ["__pycache__", "tests"]:
- continue
- args.append("--cov")
- args.append(str(p))
- all_paths.append(str(p))
-
-for path in all_paths:
- args.append(path)
-args.append(".")
-args.append("-x")
-pytest.main(args)
-
diff --git a/run_mypy.py b/run_mypy.py
deleted file mode 100644
index 4486085064..0000000000
--- a/run_mypy.py
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/usr/bin/env python
-import os
-import sys
-from multiprocessing.dummy import Pool
-from functools import partial
-from subprocess import call
-
-# A quick Python implementation of unix 'where' command.
-def where(exe_name: str, search_path: str = os.getenv("PATH")) -> str:
- if search_path is None:
- search_path = ""
- paths = search_path.split(os.pathsep)
- result = ""
- print(" -> sys.executable location: %s" % sys.executable)
- sys_exec_dir = os.path.dirname(sys.executable)
- root_dir = os.path.dirname(sys_exec_dir)
- paths += [sys_exec_dir,
- os.path.join(root_dir, "bin"),
- os.path.join(root_dir, "scripts"),
- ]
- paths = set(paths)
-
- for path in sorted(paths):
- print(" -> Searching %s" % path)
- candidate_path = os.path.join(path, exe_name)
- if os.path.exists(candidate_path):
- result = candidate_path
- break
- return result
-
-
-def findModules(path):
- result = []
- for entry in os.scandir(path):
- if entry.is_dir() and os.path.exists(os.path.join(path, entry.name, "__init__.py")):
- result.append(entry.name)
- return result
-
-
-def main():
- # Find Uranium via the PYTHONPATH var
- uraniumUMPath = where("UM", os.getenv("PYTHONPATH"))
- if uraniumUMPath is None:
- uraniumUMPath = os.path.join("..", "Uranium")
- uraniumPath = os.path.dirname(uraniumUMPath)
-
- mypy_path_parts = [".", os.path.join(".", "plugins"), os.path.join(".", "plugins", "VersionUpgrade"),
- uraniumPath, os.path.join(uraniumPath, "stubs")]
- if sys.platform == "win32":
- os.putenv("MYPYPATH", ";".join(mypy_path_parts))
- else:
- os.putenv("MYPYPATH", ":".join(mypy_path_parts))
-
- # Mypy really needs to be run via its Python script otherwise it can't find its data files.
- mypy_exe_name = "mypy.exe" if sys.platform == "win32" else "mypy"
- mypy_exe_dir = where(mypy_exe_name)
- mypy_module = os.path.join(os.path.dirname(mypy_exe_dir), mypy_exe_name)
- print("Found mypy exe path: %s" % mypy_exe_dir)
- print("Found mypy module path: %s" % mypy_module)
-
- plugins = findModules("plugins")
- plugins.sort()
-
- mods = ["cura"] + plugins + findModules("plugins/VersionUpgrade")
- success_code = 0
-
- pool = Pool(2) # Run two commands at once
-
- if sys.platform == "win32":
- commands = ["%s -p %s --ignore-missing-imports" % (mypy_module, mod) for mod in mods]
- else:
- commands = ["%s %s -p %s --ignore-missing-imports" % (sys.executable, mypy_module, mod) for mod in mods]
-
- for i, returncode in enumerate(pool.imap(partial(call, shell=True), commands)):
- if returncode != 0:
- print("\nCommand {command} failed checking (code {errcode}). :(".format(command = commands[i], errcode = returncode))
- success_code = 1
- if success_code:
- print("MYPY check was completed, but did not pass")
- else:
- print("MYPY check was completed and passed with flying colors")
- return success_code
-
-if __name__ == "__main__":
- sys.exit(main()) \ No newline at end of file