From 4b73d1cc2cbfc286f9745d0a95347ece73bab376 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 1 Feb 2022 15:37:57 +0100 Subject: [PATCH 01/88] Add content_rating tags and fixes wrong url screenshot.png does not exist anymore on master use cura-logo.png instead Add content_rating tags according to https://hughsie.github.io/oars/index.html --- com.ultimaker.cura.appdata.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/com.ultimaker.cura.appdata.xml b/com.ultimaker.cura.appdata.xml index bdd25e5242..df5848ae47 100644 --- a/com.ultimaker.cura.appdata.xml +++ b/com.ultimaker.cura.appdata.xml @@ -25,9 +25,10 @@ - https://raw.githubusercontent.com/Ultimaker/Cura/master/screenshot.png + https://raw.githubusercontent.com/Ultimaker/Cura/4.13.1/cura-logo.PNG https://ultimaker.com/software/ultimaker-cura?utm_source=cura&utm_medium=software&utm_campaign=cura-update-linux Cura + From c3058b2d170beca0245645a9a93daa8f8162fe08 Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 16 Feb 2022 18:25:15 +0100 Subject: [PATCH 02/88] Appdata.xml use the logo of the master branch --- com.ultimaker.cura.appdata.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.ultimaker.cura.appdata.xml b/com.ultimaker.cura.appdata.xml index df5848ae47..53d37535d4 100644 --- a/com.ultimaker.cura.appdata.xml +++ b/com.ultimaker.cura.appdata.xml @@ -25,7 +25,7 @@ - https://raw.githubusercontent.com/Ultimaker/Cura/4.13.1/cura-logo.PNG + https://raw.githubusercontent.com/Ultimaker/Cura/master/cura-logo.PNG https://ultimaker.com/software/ultimaker-cura?utm_source=cura&utm_medium=software&utm_campaign=cura-update-linux From 35b08467cf471fd51965992bee4ea82e3f19738d Mon Sep 17 00:00:00 2001 From: Christopher Conroy <39525900+cbc02009@users.noreply.github.com> Date: Mon, 7 Mar 2022 07:52:56 -0500 Subject: [PATCH 03/88] fix retraction speed and amount for direct drive afterburner. --- resources/definitions/voron2_base.def.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/definitions/voron2_base.def.json b/resources/definitions/voron2_base.def.json index ec069b24fb..b9a1484ae7 100644 --- a/resources/definitions/voron2_base.def.json +++ b/resources/definitions/voron2_base.def.json @@ -98,8 +98,9 @@ "machine_start_gcode": { "default_value": "print_start" }, "machine_end_gcode": { "default_value": "print_end" }, "adhesion_type": { "default_value": "skirt" }, + "retraction_amount": { "default_value": 0.75 }, "skirt_brim_minimal_length": { "default_value": 550 }, - "retraction_speed": { "default_value": 80, "maximum_value_warning": 130 }, + "retraction_speed": { "default_value": 30, "maximum_value_warning": 130 }, "retraction_retract_speed": { "maximum_value_warning": 130 }, "retraction_prime_speed": { "value": "math.ceil(retraction_speed * 0.4)", "maximum_value_warning": 130 }, "retraction_hop_enabled": { "default_value": true }, From 9fdeffd564aab5f896bd6405176b7a8491c69303 Mon Sep 17 00:00:00 2001 From: "p.kuiper" Date: Thu, 31 Mar 2022 15:20:00 +0200 Subject: [PATCH 04/88] Better default for the experimental bridge settings. See PP-3 for details. Relates to PP-3 --- resources/definitions/ultimaker.def.json | 61 ++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 2f69ad27a7..cc28dfa526 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -82,6 +82,67 @@ }, "xy_offset": { "value": "-layer_height * 0.2" + }, + "bridge_settings_enabled": { + "value": false + }, + "bridge_wall_min_length": { + "value": 0 + }, + "bridge_skin_support_threshold": { + "value": 50 + }, + "bridge_sparse_infill_max_density": { + "value": 0 + }, + "bridge_wall_coast": { + "value": 0 + }, + "bridge_wall_speed": { + "value": "speed_wall" + }, + "bridge_wall_material_flow": { + "value": "wall_material_flow" + }, + "bridge_skin_speed": { + "value": "speed_topbottom" + }, + "bridge_skin_material_flow": { + "value": "skin_material_flow" + }, + "bridge_skin_density": { + "value": "80" + }, + "bridge_fan_speed": { + "value": "cool_fan_speed_max" + }, + "bridge_enable_more_layers": { + "value": false + }, + "bridge_skin_speed_2": { + "value": "speed_topbottom" + }, + "bridge_skin_material_flow_2": { + "value": "skin_material_flow" + }, + "bridge_skin_density_2": { + "value": 100 + }, + "bridge_fan_speed_2": { + "value": "cool_fan_speed_min" + }, + "bridge_skin_speed_3": { + "value": "speed_topbottom" + }, + "bridge_skin_material_flow_3": { + "value": "skin_material_flow" + }, + "bridge_skin_density_3": { + "value": 100 + }, + "bridge_fan_speed_3": { + "value": "cool_fan_speed_min" } + } } From 13a75827ce78e364773204e25fbc884a27c6e375 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Mon, 16 May 2022 21:49:09 +0200 Subject: [PATCH 05/88] Fix "view user manuals online" link --- plugins/MonitorStage/MonitorMain.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/MonitorStage/MonitorMain.qml b/plugins/MonitorStage/MonitorMain.qml index fdb67d0feb..5d63ac5b83 100644 --- a/plugins/MonitorStage/MonitorMain.qml +++ b/plugins/MonitorStage/MonitorMain.qml @@ -122,6 +122,7 @@ Rectangle } visible: !isNetworkConfigured && isNetworkConfigurable width: childrenRect.width + height: childrenRect.height UM.ColorImage { From 37ca436cadf0cba03a0f93facac9e5d022cd2bab Mon Sep 17 00:00:00 2001 From: fvrmr <77000924+fvrmr@users.noreply.github.com> Date: Tue, 17 May 2022 10:05:28 +0200 Subject: [PATCH 06/88] Update change_log.txt Added one more bug fix --- resources/texts/change_log.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/texts/change_log.txt b/resources/texts/change_log.txt index 3051b7c23e..33ac01743d 100644 --- a/resources/texts/change_log.txt +++ b/resources/texts/change_log.txt @@ -75,6 +75,7 @@ Ultimaker Cura 5.0 is now compatible with Apple M1. - Fixed a bug where travels would go through the model with printing PVA - Fixed a bug where Concentric ironing was affecting the print quality - Fixed a bug where there were missing infill layers +- Fixed AppRun permissions, contributed by probonopd * Printer definitions, profiles and materials: - Added Atom 3 and Atom 3 Lite printer definitions, contributed by Daniel-Kurth From 4d3f312cb6726488797df87ffde31675ce86c7e4 Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Tue, 17 May 2022 11:42:43 +0200 Subject: [PATCH 07/88] Secure another 'environment-settable via Qt' DLL. SEC-258 a.k.a. CURA-8969 --- cura_app.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cura_app.py b/cura_app.py index e11e3c4232..905d8f4ee0 100755 --- a/cura_app.py +++ b/cura_app.py @@ -18,6 +18,7 @@ import os if sys.platform != "linux": # Turns out the Linux build _does_ use this, but we're not making an Enterprise release for that system anyway. os.environ["QT_PLUGIN_PATH"] = "" # Security workaround: Don't need it, and introduces an attack vector, so set to nul. os.environ["QML2_IMPORT_PATH"] = "" # Security workaround: Don't need it, and introduces an attack vector, so set to nul. + os.environ["QT_OPENGL_DLL"] = "" # Security workaround: Don't need it, and introduces an attack vector, so set to nul. from PyQt6.QtNetwork import QSslConfiguration, QSslSocket From b5e3479c1c8e9f76cb6bbf23434bedae178a6c39 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 20 May 2022 12:55:59 +0200 Subject: [PATCH 08/88] Catch UnicodeDecodeErrors when parsing error messages from server Stupid recursive errors. Fixes Sentry issue CURA-3VB. --- plugins/Marketplace/PackageList.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/Marketplace/PackageList.py b/plugins/Marketplace/PackageList.py index 30162afe6c..3306e10740 100644 --- a/plugins/Marketplace/PackageList.py +++ b/plugins/Marketplace/PackageList.py @@ -244,7 +244,10 @@ class PackageList(ListModel): def _downloadError(self, package_id: str, update: bool = False, reply: Optional["QNetworkReply"] = None, error: Optional["QNetworkReply.NetworkError"] = None) -> None: if reply: - reply_string = bytes(reply.readAll()).decode() + try: + reply_string = bytes(reply.readAll()).decode() + except UnicodeDecodeError: + reply_string = "" Logger.error(f"Failed to download package: {package_id} due to {reply_string}") self._package_manager.packageInstallingFailed.emit(package_id) From 050a73166360106d2c2733b22e9c31be400f6db8 Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Fri, 20 May 2022 14:32:28 +0200 Subject: [PATCH 09/88] In secure version: disable loading themes from unbundled folders. This was a bit more tricky then it at first seemed, since the information wether this is a 'secure version' comes from the user-application and is not known in the Uranium library. This is not normally such a point, but both the theme and the preferences objects are loaded _very_ early in the process, and that information needs to be injected before then. (Well, in the case of the Theme object it's less important, since in the implementation choseen that is now security wise at least only in charge of wheter or not to even show the theme as selectable in the interface, so that it only needs to be aware of the 'security' status any time before the user can see a preference screen, but not nescesarily earlier.) SEC-255 | CURA-8966 --- cura/CuraApplication.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index ee3c6e361e..a324168f31 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -315,7 +315,7 @@ class CuraApplication(QtApplication): def initialize(self) -> None: self.__addExpectedResourceDirsAndSearchPaths() # Must be added before init of super - super().initialize() + super().initialize(ApplicationMetadata.IsEnterpriseVersion) self._preferences.addPreference("cura/single_instance", False) self._use_single_instance = self._preferences.getValue("cura/single_instance") or self._cli_args.single_instance @@ -942,6 +942,7 @@ class CuraApplication(QtApplication): self._qml_import_paths.append(Resources.getPath(self.ResourceTypes.QmlFiles)) self._setLoadingHint(self._i18n_catalog.i18nc("@info:progress", "Initializing engine...")) self.initializeEngine() + self.getTheme().setCheckIfTrusted(ApplicationMetadata.IsEnterpriseVersion) # Initialize UI state controller.setActiveStage("PrepareStage") From 0cb2b3e2cb2ad12ba97bd22d6dc9afac73d4f99c Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 23 May 2022 11:54:26 +0200 Subject: [PATCH 10/88] Fix translation containing HTML tags Let's not confuse the translators by requiring to translate these in the future. Done as a 5 minute fix. --- cura/CrashHandler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py index bda9568666..1e10d9b981 100644 --- a/cura/CrashHandler.py +++ b/cura/CrashHandler.py @@ -261,7 +261,7 @@ class CrashHandler: opengl_instance = OpenGL.getInstance() if not opengl_instance: self.data["opengl"] = {"version": "n/a", "vendor": "n/a", "type": "n/a"} - return catalog.i18nc("@label", "Not yet initialized
") + return catalog.i18nc("@label", "Not yet initialized") + "
" info = "
    " info += catalog.i18nc("@label OpenGL version", "
  • OpenGL Version: {version}
  • ").format(version = opengl_instance.getOpenGLVersion()) From 1af2a7513833abed9527c7f5b78493c8ecc8fd22 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 23 May 2022 11:54:53 +0200 Subject: [PATCH 11/88] Also send short OpenGL version This is the one we're more likely to be interested in. Done as a 5 minute fix. --- cura/CrashHandler.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py index 1e10d9b981..541a270058 100644 --- a/cura/CrashHandler.py +++ b/cura/CrashHandler.py @@ -291,6 +291,7 @@ class CrashHandler: if with_sentry_sdk: with configure_scope() as scope: scope.set_tag("opengl_version", opengl_instance.getOpenGLVersion()) + scope.set_tag("opengl_version_short", opengl_instance.getOpenGLVersionShort()) scope.set_tag("gpu_vendor", opengl_instance.getGPUVendorName()) scope.set_tag("gpu_type", opengl_instance.getGPUType()) scope.set_tag("active_machine", active_machine_definition_id) From becf5cb53adbfc5a9e362c81bc779e392a2b43e7 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 23 May 2022 13:02:18 +0200 Subject: [PATCH 12/88] Update no-response to use GH actions instead of a bot --- .github/no-response.yml | 13 ------------- .github/workflows/no-response.yml | 31 +++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 13 deletions(-) delete mode 100644 .github/no-response.yml create mode 100644 .github/workflows/no-response.yml diff --git a/.github/no-response.yml b/.github/no-response.yml deleted file mode 100644 index a386aaa7ba..0000000000 --- a/.github/no-response.yml +++ /dev/null @@ -1,13 +0,0 @@ -# Configuration for probot-no-response - https://github.com/probot/no-response - -# Number of days of inactivity before an Issue is closed for lack of response -daysUntilClose: 14 -# Label requiring a response -responseRequiredLabel: 'Status: Needs Info' -# Comment to post when closing an Issue for lack of response. Set to `false` to disable -closeComment: > - This issue has been automatically closed because there has been no response - to our request for more information from the original author. With only the - information that is currently in the issue, we don't have enough information - to take action. Please reach out if you have or find the answers we need so - that we can investigate further. diff --git a/.github/workflows/no-response.yml b/.github/workflows/no-response.yml new file mode 100644 index 0000000000..776aa1c652 --- /dev/null +++ b/.github/workflows/no-response.yml @@ -0,0 +1,31 @@ +name: No Response + +# Both `issue_comment` and `scheduled` event types are required for this Action +# to work properly. +on: + issue_comment: + types: [created] + schedule: + # Schedule for ten minutes after the hour, every hour + - cron: '10 * * * *' + +# By specifying the access of one of the scopes, all of those that are not +# specified are set to 'none'. +permissions: + issues: write + +jobs: + noResponse: + runs-on: ubuntu-latest + steps: + - uses: lee-dohm/no-response@v0.5.0 + with: + token: ${{ github.token }} + daysUntilClose: 14 + responseRequiredLabel: 'Status: Needs Info' + closeComment: > + This issue has been automatically closed because there has been no response + to our request for more information from the original author. With only the + information that is currently in the issue, we don't have enough information + to take action. Please reach out if you have or find the answers we need so + that we can investigate further. From be25029aca3bdd188f3e86f5f630d0dbae43eebd Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Tue, 24 May 2022 12:09:20 +0200 Subject: [PATCH 13/88] This fix will stop enterprise versions from searching the user config folder for non storage type resources. Refer to SEC-253 for more information SEC-253 --- cura/CuraApplication.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index a324168f31..3a3ac17cdf 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -257,6 +257,7 @@ class CuraApplication(QtApplication): from UM.CentralFileStorage import CentralFileStorage CentralFileStorage.setIsEnterprise(ApplicationMetadata.IsEnterpriseVersion) + Resources.setIsEnterprise(ApplicationMetadata.IsEnterpriseVersion) @pyqtProperty(str, constant=True) def ultimakerCloudApiRootUrl(self) -> str: @@ -348,12 +349,12 @@ class CuraApplication(QtApplication): Resources.addExpectedDirNameInData(dir_name) app_root = os.path.abspath(os.path.join(os.path.dirname(sys.executable))) - Resources.addSearchPath(os.path.join(app_root, "share", "cura", "resources")) + Resources.addSecureSearchPath(os.path.join(app_root, "share", "cura", "resources")) - Resources.addSearchPath(os.path.join(self._app_install_dir, "share", "cura", "resources")) + Resources.addSecureSearchPath(os.path.join(self._app_install_dir, "share", "cura", "resources")) if not hasattr(sys, "frozen"): resource_path = os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "resources") - Resources.addSearchPath(resource_path) + Resources.addSecureSearchPath(resource_path) @classmethod def _initializeSettingDefinitions(cls): From 46cf1f3a1d490974d29b453dd90d76b155167b38 Mon Sep 17 00:00:00 2001 From: p3d-dev <105526632+p3d-dev@users.noreply.github.com> Date: Thu, 26 May 2022 00:16:14 +0200 Subject: [PATCH 14/88] remove duplicated machine_heated_bed --- resources/definitions/zav_base.def.json | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/definitions/zav_base.def.json b/resources/definitions/zav_base.def.json index 1ef9398987..9f73419d46 100644 --- a/resources/definitions/zav_base.def.json +++ b/resources/definitions/zav_base.def.json @@ -147,7 +147,6 @@ "machine_height": {"default_value": 270}, "machine_extruder_count": {"value": 1}, "machine_buildplate_type": {"value": "glass"}, - "machine_heated_bed": {"default_value": true}, "machine_center_is_zero": {"default_value": false}, "machine_gcode_flavor": {"default_value": "RepRap (Marlin/Sprinter)"}, "machine_head_with_fans_polygon": {"default_value": [ From ec3aafb859ba72202e9c0dccfaced11c10f94fcb Mon Sep 17 00:00:00 2001 From: p3d-dev <105526632+p3d-dev@users.noreply.github.com> Date: Thu, 26 May 2022 00:18:18 +0200 Subject: [PATCH 15/88] remove duplicated machine_heated_bed --- resources/definitions/uni_base.def.json | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/definitions/uni_base.def.json b/resources/definitions/uni_base.def.json index 06ba86de2d..82b05f3366 100644 --- a/resources/definitions/uni_base.def.json +++ b/resources/definitions/uni_base.def.json @@ -138,7 +138,6 @@ "machine_height": {"default_value": 250}, "machine_extruder_count": {"value": 2}, "machine_buildplate_type": {"value": "glass"}, - "machine_heated_bed": {"default_value": true}, "machine_center_is_zero": {"default_value": false}, "machine_gcode_flavor": {"default_value": "RepRap (Marlin/Sprinter)"}, "machine_head_with_fans_polygon": {"default_value": [ From 9aa7e9a0066c3a1a87c545eb560aa270a103dbf6 Mon Sep 17 00:00:00 2001 From: p3d-dev <105526632+p3d-dev@users.noreply.github.com> Date: Thu, 26 May 2022 00:19:40 +0200 Subject: [PATCH 16/88] remove duplicated machine_heated_bed --- resources/definitions/SV02.def.json | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/definitions/SV02.def.json b/resources/definitions/SV02.def.json index 067422354e..352cd23394 100644 --- a/resources/definitions/SV02.def.json +++ b/resources/definitions/SV02.def.json @@ -44,7 +44,6 @@ "machine_max_jerk_xy": { "value": 8 }, "machine_max_jerk_z": { "value": 0.4 }, "machine_max_jerk_e": { "value": 5 }, - "machine_heated_bed": { "default_value": true }, "material_diameter": { "default_value": 1.75 }, "infill_overlap": { "default_value": 15 }, "acceleration_print": { "value": 500 }, From 02fb4e70d3f494c5e50c45e1daceb2a52ff51bb6 Mon Sep 17 00:00:00 2001 From: Rijk van Manen Date: Mon, 30 May 2022 10:58:56 +0200 Subject: [PATCH 17/88] this if else statement is doing nothing --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index c411162359..6763cbb7f2 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2256,7 +2256,7 @@ "maximum_value": "machine_height", "maximum_value_warning": "resolveOrValue('infill_sparse_thickness') * 10", "type": "float", - "value": "0 if infill_sparse_density > 0 else 0", + "value": "0", "limit_to_extruder": "infill_extruder_nr", "enabled": "infill_sparse_density > 0", "settable_per_mesh": true, From e543416deb78f124f2d7ec44661b25351efe7343 Mon Sep 17 00:00:00 2001 From: Rijk van Manen Date: Mon, 30 May 2022 11:00:58 +0200 Subject: [PATCH 18/88] enable skin edge support For all ultimaker printers AND low infill density the skin edge support feature is used. PP-15 --- resources/definitions/ultimaker.def.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 5818c11a6f..1795fd23ae 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -94,6 +94,9 @@ }, "acceleration_travel": { "value": "acceleration_wall" + }, + "skin_edge_support_thickness": { + "value": "4 * layer_height if infill_sparse_density < 30 else 0" } } } From adf83f002f296703db07ab2c1097483f61882312 Mon Sep 17 00:00:00 2001 From: Rijk van Manen Date: Mon, 30 May 2022 11:03:52 +0200 Subject: [PATCH 19/88] remove redundant statements These values are now default for all ultimaker profiles. PP-15 --- .../ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print.inst.cfg | 1 - .../ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print.inst.cfg | 1 - .../quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg | 3 +-- .../quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg | 3 +-- .../quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print.inst.cfg | 1 - 7 files changed, 2 insertions(+), 9 deletions(-) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print.inst.cfg index 0ce09d5812..62a5516b2c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print.inst.cfg @@ -33,7 +33,6 @@ material_shrinkage_percentage_z = 100.1 prime_tower_enable = False retraction_prime_speed = =retraction_speed -skin_edge_support_thickness = =0.9 if infill_sparse_density < 30 else 0 skin_overlap = 20 top_bottom_thickness = 0.9 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print.inst.cfg index 4bf6623cf6..50206224a9 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_VeryDraft_Print.inst.cfg @@ -33,7 +33,6 @@ material_shrinkage_percentage_z = 100.1 prime_tower_enable = False retraction_prime_speed = =retraction_speed -skin_edge_support_thickness = =0.9 if infill_sparse_density < 30 else 0 skin_overlap = 20 top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg index b8a6fbc38a..1ef240ab01 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg @@ -17,13 +17,12 @@ material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 retraction_combing_max_distance = 50 retraction_prime_speed = =retraction_speed -skin_edge_support_thickness = =0.8 if infill_sparse_density < 30 else 0 skin_overlap = 20 speed_print = 60 speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) -top_thickness = =0.8 if infill_sparse_density < 30 and skin_edge_support_thickness == 0.8 else top_bottom_thickness +top_thickness = =0.8 if infill_sparse_density < 30 else top_bottom_thickness infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' speed_infill = =math.ceil(speed_print * 50 / 60) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg index 78eda2718b..bb5862ae67 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg @@ -18,14 +18,13 @@ material_final_print_temperature = =material_print_temperature - 5 material_shrinkage_percentage_xy = 100.5 material_shrinkage_percentage_z = 100.1 retraction_combing_max_distance = 8 -skin_edge_support_thickness = =0.8 if infill_sparse_density < 30 else 0 skin_overlap = 20 speed_print = 60 speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) -top_thickness = =0.8 if infill_sparse_density < 30 and skin_edge_support_thickness == 0.8 else top_bottom_thickness +top_thickness = =0.8 if infill_sparse_density < 30 else top_bottom_thickness infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' speed_infill = =math.ceil(speed_print * 50 / 60) initial_layer_line_width_factor = 100 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg index a9e107d887..e85891cdc8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg @@ -22,7 +22,6 @@ material_shrinkage_percentage_xy = 100.2 material_shrinkage_percentage_z = 100.1 prime_tower_enable = False retraction_prime_speed = =retraction_speed -skin_edge_support_thickness = =0.8 if infill_sparse_density < 30 else 0 skin_overlap = 20 speed_layer_0 = 10 speed_topbottom = =math.ceil(speed_print * 40 / 70) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print.inst.cfg index 5087857b86..74161daa57 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print.inst.cfg @@ -33,7 +33,6 @@ material_shrinkage_percentage_z = 100.1 prime_tower_enable = False retraction_prime_speed = =retraction_speed -skin_edge_support_thickness = =0.9 if infill_sparse_density < 30 else 0 skin_overlap = 20 top_bottom_thickness = 0.9 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print.inst.cfg index d3637ca861..48f65ed4da 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print.inst.cfg @@ -33,7 +33,6 @@ material_shrinkage_percentage_z = 100.1 prime_tower_enable = False retraction_prime_speed = =retraction_speed -skin_edge_support_thickness = =0.9 if infill_sparse_density < 30 else 0 skin_overlap = 20 top_bottom_thickness = 1.2 From 59d3c6b165fdd9522667cc3f504f1fbdc90fffca Mon Sep 17 00:00:00 2001 From: Rijk van Manen Date: Mon, 30 May 2022 13:47:45 +0200 Subject: [PATCH 20/88] entirely remove the top_thickness statement This is a cleanup which will be investigated further in PP-23 --- .../quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg | 1 - .../quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg | 1 - 2 files changed, 2 deletions(-) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg index 1ef240ab01..bdfd6aadea 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg @@ -23,6 +23,5 @@ speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) -top_thickness = =0.8 if infill_sparse_density < 30 else top_bottom_thickness infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' speed_infill = =math.ceil(speed_print * 50 / 60) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg index bb5862ae67..bedfaa177a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PETG_Draft_Print.inst.cfg @@ -24,7 +24,6 @@ speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) -top_thickness = =0.8 if infill_sparse_density < 30 else top_bottom_thickness infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' speed_infill = =math.ceil(speed_print * 50 / 60) initial_layer_line_width_factor = 100 From 7c2b84184b12b23c389514e591e8526c9df54b69 Mon Sep 17 00:00:00 2001 From: Rijk van Manen Date: Mon, 30 May 2022 14:00:16 +0200 Subject: [PATCH 21/88] reduce top/bottom flow by enabling top surface skin layers PP-93 --- resources/definitions/ultimaker.def.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 2946a06c6d..24ffcb4758 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -60,13 +60,13 @@ "value": "'no_outer_surfaces'" }, "roofing_layer_count": { - "value": "0" + "value": "1" }, "roofing_material_flow": { "value": "material_flow" }, "skin_material_flow": { - "value": "0.97 * material_flow" + "value": "0.95 * material_flow" }, "skin_monotonic" : { "value": true From d352bbbbc5a8fe21241c2601bf75d8cc99ac0e20 Mon Sep 17 00:00:00 2001 From: Rijk van Manen Date: Mon, 30 May 2022 14:05:47 +0200 Subject: [PATCH 22/88] reduce support interface flow The reasoning of PP-86 also holds for the support interface layers, however we forgot about support when we implemented PP-86. When doing PP-108 we found this improvement. --- resources/definitions/ultimaker.def.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 2946a06c6d..d482128ee1 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -68,6 +68,9 @@ "skin_material_flow": { "value": "0.97 * material_flow" }, + "support_interface_material_flow": { + "value": "skin_material_flow" + }, "skin_monotonic" : { "value": true }, From 8cf1afc770d884960d400142b5b55be5f500f4e7 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 30 May 2022 16:41:30 +0200 Subject: [PATCH 23/88] Update master branch to main in XML file link Because the default branch name changed. --- com.ultimaker.cura.appdata.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.ultimaker.cura.appdata.xml b/com.ultimaker.cura.appdata.xml index 53d37535d4..3af0e9c352 100644 --- a/com.ultimaker.cura.appdata.xml +++ b/com.ultimaker.cura.appdata.xml @@ -25,7 +25,7 @@ - https://raw.githubusercontent.com/Ultimaker/Cura/master/cura-logo.PNG + https://raw.githubusercontent.com/Ultimaker/Cura/main/cura-logo.PNG https://ultimaker.com/software/ultimaker-cura?utm_source=cura&utm_medium=software&utm_campaign=cura-update-linux From 21d59e93492dc66198312bdd8dd17d91bc44d252 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Mon, 30 May 2022 17:29:59 +0200 Subject: [PATCH 24/88] Write active material metadata to ufp when saving. Add function to fetch package_id using only information from XmlMaterialProfile material container. The only piece of information associating the material container and the package together is the file_name. To find the package that owns a material we have to search each of the material package paths. It would be great to find a cleaner solution (preferable one that doesn't require invalidating the cached containers). CURA-8610 --- cura/CuraPackageManager.py | 20 ++++++ plugins/UFPWriter/UFPWriter.py | 65 +++++++++++++------ .../XmlMaterialProfile/XmlMaterialProfile.py | 3 + 3 files changed, 69 insertions(+), 19 deletions(-) diff --git a/cura/CuraPackageManager.py b/cura/CuraPackageManager.py index 17d6832ac6..b23422fbbd 100644 --- a/cura/CuraPackageManager.py +++ b/cura/CuraPackageManager.py @@ -1,5 +1,6 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +import os from typing import Any, cast, Dict, List, Set, Tuple, TYPE_CHECKING, Optional @@ -51,6 +52,25 @@ class CuraPackageManager(PackageManager): super().initialize() + def getMaterialFilePackageId(self, file_name: str, guid: str) -> str: + """Get the id of the material package that contains file_name""" + for material_package in [f for f in os.scandir(self._installation_dirs_dict["materials"]) if f.is_dir()]: + package_id = material_package.name + + for root, _, file_names in os.walk(material_package.path): + if file_name not in file_names: + #File with the name we are looking for is not in this directory + continue + + with open(root + "/" + file_name, encoding="utf-8") as f: + # Make sure the file we found has the same guid as our material + # Parsing this xml would be better but the namespace is needed to search it. + if guid in f.read(): + return package_id + continue + + + def getMachinesUsingPackage(self, package_id: str) -> Tuple[List[Tuple[GlobalStack, str, str]], List[Tuple[GlobalStack, str, str]]]: """Returns a list of where the package is used diff --git a/plugins/UFPWriter/UFPWriter.py b/plugins/UFPWriter/UFPWriter.py index 52dab1efc7..59067b1932 100644 --- a/plugins/UFPWriter/UFPWriter.py +++ b/plugins/UFPWriter/UFPWriter.py @@ -16,13 +16,14 @@ from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType 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 cura.CuraApplication import CuraApplication +from cura.CuraPackageManager import CuraPackageManager from cura.Utils.Threading import call_on_qt_thread from UM.i18n import i18nCatalog METADATA_OBJECTS_PATH = "metadata/objects" +METADATA_MATERIALS_PATH = "metadata/packages" catalog = i18nCatalog("cura") @@ -49,7 +50,7 @@ class UFPWriter(MeshWriter): archive.openStream(stream, "application/x-ufp", OpenMode.WriteOnly) try: - self._writeObjectList(archive) + self._writeMetadata(archive) # Store the g-code from the scene. archive.addContentType(extension = "gcode", mime_type = "text/x-gcode") @@ -163,30 +164,56 @@ class UFPWriter(MeshWriter): return True @staticmethod - def _writeObjectList(archive): - """Write a json list of object names to the METADATA_OBJECTS_PATH metadata field + def _writeMetadata(archive: VirtualFile): + material_metadata = UFPWriter._getMaterialPackageMetadata() + object_metadata = UFPWriter._getObjectMetadata() - To retrieve, use: `archive.getMetadata(METADATA_OBJECTS_PATH)` - """ + data = {METADATA_MATERIALS_PATH: material_metadata, + METADATA_OBJECTS_PATH: object_metadata} - objects_model = CuraApplication.getInstance().getObjectsModel() - object_metas = [] - - for item in objects_model.items: - object_metas.extend(UFPWriter._getObjectMetadata(item["node"])) - - data = {METADATA_OBJECTS_PATH: object_metas} archive.setMetadata(data) @staticmethod - def _getObjectMetadata(node: SceneNode) -> List[Dict[str, str]]: + def _getObjectMetadata() -> List[Dict[str, str]]: """Get object metadata to write for a Node. :return: List of object metadata dictionaries. - Might contain > 1 element in case of a group node. - Might be empty in case of nonPrintingMesh """ + metadata = [] + + objects_model = CuraApplication.getInstance().getObjectsModel() + + for item in objects_model.items: + for node in DepthFirstIterator(item["node"]): + if node.getMeshData() is not None and not node.callDecoration("isNonPrintingMesh"): + metadata.extend({"name": node.getName()}) + + return metadata + + @staticmethod + def _getMaterialPackageMetadata() -> List[Dict[str, str]]: + """Get metadata for installed materials in active extruder stack, this does not include bundled materials. + + :return: List of material metadata dictionaries. + """ + metadata = [] + + package_manager = cast(CuraPackageManager, CuraApplication.getInstance().getPackageManager()) + + for extruder in CuraApplication.getInstance().getExtruderManager().getActiveExtruderStacks(): + package_id = package_manager.getMaterialFilePackageId(extruder.material.getFileName(), extruder.material.getMetaDataEntry("GUID")) + package_data = package_manager.getInstalledPackageInfo(package_id) + + if package_data.get("is_bundled"): + continue + + material_metadata = {"id": package_id, + "display_name": package_data.get("display_name"), + "website": package_data.get("website"), + "package_version": package_data.get("package_version"), + "sdk_version_semver": package_data.get("package_version_semver")} + + metadata.append(material_metadata) + + return metadata - return [{"name": item.getName()} - for item in DepthFirstIterator(node) - if item.getMeshData() is not None and not item.callDecoration("isNonPrintingMesh")] diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 1b88272d49..d1da10399a 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -343,6 +343,9 @@ class XmlMaterialProfile(InstanceContainer): return stream.getvalue().decode("utf-8") + def getFileName(self): + return self.getMetaDataEntry("base_file") + ".xml.fdm_material" + # Recursively resolve loading inherited files def _resolveInheritance(self, file_name): xml = self._loadFile(file_name) From 3dec025cb881e171dc89fa293c18afe13c32ed15 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Tue, 31 May 2022 08:54:08 +0200 Subject: [PATCH 25/88] Update comment to clarify function usage. CURA-8610 --- cura/CuraPackageManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/CuraPackageManager.py b/cura/CuraPackageManager.py index b23422fbbd..813ce40763 100644 --- a/cura/CuraPackageManager.py +++ b/cura/CuraPackageManager.py @@ -53,7 +53,7 @@ class CuraPackageManager(PackageManager): super().initialize() def getMaterialFilePackageId(self, file_name: str, guid: str) -> str: - """Get the id of the material package that contains file_name""" + """Get the id of the installed material package that contains file_name""" for material_package in [f for f in os.scandir(self._installation_dirs_dict["materials"]) if f.is_dir()]: package_id = material_package.name From 1ec554ad1c90af993c769f2d6d0b511fa098b476 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 31 May 2022 09:19:34 +0200 Subject: [PATCH 26/88] Add "Status: Triage" to bug report --- .github/ISSUE_TEMPLATE/bugreport.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bugreport.yaml b/.github/ISSUE_TEMPLATE/bugreport.yaml index f31971ab2a..fe15f31a38 100644 --- a/.github/ISSUE_TEMPLATE/bugreport.yaml +++ b/.github/ISSUE_TEMPLATE/bugreport.yaml @@ -1,6 +1,6 @@ name: Bug Report description: Create a report to help us fix issues. -labels: "Type: Bug" +labels: ["Type: Bug", "Status: Triage"] body: - type: markdown attributes: From 67dec0dd3a26d081aad3e4a9eaa6decc1e73dfbb Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 31 May 2022 09:20:53 +0200 Subject: [PATCH 27/88] Update bugreport.yaml --- .github/ISSUE_TEMPLATE/bugreport.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bugreport.yaml b/.github/ISSUE_TEMPLATE/bugreport.yaml index fe15f31a38..e3d60e41e0 100644 --- a/.github/ISSUE_TEMPLATE/bugreport.yaml +++ b/.github/ISSUE_TEMPLATE/bugreport.yaml @@ -14,7 +14,7 @@ body: attributes: label: Application Version description: The version of Cura this issue occurs with. - placeholder: 4.9.0 + placeholder: 5.0.0 validations: required: true - type: input From 097cc9388a400b071735bd0cab8f10d790f1bd20 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 31 May 2022 09:37:58 +0200 Subject: [PATCH 28/88] Added orientiation plugin to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 02be81d48e..c1fd5477d9 100644 --- a/.gitignore +++ b/.gitignore @@ -65,6 +65,7 @@ plugins/CuraRemoteSupport plugins/ModelCutter plugins/PrintProfileCreator plugins/MultiPrintPlugin +plugins/CuraOrientationPlugin #Build stuff CMakeCache.txt From cdc08b5d54da9f9be7a8269fc549442db445b778 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Tue, 31 May 2022 10:00:25 +0200 Subject: [PATCH 29/88] Improve GUID check by parsing xml and getting GUID specifically inside the metadata tag. Remove exporting materials from disabled extruders CURA-8610 --- cura/CuraPackageManager.py | 7 +++++-- plugins/UFPWriter/UFPWriter.py | 6 +++++- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 9 +++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/cura/CuraPackageManager.py b/cura/CuraPackageManager.py index 813ce40763..0cb18ccc92 100644 --- a/cura/CuraPackageManager.py +++ b/cura/CuraPackageManager.py @@ -10,6 +10,8 @@ from cura.Settings.GlobalStack import GlobalStack from UM.PackageManager import PackageManager # The class we're extending. from UM.Resources import Resources # To find storage paths for some resource types. from UM.i18n import i18nCatalog +from plugins.XmlMaterialProfile.XmlMaterialProfile import XmlMaterialProfile + catalog = i18nCatalog("cura") if TYPE_CHECKING: @@ -59,13 +61,14 @@ class CuraPackageManager(PackageManager): for root, _, file_names in os.walk(material_package.path): if file_name not in file_names: - #File with the name we are looking for is not in this directory + # File with the name we are looking for is not in this directory continue with open(root + "/" + file_name, encoding="utf-8") as f: # Make sure the file we found has the same guid as our material # Parsing this xml would be better but the namespace is needed to search it. - if guid in f.read(): + parsed_guid = XmlMaterialProfile.getMetadataFromSerialized(f.read(), "GUID") + if guid == parsed_guid: return package_id continue diff --git a/plugins/UFPWriter/UFPWriter.py b/plugins/UFPWriter/UFPWriter.py index 59067b1932..c14b5fbfe9 100644 --- a/plugins/UFPWriter/UFPWriter.py +++ b/plugins/UFPWriter/UFPWriter.py @@ -201,10 +201,14 @@ class UFPWriter(MeshWriter): package_manager = cast(CuraPackageManager, CuraApplication.getInstance().getPackageManager()) for extruder in CuraApplication.getInstance().getExtruderManager().getActiveExtruderStacks(): + if not extruder.isEnabled: + # Don't export materials not in use + continue + package_id = package_manager.getMaterialFilePackageId(extruder.material.getFileName(), extruder.material.getMetaDataEntry("GUID")) package_data = package_manager.getInstalledPackageInfo(package_id) - if package_data.get("is_bundled"): + if not package_data or package_data.get("is_bundled"): continue material_metadata = {"id": package_id, diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index d1da10399a..05ae9a79c9 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -480,6 +480,15 @@ class XmlMaterialProfile(InstanceContainer): return version * 1000000 + setting_version + @classmethod + def getMetadataFromSerialized(cls, serialized: str, property_name: str) -> str: + data = ET.fromstring(serialized) + metadata = data.find("./um:metadata", cls.__namespaces) + property = metadata.find("./um:" + property_name, cls.__namespaces) + + # This is a necessary property != None check, xml library overrides __bool__ to return False in cases when Element is not None. + return property.text if property != None else "" + def deserialize(self, serialized, file_name = None): """Overridden from InstanceContainer""" From 64478fb17d62ec081d431f0d7d359120a3ddc49a Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Tue, 31 May 2022 10:04:23 +0200 Subject: [PATCH 30/88] Fix typo fetching sdk version CURA-8610 --- plugins/UFPWriter/UFPWriter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/UFPWriter/UFPWriter.py b/plugins/UFPWriter/UFPWriter.py index c14b5fbfe9..0ff476e26b 100644 --- a/plugins/UFPWriter/UFPWriter.py +++ b/plugins/UFPWriter/UFPWriter.py @@ -215,7 +215,7 @@ class UFPWriter(MeshWriter): "display_name": package_data.get("display_name"), "website": package_data.get("website"), "package_version": package_data.get("package_version"), - "sdk_version_semver": package_data.get("package_version_semver")} + "sdk_version_semver": package_data.get("sdk_version_semver")} metadata.append(material_metadata) From 35147d7f5edc9947470439e123cff09e9b87d697 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 31 May 2022 11:23:53 +0200 Subject: [PATCH 31/88] Don't crash if machine_extruder_trains metadata is missing This old function is only necessary for upgrading from before v3.4. Best not let it crash in any other case, even if that would sometimes make very old machine instances corrupt if I made a mistake in thinking here. Fixes Sentry issue CURA-3XG. --- cura/Settings/ExtruderManager.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 07c074254f..8d46ac41d8 100755 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -1,4 +1,4 @@ -# Copyright (c) 2020 Ultimaker B.V. +# Copyright (c) 2022 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from PyQt6.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant # For communicating data and events to Qt. @@ -382,7 +382,10 @@ class ExtruderManager(QObject): # "fdmextruder". We need to check a machine here so its extruder definition is correct according to this. def fixSingleExtrusionMachineExtruderDefinition(self, global_stack: "GlobalStack") -> None: container_registry = ContainerRegistry.getInstance() - expected_extruder_definition_0_id = global_stack.getMetaDataEntry("machine_extruder_trains")["0"] + expected_extruder_stack = global_stack.getMetadataEntry("machine_extruder_trains") + if expected_extruder_stack is None: + return + expected_extruder_definition_0_id = expected_extruder_stack["0"] try: extruder_stack_0 = global_stack.extruderList[0] except IndexError: From 6b04c736e97ac49142793175842a1a81be6687c6 Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Tue, 31 May 2022 12:34:55 +0200 Subject: [PATCH 32/88] Revert "Disable the material sync message again" This reverts commit 1f6e1942d775d47dd48be4fd83c5346271827a5e. --- cura/Machines/Models/MaterialManagementModel.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cura/Machines/Models/MaterialManagementModel.py b/cura/Machines/Models/MaterialManagementModel.py index 53d0cca0a2..b2b888f431 100644 --- a/cura/Machines/Models/MaterialManagementModel.py +++ b/cura/Machines/Models/MaterialManagementModel.py @@ -45,8 +45,7 @@ class MaterialManagementModel(QObject): for package_id, package_data in application.getPackageManager().getPackagesInstalledOnStartup().items(): if package_data["package_info"]["package_type"] == "material": # At least one new material was installed - # TODO: This should be enabled again once CURA-8609 is merged - #self._showSyncNewMaterialsMessage() + self._showSyncNewMaterialsMessage() break def _showSyncNewMaterialsMessage(self) -> None: From ec60325a3fc722c5e54ae1e5451d9d6a9fd440d1 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Tue, 31 May 2022 12:39:00 +0200 Subject: [PATCH 33/88] Move metadata exporting to 3mf CURA-8610 --- plugins/3MFWriter/ThreeMFWriter.py | 72 ++++++++++++++++--- .../XmlMaterialProfile/XmlMaterialProfile.py | 2 +- 2 files changed, 62 insertions(+), 12 deletions(-) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index 853aa08513..4bb8ab5881 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -1,6 +1,8 @@ # Copyright (c) 2015-2022 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Optional +import json + +from typing import Optional, cast, List, Dict from UM.Mesh.MeshWriter import MeshWriter from UM.Math.Vector import Vector @@ -10,6 +12,7 @@ from UM.Application import Application from UM.Scene.SceneNode import SceneNode from cura.CuraApplication import CuraApplication +from cura.CuraPackageManager import CuraPackageManager from cura.Utils.Threading import call_on_qt_thread from cura.Snapshot import Snapshot @@ -34,6 +37,9 @@ import UM.Application from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") +THUMBNAIL_PATH = "Metadata/thumbnail.png" +MODEL_PATH = "3D/3dmodel.model" +PACKAGE_METADATA_PATH = "Metadata/packages.json" class ThreeMFWriter(MeshWriter): def __init__(self): @@ -46,7 +52,7 @@ class ThreeMFWriter(MeshWriter): } self._unit_matrix_string = self._convertMatrixToString(Matrix()) - self._archive = None # type: Optional[zipfile.ZipFile] + self._archive: Optional[zipfile.ZipFile] = None self._store_archive = False def _convertMatrixToString(self, matrix): @@ -132,11 +138,11 @@ class ThreeMFWriter(MeshWriter): def getArchive(self): return self._archive - def write(self, stream, nodes, mode = MeshWriter.OutputMode.BinaryMode): + def write(self, stream, nodes, mode = MeshWriter.OutputMode.BinaryMode) -> bool: self._archive = None # Reset archive archive = zipfile.ZipFile(stream, "w", compression = zipfile.ZIP_DEFLATED) try: - model_file = zipfile.ZipInfo("3D/3dmodel.model") + model_file = zipfile.ZipInfo(MODEL_PATH) # Because zipfile is stupid and ignores archive-level compression settings when writing with ZipInfo. model_file.compress_type = zipfile.ZIP_DEFLATED @@ -151,7 +157,7 @@ class ThreeMFWriter(MeshWriter): relations_file = zipfile.ZipInfo("_rels/.rels") relations_file.compress_type = zipfile.ZIP_DEFLATED relations_element = ET.Element("Relationships", xmlns = self._namespaces["relationships"]) - model_relation_element = ET.SubElement(relations_element, "Relationship", Target = "/3D/3dmodel.model", Id = "rel0", Type = "http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel") + model_relation_element = ET.SubElement(relations_element, "Relationship", Target = "/" + MODEL_PATH, Id = "rel0", Type = "http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel") # Attempt to add a thumbnail snapshot = self._createSnapshot() @@ -160,28 +166,32 @@ class ThreeMFWriter(MeshWriter): thumbnail_buffer.open(QBuffer.OpenModeFlag.ReadWrite) snapshot.save(thumbnail_buffer, "PNG") - thumbnail_file = zipfile.ZipInfo("Metadata/thumbnail.png") + thumbnail_file = zipfile.ZipInfo(THUMBNAIL_PATH) # Don't try to compress snapshot file, because the PNG is pretty much as compact as it will get archive.writestr(thumbnail_file, thumbnail_buffer.data()) # Add PNG to content types file thumbnail_type = ET.SubElement(content_types, "Default", Extension = "png", ContentType = "image/png") # Add thumbnail relation to _rels/.rels file - thumbnail_relation_element = ET.SubElement(relations_element, "Relationship", Target = "/Metadata/thumbnail.png", Id = "rel1", Type = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail") + thumbnail_relation_element = ET.SubElement(relations_element, "Relationship", Target = "/" + THUMBNAIL_PATH, Id = "rel1", Type = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail") + + # Write material metadata + material_metadata = self._getMaterialPackageMetadata() + self._storeMetadataJson({"packages": material_metadata}, archive, PACKAGE_METADATA_PATH) savitar_scene = Savitar.Scene() - metadata_to_store = CuraApplication.getInstance().getController().getScene().getMetaData() + scene_metadata = CuraApplication.getInstance().getController().getScene().getMetaData() - for key, value in metadata_to_store.items(): + for key, value in scene_metadata.items(): savitar_scene.setMetaDataEntry(key, value) current_time_string = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") - if "Application" not in metadata_to_store: + if "Application" not in scene_metadata: # This might sound a bit strange, but this field should store the original application that created # the 3mf. So if it was already set, leave it to whatever it was. savitar_scene.setMetaDataEntry("Application", CuraApplication.getInstance().getApplicationDisplayName()) - if "CreationDate" not in metadata_to_store: + if "CreationDate" not in scene_metadata: savitar_scene.setMetaDataEntry("CreationDate", current_time_string) savitar_scene.setMetaDataEntry("ModificationDate", current_time_string) @@ -233,6 +243,46 @@ class ThreeMFWriter(MeshWriter): return True + @staticmethod + def _storeMetadataJson(metadata: Dict[str, List[Dict[str, str]]], archive: zipfile.ZipFile, path: str) -> None: + """Stores metadata inside archive path as json file""" + metadata_file = zipfile.ZipInfo(path) + # We have to set the compress type of each file as well (it doesn't keep the type of the entire archive) + metadata_file.compress_type = zipfile.ZIP_DEFLATED + archive.writestr(metadata_file, json.dumps(metadata, separators=(", ", ": "), indent=4, skipkeys=True, ensure_ascii=False)) + + @staticmethod + def _getMaterialPackageMetadata() -> List[Dict[str, str]]: + """Get metadata for installed materials in active extruder stack, this does not include bundled materials. + + :return: List of material metadata dictionaries. + """ + metadata = {} + + package_manager = cast(CuraPackageManager, CuraApplication.getInstance().getPackageManager()) + + for extruder in CuraApplication.getInstance().getExtruderManager().getActiveExtruderStacks(): + if not extruder.isEnabled: + # Don't export materials not in use + continue + + package_id = package_manager.getMaterialFilePackageId(extruder.material.getFileName(), extruder.material.getMetaDataEntry("GUID")) + package_data = package_manager.getInstalledPackageInfo(package_id) + + if not package_data or package_data.get("is_bundled"): + continue + + material_metadata = {"id": package_id, + "display_name": package_data.get("display_name") if package_data.get("display_name") else "", + "website": package_data.get("website") if package_data.get("website") else "", + "package_version": package_data.get("package_version") if package_data.get("package_version") else "", + "sdk_version_semver": package_data.get("sdk_version_semver") if package_data.get("sdk_version_semver") else ""} + + metadata[package_id] = material_metadata + + # Storing in a dict and fetching values to avoid duplicates + return list(metadata.values()) + @call_on_qt_thread # must be called from the main thread because of OpenGL def _createSnapshot(self): Logger.log("d", "Creating thumbnail image...") diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 05ae9a79c9..4cc3638f71 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -344,7 +344,7 @@ class XmlMaterialProfile(InstanceContainer): return stream.getvalue().decode("utf-8") def getFileName(self): - return self.getMetaDataEntry("base_file") + ".xml.fdm_material" + return (self.getMetaDataEntry("base_file") + ".xml.fdm_material").replace(" ", "+") # Recursively resolve loading inherited files def _resolveInheritance(self, file_name): From ca9955c7305b433f31eb314099afcc6dd77fd7c8 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Tue, 31 May 2022 12:43:52 +0200 Subject: [PATCH 34/88] Remove metadata exporting to ufp CURA-8610 --- plugins/UFPWriter/UFPWriter.py | 69 ++++++++++------------------------ 1 file changed, 19 insertions(+), 50 deletions(-) diff --git a/plugins/UFPWriter/UFPWriter.py b/plugins/UFPWriter/UFPWriter.py index 0ff476e26b..52dab1efc7 100644 --- a/plugins/UFPWriter/UFPWriter.py +++ b/plugins/UFPWriter/UFPWriter.py @@ -16,14 +16,13 @@ from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType 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 cura.CuraApplication import CuraApplication -from cura.CuraPackageManager import CuraPackageManager from cura.Utils.Threading import call_on_qt_thread from UM.i18n import i18nCatalog METADATA_OBJECTS_PATH = "metadata/objects" -METADATA_MATERIALS_PATH = "metadata/packages" catalog = i18nCatalog("cura") @@ -50,7 +49,7 @@ class UFPWriter(MeshWriter): archive.openStream(stream, "application/x-ufp", OpenMode.WriteOnly) try: - self._writeMetadata(archive) + self._writeObjectList(archive) # Store the g-code from the scene. archive.addContentType(extension = "gcode", mime_type = "text/x-gcode") @@ -164,60 +163,30 @@ class UFPWriter(MeshWriter): return True @staticmethod - def _writeMetadata(archive: VirtualFile): - material_metadata = UFPWriter._getMaterialPackageMetadata() - object_metadata = UFPWriter._getObjectMetadata() + def _writeObjectList(archive): + """Write a json list of object names to the METADATA_OBJECTS_PATH metadata field - data = {METADATA_MATERIALS_PATH: material_metadata, - METADATA_OBJECTS_PATH: object_metadata} + To retrieve, use: `archive.getMetadata(METADATA_OBJECTS_PATH)` + """ + objects_model = CuraApplication.getInstance().getObjectsModel() + object_metas = [] + + for item in objects_model.items: + object_metas.extend(UFPWriter._getObjectMetadata(item["node"])) + + data = {METADATA_OBJECTS_PATH: object_metas} archive.setMetadata(data) @staticmethod - def _getObjectMetadata() -> List[Dict[str, str]]: + def _getObjectMetadata(node: SceneNode) -> List[Dict[str, str]]: """Get object metadata to write for a Node. :return: List of object metadata dictionaries. + Might contain > 1 element in case of a group node. + Might be empty in case of nonPrintingMesh """ - metadata = [] - - objects_model = CuraApplication.getInstance().getObjectsModel() - - for item in objects_model.items: - for node in DepthFirstIterator(item["node"]): - if node.getMeshData() is not None and not node.callDecoration("isNonPrintingMesh"): - metadata.extend({"name": node.getName()}) - - return metadata - - @staticmethod - def _getMaterialPackageMetadata() -> List[Dict[str, str]]: - """Get metadata for installed materials in active extruder stack, this does not include bundled materials. - - :return: List of material metadata dictionaries. - """ - metadata = [] - - package_manager = cast(CuraPackageManager, CuraApplication.getInstance().getPackageManager()) - - for extruder in CuraApplication.getInstance().getExtruderManager().getActiveExtruderStacks(): - if not extruder.isEnabled: - # Don't export materials not in use - continue - - package_id = package_manager.getMaterialFilePackageId(extruder.material.getFileName(), extruder.material.getMetaDataEntry("GUID")) - package_data = package_manager.getInstalledPackageInfo(package_id) - - if not package_data or package_data.get("is_bundled"): - continue - - material_metadata = {"id": package_id, - "display_name": package_data.get("display_name"), - "website": package_data.get("website"), - "package_version": package_data.get("package_version"), - "sdk_version_semver": package_data.get("sdk_version_semver")} - - metadata.append(material_metadata) - - return metadata + return [{"name": item.getName()} + for item in DepthFirstIterator(node) + if item.getMeshData() is not None and not item.callDecoration("isNonPrintingMesh")] From d6bd7cce9e936333d14898076fa952397401adbb Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 31 May 2022 13:39:47 +0200 Subject: [PATCH 35/88] Oops --- cura/Settings/ExtruderManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 8d46ac41d8..52d63b611b 100755 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -382,7 +382,7 @@ class ExtruderManager(QObject): # "fdmextruder". We need to check a machine here so its extruder definition is correct according to this. def fixSingleExtrusionMachineExtruderDefinition(self, global_stack: "GlobalStack") -> None: container_registry = ContainerRegistry.getInstance() - expected_extruder_stack = global_stack.getMetadataEntry("machine_extruder_trains") + expected_extruder_stack = global_stack.getMetaDataEntry("machine_extruder_trains") if expected_extruder_stack is None: return expected_extruder_definition_0_id = expected_extruder_stack["0"] From 4572d53e11f6bc5391bd4594d5b407a185467fd5 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Tue, 31 May 2022 15:12:52 +0200 Subject: [PATCH 36/88] Read package.json required package information. Put package_ids for packages we don't have installed inside the WorkspaceDialog CURA-6990 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 28 +++++++++++++++++++++ plugins/3MFReader/WorkspaceDialog.py | 4 +++ 2 files changed, 32 insertions(+) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index ddc7922546..66ebf6e0b2 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -23,6 +23,7 @@ from UM.Settings.ContainerRegistry import ContainerRegistry from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType from UM.Job import Job from UM.Preferences import Preferences +from cura.CuraPackageManager import CuraPackageManager from cura.Machines.ContainerTree import ContainerTree from cura.Settings.CuraStackBuilder import CuraStackBuilder @@ -579,6 +580,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader): is_printer_group = True machine_name = group_name + # Getting missing required package ids + package_metadata = self._parse_packages_metadata(archive) + missing_package_ids = self._get_missing_package_ids(package_metadata) + # Show the dialog, informing the user what is about to happen. self._dialog.setMachineConflict(machine_conflict) self._dialog.setIsPrinterGroup(is_printer_group) @@ -599,6 +604,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._dialog.setExtruders(extruders) self._dialog.setVariantType(variant_type_name) self._dialog.setHasObjectsOnPlate(Application.getInstance().platformActivity) + self._dialog.setRequiredPackages(missing_package_ids) self._dialog.show() # Block until the dialog is closed. @@ -1243,3 +1249,25 @@ class ThreeMFWorkspaceReader(WorkspaceReader): metadata = data.iterfind("./um:metadata/um:name/um:label", {"um": "http://www.ultimaker.com/material"}) for entry in metadata: return entry.text + + @staticmethod + def _parse_packages_metadata(archive: zipfile.ZipFile) -> List[Dict[str, str]]: + try: + package_metadata = json.loads(archive.open("Metadata/packages.json").read().decode("utf-8")) + return package_metadata["packages"] + except Exception: + Logger.error("Failed to load packes metadata from .3mf file") + return [] + + + @staticmethod + def _get_missing_package_ids(package_metadata: List[Dict[str, str]]) -> List[str]: + missing_packages = [] + package_manager = cast(CuraPackageManager, CuraApplication.getInstance().getPackageManager()) + + for package in package_metadata: + package_id = package["id"] + if not package_manager.isPackageInstalled(package_id): + missing_packages.append(package_id) + + return missing_packages diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index b63d8b6288..7467134183 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -59,6 +59,7 @@ class WorkspaceDialog(QObject): self._objects_on_plate = False self._is_printer_group = False self._updatable_machines_model = UpdatableMachinesModel(self) + self._missing_package_ids = [] machineConflictChanged = pyqtSignal() qualityChangesConflictChanged = pyqtSignal() @@ -274,6 +275,9 @@ class WorkspaceDialog(QObject): self._has_quality_changes_conflict = quality_changes_conflict self.qualityChangesConflictChanged.emit() + def setRequiredPackages(self, missing_package_ids): + self._missing_package_ids = missing_package_ids + def getResult(self) -> Dict[str, Optional[str]]: if "machine" in self._result and self.updatableMachinesModel.count <= 1: self._result["machine"] = None From ce0623664a49f3c261ae1ec7d889ec074b60844f Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Tue, 31 May 2022 15:21:11 +0200 Subject: [PATCH 37/88] Include all missing package metadata instead of just ids so we have something to display before searching the package on the marketplace. This is also important so we can show something if we can't find the package on the marketplace. CURA-6990 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 9 +++++---- plugins/3MFReader/WorkspaceDialog.py | 6 +++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 66ebf6e0b2..7456ce2b95 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -582,7 +582,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Getting missing required package ids package_metadata = self._parse_packages_metadata(archive) - missing_package_ids = self._get_missing_package_ids(package_metadata) + missing_package_metadata = self._filter_missing_package_metadata(package_metadata) # Show the dialog, informing the user what is about to happen. self._dialog.setMachineConflict(machine_conflict) @@ -604,7 +604,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._dialog.setExtruders(extruders) self._dialog.setVariantType(variant_type_name) self._dialog.setHasObjectsOnPlate(Application.getInstance().platformActivity) - self._dialog.setRequiredPackages(missing_package_ids) + self._dialog.setMissingPackagesMetadata(missing_package_metadata) self._dialog.show() # Block until the dialog is closed. @@ -1261,13 +1261,14 @@ class ThreeMFWorkspaceReader(WorkspaceReader): @staticmethod - def _get_missing_package_ids(package_metadata: List[Dict[str, str]]) -> List[str]: + def _filter_missing_package_metadata(package_metadata: List[Dict[str, str]]) -> List[Dict[str, str]]: + """Filters out installed packages from package_metadata""" missing_packages = [] package_manager = cast(CuraPackageManager, CuraApplication.getInstance().getPackageManager()) for package in package_metadata: package_id = package["id"] if not package_manager.isPackageInstalled(package_id): - missing_packages.append(package_id) + missing_packages.append(package) return missing_packages diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 7467134183..950c9df2b9 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -59,7 +59,7 @@ class WorkspaceDialog(QObject): self._objects_on_plate = False self._is_printer_group = False self._updatable_machines_model = UpdatableMachinesModel(self) - self._missing_package_ids = [] + self._missing_package_metadata = [] machineConflictChanged = pyqtSignal() qualityChangesConflictChanged = pyqtSignal() @@ -275,8 +275,8 @@ class WorkspaceDialog(QObject): self._has_quality_changes_conflict = quality_changes_conflict self.qualityChangesConflictChanged.emit() - def setRequiredPackages(self, missing_package_ids): - self._missing_package_ids = missing_package_ids + def setMissingPackagesMetadata(self, missing_package_metadata): + self._missing_package_metadata = missing_package_metadata def getResult(self) -> Dict[str, Optional[str]]: if "machine" in self._result and self.updatableMachinesModel.count <= 1: From 5c1b7470a79718ef41ed2c5c936b3a55dd456a76 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Tue, 31 May 2022 15:26:56 +0200 Subject: [PATCH 38/88] Add pyqt access to missing package metadata. CURA-6990 --- plugins/3MFReader/WorkspaceDialog.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 950c9df2b9..0b3e79ed9c 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -278,6 +278,11 @@ class WorkspaceDialog(QObject): def setMissingPackagesMetadata(self, missing_package_metadata): self._missing_package_metadata = missing_package_metadata + @pyqtProperty("QVariantList") + def missingPackages(self): + return self._missing_package_metadata + + def getResult(self) -> Dict[str, Optional[str]]: if "machine" in self._result and self.updatableMachinesModel.count <= 1: self._result["machine"] = None From 094c781b02c0d39f999757c5f1ed94b29de01f0c Mon Sep 17 00:00:00 2001 From: Joey de l'Arago Date: Tue, 31 May 2022 15:49:57 +0200 Subject: [PATCH 39/88] Update plugins/XmlMaterialProfile/XmlMaterialProfile.py Co-authored-by: Remco Burema <41987080+rburema@users.noreply.github.com> --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 4cc3638f71..d7d11a1f44 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -343,7 +343,7 @@ class XmlMaterialProfile(InstanceContainer): return stream.getvalue().decode("utf-8") - def getFileName(self): + def getFileName(self) -> str: return (self.getMetaDataEntry("base_file") + ".xml.fdm_material").replace(" ", "+") # Recursively resolve loading inherited files From 29b645070475516484314cc846d63a38500f5ad3 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Tue, 31 May 2022 16:29:56 +0200 Subject: [PATCH 40/88] Add some more information for the unhappy route and a message to inform the user. CURA-6990 --- cura/CuraPackageManager.py | 5 +++-- plugins/3MFWriter/ThreeMFWriter.py | 10 +++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/cura/CuraPackageManager.py b/cura/CuraPackageManager.py index 0cb18ccc92..720406fbc6 100644 --- a/cura/CuraPackageManager.py +++ b/cura/CuraPackageManager.py @@ -4,6 +4,7 @@ import os from typing import Any, cast, Dict, List, Set, Tuple, TYPE_CHECKING, Optional +from UM.Logger import Logger from cura.CuraApplication import CuraApplication # To find some resource types. from cura.Settings.GlobalStack import GlobalStack @@ -70,9 +71,9 @@ class CuraPackageManager(PackageManager): parsed_guid = XmlMaterialProfile.getMetadataFromSerialized(f.read(), "GUID") if guid == parsed_guid: return package_id - continue - + Logger.error("Could not find package_id for file: {} with GUID: {} ".format(file_name, guid)) + return "" def getMachinesUsingPackage(self, package_id: str) -> Tuple[List[Tuple[GlobalStack, str, str]], List[Tuple[GlobalStack, str, str]]]: """Returns a list of where the package is used diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index 4bb8ab5881..eb96490fdb 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -9,6 +9,7 @@ from UM.Math.Vector import Vector from UM.Logger import Logger from UM.Math.Matrix import Matrix from UM.Application import Application +from UM.Message import Message from UM.Scene.SceneNode import SceneNode from cura.CuraApplication import CuraApplication @@ -269,7 +270,14 @@ class ThreeMFWriter(MeshWriter): package_id = package_manager.getMaterialFilePackageId(extruder.material.getFileName(), extruder.material.getMetaDataEntry("GUID")) package_data = package_manager.getInstalledPackageInfo(package_id) - if not package_data or package_data.get("is_bundled"): + if not package_data: + message = Message(catalog.i18nc("@error:uninstall", + "It was not possible to store material package information in project file: {material}. This project may not open correctly on other systems.".format(material=extruder.getName())), + title=catalog.i18nc("@info:title", "Failed to save material package information"), + message_type=Message.MessageType.WARNING) + message.show() + + if package_data.get("is_bundled"): continue material_metadata = {"id": package_id, From 84f19458c58ac4ca841672796833aa2d0c22fa49 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Tue, 31 May 2022 16:49:47 +0200 Subject: [PATCH 41/88] Display error when opening 3mf files CURA-6990 --- plugins/3MFReader/WorkspaceDialog.qml | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 4c384b306b..a890714877 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -17,7 +17,7 @@ UM.Dialog minimumWidth: UM.Theme.getSize("popup_dialog").width minimumHeight: UM.Theme.getSize("popup_dialog").height width: minimumWidth - + margin: UM.Theme.getSize("default_margin").width property int comboboxHeight: UM.Theme.getSize("default_margin").height onClosing: manager.notifyClosed() @@ -442,18 +442,36 @@ UM.Dialog } } + property bool warning: true + + buttonWarningText: "The material used in this project is currently not installed in Cura.
    Install the material profile and reopen the project." + buttonWarning: warning buttonSpacing: UM.Theme.getSize("default_margin").width rightButtons: [ Cura.TertiaryButton { + visible: !warning text: catalog.i18nc("@action:button", "Cancel") onClicked: reject() }, Cura.PrimaryButton { + visible: !warning text: catalog.i18nc("@action:button", "Open") onClicked: accept() + }, + Cura.TertiaryButton + { + visible: warning + text: catalog.i18nc("@action:button", "Open project anyway") + onClicked: reject() + }, + Cura.PrimaryButton + { + visible: warning + text: catalog.i18nc("@action:button", "Install missing Material") + onClicked: accept() } ] From aa83c68387e713452a1787c0f3504eec1572e9fd Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Tue, 31 May 2022 17:20:51 +0200 Subject: [PATCH 42/88] This error is not about materials, not uninstalling. --- plugins/3MFWriter/ThreeMFWriter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index eb96490fdb..a4a53dd813 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -271,7 +271,7 @@ class ThreeMFWriter(MeshWriter): package_data = package_manager.getInstalledPackageInfo(package_id) if not package_data: - message = Message(catalog.i18nc("@error:uninstall", + message = Message(catalog.i18nc("@error:material", "It was not possible to store material package information in project file: {material}. This project may not open correctly on other systems.".format(material=extruder.getName())), title=catalog.i18nc("@info:title", "Failed to save material package information"), message_type=Message.MessageType.WARNING) From cd18bfb89316c2847a2cbec2b62f4a12f2187765 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Wed, 1 Jun 2022 10:09:23 +0200 Subject: [PATCH 43/88] Set warning only if there are missing materials CURA-6990 --- plugins/3MFReader/WorkspaceDialog.qml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index a890714877..19f682b631 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -442,34 +442,32 @@ UM.Dialog } } - property bool warning: true - buttonWarningText: "The material used in this project is currently not installed in Cura.
    Install the material profile and reopen the project." - buttonWarning: warning + buttonWarning: manager.missingPackages.length > 0 buttonSpacing: UM.Theme.getSize("default_margin").width rightButtons: [ Cura.TertiaryButton { - visible: !warning + visible: !buttonWarning text: catalog.i18nc("@action:button", "Cancel") onClicked: reject() }, Cura.PrimaryButton { - visible: !warning + visible: !buttonWarning text: catalog.i18nc("@action:button", "Open") onClicked: accept() }, Cura.TertiaryButton { - visible: warning + visible: buttonWarning text: catalog.i18nc("@action:button", "Open project anyway") onClicked: reject() }, Cura.PrimaryButton { - visible: warning + visible: buttonWarning text: catalog.i18nc("@action:button", "Install missing Material") onClicked: accept() } From cd9fde946f95e38effdade8e62ccacc039cfb6be Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Wed, 1 Jun 2022 10:09:57 +0200 Subject: [PATCH 44/88] Add typing CURA-6990 --- plugins/3MFReader/WorkspaceDialog.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 0b3e79ed9c..6ce5d62531 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -59,7 +59,7 @@ class WorkspaceDialog(QObject): self._objects_on_plate = False self._is_printer_group = False self._updatable_machines_model = UpdatableMachinesModel(self) - self._missing_package_metadata = [] + self._missing_package_metadata: List[Dict[str, str]] = [] machineConflictChanged = pyqtSignal() qualityChangesConflictChanged = pyqtSignal() @@ -275,7 +275,7 @@ class WorkspaceDialog(QObject): self._has_quality_changes_conflict = quality_changes_conflict self.qualityChangesConflictChanged.emit() - def setMissingPackagesMetadata(self, missing_package_metadata): + def setMissingPackagesMetadata(self, missing_package_metadata: List[Dict[str, str]]) -> None: self._missing_package_metadata = missing_package_metadata @pyqtProperty("QVariantList") From 61332b0845839c2c74f95b5413ec06a7dd7df39a Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Wed, 1 Jun 2022 10:14:24 +0200 Subject: [PATCH 45/88] Remove website CURA-8610 --- plugins/3MFWriter/ThreeMFWriter.py | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index eb96490fdb..d6f08945a8 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -282,7 +282,6 @@ class ThreeMFWriter(MeshWriter): material_metadata = {"id": package_id, "display_name": package_data.get("display_name") if package_data.get("display_name") else "", - "website": package_data.get("website") if package_data.get("website") else "", "package_version": package_data.get("package_version") if package_data.get("package_version") else "", "sdk_version_semver": package_data.get("sdk_version_semver") if package_data.get("sdk_version_semver") else ""} From 5a3836b841c2b4bf4e2272c7e3f943dcba2dc34f Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Wed, 1 Jun 2022 10:39:03 +0200 Subject: [PATCH 46/88] Fix missingPackages not updating CURA-8610 --- plugins/3MFReader/WorkspaceDialog.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 6ce5d62531..04c9494ee7 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -80,6 +80,7 @@ class WorkspaceDialog(QObject): variantTypeChanged = pyqtSignal() extrudersChanged = pyqtSignal() isPrinterGroupChanged = pyqtSignal() + missingPackagesChanged = pyqtSignal() @pyqtProperty(bool, notify = isPrinterGroupChanged) def isPrinterGroup(self) -> bool: @@ -277,8 +278,9 @@ class WorkspaceDialog(QObject): def setMissingPackagesMetadata(self, missing_package_metadata: List[Dict[str, str]]) -> None: self._missing_package_metadata = missing_package_metadata + self.missingPackagesChanged.emit() - @pyqtProperty("QVariantList") + @pyqtProperty("QVariantList", notify=missingPackagesChanged) def missingPackages(self): return self._missing_package_metadata From e6551821aaf6ab69f2fb4e1f735427506ead22b5 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 1 Jun 2022 11:07:01 +0200 Subject: [PATCH 47/88] Use intent category if no translation is available Previously we would only accept intents that had a translation. If we could not find one, we would use "unknown" as the intent category. However, we didn't really do this consistently. In some places it would show unkown and in others we'd show the intent type. This should make the behavior the same across the board. It will try to get a translation for the intent category and show that. If it's unable to find that it will use the category instead. Note that it will use the python title function to ensure it has nice capitalisation CURA-9297 --- cura/Machines/Models/IntentCategoryModel.py | 2 +- cura/Machines/Models/QualityManagementModel.py | 3 ++- cura/Settings/MachineManager.py | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cura/Machines/Models/IntentCategoryModel.py b/cura/Machines/Models/IntentCategoryModel.py index 14e3c4d35e..e94bbe6d00 100644 --- a/cura/Machines/Models/IntentCategoryModel.py +++ b/cura/Machines/Models/IntentCategoryModel.py @@ -111,7 +111,7 @@ class IntentCategoryModel(ListModel): except ValueError: weight = 99 result.append({ - "name": IntentCategoryModel.translation(category, "name", category), + "name": IntentCategoryModel.translation(category, "name", category.title()), "description": IntentCategoryModel.translation(category, "description", None), "intent_category": category, "weight": weight, diff --git a/cura/Machines/Models/QualityManagementModel.py b/cura/Machines/Models/QualityManagementModel.py index 8db8719784..b4fb8b38b5 100644 --- a/cura/Machines/Models/QualityManagementModel.py +++ b/cura/Machines/Models/QualityManagementModel.py @@ -358,8 +358,9 @@ class QualityManagementModel(ListModel): "quality_type": quality_type, "quality_changes_group": None, "intent_category": intent_category, - "section_name": catalog.i18nc("@label", intent_translations.get(intent_category, {}).get("name", catalog.i18nc("@label", "Unknown"))), + "section_name": catalog.i18nc("@label", intent_translations.get(intent_category, {}).get("name", catalog.i18nc("@label", intent_category.title()))), }) + # Sort by quality_type for each intent category intent_translations_list = list(intent_translations) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 1c7a8f0e98..9b98179bff 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -1611,7 +1611,7 @@ class MachineManager(QObject): if intent_category != "default": intent_display_name = IntentCategoryModel.translation(intent_category, "name", - catalog.i18nc("@label", "Unknown")) + intent_category.title()) display_name = "{intent_name} - {the_rest}".format(intent_name = intent_display_name, the_rest = display_name) From 20efe02d8b09d5830bf6ce06d90acc3c1ac3557f Mon Sep 17 00:00:00 2001 From: "p.kuiper" Date: Wed, 1 Jun 2022 13:54:00 +0200 Subject: [PATCH 48/88] Also changed the jerk setting for support material to 20mm/s to prevent flow ringing in the support material and increase productivity. Relates to PP-19 --- resources/definitions/ultimaker3.def.json | 10 +++++----- resources/definitions/ultimaker_s3.def.json | 10 +++++----- resources/definitions/ultimaker_s5.def.json | 10 +++++----- resources/variants/ultimaker3_bb0.8.inst.cfg | 3 --- resources/variants/ultimaker3_extended_bb0.8.inst.cfg | 3 --- resources/variants/ultimaker3_extended_bb04.inst.cfg | 3 --- resources/variants/ultimaker_s3_bb0.8.inst.cfg | 3 --- resources/variants/ultimaker_s5_bb0.8.inst.cfg | 3 --- resources/variants/ultimaker_s5_bb04.inst.cfg | 3 --- 9 files changed, 15 insertions(+), 33 deletions(-) diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index fd21ab5271..5505cf4ddf 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -108,13 +108,13 @@ "jerk_roofing": {"minimum_value_warning": 20 }, "jerk_topbottom": { "value": "jerk_print", "minimum_value_warning": 20 }, "jerk_support": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_support_infill": {"minimum_value_warning": 20 }, - "jerk_support_interface": { "value": "math.ceil(jerk_print * 5 / 20)"}, + "jerk_support_infill": {"value": "jerk_print", "minimum_value_warning": 20 }, + "jerk_support_interface": {"value": "jerk_topbottom", "minimum_value_warning": 20}, "jerk_prime_tower": { "value": "jerk_print", "minimum_value_warning": 20 }, "jerk_layer_0": { "value": "jerk_topbottom", "minimum_value_warning": 20}, - "jerk_print_layer_0": {"minimum_value_warning": 20 }, - "jerk_travel_layer_0": {"minimum_value_warning": 20 }, - "jerk_skirt_brim": {"minimum_value_warning": 20 }, + "jerk_print_layer_0": {"value": "jerk_print", "minimum_value_warning": 20 }, + "jerk_travel_layer_0": {"value": "jerk_travel", "minimum_value_warning": 20 }, + "jerk_skirt_brim": {"value": "jerk_print", "minimum_value_warning": 20 }, "layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" }, "layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" }, "layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" }, diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json index 640a062c6d..5761b09c19 100644 --- a/resources/definitions/ultimaker_s3.def.json +++ b/resources/definitions/ultimaker_s3.def.json @@ -100,13 +100,13 @@ "jerk_roofing": {"minimum_value_warning": 20 }, "jerk_topbottom": { "value": "jerk_print", "minimum_value_warning": 20 }, "jerk_support": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_support_infill": {"minimum_value_warning": 20 }, - "jerk_support_interface": { "value": "math.ceil(jerk_print * 5 / 20)"}, + "jerk_support_infill": {"value": "jerk_print", "minimum_value_warning": 20 }, + "jerk_support_interface": {"value": "jerk_topbottom", "minimum_value_warning": 20}, "jerk_prime_tower": { "value": "jerk_print", "minimum_value_warning": 20 }, "jerk_layer_0": { "value": "jerk_topbottom", "minimum_value_warning": 20}, - "jerk_print_layer_0": {"minimum_value_warning": 20 }, - "jerk_travel_layer_0": {"minimum_value_warning": 20 }, - "jerk_skirt_brim": {"minimum_value_warning": 20 }, + "jerk_print_layer_0": {"value": "jerk_print", "minimum_value_warning": 20 }, + "jerk_travel_layer_0": {"value": "jerk_travel", "minimum_value_warning": 20 }, + "jerk_skirt_brim": {"value": "jerk_print", "minimum_value_warning": 20 }, "layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" }, "layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" }, "layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" }, diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index 0d5d7499cc..bfd80caeab 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -102,13 +102,13 @@ "jerk_roofing": {"minimum_value_warning": 20 }, "jerk_topbottom": { "value": "jerk_print", "minimum_value_warning": 20 }, "jerk_support": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_support_infill": {"minimum_value_warning": 20 }, - "jerk_support_interface": { "value": "math.ceil(jerk_print * 5 / 20)"}, + "jerk_support_infill": {"value": "jerk_print", "minimum_value_warning": 20 }, + "jerk_support_interface": {"value": "jerk_topbottom", "minimum_value_warning": 20}, "jerk_prime_tower": { "value": "jerk_print", "minimum_value_warning": 20 }, "jerk_layer_0": { "value": "jerk_topbottom", "minimum_value_warning": 20}, - "jerk_print_layer_0": {"minimum_value_warning": 20 }, - "jerk_travel_layer_0": {"minimum_value_warning": 20 }, - "jerk_skirt_brim": {"minimum_value_warning": 20 }, + "jerk_print_layer_0": {"value": "jerk_print", "minimum_value_warning": 20 }, + "jerk_travel_layer_0": {"value": "jerk_travel", "minimum_value_warning": 20 }, + "jerk_skirt_brim": {"value": "jerk_print", "minimum_value_warning": 20 }, "layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" }, "layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" }, "layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" }, diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index 09706598ab..8b9b575a46 100644 --- a/resources/variants/ultimaker3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_bb0.8.inst.cfg @@ -24,9 +24,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0 jerk_enabled = True jerk_print = 25 -jerk_support = =max(math.ceil(jerk_print * 15 / 25), 20) -jerk_support_interface = =max(math.ceil(jerk_support * 10 / 15), 20) -jerk_support_bottom = =max(math.ceil(jerk_support_interface * 1 / 10), 20) layer_height = 0.2 machine_min_cool_heat_time_window = 15 machine_nozzle_heat_up_speed = 1.5 diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg index b50c9cc81b..e5caf082c6 100644 --- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg @@ -24,9 +24,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0 jerk_enabled = True jerk_print = 25 -jerk_support = =max(math.ceil(jerk_print * 15 / 25), 20) -jerk_support_interface = =max(math.ceil(jerk_support * 10 / 15), 20) -jerk_support_bottom = =max(math.ceil(jerk_support_interface * 1 / 10), 20) layer_height = 0.2 machine_min_cool_heat_time_window = 15 machine_nozzle_heat_up_speed = 1.5 diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index 798685946f..deb96bb5b4 100644 --- a/resources/variants/ultimaker3_extended_bb04.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg @@ -15,9 +15,6 @@ acceleration_support_interface = =math.ceil(acceleration_support * 1500 / 2000) acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 / 1500) cool_fan_speed_max = =cool_fan_speed gradual_support_infill_steps = 2 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_interface = =math.ceil(jerk_support * 10 / 15) -jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10) machine_nozzle_heat_up_speed = 1.5 machine_nozzle_id = BB 0.4 machine_nozzle_tip_outer_diameter = 1.0 diff --git a/resources/variants/ultimaker_s3_bb0.8.inst.cfg b/resources/variants/ultimaker_s3_bb0.8.inst.cfg index 56b2d3a5c3..cdd8c4814f 100644 --- a/resources/variants/ultimaker_s3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s3_bb0.8.inst.cfg @@ -23,9 +23,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0 jerk_enabled = True jerk_print = 25 -jerk_support = =max(math.ceil(jerk_print * 15 / 25), 20) -jerk_support_interface = =max(math.ceil(jerk_support * 10 / 15), 20) -jerk_support_bottom = =max(math.ceil(jerk_support_interface * 1 / 10), 20) layer_height = 0.2 machine_min_cool_heat_time_window = 15 machine_nozzle_heat_up_speed = 1.5 diff --git a/resources/variants/ultimaker_s5_bb0.8.inst.cfg b/resources/variants/ultimaker_s5_bb0.8.inst.cfg index 0c0e162745..57c9ab6193 100644 --- a/resources/variants/ultimaker_s5_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_bb0.8.inst.cfg @@ -23,9 +23,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0 jerk_enabled = True jerk_print = 25 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_interface = =math.ceil(jerk_support * 10 / 15) -jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10) layer_height = 0.2 machine_min_cool_heat_time_window = 15 machine_nozzle_heat_up_speed = 1.5 diff --git a/resources/variants/ultimaker_s5_bb04.inst.cfg b/resources/variants/ultimaker_s5_bb04.inst.cfg index 90c19685ba..553a6a9903 100644 --- a/resources/variants/ultimaker_s5_bb04.inst.cfg +++ b/resources/variants/ultimaker_s5_bb04.inst.cfg @@ -15,9 +15,6 @@ acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 / acceleration_prime_tower = =math.ceil(acceleration_print * 200 / 3500) cool_fan_speed_max = =cool_fan_speed gradual_support_infill_steps = 2 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_interface = =math.ceil(jerk_support * 10 / 15) -jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10) machine_nozzle_heat_up_speed = 1.5 machine_nozzle_id = BB 0.4 machine_nozzle_tip_outer_diameter = 1.0 From d35c862bb845157463388ede4411706019850b1f Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Wed, 1 Jun 2022 14:26:44 +0200 Subject: [PATCH 49/88] Prevent run of out-of-install executable in secure context. SEC-257 | CURA-8968 --- .../CuraEngineBackend/CuraEngineBackend.py | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index d7ed5fac21..18088a99c6 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -60,7 +60,7 @@ class CuraEngineBackend(QObject, Backend): executable_name = "CuraEngine" if Platform.isWindows(): executable_name += ".exe" - default_engine_location = executable_name + self._default_engine_location = executable_name search_path = [ os.path.abspath(os.path.dirname(sys.executable)), @@ -74,29 +74,29 @@ class CuraEngineBackend(QObject, Backend): for path in search_path: engine_path = os.path.join(path, executable_name) if os.path.isfile(engine_path): - default_engine_location = engine_path + self._default_engine_location = engine_path break - if Platform.isLinux() and not default_engine_location: + if Platform.isLinux() and not self._default_engine_location: if not os.getenv("PATH"): raise OSError("There is something wrong with your Linux installation.") for pathdir in cast(str, os.getenv("PATH")).split(os.pathsep): execpath = os.path.join(pathdir, executable_name) if os.path.exists(execpath): - default_engine_location = execpath + self._default_engine_location = execpath break application = CuraApplication.getInstance() #type: CuraApplication self._multi_build_plate_model = None #type: Optional[MultiBuildPlateModel] self._machine_error_checker = None #type: Optional[MachineErrorChecker] - if not default_engine_location: + if not self._default_engine_location: raise EnvironmentError("Could not find CuraEngine") - Logger.log("i", "Found CuraEngine at: %s", default_engine_location) + Logger.log("i", "Found CuraEngine at: %s", self._default_engine_location) - default_engine_location = os.path.abspath(default_engine_location) - application.getPreferences().addPreference("backend/location", default_engine_location) + self._default_engine_location = os.path.abspath(self._default_engine_location) + application.getPreferences().addPreference("backend/location", self._default_engine_location) # Workaround to disable layer view processing if layer view is not active. self._layer_view_active = False #type: bool @@ -215,7 +215,12 @@ class CuraEngineBackend(QObject, Backend): This is useful for debugging and used to actually start the engine. :return: list of commands and args / parameters. """ - command = [CuraApplication.getInstance().getPreferences().getValue("backend/location"), "connect", "127.0.0.1:{0}".format(self._port), ""] + from cura import ApplicationMetadata + if ApplicationMetadata.IsEnterpriseVersion: + command = [self._default_engine_location] + else: + command = [CuraApplication.getInstance().getPreferences().getValue("backend/location")] + command += ["connect", "127.0.0.1:{0}".format(self._port), ""] parser = argparse.ArgumentParser(prog = "cura", add_help = False) parser.add_argument("--debug", action = "store_true", default = False, help = "Turn on the debug mode by setting this option.") From 14355aa904c7b6937188e3a04c003c72c4594eb8 Mon Sep 17 00:00:00 2001 From: Rijk van Manen Date: Wed, 1 Jun 2022 15:10:34 +0200 Subject: [PATCH 50/88] default retraction limit settings most ultimaker profiles use this setting as a default. PP-170 --- resources/definitions/ultimaker.def.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 2946a06c6d..8d697bd597 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -59,6 +59,12 @@ "retraction_combing": { "value": "'no_outer_surfaces'" }, + "retraction_count_max": { + "value": 25 + }, + "retraction_extrusion_window": { + "value": 1 + }, "roofing_layer_count": { "value": "0" }, From 3a2a58f54650c613505c5cb89f483273522bd30a Mon Sep 17 00:00:00 2001 From: Rijk van Manen Date: Wed, 1 Jun 2022 15:16:23 +0200 Subject: [PATCH 51/88] remove setting, follow the default PP-170 --- resources/definitions/ultimaker3.def.json | 2 -- resources/definitions/ultimaker_s3.def.json | 2 -- resources/definitions/ultimaker_s5.def.json | 2 -- .../quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.25_PETG_Normal_Quality.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg | 1 - resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg | 2 -- resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg | 2 -- .../quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg | 2 -- .../quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg | 2 -- .../ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg | 1 - .../ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg | 1 - .../ultimaker_s3/um_s3_aa0.25_PETG_Normal_Quality.inst.cfg | 1 - .../quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg | 1 - .../quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg | 1 - .../ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg | 1 - .../ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg | 1 - .../quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg | 2 -- .../quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg | 2 -- .../quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg | 2 -- .../ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg | 2 -- .../ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.25_PETG_Normal_Quality.inst.cfg | 1 - .../quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg | 1 - .../quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg | 1 - .../quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg | 2 -- .../quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg | 2 -- .../quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg | 2 -- .../ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg | 2 -- resources/variants/ultimaker3_aa0.25.inst.cfg | 2 -- resources/variants/ultimaker3_aa0.8.inst.cfg | 2 -- resources/variants/ultimaker3_aa04.inst.cfg | 1 - resources/variants/ultimaker3_bb0.8.inst.cfg | 2 -- resources/variants/ultimaker3_bb04.inst.cfg | 2 -- resources/variants/ultimaker3_extended_aa0.25.inst.cfg | 2 -- resources/variants/ultimaker3_extended_aa0.8.inst.cfg | 2 -- resources/variants/ultimaker3_extended_aa04.inst.cfg | 1 - resources/variants/ultimaker3_extended_bb0.8.inst.cfg | 2 -- resources/variants/ultimaker3_extended_bb04.inst.cfg | 2 -- resources/variants/ultimaker_s3_aa0.25.inst.cfg | 3 +-- resources/variants/ultimaker_s3_aa0.8.inst.cfg | 2 -- resources/variants/ultimaker_s3_aa04.inst.cfg | 1 - resources/variants/ultimaker_s3_bb0.8.inst.cfg | 2 -- resources/variants/ultimaker_s3_bb04.inst.cfg | 2 -- resources/variants/ultimaker_s3_cc04.inst.cfg | 1 - resources/variants/ultimaker_s3_cc06.inst.cfg | 1 - resources/variants/ultimaker_s5_aa0.25.inst.cfg | 2 -- resources/variants/ultimaker_s5_aa0.8.inst.cfg | 2 -- resources/variants/ultimaker_s5_aa04.inst.cfg | 1 - resources/variants/ultimaker_s5_bb0.8.inst.cfg | 2 -- resources/variants/ultimaker_s5_bb04.inst.cfg | 2 -- resources/variants/ultimaker_s5_cc04.inst.cfg | 1 - resources/variants/ultimaker_s5_cc06.inst.cfg | 1 - 60 files changed, 1 insertion(+), 91 deletions(-) diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index fd21ab5271..000f114122 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -136,8 +136,6 @@ "raft_margin": { "value": "10" }, "raft_surface_layers": { "value": "1" }, "retraction_amount": { "value": "6.5" }, - "retraction_count_max": { "value": "10" }, - "retraction_extrusion_window": { "value": "1" }, "retraction_hop": { "value": "2" }, "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" }, "retraction_hop_only_when_collides": { "value": "True" }, diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json index 640a062c6d..c4f2de9a60 100644 --- a/resources/definitions/ultimaker_s3.def.json +++ b/resources/definitions/ultimaker_s3.def.json @@ -128,8 +128,6 @@ "raft_speed": { "value": "25" }, "raft_surface_layers": { "value": "1" }, "retraction_amount": { "value": "6.5" }, - "retraction_count_max": { "value": "10" }, - "retraction_extrusion_window": { "value": "1" }, "retraction_hop": { "value": "2" }, "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" }, "retraction_hop_only_when_collides": { "value": "True" }, diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index 0d5d7499cc..2cef93fcaf 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -130,8 +130,6 @@ "raft_surface_layers": { "value": "1" }, "retraction_amount": { "value": "6.5" }, "retraction_combing": { "value": "'no_outer_surfaces'"}, - "retraction_count_max": { "value": "10" }, - "retraction_extrusion_window": { "value": "1" }, "retraction_hop": { "value": "2" }, "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" }, "retraction_hop_only_when_collides": { "value": "True" }, diff --git a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg index c63858f825..a24b18563d 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg @@ -12,7 +12,6 @@ material = generic_cpe variant = AA 0.25 [values] -retraction_extrusion_window = 0.5 speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg index c17554a0cc..8ccde4e1b5 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 @@ -30,7 +30,6 @@ prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) -retraction_count_max = 80 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PETG_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PETG_Normal_Quality.inst.cfg index 36a3e23c27..ce7087bf3a 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PETG_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PETG_Normal_Quality.inst.cfg @@ -12,7 +12,6 @@ material = generic_petg variant = AA 0.25 [values] -retraction_extrusion_window = 0.5 speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg index f2b4caf168..82286bb5ab 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 @@ -29,7 +29,6 @@ material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg index addd4790db..42a0354547 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 @@ -29,7 +29,6 @@ material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg index 3c1baa8640..5f5d7c937b 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 @@ -31,7 +31,6 @@ material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg index e0c239c536..6004eeb842 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 @@ -30,7 +30,6 @@ material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg index f33132ee5b..3567b809ec 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 @@ -39,8 +39,6 @@ prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) -retraction_count_max = 80 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg index 8c02c9c816..b21915617b 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 @@ -37,8 +37,6 @@ prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) -retraction_count_max = 80 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg index 4ff801f4fa..07ce23faa9 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 @@ -39,8 +39,6 @@ prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) -retraction_count_max = 80 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg index 180d96011d..7bdee75d36 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 @@ -36,8 +36,6 @@ prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) -retraction_count_max = 80 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg index d875b9c8f3..5ced8748b1 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg @@ -13,7 +13,6 @@ variant = AA 0.25 [values] retraction_combing_max_distance = 50 -retraction_extrusion_window = 0.5 speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg index a3a0073bba..071db69a43 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg @@ -30,7 +30,6 @@ prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) -retraction_count_max = 80 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PETG_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PETG_Normal_Quality.inst.cfg index 516f24dec5..6c3a7e7a81 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_PETG_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PETG_Normal_Quality.inst.cfg @@ -13,7 +13,6 @@ variant = AA 0.25 [values] retraction_combing_max_distance = 8 -retraction_extrusion_window = 0.5 speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg index 0b8555734e..8a060fd258 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 @@ -28,7 +28,6 @@ multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True retraction_combing_max_distance = 50 -retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg index f3dce95478..526e12bfe0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -28,7 +28,6 @@ multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True retraction_combing_max_distance = 50 -retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg index f895647971..28f01d544b 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 @@ -30,7 +30,6 @@ multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True retraction_combing_max_distance = 50 -retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg index bba0f354c9..abb7689a38 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 @@ -30,7 +30,6 @@ multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True retraction_combing_max_distance = 50 -retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg index 85d31733e6..5190288662 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg @@ -38,8 +38,6 @@ prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) -retraction_count_max = 80 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg index a9cdf6336d..0d88afb30a 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 @@ -36,8 +36,6 @@ prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) -retraction_count_max = 80 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg index ff5d6f4f7c..c694b5db79 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg @@ -38,8 +38,6 @@ prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) -retraction_count_max = 80 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg index a61e50f280..5287ce24c4 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg @@ -36,8 +36,6 @@ prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) -retraction_count_max = 80 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg index 52499d000c..f895450c0a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg @@ -13,7 +13,6 @@ variant = AA 0.25 [values] retraction_combing_max_distance = 50 -retraction_extrusion_window = 0.5 speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg index e77d2a2dd9..0d6cc0cd78 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 @@ -30,7 +30,6 @@ prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) -retraction_count_max = 80 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PETG_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PETG_Normal_Quality.inst.cfg index 7a3b50c550..76c8372166 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PETG_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PETG_Normal_Quality.inst.cfg @@ -13,7 +13,6 @@ variant = AA 0.25 [values] retraction_combing_max_distance = 8 -retraction_extrusion_window = 0.5 speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg index 1d12f8f8d9..83833939fc 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 @@ -28,7 +28,6 @@ multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True retraction_combing_max_distance = 50 -retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg index 12db110133..9b2e84614b 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 @@ -28,7 +28,6 @@ multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True retraction_combing_max_distance = 50 -retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg index eb4db520bd..d6a0d6306d 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 @@ -30,7 +30,6 @@ multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True retraction_combing_max_distance = 50 -retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg index 71102926d8..f087010c9e 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 @@ -29,7 +29,6 @@ multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True retraction_combing_max_distance = 50 -retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg index d9bc39705b..997bdfcd88 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 @@ -37,8 +37,6 @@ prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) -retraction_count_max = 80 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg index 03999c27e1..8b8a21911b 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 @@ -36,8 +36,6 @@ prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) -retraction_count_max = 80 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg index de05aa5cac..73e151926c 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 @@ -38,8 +38,6 @@ prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) -retraction_count_max = 80 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg index 658e118686..5343242e32 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 @@ -36,8 +36,6 @@ prime_tower_enable = True prime_tower_wipe_enabled = True raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) -retraction_count_max = 80 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/variants/ultimaker3_aa0.25.inst.cfg b/resources/variants/ultimaker3_aa0.25.inst.cfg index 2d59246c4a..1763fa9dfd 100644 --- a/resources/variants/ultimaker3_aa0.25.inst.cfg +++ b/resources/variants/ultimaker3_aa0.25.inst.cfg @@ -26,8 +26,6 @@ raft_interface_thickness = =layer_height * 1.5 raft_jerk = =jerk_print raft_margin = 15 raft_surface_layers = 2 -retraction_count_max = 25 -retraction_extrusion_window = 1 retraction_min_travel = 0.7 retraction_prime_speed = =retraction_speed skin_overlap = 15 diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg index ead9c3b87a..9b0fba58e7 100644 --- a/resources/variants/ultimaker3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_aa0.8.inst.cfg @@ -34,8 +34,6 @@ prime_tower_enable = False prime_tower_wipe_enabled = True retract_at_layer_change = =not magic_spiralize retraction_amount = 6.5 -retraction_count_max = 25 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 2 diff --git a/resources/variants/ultimaker3_aa04.inst.cfg b/resources/variants/ultimaker3_aa04.inst.cfg index d82cca6b01..bf9e8592d6 100644 --- a/resources/variants/ultimaker3_aa04.inst.cfg +++ b/resources/variants/ultimaker3_aa04.inst.cfg @@ -23,7 +23,6 @@ raft_jerk = =jerk_print raft_margin = 15 raft_surface_layers = 2 retraction_amount = 6.5 -retraction_count_max = 25 retraction_min_travel = =line_width * 2 retraction_prime_speed = =retraction_speed skin_overlap = 15 diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index 09706598ab..191af44f7f 100644 --- a/resources/variants/ultimaker3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_bb0.8.inst.cfg @@ -50,8 +50,6 @@ raft_margin = 10 raft_speed = 25 raft_surface_layers = 1 retraction_amount = 4.5 -retraction_count_max = 15 -retraction_extrusion_window = =retraction_amount retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 3 diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index 60dfc44e8c..ff6f20a533 100644 --- a/resources/variants/ultimaker3_bb04.inst.cfg +++ b/resources/variants/ultimaker3_bb04.inst.cfg @@ -25,8 +25,6 @@ raft_base_speed = 20 raft_interface_speed = 20 raft_speed = 25 retraction_amount = 4.5 -retraction_count_max = 20 -retraction_extrusion_window = =retraction_amount retraction_min_travel = =3 * line_width speed_layer_0 = 20 speed_prime_tower = =math.ceil(speed_print * 10 / 35) diff --git a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg index d6f375932e..ac7aa996c7 100644 --- a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg @@ -26,8 +26,6 @@ raft_interface_thickness = =layer_height * 1.5 raft_jerk = =jerk_print raft_margin = 15 raft_surface_layers = 2 -retraction_count_max = 25 -retraction_extrusion_window = 1 retraction_min_travel = 0.7 retraction_prime_speed = =retraction_speed skin_overlap = 15 diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg index df7e9486a2..639ff82eba 100644 --- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg @@ -34,8 +34,6 @@ prime_tower_enable = False prime_tower_wipe_enabled = True retract_at_layer_change = True retraction_amount = 6.5 -retraction_count_max = 25 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 2 diff --git a/resources/variants/ultimaker3_extended_aa04.inst.cfg b/resources/variants/ultimaker3_extended_aa04.inst.cfg index f95c820780..777f5a3a19 100644 --- a/resources/variants/ultimaker3_extended_aa04.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa04.inst.cfg @@ -23,7 +23,6 @@ raft_jerk = =jerk_print raft_margin = 15 raft_surface_layers = 2 retraction_amount = 6.5 -retraction_count_max = 25 retraction_min_travel = =line_width * 2 retraction_prime_speed = =retraction_speed skin_overlap = 15 diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg index b50c9cc81b..9c73bd7bb2 100644 --- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg @@ -50,8 +50,6 @@ raft_margin = 10 raft_speed = 25 raft_surface_layers = 1 retraction_amount = 4.5 -retraction_count_max = 15 -retraction_extrusion_window = =retraction_amount retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 3 diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index 798685946f..dd644a2c07 100644 --- a/resources/variants/ultimaker3_extended_bb04.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg @@ -25,8 +25,6 @@ raft_base_speed = 20 raft_interface_speed = 20 raft_speed = 25 retraction_amount = 4.5 -retraction_count_max = 20 -retraction_extrusion_window = =retraction_amount retraction_min_travel = =3 * line_width speed_layer_0 = 20 speed_prime_tower = =math.ceil(speed_print * 10 / 35) diff --git a/resources/variants/ultimaker_s3_aa0.25.inst.cfg b/resources/variants/ultimaker_s3_aa0.25.inst.cfg index fdbd9f6d3b..14d1e3a7b8 100644 --- a/resources/variants/ultimaker_s3_aa0.25.inst.cfg +++ b/resources/variants/ultimaker_s3_aa0.25.inst.cfg @@ -26,8 +26,7 @@ raft_interface_thickness = =layer_height * 1.5 raft_jerk = =jerk_print raft_margin = 15 raft_surface_layers = 2 -retraction_count_max = 25 -retraction_extrusion_window = 1 + retraction_min_travel = 0.7 retraction_prime_speed = =retraction_speed skin_overlap = 15 diff --git a/resources/variants/ultimaker_s3_aa0.8.inst.cfg b/resources/variants/ultimaker_s3_aa0.8.inst.cfg index 237b38fa11..4f27cd008a 100644 --- a/resources/variants/ultimaker_s3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker_s3_aa0.8.inst.cfg @@ -34,8 +34,6 @@ prime_tower_enable = False prime_tower_wipe_enabled = True retract_at_layer_change = =not magic_spiralize retraction_amount = 6.5 -retraction_count_max = 25 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 2 diff --git a/resources/variants/ultimaker_s3_aa04.inst.cfg b/resources/variants/ultimaker_s3_aa04.inst.cfg index 181a237405..f6049f3c6d 100644 --- a/resources/variants/ultimaker_s3_aa04.inst.cfg +++ b/resources/variants/ultimaker_s3_aa04.inst.cfg @@ -23,7 +23,6 @@ raft_jerk = =jerk_print raft_margin = 15 raft_surface_layers = 2 retraction_amount = 6.5 -retraction_count_max = 25 retraction_min_travel = =line_width * 2 skin_overlap = 15 speed_print = 70 diff --git a/resources/variants/ultimaker_s3_bb0.8.inst.cfg b/resources/variants/ultimaker_s3_bb0.8.inst.cfg index 56b2d3a5c3..a2d6ede0ea 100644 --- a/resources/variants/ultimaker_s3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s3_bb0.8.inst.cfg @@ -49,8 +49,6 @@ raft_margin = 10 raft_speed = 25 raft_surface_layers = 1 retraction_amount = 4.5 -retraction_count_max = 15 -retraction_extrusion_window = =retraction_amount retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 3 diff --git a/resources/variants/ultimaker_s3_bb04.inst.cfg b/resources/variants/ultimaker_s3_bb04.inst.cfg index 2fad997372..230e525ee9 100644 --- a/resources/variants/ultimaker_s3_bb04.inst.cfg +++ b/resources/variants/ultimaker_s3_bb04.inst.cfg @@ -25,8 +25,6 @@ raft_base_speed = 20 raft_interface_speed = 20 raft_speed = 25 retraction_amount = 4.5 -retraction_count_max = 20 -retraction_extrusion_window = =retraction_amount retraction_min_travel = =3 * line_width speed_layer_0 = 20 speed_prime_tower = =math.ceil(speed_print * 10 / 35) diff --git a/resources/variants/ultimaker_s3_cc04.inst.cfg b/resources/variants/ultimaker_s3_cc04.inst.cfg index f83e60119b..9a5194ad15 100644 --- a/resources/variants/ultimaker_s3_cc04.inst.cfg +++ b/resources/variants/ultimaker_s3_cc04.inst.cfg @@ -22,7 +22,6 @@ raft_interface_thickness = =layer_height * 1.5 raft_jerk = =jerk_print raft_margin = 15 raft_surface_layers = 2 -retraction_count_max = 25 retraction_min_travel = =line_width * 2 retraction_prime_speed = =retraction_speed speed_infill = =speed_print diff --git a/resources/variants/ultimaker_s3_cc06.inst.cfg b/resources/variants/ultimaker_s3_cc06.inst.cfg index 2563ca2c11..8a839f040e 100644 --- a/resources/variants/ultimaker_s3_cc06.inst.cfg +++ b/resources/variants/ultimaker_s3_cc06.inst.cfg @@ -22,7 +22,6 @@ raft_interface_thickness = =layer_height * 1.5 raft_jerk = =jerk_print raft_margin = 15 raft_surface_layers = 2 -retraction_count_max = 25 retraction_min_travel = =line_width * 2 retraction_prime_speed = =retraction_speed speed_infill = =speed_print diff --git a/resources/variants/ultimaker_s5_aa0.25.inst.cfg b/resources/variants/ultimaker_s5_aa0.25.inst.cfg index c57414f18a..edd2141acc 100644 --- a/resources/variants/ultimaker_s5_aa0.25.inst.cfg +++ b/resources/variants/ultimaker_s5_aa0.25.inst.cfg @@ -26,8 +26,6 @@ raft_interface_thickness = =layer_height * 1.5 raft_jerk = =jerk_print raft_margin = 15 raft_surface_layers = 2 -retraction_count_max = 25 -retraction_extrusion_window = 1 retraction_min_travel = 0.7 retraction_prime_speed = =retraction_speed skin_overlap = 15 diff --git a/resources/variants/ultimaker_s5_aa0.8.inst.cfg b/resources/variants/ultimaker_s5_aa0.8.inst.cfg index 6eb4ac8e25..5e55770225 100644 --- a/resources/variants/ultimaker_s5_aa0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_aa0.8.inst.cfg @@ -34,8 +34,6 @@ prime_tower_enable = False prime_tower_wipe_enabled = True retract_at_layer_change = =not magic_spiralize retraction_amount = 6.5 -retraction_count_max = 25 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 2 diff --git a/resources/variants/ultimaker_s5_aa04.inst.cfg b/resources/variants/ultimaker_s5_aa04.inst.cfg index 8e4b7780f0..8453254625 100644 --- a/resources/variants/ultimaker_s5_aa04.inst.cfg +++ b/resources/variants/ultimaker_s5_aa04.inst.cfg @@ -23,7 +23,6 @@ raft_jerk = =jerk_print raft_margin = 15 raft_surface_layers = 2 retraction_amount = 6.5 -retraction_count_max = 25 retraction_min_travel = =line_width * 2 skin_overlap = 15 speed_print = 70 diff --git a/resources/variants/ultimaker_s5_bb0.8.inst.cfg b/resources/variants/ultimaker_s5_bb0.8.inst.cfg index 0c0e162745..9a6a3961e5 100644 --- a/resources/variants/ultimaker_s5_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_bb0.8.inst.cfg @@ -49,8 +49,6 @@ raft_margin = 10 raft_speed = 25 raft_surface_layers = 1 retraction_amount = 4.5 -retraction_count_max = 15 -retraction_extrusion_window = =retraction_amount retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 3 diff --git a/resources/variants/ultimaker_s5_bb04.inst.cfg b/resources/variants/ultimaker_s5_bb04.inst.cfg index 90c19685ba..113bfa7f3b 100644 --- a/resources/variants/ultimaker_s5_bb04.inst.cfg +++ b/resources/variants/ultimaker_s5_bb04.inst.cfg @@ -25,8 +25,6 @@ raft_base_speed = 20 raft_interface_speed = 20 raft_speed = 25 retraction_amount = 4.5 -retraction_count_max = 20 -retraction_extrusion_window = =retraction_amount retraction_min_travel = =3 * line_width speed_layer_0 = 20 speed_prime_tower = =math.ceil(speed_print * 10 / 35) diff --git a/resources/variants/ultimaker_s5_cc04.inst.cfg b/resources/variants/ultimaker_s5_cc04.inst.cfg index 356df76f2e..ac5420f127 100644 --- a/resources/variants/ultimaker_s5_cc04.inst.cfg +++ b/resources/variants/ultimaker_s5_cc04.inst.cfg @@ -22,7 +22,6 @@ raft_interface_thickness = =layer_height * 1.5 raft_jerk = =jerk_print raft_margin = 15 raft_surface_layers = 2 -retraction_count_max = 25 retraction_min_travel = =line_width * 2 retraction_prime_speed = =retraction_speed speed_infill = =speed_print diff --git a/resources/variants/ultimaker_s5_cc06.inst.cfg b/resources/variants/ultimaker_s5_cc06.inst.cfg index 027274bca5..0d27f9cdce 100644 --- a/resources/variants/ultimaker_s5_cc06.inst.cfg +++ b/resources/variants/ultimaker_s5_cc06.inst.cfg @@ -22,7 +22,6 @@ raft_interface_thickness = =layer_height * 1.5 raft_jerk = =jerk_print raft_margin = 15 raft_surface_layers = 2 -retraction_count_max = 25 retraction_min_travel = =line_width * 2 retraction_prime_speed = =retraction_speed speed_infill = =speed_print From 0779cbbbdd1a9b58a1ead516f8fcc9ff71c4f453 Mon Sep 17 00:00:00 2001 From: Rijk van Manen Date: Wed, 1 Jun 2022 15:18:25 +0200 Subject: [PATCH 52/88] set material specific settings TPU, PP and PVA have a lower retraction count then default. PP-170 --- resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg | 3 +-- resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg | 3 +-- resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg | 3 +-- resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg | 3 +-- resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg | 3 +-- .../quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg | 3 +-- resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg | 1 + resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg | 1 + .../quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg | 3 +-- .../ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg | 3 +-- .../ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg | 3 +-- .../quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg | 3 +-- .../ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg | 3 +-- .../ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg | 3 +-- .../ultimaker2_plus_connect/um2pc_tpu_0.25_high.inst.cfg | 1 + .../ultimaker2_plus_connect/um2pc_tpu_0.4_normal.inst.cfg | 1 + .../ultimaker2_plus_connect/um2pc_tpu_0.6_fast.inst.cfg | 1 + .../quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg | 3 +-- resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg | 3 +-- resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg | 3 +-- .../quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg | 3 +-- .../quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg | 3 +-- resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg | 3 +-- .../quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg | 3 +-- resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg | 1 + resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg | 1 + .../quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg | 1 + .../quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg | 1 + .../ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg | 3 +-- .../quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg | 3 +-- .../quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg | 3 +-- .../ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg | 3 +-- .../quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg | 3 +-- .../quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg | 3 +-- .../ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg | 3 +-- .../quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg | 2 +- .../ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg | 1 + .../quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg | 1 + .../quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg | 1 + .../ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg | 1 + .../ultimaker_s3/um_s3_bb0.4_PVA_Verydraft_Print.inst.cfg | 1 + .../quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg | 1 + .../ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg | 1 + .../ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg | 1 + .../ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg | 3 +-- .../quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg | 3 +-- .../quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg | 3 +-- .../ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg | 3 +-- .../quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg | 3 +-- .../quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg | 3 +-- .../ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg | 3 +-- .../quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg | 2 +- .../ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg | 1 + .../quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg | 1 + .../quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg | 1 + .../ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg | 1 + .../ultimaker_s5/um_s5_bb0.4_PVA_Verydraft_Print.inst.cfg | 1 + .../quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg | 1 + .../ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg | 1 + .../ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg | 1 + 80 files changed, 80 insertions(+), 84 deletions(-) diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg index 56320f0b73..79e51d0130 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg @@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25) jerk_wall = =math.ceil(jerk_print * 10 / 25) jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) multiple_mesh_overlap = 0 -retraction_count_max = 12 -retraction_extrusion_window = 1 +retraction_count_max = 15 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg index 5e84e3f167..27c9470728 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg @@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25) jerk_wall = =math.ceil(jerk_print * 10 / 25) jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) multiple_mesh_overlap = 0 -retraction_count_max = 12 -retraction_extrusion_window = 1 +retraction_count_max = 15 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg index 10cbfab427..2088192367 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg @@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25) jerk_wall = =math.ceil(jerk_print * 10 / 25) jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) multiple_mesh_overlap = 0 -retraction_count_max = 12 -retraction_extrusion_window = 1 +retraction_count_max = 15 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg index 161ca2e079..261c2552a8 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg @@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25) jerk_wall = =math.ceil(jerk_print * 10 / 25) jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) multiple_mesh_overlap = 0 -retraction_count_max = 12 -retraction_extrusion_window = 1 +retraction_count_max = 15 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg index e88b527308..b70e495ff0 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg @@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25) jerk_wall = =math.ceil(jerk_print * 10 / 25) jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) multiple_mesh_overlap = 0 -retraction_count_max = 12 -retraction_extrusion_window = 1 +retraction_count_max = 15 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg index 36d599faf3..f00847c032 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg @@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25) jerk_wall = =math.ceil(jerk_print * 10 / 25) jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) multiple_mesh_overlap = 0 -retraction_count_max = 12 -retraction_extrusion_window = 1 +retraction_count_max = 15 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg index 87784fa7cf..11b1e2e84c 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg @@ -25,6 +25,7 @@ raft_base_line_spacing = 1 raft_interface_line_spacing = 1 raft_interface_line_width = 0.2 raft_surface_line_width = 0.2 +retraction_count_max = 15 retraction_hop_enabled = 0.2 speed_layer_0 = =math.ceil(speed_print * 30 / 40) speed_print = 40 diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg index c49f135c87..b45b7de66e 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg @@ -23,6 +23,7 @@ raft_base_line_spacing = 2 raft_base_line_width = 0.8 raft_interface_line_spacing = 1 raft_margin = 12 +retraction_count_max = 15 retraction_hop_enabled = 0.2 speed_layer_0 = =math.ceil(speed_print * 30 / 40) speed_print = 40 diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg index 3231fc1cef..568e8ed542 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg @@ -26,6 +26,7 @@ raft_interface_line_spacing = 1.2 raft_interface_line_width = 0.57 raft_margin = 15 raft_surface_line_width = 0.5 +retraction_count_max = 15 retraction_hop_enabled = 0.2 speed_layer_0 = =math.ceil(speed_print * 30 / 45) speed_print = 45 diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg index 70aecc029f..dc3f2eb7dc 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg @@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25) jerk_wall = =math.ceil(jerk_print * 10 / 25) jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) multiple_mesh_overlap = 0 -retraction_count_max = 12 -retraction_extrusion_window = 1 +retraction_count_max = 15 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg index 8b28161b09..9471b11d32 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg @@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25) jerk_wall = =math.ceil(jerk_print * 10 / 25) jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) multiple_mesh_overlap = 0 -retraction_count_max = 12 -retraction_extrusion_window = 1 +retraction_count_max = 15 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg index b1d7adfd0b..8470257f3b 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg @@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25) jerk_wall = =math.ceil(jerk_print * 10 / 25) jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) multiple_mesh_overlap = 0 -retraction_count_max = 12 -retraction_extrusion_window = 1 +retraction_count_max = 15 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg index a64996c8f0..9c4e23f545 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg @@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25) jerk_wall = =math.ceil(jerk_print * 10 / 25) jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) multiple_mesh_overlap = 0 -retraction_count_max = 12 -retraction_extrusion_window = 1 +retraction_count_max = 15 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg index f3dd14c276..b2c62ba2b4 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_draft.inst.cfg @@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25) jerk_wall = =math.ceil(jerk_print * 10 / 25) jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) multiple_mesh_overlap = 0 -retraction_count_max = 12 -retraction_extrusion_window = 1 +retraction_count_max = 15 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg index 232d74d602..bca822ad58 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg @@ -39,8 +39,7 @@ jerk_topbottom = =math.ceil(jerk_print * 5 / 25) jerk_wall = =math.ceil(jerk_print * 10 / 25) jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10) multiple_mesh_overlap = 0 -retraction_count_max = 12 -retraction_extrusion_window = 1 +retraction_count_max = 15 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.25_high.inst.cfg index 4371dcf524..169b990d3d 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.25_high.inst.cfg @@ -25,6 +25,7 @@ raft_base_line_spacing = 1 raft_interface_line_spacing = 1 raft_interface_line_width = 0.2 raft_surface_line_width = 0.2 +retraction_count_max = 15 retraction_hop_enabled = 0.2 speed_layer_0 = =math.ceil(speed_print * 30 / 40) speed_print = 40 diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.4_normal.inst.cfg index ecd8c76a50..b822d913b3 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.4_normal.inst.cfg @@ -23,6 +23,7 @@ raft_base_line_spacing = 2 raft_base_line_width = 0.8 raft_interface_line_spacing = 1 raft_margin = 12 +retraction_count_max = 15 retraction_hop_enabled = 0.2 speed_layer_0 = =math.ceil(speed_print * 30 / 40) speed_print = 40 diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.6_fast.inst.cfg index 14844dc216..941f119653 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_tpu_0.6_fast.inst.cfg @@ -26,6 +26,7 @@ raft_interface_line_spacing = 1.2 raft_interface_line_width = 0.57 raft_margin = 15 raft_surface_line_width = 0.5 +retraction_count_max = 15 retraction_hop_enabled = 0.2 speed_layer_0 = =math.ceil(speed_print * 30 / 45) speed_print = 45 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg index 77af8bae1e..f26fcd025f 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg @@ -31,9 +31,8 @@ multiple_mesh_overlap = 0 prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True -retraction_count_max = 45 +retraction_count_max = 15 retraction_extra_prime_amount = 0.2 -retraction_extrusion_window = 6.5 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg index 5a49c5d95f..c151870622 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg @@ -38,9 +38,8 @@ prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True retraction_amount = 6.5 -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg index 1da161a2fb..7e21bec438 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg @@ -37,9 +37,8 @@ multiple_mesh_overlap = 0 prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg index 52aadd5b2d..e37f16bc72 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 @@ -36,9 +36,8 @@ multiple_mesh_overlap = 0 prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg index b5cc9b7261..0cf30a04ca 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 @@ -36,9 +36,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 15 material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop = 1.5 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg index 4e7696c0b3..66e1160692 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 @@ -37,9 +37,8 @@ material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_wipe_enabled = True retraction_amount = 7 -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop = 1.5 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg index caed386864..c0889bdbeb 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 @@ -34,9 +34,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 17 material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop = 1.5 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg index 8fdcd54797..6510c0db81 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg @@ -26,7 +26,7 @@ prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 10 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 retraction_min_travel = 1.5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg index ff729395b9..d37c9aef29 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -26,7 +26,7 @@ prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 20 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 retraction_min_travel = 1.5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg index 911932c819..2313d3e7f2 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -26,7 +26,7 @@ prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 15 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 retraction_min_travel = 1.5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg index 53bf19e17b..e68fde0763 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg @@ -30,7 +30,7 @@ multiple_mesh_overlap = 0.2 prime_tower_enable = True prime_tower_flow = 100 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg index a1cfef6d5f..c0c9e7c48a 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -31,7 +31,7 @@ multiple_mesh_overlap = 0.2 prime_tower_enable = True prime_tower_flow = 100 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg index 388959da4a..e85db940a5 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -30,7 +30,7 @@ multiple_mesh_overlap = 0.2 prime_tower_enable = True prime_tower_flow = 100 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg index ae1cd2f262..a9adf2e3de 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg @@ -16,5 +16,6 @@ brim_replaces_support = False material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 prime_tower_enable = False +retraction_count_max = 5 skin_overlap = 20 support_brim_enable = True diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg index 9652a2f50a..90be6c2b37 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg @@ -16,6 +16,7 @@ brim_replaces_support = False material_print_temperature = =default_material_print_temperature + 5 material_standby_temperature = 100 prime_tower_enable = False +retraction_count_max = 5 skin_overlap = 15 support_brim_enable = True support_infill_sparse_thickness = 0.3 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg index 72cc7dc901..98d9566577 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg @@ -15,5 +15,6 @@ variant = BB 0.4 brim_replaces_support = False material_standby_temperature = 100 prime_tower_enable = False +retraction_count_max = 5 support_brim_enable = True support_infill_sparse_thickness = 0.18 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg index e828b94f2e..cc8c3bf10a 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg @@ -15,4 +15,5 @@ variant = BB 0.4 brim_replaces_support = False material_standby_temperature = 100 prime_tower_enable = False +retraction_count_max = 5 support_brim_enable = True diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg index e7c07c73fa..6a54c04e7b 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg @@ -15,4 +15,5 @@ variant = BB 0.8 brim_replaces_support = False material_print_temperature = =default_material_print_temperature + 5 material_standby_temperature = 100 +retraction_count_max = 5 support_brim_enable = True diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg index bcb92ccefa..7947e3cfe8 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg @@ -15,5 +15,6 @@ variant = BB 0.8 brim_replaces_support = False layer_height = 0.4 material_standby_temperature = 100 +retraction_count_max = 5 support_brim_enable = True support_interface_height = 0.9 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg index 3ce14a2ad0..3e2c92bbf6 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg @@ -15,6 +15,7 @@ variant = BB 0.8 brim_replaces_support = False layer_height = 0.3 material_standby_temperature = 100 +retraction_count_max = 5 support_brim_enable = True support_infill_sparse_thickness = 0.3 support_interface_height = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg index d0668b64f6..4fd18781f5 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 @@ -31,9 +31,8 @@ multiple_mesh_overlap = 0 prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True -retraction_count_max = 6 +retraction_count_max = 15 retraction_extra_prime_amount = 0.2 -retraction_extrusion_window = 6.5 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg index 75eba5b995..267c57c21a 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 @@ -36,9 +36,8 @@ multiple_mesh_overlap = 0 prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg index fdf769ed38..1cc6ff8595 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 @@ -35,9 +35,8 @@ multiple_mesh_overlap = 0 prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg index 821e1f4840..49754af9e7 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 @@ -37,9 +37,8 @@ multiple_mesh_overlap = 0 prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg index 566f474dc4..09bb37312d 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 @@ -36,9 +36,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 15 material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 2 skin_line_width = =round(line_width / 0.8, 2) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg index e968507192..baf8608604 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 @@ -36,9 +36,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 15 material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 2 skin_line_width = =round(line_width / 0.8, 2) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg index ca8410766a..c0445e739c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg @@ -35,9 +35,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 17 material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 2 skin_line_width = =round(line_width / 0.8, 2) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg index 4572e3fabc..14a7451bcc 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg @@ -26,7 +26,7 @@ prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 10 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 retraction_min_travel = 1.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg index 596f34d7b9..c466b76c1c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -26,7 +26,7 @@ prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 20 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 retraction_min_travel = 1.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg index 4f1a91337a..804149a584 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -25,7 +25,7 @@ prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 15 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 retraction_min_travel = 1.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg index dc4858e463..ab71a4c37e 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg @@ -28,7 +28,7 @@ multiple_mesh_overlap = 0.2 prime_tower_enable = True prime_tower_flow = 100 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg index d2e23c81a9..ac2181d373 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -29,7 +29,7 @@ multiple_mesh_overlap = 0.2 prime_tower_enable = True prime_tower_flow = 100 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg index 3d4076c08c..e4bb128599 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -28,7 +28,7 @@ multiple_mesh_overlap = 0.2 prime_tower_enable = True prime_tower_flow = 100 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg index afb19f1769..94802d49fc 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg @@ -16,5 +16,6 @@ brim_replaces_support = False material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 prime_tower_enable = False +retraction_count_max = 5 skin_overlap = 20 support_brim_enable = True diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg index 6b1cef8991..bafe3e88d6 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg @@ -16,6 +16,7 @@ brim_replaces_support = False material_print_temperature = =default_material_print_temperature + 5 material_standby_temperature = 100 prime_tower_enable = False +retraction_count_max = 5 skin_overlap = 15 support_brim_enable = True support_infill_sparse_thickness = 0.3 diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg index 0a9a37ca05..c1b9556636 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg @@ -15,5 +15,6 @@ variant = BB 0.4 brim_replaces_support = False material_standby_temperature = 100 prime_tower_enable = False +retraction_count_max = 5 support_brim_enable = True support_infill_sparse_thickness = 0.18 diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg index a899959d98..0a4e11c158 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg @@ -15,4 +15,5 @@ variant = BB 0.4 brim_replaces_support = False material_standby_temperature = 100 prime_tower_enable = False +retraction_count_max = 5 support_brim_enable = True diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Verydraft_Print.inst.cfg index 0cd6094bbc..8bd0e5d375 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Verydraft_Print.inst.cfg @@ -15,6 +15,7 @@ is_experimental = True [values] brim_replaces_support = False material_standby_temperature = 100 +retraction_count_max = 5 support_brim_enable = True support_infill_sparse_thickness = 0.3 support_interface_height = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg index 388ebeff72..587b7b29cd 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg @@ -15,4 +15,5 @@ variant = BB 0.8 brim_replaces_support = False material_print_temperature = =default_material_print_temperature + 5 material_standby_temperature = 100 +retraction_count_max = 5 support_brim_enable = True diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg index e9030819ea..c1cbac87a0 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg @@ -14,5 +14,6 @@ variant = BB 0.8 [values] brim_replaces_support = False material_standby_temperature = 100 +retraction_count_max = 5 support_brim_enable = True support_interface_height = 0.9 diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg index c35737bb97..b5e22bef62 100644 --- a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg @@ -14,6 +14,7 @@ variant = BB 0.8 [values] brim_replaces_support = False material_standby_temperature = 100 +retraction_count_max = 5 support_brim_enable = True support_infill_sparse_thickness = 0.3 support_interface_height = 1.2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg index 85a608c293..f85282b4db 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 @@ -31,9 +31,8 @@ multiple_mesh_overlap = 0 prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True -retraction_count_max = 6 +retraction_count_max = 15 retraction_extra_prime_amount = 0.2 -retraction_extrusion_window = 6.5 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg index 5da2b96e2d..1e24727623 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 @@ -37,9 +37,8 @@ multiple_mesh_overlap = 0 prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg index cc5a911809..c1922ac8c0 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 @@ -37,9 +37,8 @@ multiple_mesh_overlap = 0 prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg index 82646132a0..56356b097c 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 @@ -37,9 +37,8 @@ multiple_mesh_overlap = 0 prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop = 2 retraction_hop_only_when_collides = True retraction_min_travel = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg index 8778abc64e..e9fa0ad764 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 @@ -36,9 +36,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 15 material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 2 skin_line_width = =round(line_width / 0.8, 2) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg index 1725470319..afc5e71fab 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 @@ -36,9 +36,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 15 material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 2 skin_line_width = =round(line_width / 0.8, 2) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg index 782b9d896a..57a0e450ea 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 @@ -35,9 +35,8 @@ material_print_temperature_layer_0 = =material_print_temperature + 17 material_standby_temperature = 100 multiple_mesh_overlap = 0 prime_tower_wipe_enabled = True -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.8 -retraction_extrusion_window = 1 retraction_hop_only_when_collides = True retraction_min_travel = =line_width * 2 skin_line_width = =round(line_width / 0.8, 2) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg index 1d2d0c68fd..aa86db8c84 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg @@ -26,7 +26,7 @@ prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 10 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 retraction_min_travel = 1.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg index 7026544931..4bf0036315 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg @@ -26,7 +26,7 @@ prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 20 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 retraction_min_travel = 1.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg index 98c8df6a6a..69a33b38f8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg @@ -25,7 +25,7 @@ prime_tower_enable = True prime_tower_flow = 100 prime_tower_min_volume = 15 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 0.5 retraction_min_travel = 1.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg index f6d8169fe8..9301d7d69f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg @@ -28,7 +28,7 @@ multiple_mesh_overlap = 0.2 prime_tower_enable = True prime_tower_flow = 100 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg index 561acf9fbc..f410bd8c85 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -29,7 +29,7 @@ multiple_mesh_overlap = 0.2 prime_tower_enable = True prime_tower_flow = 100 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg index fa432061bb..3df2f2ca0e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -28,7 +28,7 @@ multiple_mesh_overlap = 0.2 prime_tower_enable = True prime_tower_flow = 100 retract_at_layer_change = False -retraction_count_max = 12 +retraction_count_max = 15 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg index ef24c27b5a..b4ebe1f4e9 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg @@ -16,5 +16,6 @@ brim_replaces_support = False material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 prime_tower_enable = False +retraction_count_max = 5 skin_overlap = 20 support_brim_enable = True diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg index d630c3bd3a..5f14866677 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg @@ -16,6 +16,7 @@ brim_replaces_support = False material_print_temperature = =default_material_print_temperature + 5 material_standby_temperature = 100 prime_tower_enable = False +retraction_count_max = 5 skin_overlap = 15 support_brim_enable = True support_infill_sparse_thickness = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg index 8d5448aafb..9e35615f14 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg @@ -15,5 +15,6 @@ variant = BB 0.4 brim_replaces_support = False material_standby_temperature = 100 prime_tower_enable = False +retraction_count_max = 5 support_brim_enable = True support_infill_sparse_thickness = 0.18 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg index cf4c07a411..b1774d2c27 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg @@ -15,4 +15,5 @@ variant = BB 0.4 brim_replaces_support = False material_standby_temperature = 100 prime_tower_enable = False +retraction_count_max = 5 support_brim_enable = True diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Verydraft_Print.inst.cfg index e7a9936864..bd85b127a7 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Verydraft_Print.inst.cfg @@ -15,6 +15,7 @@ is_experimental = True [values] brim_replaces_support = False material_standby_temperature = 100 +retraction_count_max = 5 support_brim_enable = True support_infill_sparse_thickness = 0.3 support_interface_height = 1.2 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg index 979295a38d..037e813e7f 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg @@ -15,4 +15,5 @@ variant = BB 0.8 brim_replaces_support = False material_print_temperature = =default_material_print_temperature + 5 material_standby_temperature = 100 +retraction_count_max = 5 support_brim_enable = True diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg index ffdc9c9d26..9a8a17da20 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg @@ -14,5 +14,6 @@ variant = BB 0.8 [values] brim_replaces_support = False material_standby_temperature = 100 +retraction_count_max = 5 support_brim_enable = True support_interface_height = 0.9 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg index 871af303ed..4229ad1758 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg @@ -14,6 +14,7 @@ variant = BB 0.8 [values] brim_replaces_support = False material_standby_temperature = 100 +retraction_count_max = 5 support_brim_enable = True support_infill_sparse_thickness = 0.3 support_interface_height = 1.2 From 0c28756d45dd7e06f95b062a98d0c54dca39dabe Mon Sep 17 00:00:00 2001 From: Rijk van Manen <37628975+rijkvanmanen@users.noreply.github.com> Date: Wed, 1 Jun 2022 15:29:25 +0200 Subject: [PATCH 53/88] These settings are already default in fdmprinter PP-19 --- resources/definitions/ultimaker3.def.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index 5505cf4ddf..cdcc621d6d 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -107,9 +107,6 @@ "jerk_wall_0": { "value": "jerk_wall", "minimum_value_warning": 20 }, "jerk_roofing": {"minimum_value_warning": 20 }, "jerk_topbottom": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_support": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_support_infill": {"value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_support_interface": {"value": "jerk_topbottom", "minimum_value_warning": 20}, "jerk_prime_tower": { "value": "jerk_print", "minimum_value_warning": 20 }, "jerk_layer_0": { "value": "jerk_topbottom", "minimum_value_warning": 20}, "jerk_print_layer_0": {"value": "jerk_print", "minimum_value_warning": 20 }, From 877f8ca1cf04a46bb5e4f424026aebd289746239 Mon Sep 17 00:00:00 2001 From: Rijk van Manen Date: Wed, 1 Jun 2022 15:38:30 +0200 Subject: [PATCH 54/88] revert PP-37 PP-37 is not needed anymore because of PP-27. This solves the problem of PP-46 as well. For more details see PP-46 --- resources/definitions/ultimaker.def.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 2946a06c6d..0d612905d4 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -50,9 +50,6 @@ "wall_thickness": { "value": "wall_line_width_0 + wall_line_width_x" }, - "infill_before_walls": { - "value": "False" - }, "infill_material_flow": { "value": "(1.95-infill_sparse_density / 100 if infill_sparse_density > 95 else 1) * material_flow" }, From 8f2dff712ec18046bf76211fa3a8dd7d20647d30 Mon Sep 17 00:00:00 2001 From: Rijk van Manen Date: Wed, 1 Jun 2022 15:43:12 +0200 Subject: [PATCH 55/88] disable travel_avoid_supports While CURA-9337 is not implemented this a mitigation to avoid unnecessary combing. PP-172 --- resources/definitions/ultimaker_s3.def.json | 1 - resources/definitions/ultimaker_s5.def.json | 1 - 2 files changed, 2 deletions(-) diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json index 640a062c6d..7a794c311d 100644 --- a/resources/definitions/ultimaker_s3.def.json +++ b/resources/definitions/ultimaker_s3.def.json @@ -155,7 +155,6 @@ "switch_extruder_prime_speed": { "value": "15" }, "switch_extruder_retraction_amount": { "value": "8" }, "top_bottom_thickness": { "value": "1" }, - "travel_avoid_supports": { "value": "True" }, "travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" }, "wall_0_inset": { "value": "0" }, "initial_layer_line_width_factor": { "value": "120" }, diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index 0d5d7499cc..f3fb9dbea5 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -157,7 +157,6 @@ "switch_extruder_prime_speed": { "value": "15" }, "switch_extruder_retraction_amount": { "value": "8" }, "top_bottom_thickness": { "value": "1" }, - "travel_avoid_supports": { "value": "True" }, "travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" }, "wall_0_inset": { "value": "0" }, "optimize_wall_printing_order": { "value": "True" }, From 0df21e6073cc9fc525e47fe7d300ed32b9407331 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Wed, 1 Jun 2022 16:50:53 +0200 Subject: [PATCH 56/88] Refactor missing packages dialog into model (MissingPackageList) and controller (InstallMissingPackagesDialog.qml) Rename classes and files to have unified naming. CURA-6990 --- plugins/3MFReader/WorkspaceDialog.py | 7 + plugins/3MFReader/WorkspaceDialog.qml | 2 +- .../InstallMissingPackagesDialog.py | 60 +++++++ plugins/Marketplace/MissingPackageList.py | 32 ++++ .../qml/InstallMissingPackagesDialog.qml | 158 ++++++++++++++++++ .../resources/qml/MissingPackages.qml | 15 ++ 6 files changed, 273 insertions(+), 1 deletion(-) create mode 100644 plugins/Marketplace/InstallMissingPackagesDialog.py create mode 100644 plugins/Marketplace/MissingPackageList.py create mode 100644 plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml create mode 100644 plugins/Marketplace/resources/qml/MissingPackages.qml diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 04c9494ee7..56bc9e2fcc 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -9,6 +9,7 @@ from UM.Application import Application from UM.i18n import i18nCatalog from UM.Settings.ContainerRegistry import ContainerRegistry from cura.Settings.GlobalStack import GlobalStack +from plugins.Marketplace.InstallMissingPackagesDialog import InstallMissingPackageDialog from .UpdatableMachinesModel import UpdatableMachinesModel import os @@ -60,6 +61,8 @@ class WorkspaceDialog(QObject): self._is_printer_group = False self._updatable_machines_model = UpdatableMachinesModel(self) self._missing_package_metadata: List[Dict[str, str]] = [] + self._plugin_registry: PluginRegistry = CuraApplication.getInstance().getPluginRegistry() + self._install_missing_package_dialog: Optional[QObject] = None machineConflictChanged = pyqtSignal() qualityChangesConflictChanged = pyqtSignal() @@ -284,6 +287,10 @@ class WorkspaceDialog(QObject): def missingPackages(self): return self._missing_package_metadata + @pyqtSlot() + def installMissingPackages(self): + self._install_missing_package_dialog = InstallMissingPackageDialog(self._missing_package_metadata) + self._install_missing_package_dialog.show() def getResult(self) -> Dict[str, Optional[str]]: if "machine" in self._result and self.updatableMachinesModel.count <= 1: diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 19f682b631..f6048f8324 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -469,7 +469,7 @@ UM.Dialog { visible: buttonWarning text: catalog.i18nc("@action:button", "Install missing Material") - onClicked: accept() + onClicked: manager.installMissingPackages() } ] diff --git a/plugins/Marketplace/InstallMissingPackagesDialog.py b/plugins/Marketplace/InstallMissingPackagesDialog.py new file mode 100644 index 0000000000..eb6c03f81c --- /dev/null +++ b/plugins/Marketplace/InstallMissingPackagesDialog.py @@ -0,0 +1,60 @@ +import os + +from PyQt6.QtCore import QObject, pyqtSignal, pyqtProperty +from typing import Optional, List, Dict, cast +from cura.CuraApplication import CuraApplication +from UM.PluginRegistry import PluginRegistry +from cura.CuraPackageManager import CuraPackageManager + +from plugins.Marketplace.MissingPackageList import MissingPackageList + + +class InstallMissingPackageDialog(QObject): + """Dialog used to display packages that need to be installed to load 3mf file materials""" + def __init__(self, packages_metadata: List[Dict[str, str]]): + """Initialize + + :param packages_metadata: List of dictionaries containing information about missing packages. + """ + super().__init__() + + self._plugin_registry: PluginRegistry = CuraApplication.getInstance().getPluginRegistry() + self._package_manager: CuraPackageManager = cast(CuraPackageManager, CuraApplication.getInstance().getPackageManager()) + self._package_manager.installedPackagesChanged.connect(self.checkIfRestartNeeded) + + self._dialog: Optional[QObject] = None + self._restart_needed = False + self._package_metadata: List[Dict[str, str]] = packages_metadata + + self._package_model = MissingPackageList() + self._package_model.setPackageIds(packages_metadata) + + def show(self): + plugin_path = self._plugin_registry.getPluginPath("Marketplace") + if plugin_path is None: + plugin_path = os.path.dirname(__file__) + + # create a QML component for the license dialog + license_dialog_component_path = os.path.join(plugin_path, "resources", "qml", "InstallMissingPackagesDialog.qml") + self._dialog = CuraApplication.getInstance().createQmlComponent(license_dialog_component_path, {"manager": self}) + self._dialog.show() + + def checkIfRestartNeeded(self) -> None: + if self._dialog is None: + return + + if self._package_manager.hasPackagesToRemoveOrInstall: + self._restart_needed = True + else: + self._restart_needed = False + self.showRestartChanged.emit() + + showRestartChanged = pyqtSignal() + + @pyqtProperty(bool, notify=showRestartChanged) + def showRestartNotification(self) -> bool: + return self._restart_needed + + @pyqtProperty(QObject) + def model(self): + return self._package_model diff --git a/plugins/Marketplace/MissingPackageList.py b/plugins/Marketplace/MissingPackageList.py new file mode 100644 index 0000000000..b036e8b966 --- /dev/null +++ b/plugins/Marketplace/MissingPackageList.py @@ -0,0 +1,32 @@ +# Copyright (c) 2022 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Optional, TYPE_CHECKING, Dict, List + +from .Constants import PACKAGES_URL +from .PackageModel import PackageModel +from .RemotePackageList import RemotePackageList +from PyQt6.QtCore import pyqtSignal, QObject, pyqtProperty, QCoreApplication + +from UM.TaskManagement.HttpRequestManager import HttpRequestManager # To request the package list from the API. +from UM.i18n import i18nCatalog + +if TYPE_CHECKING: + from PyQt6.QtCore import QObject, pyqtProperty, pyqtSignal + +catalog = i18nCatalog("cura") + +class MissingPackageList(RemotePackageList): + def __init__(self, parent: Optional["QObject"] = None) -> None: + super().__init__(parent) + self._package_metadata: List[Dict[str, str]] = [] + # self.packageTypeFilter = None # This will be our new filter + self._package_type_filter = "material" + + def setPackageIds(self, packages: List[Dict[str, str]]) -> None: + self._package_metadata = packages + search_string = ", ".join(map(lambda package: package["id"], packages)) + # self.setSearchString(search_string) + self.setSearchString("ABS") + + diff --git a/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml b/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml new file mode 100644 index 0000000000..a5fbe2c965 --- /dev/null +++ b/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml @@ -0,0 +1,158 @@ +// Copyright (c) 2021 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Layouts 1.15 +import QtQuick.Window 2.2 + +import UM 1.5 as UM +import Cura 1.6 as Cura + +Window +{ + id: marketplaceDialog + + property variant catalog: UM.I18nCatalog { name: "cura" } + + signal searchStringChanged(string new_search) + + minimumWidth: UM.Theme.getSize("modal_window_minimum").width + minimumHeight: UM.Theme.getSize("modal_window_minimum").height + width: minimumWidth + height: minimumHeight + + onVisibleChanged: + { + while(contextStack.depth > 1) + { + contextStack.pop(); //Do NOT use the StackView.Immediate transition here, since it causes the window to stay empty. Seemingly a Qt bug: https://bugreports.qt.io/browse/QTBUG-60670? + } + } + + Connections + { + target: Cura.API.account + function onLoginStateChanged() + { + close(); + } + } + + title: catalog.i18nc("@title", "Install missing Materials") + modality: Qt.ApplicationModal + + // Background color + Rectangle + { + anchors.fill: parent + color: UM.Theme.getColor("main_background") + } + //The Marketplace can have a page in front of everything with package details. The stack view controls its visibility. + StackView + { + id: contextStack + anchors.fill: parent + + initialItem: packageBrowse + + ColumnLayout + { + id: packageBrowse + + spacing: UM.Theme.getSize("narrow_margin").height + + // Page title. + Item + { + Layout.preferredWidth: parent.width + Layout.preferredHeight: childrenRect.height + UM.Theme.getSize("default_margin").height + + UM.Label + { + id: pageTitle + anchors + { + left: parent.left + leftMargin: UM.Theme.getSize("default_margin").width + right: parent.right + rightMargin: UM.Theme.getSize("default_margin").width + bottom: parent.bottom + } + + font: UM.Theme.getFont("large") + text: content.item ? content.item.pageTitle: catalog.i18nc("@title", "Loading...") + } + } + + // Page contents. + Rectangle + { + Layout.preferredWidth: parent.width + Layout.fillHeight: true + color: UM.Theme.getColor("detail_background") + + // Page contents. + Loader + { + id: content + anchors.fill: parent + anchors.margins: UM.Theme.getSize("default_margin").width + source: "MissingPackages.qml" + } + } + } + } + + Rectangle + { + height: quitButton.height + 2 * UM.Theme.getSize("default_margin").width + color: UM.Theme.getColor("primary") + visible: manager.showRestartNotification + anchors + { + left: parent.left + right: parent.right + bottom: parent.bottom + } + + RowLayout + { + anchors + { + left: parent.left + right: parent.right + verticalCenter: parent.verticalCenter + margins: UM.Theme.getSize("default_margin").width + } + spacing: UM.Theme.getSize("default_margin").width + UM.ColorImage + { + id: bannerIcon + source: UM.Theme.getIcon("Plugin") + + color: UM.Theme.getColor("primary_button_text") + implicitWidth: UM.Theme.getSize("banner_icon_size").width + implicitHeight: UM.Theme.getSize("banner_icon_size").height + } + Text + { + color: UM.Theme.getColor("primary_button_text") + text: catalog.i18nc("@button", "In order to use the package you will need to restart Cura") + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + Layout.fillWidth: true + } + Cura.SecondaryButton + { + id: quitButton + text: catalog.i18nc("@info:button, %1 is the application name", "Quit %1").arg(CuraApplication.applicationDisplayName) + onClicked: + { + marketplaceDialog.hide(); + CuraApplication.closeApplication(); + } + } + } + } +} diff --git a/plugins/Marketplace/resources/qml/MissingPackages.qml b/plugins/Marketplace/resources/qml/MissingPackages.qml new file mode 100644 index 0000000000..316d048317 --- /dev/null +++ b/plugins/Marketplace/resources/qml/MissingPackages.qml @@ -0,0 +1,15 @@ +// Copyright (c) 2021 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import UM 1.4 as UM + +Packages +{ + pageTitle: catalog.i18nc("@header", "Install Materials") + + bannerVisible: false + showUpdateButton: false + showInstallButton: true + + model: manager.model +} From b015617e13472a38b1a827fcadf6264cb0615158 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Wed, 1 Jun 2022 16:56:02 +0200 Subject: [PATCH 57/88] Marketplace plugin registry is None on initialization, and is loaded after running show(). This makes a check that the window is open before continuing through checkIfRestartNeeded CURA-6990 --- plugins/Marketplace/Marketplace.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/Marketplace/Marketplace.py b/plugins/Marketplace/Marketplace.py index 171e3f915b..e856245c3d 100644 --- a/plugins/Marketplace/Marketplace.py +++ b/plugins/Marketplace/Marketplace.py @@ -103,6 +103,9 @@ class Marketplace(Extension, QObject): self.setTabShown(1) def checkIfRestartNeeded(self) -> None: + if self._window is None: + return + if self._package_manager.hasPackagesToRemoveOrInstall or \ cast(PluginRegistry, self._plugin_registry).getCurrentSessionActivationChangedPlugins(): self._restart_needed = True From fec488898976f8bd38317fb7d624e9731eff6466 Mon Sep 17 00:00:00 2001 From: "p.kuiper" Date: Thu, 2 Jun 2022 09:01:26 +0200 Subject: [PATCH 58/88] Clean up of jerk settings. Moved the jerk setting up to ultimaker.def.json. Removed duplicate entries in quality profiles and removed a number of strange jerk entries in the quality profiles. Relates to PP-19 --- resources/definitions/ultimaker.def.json | 53 +++++++++++++++++-- resources/definitions/ultimaker3.def.json | 14 ----- resources/definitions/ultimaker_s3.def.json | 14 ----- resources/definitions/ultimaker_s5.def.json | 14 ----- ...s3_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg | 6 --- ...a0.4_TPLA_Normal_Quality_Accurate.inst.cfg | 6 --- ...aa0.4_ABS_Normal_Quality_Accurate.inst.cfg | 6 --- ...s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg | 6 --- .../um_s3_aa0.4_CPEP_High_Quality.inst.cfg | 1 - .../um_s5_aa0.4_CPEP_High_Quality.inst.cfg | 1 - .../um_s5_aa0.4_TPLA_Draft_Print.inst.cfg | 1 - 11 files changed, 50 insertions(+), 72 deletions(-) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 2946a06c6d..3b4e830238 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -89,9 +89,6 @@ "meshfix_maximum_deviation": { "value": "machine_nozzle_size / 10" }, - "jerk_travel": { - "value": "jerk_print" - }, "acceleration_travel": { "value": "acceleration_wall" }, @@ -154,6 +151,56 @@ }, "bridge_fan_speed_3": { "value": "cool_fan_speed_min" + }, + "bridge_fan_speed_3": { + "value": "cool_fan_speed_min" + }, + "jerk_print": { + "value": "20", + "minimum_value_warning": 20 + }, + "jerk_infill": { + "minimum_value_warning": 20 + }, + "jerk_wall": { + "minimum_value_warning": 20 + }, + "jerk_wall_0": { + "minimum_value_warning": 20 + }, + "jerk_roofing": { + "minimum_value_warning": 20 + }, + "jerk_topbottom": { + "minimum_value_warning": 20 + }, + "jerk_support": { + "minimum_value_warning": 20 + }, + "jerk_support_infill": { + "minimum_value_warning": 20 + }, + "jerk_support_interface": { + "minimum_value_warning": 20 + }, + "jerk_prime_tower": { + "minimum_value_warning": 20 + }, + "jerk_layer_0": { + "minimum_value_warning": 20 + }, + "jerk_print_layer_0": { + "minimum_value_warning": 20 + }, + "jerk_travel": { + "value": "jerk_print", + "minimum_value_warning": 20 + }, + "jerk_travel_layer_0": { + "minimum_value_warning": 20 + }, + "jerk_skirt_brim": { + "minimum_value_warning": 20 } } } diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index 5505cf4ddf..99e4ab4176 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -101,20 +101,6 @@ "infill_wipe_dist": { "value": "0" }, "initial_layer_line_width_factor": { "value": "120" }, "jerk_enabled": { "value": "True" }, - "jerk_print": { "value": "20", "minimum_value_warning": 20 }, - "jerk_infill": {"minimum_value_warning": 20 }, - "jerk_wall": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_wall_0": { "value": "jerk_wall", "minimum_value_warning": 20 }, - "jerk_roofing": {"minimum_value_warning": 20 }, - "jerk_topbottom": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_support": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_support_infill": {"value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_support_interface": {"value": "jerk_topbottom", "minimum_value_warning": 20}, - "jerk_prime_tower": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_layer_0": { "value": "jerk_topbottom", "minimum_value_warning": 20}, - "jerk_print_layer_0": {"value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_travel_layer_0": {"value": "jerk_travel", "minimum_value_warning": 20 }, - "jerk_skirt_brim": {"value": "jerk_print", "minimum_value_warning": 20 }, "layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" }, "layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" }, "layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" }, diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json index 5761b09c19..cff2fe741d 100644 --- a/resources/definitions/ultimaker_s3.def.json +++ b/resources/definitions/ultimaker_s3.def.json @@ -93,20 +93,6 @@ "infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'triangles'" }, "infill_wipe_dist": { "value": "0" }, "jerk_enabled": { "value": "True" }, - "jerk_print": { "value": "20", "minimum_value_warning": 20 }, - "jerk_infill": {"minimum_value_warning": 20 }, - "jerk_wall": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_wall_0": { "value": "jerk_wall", "minimum_value_warning": 20 }, - "jerk_roofing": {"minimum_value_warning": 20 }, - "jerk_topbottom": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_support": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_support_infill": {"value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_support_interface": {"value": "jerk_topbottom", "minimum_value_warning": 20}, - "jerk_prime_tower": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_layer_0": { "value": "jerk_topbottom", "minimum_value_warning": 20}, - "jerk_print_layer_0": {"value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_travel_layer_0": {"value": "jerk_travel", "minimum_value_warning": 20 }, - "jerk_skirt_brim": {"value": "jerk_print", "minimum_value_warning": 20 }, "layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" }, "layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" }, "layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" }, diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index bfd80caeab..f59250f908 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -95,20 +95,6 @@ "infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'triangles'" }, "infill_wipe_dist": { "value": "0" }, "jerk_enabled": { "value": "True" }, - "jerk_print": { "value": "20", "minimum_value_warning": 20 }, - "jerk_infill": {"minimum_value_warning": 20 }, - "jerk_wall": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_wall_0": { "value": "jerk_wall", "minimum_value_warning": 20 }, - "jerk_roofing": {"minimum_value_warning": 20 }, - "jerk_topbottom": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_support": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_support_infill": {"value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_support_interface": {"value": "jerk_topbottom", "minimum_value_warning": 20}, - "jerk_prime_tower": { "value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_layer_0": { "value": "jerk_topbottom", "minimum_value_warning": 20}, - "jerk_print_layer_0": {"value": "jerk_print", "minimum_value_warning": 20 }, - "jerk_travel_layer_0": {"value": "jerk_travel", "minimum_value_warning": 20 }, - "jerk_skirt_brim": {"value": "jerk_print", "minimum_value_warning": 20 }, "layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" }, "layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" }, "layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" }, diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg index 48fb654a87..b74cd522ac 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg index 0ca960acd7..b92e07a877 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg index 1fcbb95940..44f76d561f 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg index f13476802c..186281c17c 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Fast_Print_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg index f895647971..dbcd95a344 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg @@ -17,7 +17,6 @@ cool_min_speed = 5 infill_overlap = 0 infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg index eb4db520bd..d6749fb862 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg @@ -17,7 +17,6 @@ cool_min_speed = 5 infill_overlap = 0 infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg index e102ff7ac3..535b85955a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg @@ -16,7 +16,6 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height cool_fan_speed_max = =cool_fan_speed cool_min_speed = 7 jerk_print = 25 -jerk_roofing = 1 layer_height_0 = 0.2 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 From 977b81da7feb64de03ca4be18bba9af8672e7258 Mon Sep 17 00:00:00 2001 From: "p.kuiper" Date: Thu, 2 Jun 2022 09:48:46 +0200 Subject: [PATCH 59/88] Removed duplicate entry bridge fan speed 3. Relates to PP-19 --- resources/definitions/ultimaker.def.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 3b4e830238..585d3d63ac 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -152,9 +152,6 @@ "bridge_fan_speed_3": { "value": "cool_fan_speed_min" }, - "bridge_fan_speed_3": { - "value": "cool_fan_speed_min" - }, "jerk_print": { "value": "20", "minimum_value_warning": 20 From a103d377f79dd1042584fe62a5321603d4cced38 Mon Sep 17 00:00:00 2001 From: "p.kuiper" Date: Thu, 2 Jun 2022 11:33:22 +0200 Subject: [PATCH 60/88] Further cleanup of the jerk settings. UM2 based machine have no jerk settings, removed them. Set first layer jerk equal to print jerk and removed all jerk settings (except for jerk_print) in the quality and variant files. Relates to PP-19 --- .../um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg | 7 +------ .../um_s3_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg | 6 ------ .../um_s3_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg | 6 ------ .../um_s3_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg | 6 ------ .../um_s3_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg | 6 ------ .../um_s3_aa0.4_PC_Fast_Print_Accurate.inst.cfg | 6 ------ .../um_s3_aa0.4_PC_Normal_Quality_Accurate.inst.cfg | 6 ------ .../um_s3_aa0.4_PETG_Fast_Print_Accurate.inst.cfg | 6 ------ .../um_s3_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg | 6 ------ .../um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg | 6 ------ .../um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg | 6 ------ .../um_s3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg | 6 ------ .../um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg | 6 ------ .../um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg | 7 +------ .../um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg | 6 ------ .../um_s5_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg | 6 ------ .../um_s5_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg | 6 ------ .../um_s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg | 6 ------ .../um_s5_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg | 6 ------ .../um_s5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg | 6 ------ .../um_s5_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg | 6 ------ .../um_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg | 6 ------ .../um_s5_aa0.4_PC_Normal_Quality_Accurate.inst.cfg | 6 ------ .../um_s5_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg | 6 ------ .../um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg | 7 +------ .../um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg | 6 ------ .../um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg | 6 ------ .../um_s5_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg | 6 ------ .../um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg | 7 +------ .../um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg | 6 ------ .../um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg | 6 ------ .../um_s5_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg | 6 ------ .../quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg | 9 --------- .../quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg | 9 --------- .../quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg | 9 --------- .../ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg | 9 --------- .../ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg | 9 --------- .../ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg | 9 --------- .../ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg | 9 --------- .../um2pc_pp_0.8_verydraft.inst.cfg | 9 --------- .../ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg | 1 - .../ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg | 1 - .../ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg | 1 - .../ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg | 1 - .../ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg | 1 - .../ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg | 1 - .../ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg | 1 - .../ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg | 1 - .../ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg | 1 - .../ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg | 1 - .../quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg | 1 - .../ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg | 1 - .../ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg | 1 - .../ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg | 1 - .../um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg | 1 - .../ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg | 1 - .../ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg | 1 - .../ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg | 1 - .../ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg | 1 - .../ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg | 1 - .../ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg | 2 -- .../ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg | 1 - .../um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg | 2 -- .../ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg | 2 -- .../ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg | 1 - .../ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg | 1 - resources/variants/ultimaker3_aa0.8.inst.cfg | 1 - resources/variants/ultimaker3_bb0.8.inst.cfg | 1 - resources/variants/ultimaker3_bb04.inst.cfg | 3 --- resources/variants/ultimaker3_extended_aa0.8.inst.cfg | 1 - resources/variants/ultimaker3_extended_bb0.8.inst.cfg | 1 - resources/variants/ultimaker_s3_aa0.8.inst.cfg | 1 - resources/variants/ultimaker_s3_bb0.8.inst.cfg | 1 - resources/variants/ultimaker_s3_bb04.inst.cfg | 3 --- resources/variants/ultimaker_s5_bb0.8.inst.cfg | 1 - 88 files changed, 4 insertions(+), 319 deletions(-) diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg index ed1312583e..f2095ba055 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg @@ -22,11 +22,6 @@ top_bottom_thickness = 0.8 infill_sparse_density = 15 jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 + diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg index b98688044f..1caacdf72f 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg index 344cd30b8d..315b26a3b1 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg index 4e33b36ee1..d4a999d8eb 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg index 8cdf66b6fe..aa371be6f3 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print_Accurate.inst.cfg index ff9e5755b3..abd125f483 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality_Accurate.inst.cfg index 1d68116a7f..c8cf2a3bd4 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print_Accurate.inst.cfg index 168b920b80..b4bbdddff7 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Fast_Print_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg index 70347ae80f..19418812af 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg index 9b2de341e6..36ea7c975e 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg index b9193339bf..88691ef1d6 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg index 70abf19142..b59ed875b4 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg @@ -16,12 +16,6 @@ is_experimental = True infill_sparse_density = 10 jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 acceleration_print = 4000 acceleration_wall = 2000 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg index 0cf2b8f993..924edf577d 100644 --- a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg index 95d4d65b4a..98ad3af40b 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg @@ -22,11 +22,6 @@ top_bottom_thickness = 0.8 infill_sparse_density = 15 jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 + diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg index ad0eda8726..8939d670b1 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg index 7d1026b479..7bf1fc834a 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg index 52bd47103f..a95862c35a 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg index 55eaac45cf..bfdd35017c 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg index b831e25ce6..022fb2b50d 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg index e1b8a1c712..3637040c4c 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg index ed808aaf03..6cce98ca60 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg index adc4169968..32e0463447 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality_Accurate.inst.cfg index bccd269c87..0b7ffb4154 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg index 585c2f72b5..545a8b5654 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PETG_Normal_Quality_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg index 4c9608ddaf..76d9191fc1 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg @@ -22,11 +22,6 @@ top_bottom_thickness = 0.8 infill_sparse_density = 15 jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 + diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg index 11a2c5e134..ca098b5bfa 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg index f9a3c3f775..472c0b4359 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg index 12752123f4..51cfaebe34 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_VeryDraft_Print_Quick.inst.cfg @@ -16,12 +16,6 @@ is_experimental = True infill_sparse_density = 10 jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 acceleration_print = 4000 acceleration_wall = 2000 diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg index 7aaff9a062..7851ecd793 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg @@ -22,11 +22,6 @@ top_bottom_thickness = 0.8 infill_sparse_density = 15 jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 + diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg index 84c9293467..2b1b769595 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg index 8d8825ca41..daa327a2f5 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg @@ -14,12 +14,6 @@ variant = AA 0.4 [values] jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 speed_print = 30 speed_infill = =speed_print diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg index a3e850c05d..ec93cc5599 100644 --- a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_VeryDraft_Print_Quick.inst.cfg @@ -16,12 +16,6 @@ is_experimental = True infill_sparse_density = 10 jerk_print = 30 -jerk_infill = =jerk_print -jerk_topbottom = =jerk_print -jerk_wall = =jerk_print -jerk_wall_0 = =jerk_wall -jerk_wall_x = =jerk_wall -jerk_layer_0 = 5 acceleration_print = 4000 acceleration_wall = 2000 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg index 5e84e3f167..2fbee8d9c2 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg @@ -29,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 = 12 retraction_extrusion_window = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg index 10cbfab427..f21e02d5d7 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg @@ -29,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 = 12 retraction_extrusion_window = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg index e88b527308..dd8cfd35d2 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg @@ -29,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 = 12 retraction_extrusion_window = 1 diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg index 70aecc029f..381dc5d6f8 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_fast.inst.cfg @@ -29,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 = 12 retraction_extrusion_window = 1 diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg index 8b28161b09..7586904bb5 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.4_normal.inst.cfg @@ -29,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 = 12 retraction_extrusion_window = 1 diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg index b1d7adfd0b..2d8d2a1225 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_draft.inst.cfg @@ -29,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 = 12 retraction_extrusion_window = 1 diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg index a64996c8f0..61ea9914b9 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.6_fast.inst.cfg @@ -29,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 = 12 retraction_extrusion_window = 1 diff --git a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg index 232d74d602..238a9aa1ce 100644 --- a/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg +++ b/resources/quality/ultimaker2_plus_connect/um2pc_pp_0.8_verydraft.inst.cfg @@ -29,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 = 12 retraction_extrusion_window = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg index c17554a0cc..1b06cb31b2 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg @@ -21,7 +21,6 @@ cool_min_layer_time_fan_speed_max = 5 cool_min_speed = 5 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 multiple_mesh_overlap = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg index f2b4caf168..7780c5a4f5 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -17,7 +17,6 @@ cool_min_speed = 5 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 layer_height = 0.2 machine_min_cool_heat_time_window = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg index addd4790db..cf7e671740 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -17,7 +17,6 @@ cool_min_speed = 6 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 layer_height = 0.15 machine_min_cool_heat_time_window = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg index 3c1baa8640..c5584d8ebd 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg @@ -17,7 +17,6 @@ cool_min_speed = 5 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 layer_height = 0.06 machine_min_cool_heat_time_window = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg index e0c239c536..a1c956235c 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -17,7 +17,6 @@ cool_min_speed = 7 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg index f33132ee5b..06a399982b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg @@ -23,7 +23,6 @@ infill_overlap = 0 infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 layer_height = 0.2 machine_min_cool_heat_time_window = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg index 8c02c9c816..bc82123384 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg @@ -21,7 +21,6 @@ cool_min_speed = 7 infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 layer_height = 0.15 machine_min_cool_heat_time_window = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg index 4ff801f4fa..746e1bf4a2 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg @@ -23,7 +23,6 @@ infill_overlap = 0 infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 layer_height = 0.06 machine_min_cool_heat_time_window = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg index 180d96011d..f0e0e97ab3 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg @@ -22,7 +22,6 @@ cool_min_speed = 5 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg index 52aadd5b2d..7beb3697cf 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg @@ -21,7 +21,6 @@ cool_min_speed = 2.5 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg index e20587931f..227b16db92 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg @@ -16,7 +16,6 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height cool_fan_speed_max = =cool_fan_speed cool_min_speed = 7 jerk_print = 25 -jerk_roofing = 1 layer_height_0 = 0.2 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg index b5cc9b7261..47939c1a8d 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg @@ -22,7 +22,6 @@ infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' infill_sparse_density = 10 infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 layer_height = 0.2 machine_min_cool_heat_time_window = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg index 4e7696c0b3..1baadf59a0 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg @@ -22,7 +22,6 @@ infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' infill_sparse_density = 10 infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 layer_height = 0.15 machine_min_cool_heat_time_window = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg index caed386864..4e9aa528df 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg @@ -22,7 +22,6 @@ infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' infill_sparse_density = 10 infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg index d0668b64f6..cd5a6ece36 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg @@ -19,7 +19,6 @@ cool_min_layer_time_fan_speed_max = 5 cool_min_speed = 2.5 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 material_bed_temperature_layer_0 = =material_bed_temperature + 5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg index 0b8555734e..04feb8bc3e 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -17,7 +17,6 @@ cool_min_speed = 5 infill_overlap = 0 infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 material_final_print_temperature = =material_print_temperature - 10 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg index bba0f354c9..a4f6670bb6 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -17,7 +17,6 @@ cool_min_speed = 7 infill_overlap = 0 infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg index a9cdf6336d..9581f95cf0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg @@ -21,7 +21,6 @@ cool_min_speed = 7 infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg index 75eba5b995..17ff0c29c0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg @@ -21,7 +21,6 @@ cool_min_speed = 2.5 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg index fdf769ed38..98af956680 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg @@ -20,7 +20,6 @@ cool_min_speed = 2.5 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg index 821e1f4840..377756def0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg @@ -21,7 +21,6 @@ cool_min_speed = 2.5 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg index a9e32a5283..c3837c7850 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg @@ -16,7 +16,6 @@ cool_fan_full_at_height = =layer_height_0 + 2 * layer_height cool_fan_speed_max = =cool_fan_speed cool_min_speed = 7 jerk_print = 25 -jerk_roofing = 1 layer_height_0 = 0.2 machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg index 566f474dc4..49882c937e 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg @@ -22,9 +22,7 @@ infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' infill_sparse_density = 10 infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 - machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.5 machine_nozzle_heat_up_speed = 2.5 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg index e968507192..722a6bd2e8 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg @@ -22,7 +22,6 @@ infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' infill_sparse_density = 10 infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg index e77d2a2dd9..7f83286f73 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg @@ -21,7 +21,6 @@ cool_min_layer_time_fan_speed_max = 5 cool_min_speed = 5 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 multiple_mesh_overlap = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg index 85a608c293..338bb22d26 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg @@ -19,7 +19,6 @@ cool_min_layer_time_fan_speed_max = 5 cool_min_speed = 2.5 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 material_bed_temperature_layer_0 = =material_bed_temperature + 5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg index 1d12f8f8d9..495cf61bb5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg @@ -17,7 +17,6 @@ cool_min_speed = 5 infill_overlap = 0 infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 material_final_print_temperature = =material_print_temperature - 10 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg index 12db110133..004a2d1e3b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg @@ -17,7 +17,6 @@ cool_min_speed = 6 infill_overlap = 0 infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 material_final_print_temperature = =material_print_temperature - 10 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg index 71102926d8..f6ec122e53 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -16,7 +16,6 @@ cool_fan_speed_max = 50 cool_min_speed = 7 infill_overlap = 0 infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg index d9bc39705b..a1a6c983d3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg @@ -22,7 +22,6 @@ infill_overlap = 0 infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg index 03999c27e1..605322ee27 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg @@ -21,7 +21,6 @@ cool_min_speed = 7 infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg index de05aa5cac..6445e2deb0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg @@ -23,7 +23,6 @@ infill_overlap = 0 infill_overlap_mm = =0 if infill_sparse_density > 80 else 0.05 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg index 658e118686..3d7242cf56 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg @@ -22,7 +22,6 @@ cool_min_speed = 5 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg index 5da2b96e2d..5f42de95a2 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg @@ -21,9 +21,7 @@ cool_min_speed = 2.5 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 - machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg index cc5a911809..31e7216706 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg @@ -21,9 +21,7 @@ cool_min_speed = 2.5 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 - machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg index 82646132a0..1121fe6507 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg @@ -21,7 +21,6 @@ cool_min_speed = 2.5 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral' infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg index 8778abc64e..5bc61f0fbe 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg @@ -22,7 +22,6 @@ infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' infill_sparse_density = 10 infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg index 1725470319..0b38a609ba 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg @@ -22,7 +22,6 @@ infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' infill_sparse_density = 10 infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg index 782b9d896a..276f497bb3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg @@ -22,7 +22,6 @@ infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d' infill_sparse_density = 10 infill_wipe_dist = 0.1 -jerk_enabled = True jerk_print = 25 machine_min_cool_heat_time_window = 15 diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg index ead9c3b87a..7f81c8e8fb 100644 --- a/resources/variants/ultimaker3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_aa0.8.inst.cfg @@ -17,7 +17,6 @@ default_material_print_temperature = 200 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 layer_height = 0.2 machine_min_cool_heat_time_window = 15 diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index 8b9b575a46..3073a91365 100644 --- a/resources/variants/ultimaker3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_bb0.8.inst.cfg @@ -22,7 +22,6 @@ gradual_support_infill_steps = 2 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 layer_height = 0.2 machine_min_cool_heat_time_window = 15 diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index 60dfc44e8c..ff60b47f48 100644 --- a/resources/variants/ultimaker3_bb04.inst.cfg +++ b/resources/variants/ultimaker3_bb04.inst.cfg @@ -15,9 +15,6 @@ acceleration_support_interface = =math.ceil(acceleration_support * 1500 / 2000) acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 / 1500) cool_fan_speed_max = =cool_fan_speed gradual_support_infill_steps = 2 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_interface = =math.ceil(jerk_support * 10 / 15) -jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10) machine_nozzle_heat_up_speed = 1.5 machine_nozzle_id = BB 0.4 machine_nozzle_tip_outer_diameter = 1.0 diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg index df7e9486a2..c751dfd6fc 100644 --- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg @@ -17,7 +17,6 @@ default_material_print_temperature = 200 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 layer_height = 0.2 machine_min_cool_heat_time_window = 15 diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg index e5caf082c6..d8e5b8f865 100644 --- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg @@ -22,7 +22,6 @@ gradual_support_infill_steps = 2 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 layer_height = 0.2 machine_min_cool_heat_time_window = 15 diff --git a/resources/variants/ultimaker_s3_aa0.8.inst.cfg b/resources/variants/ultimaker_s3_aa0.8.inst.cfg index 237b38fa11..e88d5aa64a 100644 --- a/resources/variants/ultimaker_s3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker_s3_aa0.8.inst.cfg @@ -17,7 +17,6 @@ default_material_print_temperature = 200 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 layer_height = 0.2 machine_min_cool_heat_time_window = 15 diff --git a/resources/variants/ultimaker_s3_bb0.8.inst.cfg b/resources/variants/ultimaker_s3_bb0.8.inst.cfg index cdd8c4814f..c4a73a2ef3 100644 --- a/resources/variants/ultimaker_s3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s3_bb0.8.inst.cfg @@ -21,7 +21,6 @@ gradual_support_infill_steps = 2 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 layer_height = 0.2 machine_min_cool_heat_time_window = 15 diff --git a/resources/variants/ultimaker_s3_bb04.inst.cfg b/resources/variants/ultimaker_s3_bb04.inst.cfg index 2fad997372..3619fbc9b5 100644 --- a/resources/variants/ultimaker_s3_bb04.inst.cfg +++ b/resources/variants/ultimaker_s3_bb04.inst.cfg @@ -15,9 +15,6 @@ acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 / acceleration_prime_tower = =math.ceil(acceleration_print * 200 / 3500) cool_fan_speed_max = =cool_fan_speed gradual_support_infill_steps = 2 -jerk_support = =math.ceil(jerk_print * 15 / 25) -jerk_support_interface = =math.ceil(jerk_support * 10 / 15) -jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10) machine_nozzle_heat_up_speed = 1.5 machine_nozzle_id = BB 0.4 machine_nozzle_tip_outer_diameter = 1.0 diff --git a/resources/variants/ultimaker_s5_bb0.8.inst.cfg b/resources/variants/ultimaker_s5_bb0.8.inst.cfg index 57c9ab6193..759bab3f6b 100644 --- a/resources/variants/ultimaker_s5_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_bb0.8.inst.cfg @@ -21,7 +21,6 @@ gradual_support_infill_steps = 2 infill_overlap = 0 infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles' infill_wipe_dist = 0 -jerk_enabled = True jerk_print = 25 layer_height = 0.2 machine_min_cool_heat_time_window = 15 From 9c02f6500d6d6977f06e73491c37288b30058d58 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Thu, 2 Jun 2022 15:19:00 +0200 Subject: [PATCH 61/88] Use API endpoint for requesting package_ids Use new api endpoint for requesting specific package_ids so we don't have to filter ourselves. CURA-6990 --- plugins/Marketplace/InstallMissingPackagesDialog.py | 3 +-- plugins/Marketplace/MissingPackageList.py | 12 +++--------- plugins/Marketplace/RemotePackageList.py | 3 ++- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/plugins/Marketplace/InstallMissingPackagesDialog.py b/plugins/Marketplace/InstallMissingPackagesDialog.py index eb6c03f81c..9e8f1f6476 100644 --- a/plugins/Marketplace/InstallMissingPackagesDialog.py +++ b/plugins/Marketplace/InstallMissingPackagesDialog.py @@ -26,8 +26,7 @@ class InstallMissingPackageDialog(QObject): self._restart_needed = False self._package_metadata: List[Dict[str, str]] = packages_metadata - self._package_model = MissingPackageList() - self._package_model.setPackageIds(packages_metadata) + self._package_model = MissingPackageList(packages_metadata) def show(self): plugin_path = self._plugin_registry.getPluginPath("Marketplace") diff --git a/plugins/Marketplace/MissingPackageList.py b/plugins/Marketplace/MissingPackageList.py index b036e8b966..818b54eb37 100644 --- a/plugins/Marketplace/MissingPackageList.py +++ b/plugins/Marketplace/MissingPackageList.py @@ -17,16 +17,10 @@ if TYPE_CHECKING: catalog = i18nCatalog("cura") class MissingPackageList(RemotePackageList): - def __init__(self, parent: Optional["QObject"] = None) -> None: + def __init__(self, packages: List[Dict[str, str]], parent: Optional["QObject"] = None) -> None: super().__init__(parent) self._package_metadata: List[Dict[str, str]] = [] # self.packageTypeFilter = None # This will be our new filter self._package_type_filter = "material" - - def setPackageIds(self, packages: List[Dict[str, str]]) -> None: - self._package_metadata = packages - search_string = ", ".join(map(lambda package: package["id"], packages)) - # self.setSearchString(search_string) - self.setSearchString("ABS") - - + self._search_type = "package_ids" + self._requested_search_string = ",".join(map(lambda package: package["id"], packages)) diff --git a/plugins/Marketplace/RemotePackageList.py b/plugins/Marketplace/RemotePackageList.py index c20efabbc2..d06d2c64c5 100644 --- a/plugins/Marketplace/RemotePackageList.py +++ b/plugins/Marketplace/RemotePackageList.py @@ -28,6 +28,7 @@ class RemotePackageList(PackageList): self._package_type_filter = "" self._requested_search_string = "" self._current_search_string = "" + self._search_type = "search" self._request_url = self._initialRequestUrl() self._ongoing_requests["get_packages"] = None self.isLoadingChanged.connect(self._onLoadingChanged) @@ -100,7 +101,7 @@ class RemotePackageList(PackageList): if self._package_type_filter != "": request_url += f"&package_type={self._package_type_filter}" if self._current_search_string != "": - request_url += f"&search={self._current_search_string}" + request_url += f"&{self._search_type}={self._current_search_string}" return request_url def _parseResponse(self, reply: "QNetworkReply") -> None: From 812b728636cc6e8437c56b4f4b6cb3da6439b2df Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Thu, 2 Jun 2022 15:36:53 +0200 Subject: [PATCH 62/88] Show warning when opening file without installing missing materials CURA-6990 --- plugins/3MFReader/WorkspaceDialog.py | 11 +++++++++++ plugins/3MFReader/WorkspaceDialog.qml | 5 ++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 56bc9e2fcc..55261480a0 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -11,6 +11,7 @@ from UM.Settings.ContainerRegistry import ContainerRegistry from cura.Settings.GlobalStack import GlobalStack from plugins.Marketplace.InstallMissingPackagesDialog import InstallMissingPackageDialog from .UpdatableMachinesModel import UpdatableMachinesModel +from UM.Message import Message import os import threading @@ -378,6 +379,16 @@ class WorkspaceDialog(QObject): time.sleep(1 / 50) QCoreApplication.processEvents() # Ensure that the GUI does not freeze. + @pyqtSlot() + def showMissingMaterialsWarning(self) -> None: + result_message = Message( + i18n_catalog.i18nc("@info:status", "The material used in this project relies on some material definitions not available in Cura, this might produce undesirable print results. We highly recommend installing the full material package from the Marketplace."), + lifetime=0, + title=i18n_catalog.i18nc("@info:title", "Material profiles not installed"), + message_type=Message.MessageType.WARNING + ) + result_message.show() + def __show(self) -> None: if self._view is None: self._createViewFromQML() diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index f6048f8324..de0f5c8acd 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -463,7 +463,10 @@ UM.Dialog { visible: buttonWarning text: catalog.i18nc("@action:button", "Open project anyway") - onClicked: reject() + onClicked: { + manager.showMissingMaterialsWarning(); + accept(); + } }, Cura.PrimaryButton { From 511b10c084ad7d4daa4ee1dc9d56e873a1de702f Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Thu, 2 Jun 2022 16:54:08 +0200 Subject: [PATCH 63/88] Display package cards in the package list for packages that can't be found on the marketplace api. When the final page of results is fetched, the list of all package_ids retrieved from the api will be compared with the ones we were searching for. Any that are missing have cards displayed with only basic information (name and version). CURA-6990 --- plugins/Marketplace/MissingPackageList.py | 28 ++++++++++++++--- plugins/Marketplace/PackageModel.py | 22 ++++++++++++++ .../resources/qml/PackageCardHeader.qml | 30 +++++++++++++++++-- .../Marketplace/resources/qml/Packages.qml | 7 +++-- 4 files changed, 78 insertions(+), 9 deletions(-) diff --git a/plugins/Marketplace/MissingPackageList.py b/plugins/Marketplace/MissingPackageList.py index 818b54eb37..c979f8796c 100644 --- a/plugins/Marketplace/MissingPackageList.py +++ b/plugins/Marketplace/MissingPackageList.py @@ -17,10 +17,30 @@ if TYPE_CHECKING: catalog = i18nCatalog("cura") class MissingPackageList(RemotePackageList): - def __init__(self, packages: List[Dict[str, str]], parent: Optional["QObject"] = None) -> None: + def __init__(self, packages_metadata: List[Dict[str, str]], parent: Optional["QObject"] = None) -> None: super().__init__(parent) - self._package_metadata: List[Dict[str, str]] = [] - # self.packageTypeFilter = None # This will be our new filter + self._packages_metadata: List[Dict[str, str]] = packages_metadata self._package_type_filter = "material" self._search_type = "package_ids" - self._requested_search_string = ",".join(map(lambda package: package["id"], packages)) + self._requested_search_string = ",".join(map(lambda package: package["id"], packages_metadata)) + + def _parseResponse(self, reply: "QNetworkReply") -> None: + super()._parseResponse(reply) + + # At the end of the list we want to show some information about packages the user is missing that can't be found + # This will add cards with some information about the missing packages + if not self.hasMore: + self._addPackagesMissingFromRequest() + + def _addPackagesMissingFromRequest(self): + """Create cards for packages the user needs to install that could not be found""" + returned_packages_ids = [item["package"].packageId for item in self._items] + + for package_metadata in self._packages_metadata: + if package_metadata["id"] not in returned_packages_ids: + package = PackageModel.fromIncompletePackageInformation(package_metadata["display_name"], package_metadata["package_version"], self._package_type_filter) + self.appendItem({"package": package}) + + self.itemsChanged.emit() + + diff --git a/plugins/Marketplace/PackageModel.py b/plugins/Marketplace/PackageModel.py index bd1b0681fc..cf641e3270 100644 --- a/plugins/Marketplace/PackageModel.py +++ b/plugins/Marketplace/PackageModel.py @@ -84,6 +84,20 @@ class PackageModel(QObject): self._is_busy = False + self._is_missing_package_information = False + + @classmethod + def fromIncompletePackageInformation(cls, display_name: str, package_version: str, package_type: str): + package_data = { + "display_name": display_name, + "package_version": package_version, + "package_type": package_type, + "description": "The material package associated with the Cura project could not be found on the Ultimaker marketplace. Use the partial material profile definition stored in the Cura project file at your own risk." + } + package_model = cls(package_data) + package_model.setIsMissingPackageInformation(True) + return package_model + @pyqtSlot() def _processUpdatedPackages(self): self.setCanUpdate(self._package_manager.checkIfPackageCanUpdate(self._package_id)) @@ -385,3 +399,11 @@ class PackageModel(QObject): def canUpdate(self) -> bool: """Flag indicating if the package can be updated""" return self._can_update + + def setIsMissingPackageInformation(self, isMissingPackageInformation: bool): + self._is_missing_package_information = isMissingPackageInformation + + @pyqtProperty(bool) + def isMissingPackageInformation(self) -> bool: + """Flag indicating if the package can be updated""" + return self._is_missing_package_information diff --git a/plugins/Marketplace/resources/qml/PackageCardHeader.qml b/plugins/Marketplace/resources/qml/PackageCardHeader.qml index 00d107f4fc..3e8e0fc26f 100644 --- a/plugins/Marketplace/resources/qml/PackageCardHeader.qml +++ b/plugins/Marketplace/resources/qml/PackageCardHeader.qml @@ -19,6 +19,8 @@ Item property bool showInstallButton: false property bool showUpdateButton: false + property string missingPackageReadMoreUrl: "https://support.ultimaker.com" + width: parent.width height: UM.Theme.getSize("card").height @@ -109,6 +111,7 @@ Item Button { id: externalLinkButton + visible: !packageData.isMissingPackageInformation // For some reason if i set padding, they don't match up. If i set all of them explicitly, it does work? leftPadding: UM.Theme.getSize("narrow_margin").width @@ -155,6 +158,7 @@ Item UM.Label { id: authorBy + visible: !packageData.isMissingPackageInformation Layout.alignment: Qt.AlignCenter text: catalog.i18nc("@label Is followed by the name of an author", "By") @@ -165,6 +169,7 @@ Item // clickable author name Item { + visible: !packageData.isMissingPackageInformation Layout.fillWidth: true implicitHeight: authorBy.height Layout.alignment: Qt.AlignTop @@ -182,10 +187,29 @@ Item } } + Item + { + visible: packageData.isMissingPackageInformation + Layout.fillWidth: true + implicitHeight: readMoreButton.height + Layout.alignment: Qt.AlignTop + Cura.TertiaryButton + { + id: readMoreButton + text: catalog.i18nc("@button:label", "Learn More") + leftPadding: 0 + rightPadding: 0 + iconSource: UM.Theme.getIcon("LinkExternal") + isIconOnRightSide: true + + onClicked: Qt.openUrlExternally(missingPackageReadMoreUrl) + } + } + ManageButton { id: enableManageButton - visible: showDisableButton && packageData.isInstalled && !packageData.isToBeInstalled && packageData.packageType != "material" + visible: showDisableButton && packageData.isInstalled && !packageData.isToBeInstalled && packageData.packageType != "material" && !packageData.isMissingPackageInformation enabled: !packageData.busy button_style: !packageData.isActive @@ -199,7 +223,7 @@ Item ManageButton { id: installManageButton - visible: showInstallButton && (packageData.canDowngrade || !packageData.isBundled) + visible: showInstallButton && (packageData.canDowngrade || !packageData.isBundled) && !packageData.isMissingPackageInformation enabled: !packageData.busy busy: packageData.busy button_style: !(packageData.isInstalled || packageData.isToBeInstalled) @@ -229,7 +253,7 @@ Item ManageButton { id: updateManageButton - visible: showUpdateButton && packageData.canUpdate + visible: showUpdateButton && packageData.canUpdate && !packageData.isMissingPackageInformation enabled: !packageData.busy busy: packageData.busy Layout.alignment: Qt.AlignTop diff --git a/plugins/Marketplace/resources/qml/Packages.qml b/plugins/Marketplace/resources/qml/Packages.qml index 70ff7de195..6e83f1e33b 100644 --- a/plugins/Marketplace/resources/qml/Packages.qml +++ b/plugins/Marketplace/resources/qml/Packages.qml @@ -62,8 +62,11 @@ ListView hoverEnabled: true onClicked: { - packages.selectedPackage = model.package; - contextStack.push(packageDetailsComponent); + if (!model.package.isMissingPackageInformation) + { + packages.selectedPackage = model.package; + contextStack.push(packageDetailsComponent); + } } PackageCard From fccfcb0e2b06dad82b4081fd56438f87c6b3b90e Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Thu, 2 Jun 2022 16:58:41 +0200 Subject: [PATCH 64/88] Add scroll bar to the `WorkSpaceDialog` The warning message took out some space from the dialog. Added a scroll bar to make sure the content can still be read. CURA-6990 --- plugins/3MFReader/WorkspaceDialog.qml | 693 +++++++++++++------------- 1 file changed, 351 insertions(+), 342 deletions(-) diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index de0f5c8acd..60f5a42094 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -31,337 +31,220 @@ UM.Dialog } } - Item + Flickable { - id: dialogSummaryItem + clip: true width: parent.width - height: childrenRect.height - anchors.margins: 10 * screenScaleFactor + height: parent.height + contentHeight: dialogSummaryItem.height + ScrollBar.vertical: UM.ScrollBar { id: verticalScrollBar } - UM.I18nCatalog + Item { - id: catalog - name: "cura" - } - - ListModel - { - id: resolveStrategiesModel - // Instead of directly adding the list elements, we add them afterwards. - // This is because it's impossible to use setting function results to be bound to listElement properties directly. - // See http://stackoverflow.com/questions/7659442/listelement-fields-as-properties - Component.onCompleted: - { - append({"key": "override", "label": catalog.i18nc("@action:ComboBox Update/override existing profile", "Update existing")}); - append({"key": "new", "label": catalog.i18nc("@action:ComboBox Save settings in a new profile", "Create new")}); - } - } - - Column - { - width: parent.width + id: dialogSummaryItem + width: verticalScrollBar.visible ? parent.width - verticalScrollBar.width - UM.Theme.getSize("default_margin").width : parent.width height: childrenRect.height - spacing: UM.Theme.getSize("default_margin").height + anchors.margins: 10 * screenScaleFactor + + UM.I18nCatalog + { + id: catalog + name: "cura" + } + + ListModel + { + id: resolveStrategiesModel + // Instead of directly adding the list elements, we add them afterwards. + // This is because it's impossible to use setting function results to be bound to listElement properties directly. + // See http://stackoverflow.com/questions/7659442/listelement-fields-as-properties + Component.onCompleted: + { + append({"key": "override", "label": catalog.i18nc("@action:ComboBox Update/override existing profile", "Update existing")}); + append({"key": "new", "label": catalog.i18nc("@action:ComboBox Save settings in a new profile", "Create new")}); + } + } Column { width: parent.width height: childrenRect.height + spacing: UM.Theme.getSize("default_margin").height - UM.Label + Column { - id: titleLabel - text: catalog.i18nc("@action:title", "Summary - Cura Project") - font: UM.Theme.getFont("large") - } - - Rectangle - { - id: separator - color: UM.Theme.getColor("text") width: parent.width - height: UM.Theme.getSize("default_lining").height - } - } + height: childrenRect.height - Item - { - width: parent.width - height: childrenRect.height - - UM.TooltipArea - { - id: machineResolveStrategyTooltip - anchors.top: parent.top - anchors.right: parent.right - width: (parent.width / 3) | 0 - height: visible ? comboboxHeight : 0 - visible: base.visible && machineResolveComboBox.model.count > 1 - text: catalog.i18nc("@info:tooltip", "How should the conflict in the machine be resolved?") - Cura.ComboBox + UM.Label { - id: machineResolveComboBox - model: manager.updatableMachinesModel - visible: machineResolveStrategyTooltip.visible - textRole: "displayName" + id: titleLabel + text: catalog.i18nc("@action:title", "Summary - Cura Project") + font: UM.Theme.getFont("large") + } + + Rectangle + { + id: separator + color: UM.Theme.getColor("text") width: parent.width - height: UM.Theme.getSize("button").height - onCurrentIndexChanged: - { - if (model.getItem(currentIndex).id == "new" - && model.getItem(currentIndex).type == "default_option") - { - manager.setResolveStrategy("machine", "new") - } - else - { - manager.setResolveStrategy("machine", "override") - manager.setMachineToOverride(model.getItem(currentIndex).id) - } - } + height: UM.Theme.getSize("default_lining").height + } + } - onVisibleChanged: - { - if (!visible) {return} + Item + { + width: parent.width + height: childrenRect.height - currentIndex = 0 - // If the project printer exists in Cura, set it as the default dropdown menu option. - // No need to check object 0, which is the "Create new" option - for (var i = 1; i < model.count; i++) + UM.TooltipArea + { + id: machineResolveStrategyTooltip + anchors.top: parent.top + anchors.right: parent.right + width: (parent.width / 3) | 0 + height: visible ? comboboxHeight : 0 + visible: base.visible && machineResolveComboBox.model.count > 1 + text: catalog.i18nc("@info:tooltip", "How should the conflict in the machine be resolved?") + Cura.ComboBox + { + id: machineResolveComboBox + model: manager.updatableMachinesModel + visible: machineResolveStrategyTooltip.visible + textRole: "displayName" + width: parent.width + height: UM.Theme.getSize("button").height + onCurrentIndexChanged: { - if (model.getItem(i).name == manager.machineName) + if (model.getItem(currentIndex).id == "new" + && model.getItem(currentIndex).type == "default_option") { - currentIndex = i - break + manager.setResolveStrategy("machine", "new") + } + else + { + manager.setResolveStrategy("machine", "override") + manager.setMachineToOverride(model.getItem(currentIndex).id) } } - // The project printer does not exist in Cura. If there is at least one printer of the same - // type, select the first one, else set the index to "Create new" - if (currentIndex == 0 && model.count > 1) + + onVisibleChanged: { - currentIndex = 1 + if (!visible) {return} + + currentIndex = 0 + // If the project printer exists in Cura, set it as the default dropdown menu option. + // No need to check object 0, which is the "Create new" option + for (var i = 1; i < model.count; i++) + { + if (model.getItem(i).name == manager.machineName) + { + currentIndex = i + break + } + } + // The project printer does not exist in Cura. If there is at least one printer of the same + // type, select the first one, else set the index to "Create new" + if (currentIndex == 0 && model.count > 1) + { + currentIndex = 1 + } } } } - } - Column - { - width: parent.width - height: childrenRect.height - - UM.Label - { - id: printer_settings_label - text: catalog.i18nc("@action:label", "Printer settings") - font: UM.Theme.getFont("default_bold") - } - - Row + Column { width: parent.width height: childrenRect.height UM.Label { - text: catalog.i18nc("@action:label", "Type") - width: (parent.width / 3) | 0 - } - UM.Label - { - text: manager.machineType - width: (parent.width / 3) | 0 - } - } - - Row - { - width: parent.width - height: childrenRect.height - - UM.Label - { - text: catalog.i18nc("@action:label", manager.isPrinterGroup ? "Printer Group" : "Printer Name") - width: (parent.width / 3) | 0 - } - UM.Label - { - text: manager.machineName - width: (parent.width / 3) | 0 - wrapMode: Text.WordWrap - } - } - } - } - - Item - { - width: parent.width - height: childrenRect.height - - UM.TooltipArea - { - anchors.right: parent.right - anchors.top: parent.top - width: (parent.width / 3) | 0 - height: visible ? comboboxHeight : 0 - visible: manager.qualityChangesConflict - text: catalog.i18nc("@info:tooltip", "How should the conflict in the profile be resolved?") - Cura.ComboBox - { - model: resolveStrategiesModel - textRole: "label" - id: qualityChangesResolveComboBox - width: parent.width - height: UM.Theme.getSize("button").height - onActivated: - { - manager.setResolveStrategy("quality_changes", resolveStrategiesModel.get(index).key) - } - } - } - - Column - { - width: parent.width - height: childrenRect.height - - UM.Label - { - text: catalog.i18nc("@action:label", "Profile settings") - font: UM.Theme.getFont("default_bold") - } - - Row - { - width: parent.width - height: childrenRect.height - - UM.Label - { - text: catalog.i18nc("@action:label", "Name") - width: (parent.width / 3) | 0 - } - UM.Label - { - text: manager.qualityName - width: (parent.width / 3) | 0 - wrapMode: Text.WordWrap - } - } - - Row - { - width: parent.width - height: childrenRect.height - - UM.Label - { - text: catalog.i18nc("@action:label", "Intent") - width: (parent.width / 3) | 0 - } - UM.Label - { - text: manager.intentName - width: (parent.width / 3) | 0 - wrapMode: Text.WordWrap - } - } - - Row - { - width: parent.width - height: childrenRect.height - - UM.Label - { - text: catalog.i18nc("@action:label", "Not in profile") - visible: manager.numUserSettings != 0 - width: (parent.width / 3) | 0 - } - UM.Label - { - text: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", manager.numUserSettings).arg(manager.numUserSettings) - visible: manager.numUserSettings != 0 - width: (parent.width / 3) | 0 - } - } - - Row - { - width: parent.width - height: childrenRect.height - - UM.Label - { - text: catalog.i18nc("@action:label", "Derivative from") - visible: manager.numSettingsOverridenByQualityChanges != 0 - width: (parent.width / 3) | 0 - } - UM.Label - { - text: catalog.i18ncp("@action:label", "%1, %2 override", "%1, %2 overrides", manager.numSettingsOverridenByQualityChanges).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges) - width: (parent.width / 3) | 0 - visible: manager.numSettingsOverridenByQualityChanges != 0 - wrapMode: Text.WordWrap - } - } - } - } - - Item - { - width: parent.width - height: childrenRect.height - - UM.TooltipArea - { - id: materialResolveTooltip - anchors.right: parent.right - anchors.top: parent.top - width: (parent.width / 3) | 0 - height: visible ? comboboxHeight : 0 - visible: manager.materialConflict - text: catalog.i18nc("@info:tooltip", "How should the conflict in the material be resolved?") - Cura.ComboBox - { - model: resolveStrategiesModel - textRole: "label" - id: materialResolveComboBox - width: parent.width - height: UM.Theme.getSize("button").height - onActivated: - { - manager.setResolveStrategy("material", resolveStrategiesModel.get(index).key) - } - } - } - - Column - { - width: parent.width - height: childrenRect.height - Row - { - height: childrenRect.height - width: parent.width - spacing: UM.Theme.getSize("narrow_margin").width - - UM.Label - { - text: catalog.i18nc("@action:label", "Material settings") + id: printer_settings_label + text: catalog.i18nc("@action:label", "Printer settings") font: UM.Theme.getFont("default_bold") - width: (parent.width / 3) | 0 } - } - Repeater - { - model: manager.materialLabels - delegate: Row + Row { width: parent.width height: childrenRect.height + + UM.Label + { + text: catalog.i18nc("@action:label", "Type") + width: (parent.width / 3) | 0 + } + UM.Label + { + text: manager.machineType + width: (parent.width / 3) | 0 + } + } + + Row + { + width: parent.width + height: childrenRect.height + + UM.Label + { + text: catalog.i18nc("@action:label", manager.isPrinterGroup ? "Printer Group" : "Printer Name") + width: (parent.width / 3) | 0 + } + UM.Label + { + text: manager.machineName + width: (parent.width / 3) | 0 + wrapMode: Text.WordWrap + } + } + } + } + + Item + { + width: parent.width + height: childrenRect.height + + UM.TooltipArea + { + anchors.right: parent.right + anchors.top: parent.top + width: (parent.width / 3) | 0 + height: visible ? comboboxHeight : 0 + visible: manager.qualityChangesConflict + text: catalog.i18nc("@info:tooltip", "How should the conflict in the profile be resolved?") + Cura.ComboBox + { + model: resolveStrategiesModel + textRole: "label" + id: qualityChangesResolveComboBox + width: parent.width + height: UM.Theme.getSize("button").height + onActivated: + { + manager.setResolveStrategy("quality_changes", resolveStrategiesModel.get(index).key) + } + } + } + + Column + { + width: parent.width + height: childrenRect.height + + UM.Label + { + text: catalog.i18nc("@action:label", "Profile settings") + font: UM.Theme.getFont("default_bold") + } + + Row + { + width: parent.width + height: childrenRect.height + UM.Label { text: catalog.i18nc("@action:label", "Name") @@ -369,75 +252,201 @@ UM.Dialog } UM.Label { - text: modelData + text: manager.qualityName width: (parent.width / 3) | 0 wrapMode: Text.WordWrap } } + + Row + { + width: parent.width + height: childrenRect.height + + UM.Label + { + text: catalog.i18nc("@action:label", "Intent") + width: (parent.width / 3) | 0 + } + UM.Label + { + text: manager.intentName + width: (parent.width / 3) | 0 + wrapMode: Text.WordWrap + } + } + + Row + { + width: parent.width + height: childrenRect.height + + UM.Label + { + text: catalog.i18nc("@action:label", "Not in profile") + visible: manager.numUserSettings != 0 + width: (parent.width / 3) | 0 + } + UM.Label + { + text: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", manager.numUserSettings).arg(manager.numUserSettings) + visible: manager.numUserSettings != 0 + width: (parent.width / 3) | 0 + } + } + + Row + { + width: parent.width + height: childrenRect.height + + UM.Label + { + text: catalog.i18nc("@action:label", "Derivative from") + visible: manager.numSettingsOverridenByQualityChanges != 0 + width: (parent.width / 3) | 0 + } + UM.Label + { + text: catalog.i18ncp("@action:label", "%1, %2 override", "%1, %2 overrides", manager.numSettingsOverridenByQualityChanges).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges) + width: (parent.width / 3) | 0 + visible: manager.numSettingsOverridenByQualityChanges != 0 + wrapMode: Text.WordWrap + } + } } } - } - Column - { - width: parent.width - height: childrenRect.height - - UM.Label + Item { - text: catalog.i18nc("@action:label", "Setting visibility") - font: UM.Theme.getFont("default_bold") + width: parent.width + height: childrenRect.height + + UM.TooltipArea + { + id: materialResolveTooltip + anchors.right: parent.right + anchors.top: parent.top + width: (parent.width / 3) | 0 + height: visible ? comboboxHeight : 0 + visible: manager.materialConflict + text: catalog.i18nc("@info:tooltip", "How should the conflict in the material be resolved?") + Cura.ComboBox + { + model: resolveStrategiesModel + textRole: "label" + id: materialResolveComboBox + width: parent.width + height: UM.Theme.getSize("button").height + onActivated: + { + manager.setResolveStrategy("material", resolveStrategiesModel.get(index).key) + } + } + } + + Column + { + width: parent.width + height: childrenRect.height + Row + { + height: childrenRect.height + width: parent.width + spacing: UM.Theme.getSize("narrow_margin").width + + UM.Label + { + text: catalog.i18nc("@action:label", "Material settings") + font: UM.Theme.getFont("default_bold") + width: (parent.width / 3) | 0 + } + } + + Repeater + { + model: manager.materialLabels + delegate: Row + { + width: parent.width + height: childrenRect.height + UM.Label + { + text: catalog.i18nc("@action:label", "Name") + width: (parent.width / 3) | 0 + } + UM.Label + { + text: modelData + width: (parent.width / 3) | 0 + wrapMode: Text.WordWrap + } + } + } + } } + + Column + { + width: parent.width + height: childrenRect.height + + UM.Label + { + text: catalog.i18nc("@action:label", "Setting visibility") + font: UM.Theme.getFont("default_bold") + } + Row + { + width: parent.width + height: childrenRect.height + UM.Label + { + text: catalog.i18nc("@action:label", "Mode") + width: (parent.width / 3) | 0 + } + UM.Label + { + text: manager.activeMode + width: (parent.width / 3) | 0 + } + } + Row + { + width: parent.width + height: childrenRect.height + visible: manager.hasVisibleSettingsField + UM.Label + { + text: catalog.i18nc("@action:label", "Visible settings:") + width: (parent.width / 3) | 0 + } + UM.Label + { + text: catalog.i18nc("@action:label", "%1 out of %2" ).arg(manager.numVisibleSettings).arg(manager.totalNumberOfSettings) + width: (parent.width / 3) | 0 + } + } + } + Row { width: parent.width height: childrenRect.height - UM.Label + visible: manager.hasObjectsOnPlate + UM.ColorImage { - text: catalog.i18nc("@action:label", "Mode") - width: (parent.width / 3) | 0 + width: warningLabel.height + height: width + source: UM.Theme.getIcon("Information") + color: UM.Theme.getColor("text") } UM.Label { - text: manager.activeMode - width: (parent.width / 3) | 0 + id: warningLabel + text: catalog.i18nc("@action:warning", "Loading a project will clear all models on the build plate.") } } - Row - { - width: parent.width - height: childrenRect.height - visible: manager.hasVisibleSettingsField - UM.Label - { - text: catalog.i18nc("@action:label", "Visible settings:") - width: (parent.width / 3) | 0 - } - UM.Label - { - text: catalog.i18nc("@action:label", "%1 out of %2" ).arg(manager.numVisibleSettings).arg(manager.totalNumberOfSettings) - width: (parent.width / 3) | 0 - } - } - } - - Row - { - width: parent.width - height: childrenRect.height - visible: manager.hasObjectsOnPlate - UM.ColorImage - { - width: warningLabel.height - height: width - source: UM.Theme.getIcon("Information") - color: UM.Theme.getColor("text") - } - UM.Label - { - id: warningLabel - text: catalog.i18nc("@action:warning", "Loading a project will clear all models on the build plate.") - } } } } From 3a7341f7611611e7e3863489e5729e1d9253c678 Mon Sep 17 00:00:00 2001 From: Rijk van Manen <37628975+rijkvanmanen@users.noreply.github.com> Date: Thu, 2 Jun 2022 17:02:22 +0200 Subject: [PATCH 65/88] Disable travel acceleration/jerk This slightly improves visual quality (mainly the seam) and reduces gcodes per second. PP-9 --- resources/definitions/ultimaker.def.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 22106d24df..9d93ab6e5b 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -89,6 +89,12 @@ "meshfix_maximum_deviation": { "value": "machine_nozzle_size / 10" }, + "jerk_travel_enabled": { + "value": false + }, + "acceleration_travel_enabled": { + "value": false + }, "acceleration_travel": { "value": "acceleration_wall" }, From 00cbee698532388314356936a3e4dbb2356bc41c Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Thu, 2 Jun 2022 17:08:25 +0200 Subject: [PATCH 66/88] Add missing continue, this was throwing errors due to it trying to packagedata.get("isbundled") on a None value. CURA-8610 --- plugins/3MFWriter/ThreeMFWriter.py | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index d9c4ee9e9a..d7d1380f9b 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -276,6 +276,7 @@ class ThreeMFWriter(MeshWriter): title=catalog.i18nc("@info:title", "Failed to save material package information"), message_type=Message.MessageType.WARNING) message.show() + continue if package_data.get("is_bundled"): continue From 8fe53163b3263e58d85dd860b37bce7e746dac29 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Thu, 2 Jun 2022 17:33:56 +0200 Subject: [PATCH 67/88] Add Action button and learn more link to warning message CURA-6990 --- plugins/3MFReader/WorkspaceDialog.py | 29 +++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 55261480a0..30a2a39465 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -2,7 +2,9 @@ # Cura is released under the terms of the LGPLv3 or higher. from typing import List, Optional, Dict, cast -from PyQt6.QtCore import pyqtSignal, QObject, pyqtProperty, QCoreApplication +from PyQt6.QtCore import pyqtSignal, QObject, pyqtProperty, QCoreApplication, QUrl +from PyQt6.QtGui import QDesktopServices + from UM.FlameProfiler import pyqtSlot from UM.PluginRegistry import PluginRegistry from UM.Application import Application @@ -387,8 +389,33 @@ class WorkspaceDialog(QObject): title=i18n_catalog.i18nc("@info:title", "Material profiles not installed"), message_type=Message.MessageType.WARNING ) + result_message.addAction( + "learn_more", + name=i18n_catalog.i18nc("@action:button", "Learn more"), + icon="", + description="Learn more about project materials.", + button_align=Message.ActionButtonAlignment.ALIGN_LEFT, + button_style=Message.ActionButtonStyle.LINK + ) + result_message.addAction( + "install_materials", + name=i18n_catalog.i18nc("@action:button", "Install Materials"), + icon="", + description="Install missing materials from project file.", + button_align=Message.ActionButtonAlignment.ALIGN_RIGHT, + button_style=Message.ActionButtonStyle.DEFAULT + ) + result_message.actionTriggered.connect(self._onMessageActionTriggered) result_message.show() + def _onMessageActionTriggered(self, message: Message, sync_message_action: str): + if sync_message_action == "install_materials": + self.installMissingPackages() + message.hide() + elif sync_message_action == "learn_more": + QDesktopServices.openUrl(QUrl("https://support.ultimaker.com/hc/en-us/articles/360011968360-Using-the-Ultimaker-Marketplace")) + + def __show(self) -> None: if self._view is None: self._createViewFromQML() From a0fd5afbe78ac6e6d9bee9e668af0295f17fba96 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Thu, 2 Jun 2022 17:38:42 +0200 Subject: [PATCH 68/88] Add missing warning badge CURA-6990 --- .../resources/qml/PackageCardHeader.qml | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/plugins/Marketplace/resources/qml/PackageCardHeader.qml b/plugins/Marketplace/resources/qml/PackageCardHeader.qml index 3e8e0fc26f..c014c00d8d 100644 --- a/plugins/Marketplace/resources/qml/PackageCardHeader.qml +++ b/plugins/Marketplace/resources/qml/PackageCardHeader.qml @@ -89,6 +89,31 @@ Item Layout.preferredWidth: parent.width Layout.preferredHeight: childrenRect.height + UM.ColorImage + { + id: badge + + width: UM.Theme.getSize("section_icon").width + height: UM.Theme.getSize("section_icon").height + + visible: packageData.isMissingPackageInformation + + source: UM.Theme.getIcon("WarningBadge", "low") + color: UM.Theme.getColor("warning") + + // Make a themable circle in the background so we can change it in other themes + Rectangle + { + id: iconBackground + color: UM.Theme.getColor("warning_badge_background") + anchors.centerIn: parent + width: parent.width - 1.5 //1.5 pixels smaller, (at least sqrt(2), regardless of screen pixel scale) so that the circle doesn't show up behind the icon due to anti-aliasing. + height: parent.height - 1.5 + radius: width / 2 + z: parent.z - 1 + } + } + UM.Label { text: packageData.displayName From 4c2be68c7b1774a8729b0e6f73d8101289d09e60 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Thu, 2 Jun 2022 17:39:41 +0200 Subject: [PATCH 69/88] Add pyqtSignal no get rid of annoying errors CURA-6990 --- plugins/Marketplace/PackageModel.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/Marketplace/PackageModel.py b/plugins/Marketplace/PackageModel.py index cf641e3270..3376880ec2 100644 --- a/plugins/Marketplace/PackageModel.py +++ b/plugins/Marketplace/PackageModel.py @@ -400,10 +400,13 @@ class PackageModel(QObject): """Flag indicating if the package can be updated""" return self._can_update + isMissingPackageInformationChanged = pyqtSignal() + def setIsMissingPackageInformation(self, isMissingPackageInformation: bool): self._is_missing_package_information = isMissingPackageInformation + self.isMissingPackageInformationChanged.emit() - @pyqtProperty(bool) + @pyqtProperty(bool, notify=isMissingPackageInformationChanged) def isMissingPackageInformation(self) -> bool: """Flag indicating if the package can be updated""" return self._is_missing_package_information From 277a6a38b214ca546a2116c9f9609c585d2c7a30 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Thu, 2 Jun 2022 17:40:14 +0200 Subject: [PATCH 70/88] Update campaign link CURA-6990 --- plugins/Marketplace/resources/qml/PackageCardHeader.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/Marketplace/resources/qml/PackageCardHeader.qml b/plugins/Marketplace/resources/qml/PackageCardHeader.qml index c014c00d8d..416550aa25 100644 --- a/plugins/Marketplace/resources/qml/PackageCardHeader.qml +++ b/plugins/Marketplace/resources/qml/PackageCardHeader.qml @@ -19,7 +19,7 @@ Item property bool showInstallButton: false property bool showUpdateButton: false - property string missingPackageReadMoreUrl: "https://support.ultimaker.com" + property string missingPackageReadMoreUrl: "https://ultimaker.atlassian.net/wiki/spaces/SD/pages/1231916580/Campaign+links+from+Cura+to+the+Ultimaker+domain" width: parent.width From 70c36fc80fc8bd28959df022f5d4ddc8595c0e3e Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Fri, 3 Jun 2022 10:13:29 +0200 Subject: [PATCH 71/88] Use correct status icon CURA-6990 --- .../resources/qml/PackageCardHeader.qml | 23 +++---------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/plugins/Marketplace/resources/qml/PackageCardHeader.qml b/plugins/Marketplace/resources/qml/PackageCardHeader.qml index 416550aa25..6c9d533bb5 100644 --- a/plugins/Marketplace/resources/qml/PackageCardHeader.qml +++ b/plugins/Marketplace/resources/qml/PackageCardHeader.qml @@ -89,29 +89,12 @@ Item Layout.preferredWidth: parent.width Layout.preferredHeight: childrenRect.height - UM.ColorImage + UM.StatusIcon { - id: badge - - width: UM.Theme.getSize("section_icon").width + width: UM.Theme.getSize("section_icon").width + UM.Theme.getSize("narrow_margin").width height: UM.Theme.getSize("section_icon").height - + status: UM.StatusIcon.Status.WARNING visible: packageData.isMissingPackageInformation - - source: UM.Theme.getIcon("WarningBadge", "low") - color: UM.Theme.getColor("warning") - - // Make a themable circle in the background so we can change it in other themes - Rectangle - { - id: iconBackground - color: UM.Theme.getColor("warning_badge_background") - anchors.centerIn: parent - width: parent.width - 1.5 //1.5 pixels smaller, (at least sqrt(2), regardless of screen pixel scale) so that the circle doesn't show up behind the icon due to anti-aliasing. - height: parent.height - 1.5 - radius: width / 2 - z: parent.z - 1 - } } UM.Label From 979c436b6cf16cb09badc63a3ae375038a14722b Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 3 Jun 2022 10:30:00 +0200 Subject: [PATCH 72/88] Make text area selection use theme colours Also fix the highlight colour of the border. The highlight colour was changed in a later design but it was not changed here yet. Without a theme colour it's going to use the system colours for the highlighting of text, which may be a very light grey that matches the background, making it impossible to see what part of the text is selected. Hopefully fixes issue #12286. --- resources/qml/MachineSettings/GcodeTextArea.qml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/resources/qml/MachineSettings/GcodeTextArea.qml b/resources/qml/MachineSettings/GcodeTextArea.qml index 7791e169c2..d4bc58cdc4 100644 --- a/resources/qml/MachineSettings/GcodeTextArea.qml +++ b/resources/qml/MachineSettings/GcodeTextArea.qml @@ -67,6 +67,8 @@ UM.TooltipArea font: UM.Theme.getFont("fixed") renderType: Text.NativeRendering color: UM.Theme.getColor("text") + selectionColor: UM.Theme.getColor("text_selection") + selectedTextColor: UM.Theme.getColor("text") wrapMode: TextEdit.NoWrap onActiveFocusChanged: @@ -91,7 +93,7 @@ UM.TooltipArea } if (gcodeTextArea.hovered || gcodeTextArea.activeFocus) { - return UM.Theme.getColor("border_main") + return UM.Theme.getColor("text_field_border_active") } return UM.Theme.getColor("border_field_light") } From 4492e3fba2eeaff686bb7e2a3d6e9c133af4f3d0 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Fri, 3 Jun 2022 10:39:01 +0200 Subject: [PATCH 73/88] Add warning border to `PackageCard` if information is missing CURA-6990 --- plugins/Marketplace/resources/qml/PackageCard.qml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/Marketplace/resources/qml/PackageCard.qml b/plugins/Marketplace/resources/qml/PackageCard.qml index 52254a478f..c9dda29f7d 100644 --- a/plugins/Marketplace/resources/qml/PackageCard.qml +++ b/plugins/Marketplace/resources/qml/PackageCard.qml @@ -18,6 +18,8 @@ Rectangle height: childrenRect.height color: UM.Theme.getColor("main_background") radius: UM.Theme.getSize("default_radius").width + border.color: packageData.isMissingPackageInformation ? UM.Theme.getColor("warning") : "transparent" + border.width: packageData.isMissingPackageInformation ? 1 : 0 PackageCardHeader { From 8d3b3ae411948e1adb333899535b6f3366c8ac83 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Fri, 3 Jun 2022 11:13:19 +0200 Subject: [PATCH 74/88] Use themed border width CURA-6990 --- plugins/Marketplace/resources/qml/PackageCard.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/Marketplace/resources/qml/PackageCard.qml b/plugins/Marketplace/resources/qml/PackageCard.qml index c9dda29f7d..b74dad0712 100644 --- a/plugins/Marketplace/resources/qml/PackageCard.qml +++ b/plugins/Marketplace/resources/qml/PackageCard.qml @@ -19,7 +19,7 @@ Rectangle color: UM.Theme.getColor("main_background") radius: UM.Theme.getSize("default_radius").width border.color: packageData.isMissingPackageInformation ? UM.Theme.getColor("warning") : "transparent" - border.width: packageData.isMissingPackageInformation ? 1 : 0 + border.width: packageData.isMissingPackageInformation ? UM.Theme.getSize("default_lining").width : 0 PackageCardHeader { From 2230269ab3d458601fd026c7d0dd8e279d7c252e Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Fri, 3 Jun 2022 15:17:32 +0200 Subject: [PATCH 75/88] Simplify variable assignment CURA-6990 --- plugins/Marketplace/InstallMissingPackagesDialog.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/plugins/Marketplace/InstallMissingPackagesDialog.py b/plugins/Marketplace/InstallMissingPackagesDialog.py index 9e8f1f6476..8ed84c1d86 100644 --- a/plugins/Marketplace/InstallMissingPackagesDialog.py +++ b/plugins/Marketplace/InstallMissingPackagesDialog.py @@ -42,10 +42,7 @@ class InstallMissingPackageDialog(QObject): if self._dialog is None: return - if self._package_manager.hasPackagesToRemoveOrInstall: - self._restart_needed = True - else: - self._restart_needed = False + self._restart_needed = self._package_manager.hasPackagesToRemoveOrInstall self.showRestartChanged.emit() showRestartChanged = pyqtSignal() From eccef62dc7818bea012069bff117bae32d6628a4 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Fri, 3 Jun 2022 15:22:29 +0200 Subject: [PATCH 76/88] Add typing CURA-6990 --- plugins/3MFReader/WorkspaceDialog.py | 8 ++++---- plugins/Marketplace/InstallMissingPackagesDialog.py | 8 ++++---- plugins/Marketplace/MissingPackageList.py | 2 +- plugins/Marketplace/PackageModel.py | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 30a2a39465..e3cbef607a 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -27,7 +27,7 @@ i18n_catalog = i18nCatalog("cura") class WorkspaceDialog(QObject): showDialogSignal = pyqtSignal() - def __init__(self, parent = None): + def __init__(self, parent = None) -> None: super().__init__(parent) self._component = None self._context = None @@ -287,11 +287,11 @@ class WorkspaceDialog(QObject): self.missingPackagesChanged.emit() @pyqtProperty("QVariantList", notify=missingPackagesChanged) - def missingPackages(self): + def missingPackages(self) -> List[Dict[str, str]]: return self._missing_package_metadata @pyqtSlot() - def installMissingPackages(self): + def installMissingPackages(self) -> None: self._install_missing_package_dialog = InstallMissingPackageDialog(self._missing_package_metadata) self._install_missing_package_dialog.show() @@ -408,7 +408,7 @@ class WorkspaceDialog(QObject): result_message.actionTriggered.connect(self._onMessageActionTriggered) result_message.show() - def _onMessageActionTriggered(self, message: Message, sync_message_action: str): + def _onMessageActionTriggered(self, message: Message, sync_message_action: str) -> None: if sync_message_action == "install_materials": self.installMissingPackages() message.hide() diff --git a/plugins/Marketplace/InstallMissingPackagesDialog.py b/plugins/Marketplace/InstallMissingPackagesDialog.py index 8ed84c1d86..3ed46959dd 100644 --- a/plugins/Marketplace/InstallMissingPackagesDialog.py +++ b/plugins/Marketplace/InstallMissingPackagesDialog.py @@ -11,7 +11,7 @@ from plugins.Marketplace.MissingPackageList import MissingPackageList class InstallMissingPackageDialog(QObject): """Dialog used to display packages that need to be installed to load 3mf file materials""" - def __init__(self, packages_metadata: List[Dict[str, str]]): + def __init__(self, packages_metadata: List[Dict[str, str]]) -> None: """Initialize :param packages_metadata: List of dictionaries containing information about missing packages. @@ -26,9 +26,9 @@ class InstallMissingPackageDialog(QObject): self._restart_needed = False self._package_metadata: List[Dict[str, str]] = packages_metadata - self._package_model = MissingPackageList(packages_metadata) + self._package_model: MissingPackageList = MissingPackageList(packages_metadata) - def show(self): + def show(self) -> None: plugin_path = self._plugin_registry.getPluginPath("Marketplace") if plugin_path is None: plugin_path = os.path.dirname(__file__) @@ -52,5 +52,5 @@ class InstallMissingPackageDialog(QObject): return self._restart_needed @pyqtProperty(QObject) - def model(self): + def model(self) -> MissingPackageList: return self._package_model diff --git a/plugins/Marketplace/MissingPackageList.py b/plugins/Marketplace/MissingPackageList.py index c979f8796c..385e78b95f 100644 --- a/plugins/Marketplace/MissingPackageList.py +++ b/plugins/Marketplace/MissingPackageList.py @@ -32,7 +32,7 @@ class MissingPackageList(RemotePackageList): if not self.hasMore: self._addPackagesMissingFromRequest() - def _addPackagesMissingFromRequest(self): + def _addPackagesMissingFromRequest(self) -> None: """Create cards for packages the user needs to install that could not be found""" returned_packages_ids = [item["package"].packageId for item in self._items] diff --git a/plugins/Marketplace/PackageModel.py b/plugins/Marketplace/PackageModel.py index 3376880ec2..21db487d8f 100644 --- a/plugins/Marketplace/PackageModel.py +++ b/plugins/Marketplace/PackageModel.py @@ -87,7 +87,7 @@ class PackageModel(QObject): self._is_missing_package_information = False @classmethod - def fromIncompletePackageInformation(cls, display_name: str, package_version: str, package_type: str): + def fromIncompletePackageInformation(cls, display_name: str, package_version: str, package_type: str) -> PackageModel: package_data = { "display_name": display_name, "package_version": package_version, @@ -402,7 +402,7 @@ class PackageModel(QObject): isMissingPackageInformationChanged = pyqtSignal() - def setIsMissingPackageInformation(self, isMissingPackageInformation: bool): + def setIsMissingPackageInformation(self, isMissingPackageInformation: bool) -> None: self._is_missing_package_information = isMissingPackageInformation self.isMissingPackageInformationChanged.emit() From 34004df7afc0619599aca513218cdfa0833bacba Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Fri, 3 Jun 2022 16:25:43 +0200 Subject: [PATCH 77/88] Un-capitalise materials CURA-6990 --- plugins/3MFReader/WorkspaceDialog.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 60f5a42094..6ac7ac701e 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -480,7 +480,7 @@ UM.Dialog Cura.PrimaryButton { visible: buttonWarning - text: catalog.i18nc("@action:button", "Install missing Material") + text: catalog.i18nc("@action:button", "Install missing material") onClicked: manager.installMissingPackages() } ] From 781723fbbc54cd625b8bc3090705a17b602d5a0e Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Mon, 6 Jun 2022 21:27:32 +0200 Subject: [PATCH 78/88] Fix typing CURA-6990 --- plugins/Marketplace/PackageModel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/Marketplace/PackageModel.py b/plugins/Marketplace/PackageModel.py index 21db487d8f..078bfc879e 100644 --- a/plugins/Marketplace/PackageModel.py +++ b/plugins/Marketplace/PackageModel.py @@ -87,7 +87,7 @@ class PackageModel(QObject): self._is_missing_package_information = False @classmethod - def fromIncompletePackageInformation(cls, display_name: str, package_version: str, package_type: str) -> PackageModel: + def fromIncompletePackageInformation(cls, display_name: str, package_version: str, package_type: str) -> "PackageModel": package_data = { "display_name": display_name, "package_version": package_version, From 2f22002fd59e2be44934c0ff5c904c93a03fd690 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Mon, 6 Jun 2022 21:45:48 +0200 Subject: [PATCH 79/88] Add header and footer components to Dialog This provides control over how the header (the header is newly introduced in this commit) and footer components are rendered. The footer is the area where the `leftButtoons` and `rightButtons` are rendered. Having control over how this is rendered introduces for instance the possibility to render the buttons within a warning area (an example of this can bee seen in the WorkspaceDialog). CURA-6990 --- plugins/3MFReader/WorkspaceDialog.qml | 58 ++++++++++++++++++++++++--- resources/qml/ColorDialog.qml | 2 +- 2 files changed, 53 insertions(+), 7 deletions(-) diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 6ac7ac701e..d0250abfd8 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -451,26 +451,72 @@ UM.Dialog } } - buttonWarningText: "The material used in this project is currently not installed in Cura.
    Install the material profile and reopen the project." - buttonWarning: manager.missingPackages.length > 0 + property bool warning: manager.missingPackages.length > 0 + + footerComponent: Rectangle + { + color: warning ? UM.Theme.getColor("warning") : "transparent" + anchors.bottom: parent.bottom + width: parent.width + height: childrenRect.height + 2 * base.margin + + Column + { + height: childrenRect.height + spacing: base.margin + + anchors.margins: base.margin + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + + RowLayout + { + id: warningRow + height: childrenRect.height + visible: warning + spacing: base.margin + UM.ColorImage + { + width: UM.Theme.getSize("extruder_icon").width + height: UM.Theme.getSize("extruder_icon").height + source: UM.Theme.getIcon("Warning") + } + + UM.Label + { + id: warningText + text: "The material used in this project is currently not installed in Cura.
    Install the material profile and reopen the project." + } + } + + Loader + { + width: parent.width + height: childrenRect.height + sourceComponent: buttonRow + } + } + } + buttonSpacing: UM.Theme.getSize("default_margin").width rightButtons: [ Cura.TertiaryButton { - visible: !buttonWarning + visible: !warning text: catalog.i18nc("@action:button", "Cancel") onClicked: reject() }, Cura.PrimaryButton { - visible: !buttonWarning + visible: !warning text: catalog.i18nc("@action:button", "Open") onClicked: accept() }, Cura.TertiaryButton { - visible: buttonWarning + visible: warning text: catalog.i18nc("@action:button", "Open project anyway") onClicked: { manager.showMissingMaterialsWarning(); @@ -479,7 +525,7 @@ UM.Dialog }, Cura.PrimaryButton { - visible: buttonWarning + visible: warning text: catalog.i18nc("@action:button", "Install missing material") onClicked: manager.installMissingPackages() } diff --git a/resources/qml/ColorDialog.qml b/resources/qml/ColorDialog.qml index 49adcf0cca..e5216a3404 100644 --- a/resources/qml/ColorDialog.qml +++ b/resources/qml/ColorDialog.qml @@ -29,7 +29,7 @@ UM.Dialog // the size of the dialog ourselves. // Ugly workaround for windows having overlapping elements due to incorrect dialog width minimumWidth: content.width + (Qt.platform.os == "windows" ? 4 * margin : 2 * margin) - minimumHeight: content.height + buttonArea.height + (Qt.platform.os == "windows" ? 5 * margin : 3 * margin) + minimumHeight: content.height + footer.height + (Qt.platform.os == "windows" ? 5 * margin : 3 * margin) property alias color: colorInput.text property var swatchColors: [ From bee4da63681cb38c25b593456409fe6cf8a50777 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Mon, 6 Jun 2022 22:27:31 +0200 Subject: [PATCH 80/88] Re-use `Marketplace` Component in the `InstallMissingPackagesDialog` CURA-6990 --- .../qml/InstallMissingPackagesDialog.qml | 149 +----------------- .../Marketplace/resources/qml/Marketplace.qml | 8 +- 2 files changed, 12 insertions(+), 145 deletions(-) diff --git a/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml b/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml index a5fbe2c965..f08fed4f85 100644 --- a/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml +++ b/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml @@ -9,150 +9,11 @@ import QtQuick.Window 2.2 import UM 1.5 as UM import Cura 1.6 as Cura -Window +Marketplace { - id: marketplaceDialog - - property variant catalog: UM.I18nCatalog { name: "cura" } - - signal searchStringChanged(string new_search) - - minimumWidth: UM.Theme.getSize("modal_window_minimum").width - minimumHeight: UM.Theme.getSize("modal_window_minimum").height - width: minimumWidth - height: minimumHeight - - onVisibleChanged: - { - while(contextStack.depth > 1) - { - contextStack.pop(); //Do NOT use the StackView.Immediate transition here, since it causes the window to stay empty. Seemingly a Qt bug: https://bugreports.qt.io/browse/QTBUG-60670? - } - } - - Connections - { - target: Cura.API.account - function onLoginStateChanged() - { - close(); - } - } - - title: catalog.i18nc("@title", "Install missing Materials") modality: Qt.ApplicationModal - - // Background color - Rectangle - { - anchors.fill: parent - color: UM.Theme.getColor("main_background") - } - //The Marketplace can have a page in front of everything with package details. The stack view controls its visibility. - StackView - { - id: contextStack - anchors.fill: parent - - initialItem: packageBrowse - - ColumnLayout - { - id: packageBrowse - - spacing: UM.Theme.getSize("narrow_margin").height - - // Page title. - Item - { - Layout.preferredWidth: parent.width - Layout.preferredHeight: childrenRect.height + UM.Theme.getSize("default_margin").height - - UM.Label - { - id: pageTitle - anchors - { - left: parent.left - leftMargin: UM.Theme.getSize("default_margin").width - right: parent.right - rightMargin: UM.Theme.getSize("default_margin").width - bottom: parent.bottom - } - - font: UM.Theme.getFont("large") - text: content.item ? content.item.pageTitle: catalog.i18nc("@title", "Loading...") - } - } - - // Page contents. - Rectangle - { - Layout.preferredWidth: parent.width - Layout.fillHeight: true - color: UM.Theme.getColor("detail_background") - - // Page contents. - Loader - { - id: content - anchors.fill: parent - anchors.margins: UM.Theme.getSize("default_margin").width - source: "MissingPackages.qml" - } - } - } - } - - Rectangle - { - height: quitButton.height + 2 * UM.Theme.getSize("default_margin").width - color: UM.Theme.getColor("primary") - visible: manager.showRestartNotification - anchors - { - left: parent.left - right: parent.right - bottom: parent.bottom - } - - RowLayout - { - anchors - { - left: parent.left - right: parent.right - verticalCenter: parent.verticalCenter - margins: UM.Theme.getSize("default_margin").width - } - spacing: UM.Theme.getSize("default_margin").width - UM.ColorImage - { - id: bannerIcon - source: UM.Theme.getIcon("Plugin") - - color: UM.Theme.getColor("primary_button_text") - implicitWidth: UM.Theme.getSize("banner_icon_size").width - implicitHeight: UM.Theme.getSize("banner_icon_size").height - } - Text - { - color: UM.Theme.getColor("primary_button_text") - text: catalog.i18nc("@button", "In order to use the package you will need to restart Cura") - font: UM.Theme.getFont("default") - renderType: Text.NativeRendering - Layout.fillWidth: true - } - Cura.SecondaryButton - { - id: quitButton - text: catalog.i18nc("@info:button, %1 is the application name", "Quit %1").arg(CuraApplication.applicationDisplayName) - onClicked: - { - marketplaceDialog.hide(); - CuraApplication.closeApplication(); - } - } - } - } + title: catalog.i18nc("@title", "Install missing Materials") + pageContentsSource: "MissingPackages.qml" + showSearchHeader: false + showOnboadBanner: false } diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml index d925f265d9..2a3c5f69ce 100644 --- a/plugins/Marketplace/resources/qml/Marketplace.qml +++ b/plugins/Marketplace/resources/qml/Marketplace.qml @@ -16,6 +16,10 @@ Window signal searchStringChanged(string new_search) + property alias showOnboadBanner: onBoardBanner.visible + property alias showSearchHeader: searchHeader.visible + property alias pageContentsSource: content.source + minimumWidth: UM.Theme.getSize("modal_window_minimum").width minimumHeight: UM.Theme.getSize("modal_window_minimum").height width: minimumWidth @@ -86,6 +90,7 @@ Window OnboardBanner { + id: onBoardBanner visible: content.item && content.item.bannerVisible text: content.item && content.item.bannerText icon: content.item && content.item.bannerIcon @@ -100,6 +105,7 @@ Window // Search & Top-Level Tabs Item { + id: searchHeader implicitHeight: childrenRect.height implicitWidth: parent.width - 2 * UM.Theme.getSize("default_margin").width Layout.alignment: Qt.AlignHCenter @@ -186,7 +192,7 @@ Window { text: catalog.i18nc("@info", "Search in the browser") iconSource: UM.Theme.getIcon("LinkExternal") - visible: pageSelectionTabBar.currentItem.hasSearch + visible: pageSelectionTabBar.currentItem.hasSearch && searchHeader.visible isIconOnRightSide: true height: fontMetrics.height textFont: fontMetrics.font From 76180eee011c4c51ec88c83913b399ba700fb268 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Mon, 6 Jun 2022 22:49:49 +0200 Subject: [PATCH 81/88] Show warning on-close of the install missing packaged dialog CURA-6990 --- plugins/3MFReader/WorkspaceDialog.py | 2 +- .../Marketplace/InstallMissingPackagesDialog.py | 16 +++++++++++++--- .../qml/InstallMissingPackagesDialog.qml | 2 ++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index e3cbef607a..419f1fe69c 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -292,7 +292,7 @@ class WorkspaceDialog(QObject): @pyqtSlot() def installMissingPackages(self) -> None: - self._install_missing_package_dialog = InstallMissingPackageDialog(self._missing_package_metadata) + self._install_missing_package_dialog = InstallMissingPackageDialog(self._missing_package_metadata, self.showMissingMaterialsWarning) self._install_missing_package_dialog.show() def getResult(self) -> Dict[str, Optional[str]]: diff --git a/plugins/Marketplace/InstallMissingPackagesDialog.py b/plugins/Marketplace/InstallMissingPackagesDialog.py index 3ed46959dd..282dc54492 100644 --- a/plugins/Marketplace/InstallMissingPackagesDialog.py +++ b/plugins/Marketplace/InstallMissingPackagesDialog.py @@ -1,17 +1,22 @@ import os -from PyQt6.QtCore import QObject, pyqtSignal, pyqtProperty -from typing import Optional, List, Dict, cast +from PyQt6.QtCore import QObject, pyqtSignal, pyqtProperty, QUrl +from PyQt6.QtGui import QDesktopServices +from typing import Optional, List, Dict, cast, Callable from cura.CuraApplication import CuraApplication from UM.PluginRegistry import PluginRegistry from cura.CuraPackageManager import CuraPackageManager +from UM.Message import Message +from UM.i18n import i18nCatalog +from UM.FlameProfiler import pyqtSlot from plugins.Marketplace.MissingPackageList import MissingPackageList +i18n_catalog = i18nCatalog("cura") class InstallMissingPackageDialog(QObject): """Dialog used to display packages that need to be installed to load 3mf file materials""" - def __init__(self, packages_metadata: List[Dict[str, str]]) -> None: + def __init__(self, packages_metadata: List[Dict[str, str]], show_missing_materials_warning: Callable[[], None]) -> None: """Initialize :param packages_metadata: List of dictionaries containing information about missing packages. @@ -27,6 +32,7 @@ class InstallMissingPackageDialog(QObject): self._package_metadata: List[Dict[str, str]] = packages_metadata self._package_model: MissingPackageList = MissingPackageList(packages_metadata) + self._show_missing_materials_warning = show_missing_materials_warning def show(self) -> None: plugin_path = self._plugin_registry.getPluginPath("Marketplace") @@ -54,3 +60,7 @@ class InstallMissingPackageDialog(QObject): @pyqtProperty(QObject) def model(self) -> MissingPackageList: return self._package_model + + @pyqtSlot() + def showMissingMaterialsWarning(self) -> None: + self._show_missing_materials_warning() diff --git a/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml b/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml index f08fed4f85..edad18f1a8 100644 --- a/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml +++ b/plugins/Marketplace/resources/qml/InstallMissingPackagesDialog.qml @@ -16,4 +16,6 @@ Marketplace pageContentsSource: "MissingPackages.qml" showSearchHeader: false showOnboadBanner: false + + onClosing: manager.showMissingMaterialsWarning() } From efeb29c734bb0d9a8094f6e8b9820aabda665ec8 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Tue, 7 Jun 2022 13:41:54 +0200 Subject: [PATCH 82/88] Fix call to plugin that was causing errors when building CURA-8610 --- cura/CuraPackageManager.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cura/CuraPackageManager.py b/cura/CuraPackageManager.py index 720406fbc6..e23ed47ffa 100644 --- a/cura/CuraPackageManager.py +++ b/cura/CuraPackageManager.py @@ -5,13 +5,13 @@ import os from typing import Any, cast, Dict, List, Set, Tuple, TYPE_CHECKING, Optional from UM.Logger import Logger +from UM.PluginRegistry import PluginRegistry from cura.CuraApplication import CuraApplication # To find some resource types. from cura.Settings.GlobalStack import GlobalStack from UM.PackageManager import PackageManager # The class we're extending. from UM.Resources import Resources # To find storage paths for some resource types. from UM.i18n import i18nCatalog -from plugins.XmlMaterialProfile.XmlMaterialProfile import XmlMaterialProfile catalog = i18nCatalog("cura") @@ -68,7 +68,8 @@ class CuraPackageManager(PackageManager): with open(root + "/" + file_name, encoding="utf-8") as f: # Make sure the file we found has the same guid as our material # Parsing this xml would be better but the namespace is needed to search it. - parsed_guid = XmlMaterialProfile.getMetadataFromSerialized(f.read(), "GUID") + parsed_guid = PluginRegistry.getInstance().getPluginObject("XmlMaterialProfile").getMetadataFromSerialized( + f.read(), "GUID") if guid == parsed_guid: return package_id From fb3f065fe0642300219d92b05d8b6cc1b305cce4 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 7 Jun 2022 13:55:48 +0200 Subject: [PATCH 83/88] Catch ValueErrors from removing callbacks that were already removed This can happen from asynchronous access. Fixes Sentry issue CURA-3YV. --- plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py b/plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py index e0b156dc08..fd8118306b 100644 --- a/plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py +++ b/plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py @@ -169,7 +169,10 @@ class ClusterApiClient: """ def parse() -> None: - self._anti_gc_callbacks.remove(parse) + try: + self._anti_gc_callbacks.remove(parse) + except ValueError: # Already removed asynchronously. + return # Then the rest of the function is also already executed. # Don't try to parse the reply if we didn't get one if reply.attribute(QNetworkRequest.Attribute.HttpStatusCodeAttribute) is None: From de8a58f0d7e2ca5cc9e4b7966d6a7d6201118b0b Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 8 Jun 2022 09:50:44 +0200 Subject: [PATCH 84/88] Fix imports, especially not using plugins folder as module When running from source, 'import plugins' works since it's working from the directory where the plug-ins directory is located. However in a build this doesn't work since the source code is in a different location there. --- plugins/Marketplace/InstallMissingPackagesDialog.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/plugins/Marketplace/InstallMissingPackagesDialog.py b/plugins/Marketplace/InstallMissingPackagesDialog.py index 282dc54492..bd7c08d9b9 100644 --- a/plugins/Marketplace/InstallMissingPackagesDialog.py +++ b/plugins/Marketplace/InstallMissingPackagesDialog.py @@ -1,16 +1,17 @@ +# Copyright (c) 2022 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + import os -from PyQt6.QtCore import QObject, pyqtSignal, pyqtProperty, QUrl -from PyQt6.QtGui import QDesktopServices +from PyQt6.QtCore import QObject, pyqtSignal, pyqtProperty from typing import Optional, List, Dict, cast, Callable from cura.CuraApplication import CuraApplication from UM.PluginRegistry import PluginRegistry from cura.CuraPackageManager import CuraPackageManager -from UM.Message import Message from UM.i18n import i18nCatalog from UM.FlameProfiler import pyqtSlot -from plugins.Marketplace.MissingPackageList import MissingPackageList +from .MissingPackageList import MissingPackageList i18n_catalog = i18nCatalog("cura") From 0f12b012cfa5bfd1f6b30828421e891289e029c3 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 8 Jun 2022 10:17:39 +0200 Subject: [PATCH 85/88] Create InstallMissingPackageDialog with newly-exposed function from Marketplace This adds a new function to the API of the Marketplace plug-in. It's not pretty, but it's going to be how it is for a while. Done to fix a critical build issue. The 'import plugins' thing works from source but not on the build. --- plugins/3MFReader/WorkspaceDialog.py | 25 ++++++++++++++----------- plugins/Marketplace/Marketplace.py | 18 +++++++++++++++--- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 419f1fe69c..0a8f7784b2 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -1,19 +1,20 @@ -# Copyright (c) 2020 Ultimaker B.V. +# Copyright (c) 2022 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import List, Optional, Dict, cast from PyQt6.QtCore import pyqtSignal, QObject, pyqtProperty, QCoreApplication, QUrl from PyQt6.QtGui import QDesktopServices +from typing import List, Optional, Dict, cast -from UM.FlameProfiler import pyqtSlot -from UM.PluginRegistry import PluginRegistry -from UM.Application import Application -from UM.i18n import i18nCatalog -from UM.Settings.ContainerRegistry import ContainerRegistry from cura.Settings.GlobalStack import GlobalStack -from plugins.Marketplace.InstallMissingPackagesDialog import InstallMissingPackageDialog -from .UpdatableMachinesModel import UpdatableMachinesModel +from UM.Application import Application +from UM.FlameProfiler import pyqtSlot +from UM.i18n import i18nCatalog +from UM.Logger import Logger from UM.Message import Message +from UM.PluginRegistry import PluginRegistry +from UM.Settings.ContainerRegistry import ContainerRegistry + +from .UpdatableMachinesModel import UpdatableMachinesModel import os import threading @@ -292,8 +293,10 @@ class WorkspaceDialog(QObject): @pyqtSlot() def installMissingPackages(self) -> None: - self._install_missing_package_dialog = InstallMissingPackageDialog(self._missing_package_metadata, self.showMissingMaterialsWarning) - self._install_missing_package_dialog.show() + marketplace_plugin = PluginRegistry.getInstance().getPluginObject("Marketplace") + if not marketplace_plugin: + Logger.warning("Could not show dialog to install missing plug-ins. Is Marketplace plug-in not available?") + marketplace_plugin.showInstallMissingPackageDialog(self._missing_package_metadata, self.showMissingMaterialsWarning) # type: ignore def getResult(self) -> Dict[str, Optional[str]]: if "machine" in self._result and self.updatableMachinesModel.count <= 1: diff --git a/plugins/Marketplace/Marketplace.py b/plugins/Marketplace/Marketplace.py index e856245c3d..06fed6ec0b 100644 --- a/plugins/Marketplace/Marketplace.py +++ b/plugins/Marketplace/Marketplace.py @@ -3,15 +3,15 @@ import os.path from PyQt6.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject -from typing import Optional, cast +from typing import Callable, cast, Dict, List, Optional from cura.CuraApplication import CuraApplication # Creating QML objects and managing packages. - from UM.Extension import Extension # We are implementing the main object of an extension here. from UM.PluginRegistry import PluginRegistry # To find out where we are stored (the proper way). -from .RemotePackageList import RemotePackageList # To register this type with QML. +from .InstallMissingPackagesDialog import InstallMissingPackageDialog # To allow creating this dialogue from outside of the plug-in. from .LocalPackageList import LocalPackageList # To register this type with QML. +from .RemotePackageList import RemotePackageList # To register this type with QML. class Marketplace(Extension, QObject): @@ -118,3 +118,15 @@ class Marketplace(Extension, QObject): @pyqtProperty(bool, notify=showRestartNotificationChanged) def showRestartNotification(self) -> bool: return self._restart_needed + + def showInstallMissingPackageDialog(self, packages_metadata: List[Dict[str, str]], ignore_warning_callback: Callable[[], None]) -> None: + """ + Show a dialog that prompts the user to install certain packages. + + The dialog is worded for packages that are missing and required for a certain operation. + :param packages_metadata: The metadata of the packages that are missing. + :param ignore_warning_callback: A callback that gets executed when the user ignores the pop-up, to show them a + warning. + """ + dialog = InstallMissingPackageDialog(packages_metadata, ignore_warning_callback) + dialog.show() From 4a08b88f31955e625a87801c9830caa5d87c0474 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 8 Jun 2022 11:24:46 +0200 Subject: [PATCH 86/88] Allow setting metadata subentries that don't exist yet Otherwise it crashes here. The ContainerManager should be flexible enough to allow that sort of thing. It works with plain entries, but crashed with subentries (like 'properties/diameter') if those weren't present yet in the metadata. Fixes Sentry issue CURA-3FH. --- cura/Settings/ContainerManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index 67a1643d0b..676cdd6c65 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -114,7 +114,7 @@ class ContainerManager(QObject): for _ in range(len(entries)): item = item.get(entries.pop(0), {}) - if item[entry_name] != entry_value: + if entry_name not in item or item[entry_name] != entry_value: sub_item_changed = True item[entry_name] = entry_value From f9ea517e054d1779af6043c5c7e771d49e090007 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Wed, 8 Jun 2022 11:51:54 +0200 Subject: [PATCH 87/88] If package.json metadata file is missing from 3mf file output warning instead of error. CURA-8610 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 7456ce2b95..3c096318b5 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -1255,8 +1255,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader): try: package_metadata = json.loads(archive.open("Metadata/packages.json").read().decode("utf-8")) return package_metadata["packages"] + except KeyError: + Logger.warning("No package metadata was found in .3mf file.") except Exception: Logger.error("Failed to load packes metadata from .3mf file") + return [] From d5511a078c0f227828158a544560e0af8e9f2e0b Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Wed, 8 Jun 2022 12:19:36 +0200 Subject: [PATCH 88/88] Dialog was immediately being destroyed because a reference to it was not being stored in memory. Added a missingPackageDialog variable to WorkspaceDialog to fix this. Swapped the loading order of Marketplace extensions so SyncOrchestractor is not fetched by PluginRegistry.getInstance().getPluginObject("Marketplace") in WorkspaceDialog. CURA-8610 --- plugins/Marketplace/Marketplace.py | 5 +++-- plugins/Marketplace/__init__.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/Marketplace/Marketplace.py b/plugins/Marketplace/Marketplace.py index 06fed6ec0b..b2c729c2cd 100644 --- a/plugins/Marketplace/Marketplace.py +++ b/plugins/Marketplace/Marketplace.py @@ -41,6 +41,7 @@ class Marketplace(Extension, QObject): self._tab_shown: int = 0 self._restart_needed = False + self.missingPackageDialog = None def getTabShown(self) -> int: return self._tab_shown @@ -128,5 +129,5 @@ class Marketplace(Extension, QObject): :param ignore_warning_callback: A callback that gets executed when the user ignores the pop-up, to show them a warning. """ - dialog = InstallMissingPackageDialog(packages_metadata, ignore_warning_callback) - dialog.show() + self.missingPackageDialog = InstallMissingPackageDialog(packages_metadata, ignore_warning_callback) + self.missingPackageDialog.show() diff --git a/plugins/Marketplace/__init__.py b/plugins/Marketplace/__init__.py index ef1beab33e..655cf6bf84 100644 --- a/plugins/Marketplace/__init__.py +++ b/plugins/Marketplace/__init__.py @@ -14,4 +14,4 @@ def register(app): """ Register the plug-in object with Uranium. """ - return { "extension": [Marketplace(), SyncOrchestrator(app)] } + return { "extension": [SyncOrchestrator(app), Marketplace()] }