diff --git a/.github/workflows/cura-installer.yml b/.github/workflows/cura-installer.yml index 9572b31aee..e5a205a770 100644 --- a/.github/workflows/cura-installer.yml +++ b/.github/workflows/cura-installer.yml @@ -155,7 +155,7 @@ jobs: sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 10 - name: Create the default Conan profile - run: conan profile new default --detect + run: conan profile new default --detect --force - name: Configure GPG Key Linux (Bash) if: ${{ runner.os == 'Linux' }} diff --git a/.github/workflows/installers.yml b/.github/workflows/installers.yml new file mode 100644 index 0000000000..283fc76ee5 --- /dev/null +++ b/.github/workflows/installers.yml @@ -0,0 +1,77 @@ +name: All installers +run-name: ${{ inputs.cura_conan_version }} by @${{ github.actor }} + +on: + workflow_dispatch: + inputs: + cura_conan_version: + description: 'Cura Conan Version' + default: 'cura/latest@ultimaker/testing' + required: true + type: string + conan_args: + description: 'Conan args: eq.: --require-override' + default: '' + required: false + type: string + enterprise: + description: 'Build Cura as an Enterprise edition' + default: false + required: true + type: boolean + staging: + description: 'Use staging API' + default: false + required: true + type: boolean + +jobs: + windows-installer: + uses: ./.github/workflows/windows.yml + with: + cura_conan_version: ${{ inputs.cura_conan_version }} + conan_args: ${{ inputs.conan_args }} + enterprise: ${{ inputs.enterprise }} + staging: ${{ inputs.staging }} + architecture: X64 + operating_system: windows-2022 + + linux-modern-installer: + uses: ./.github/workflows/linux.yml + with: + cura_conan_version: ${{ inputs.cura_conan_version }} + conan_args: ${{ inputs.conan_args }} + enterprise: ${{ inputs.enterprise }} + staging: ${{ inputs.staging }} + architecture: X64 + operating_system: ubuntu-22.04 + + linux-legacy-installer: + uses: ./.github/workflows/linux.yml + with: + cura_conan_version: ${{ inputs.cura_conan_version }} + conan_args: ${{ inputs.conan_args }} + enterprise: ${{ inputs.enterprise }} + staging: ${{ inputs.staging }} + architecture: X64 + operating_system: ubuntu-20.04 + + macos-installer: + uses: ./.github/workflows/macos.yml + with: + cura_conan_version: ${{ inputs.cura_conan_version }} + conan_args: ${{ inputs.conan_args }} + enterprise: ${{ inputs.enterprise }} + staging: ${{ inputs.staging }} + architecture: X64 + operating_system: macos-11.0 + + macos-arm-installer: + uses: ./.github/workflows/macos.yml + with: + cura_conan_version: ${{ inputs.cura_conan_version }} + conan_args: ${{ inputs.conan_args }} + enterprise: ${{ inputs.enterprise }} + staging: ${{ inputs.staging }} + architecture: ARM64 + operating_system: self-hosted \ No newline at end of file diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml new file mode 100644 index 0000000000..e307354c0a --- /dev/null +++ b/.github/workflows/linux.yml @@ -0,0 +1,89 @@ +name: Linux Installer +run-name: ${{ inputs.cura_conan_version }} for Linux-${{ inputs.architecture }} by @${{ github.actor }} + +on: + workflow_dispatch: + inputs: + cura_conan_version: + description: 'Cura Conan Version' + default: 'cura/latest@ultimaker/testing' + required: true + type: string + conan_args: + description: 'Conan args: eq.: --require-override' + default: '' + required: false + type: string + enterprise: + description: 'Build Cura as an Enterprise edition' + default: false + required: true + type: boolean + staging: + description: 'Use staging API' + default: false + required: true + type: boolean + architecture: + description: 'Architecture' + required: true + default: 'X64' + type: choice + options: + - X64 + operating_system: + description: 'OS' + required: true + default: 'ubuntu-22.04' + type: choice + options: + - ubuntu-22.04 + - ubuntu-20.04 + workflow_call: + inputs: + cura_conan_version: + description: 'Cura Conan Version' + default: 'cura/latest@ultimaker/testing' + required: true + type: string + conan_args: + description: 'Conan args: eq.: --require-override' + default: '' + required: false + type: string + enterprise: + description: 'Build Cura as an Enterprise edition' + default: false + required: true + type: boolean + staging: + description: 'Use staging API' + default: false + required: true + type: boolean + architecture: + description: 'Architecture' + required: true + default: 'X64' + type: string + operating_system: + description: 'OS' + required: true + default: 'ubuntu-22.04' + type: string + +env: + CONAN_LOGIN_USERNAME_CURA: ${{ secrets.CONAN_USER }} + CONAN_PASSWORD_CURA: ${{ secrets.CONAN_PASS }} + GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} + CURA_CONAN_VERSION: ${{ inputs.cura_conan_version }} + ENTERPRISE: ${{ inputs.enterprise }} + STAGING: ${{ inputs.staging }} + +jobs: + cura-installer-create: + runs-on: ${{ inputs.operating_system }} + + steps: + - name: Checkout + uses: actions/checkout@v3 \ No newline at end of file diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml new file mode 100644 index 0000000000..1a9b8809e3 --- /dev/null +++ b/.github/workflows/macos.yml @@ -0,0 +1,258 @@ +name: Macos Installer +run-name: ${{ inputs.cura_conan_version }} for Macos-${{ inputs.architecture }} by @${{ github.actor }} + +on: + workflow_dispatch: + inputs: + cura_conan_version: + description: 'Cura Conan Version' + default: 'cura/latest@ultimaker/testing' + required: true + type: string + conan_args: + description: 'Conan args: eq.: --require-override' + default: '' + required: false + type: string + enterprise: + description: 'Build Cura as an Enterprise edition' + default: false + required: true + type: boolean + staging: + description: 'Use staging API' + default: false + required: true + type: boolean + architecture: + description: 'Architecture' + required: true + default: 'X64' + type: choice + options: + - X64 + - ARM64 + operating_system: + description: 'OS' + required: true + default: 'macos-11' + type: choice + options: + - self-hosted + - macos-11 + - macos-12 + workflow_call: + inputs: + cura_conan_version: + description: 'Cura Conan Version' + default: 'cura/latest@ultimaker/testing' + required: true + type: string + conan_args: + description: 'Conan args: eq.: --require-override' + default: '' + required: false + type: string + enterprise: + description: 'Build Cura as an Enterprise edition' + default: false + required: true + type: boolean + staging: + description: 'Use staging API' + default: false + required: true + type: boolean + architecture: + description: 'Architecture' + required: true + default: 'X64' + type: string + operating_system: + description: 'OS' + required: true + default: 'macos-11' + type: string + +env: + CONAN_LOGIN_USERNAME_CURA: ${{ secrets.CONAN_USER }} + CONAN_PASSWORD_CURA: ${{ secrets.CONAN_PASS }} + CODESIGN_IDENTITY: ${{ secrets.CODESIGN_IDENTITY }} + MAC_NOTARIZE_USER: ${{ secrets.MAC_NOTARIZE_USER }} + MAC_NOTARIZE_PASS: ${{ secrets.MAC_NOTARIZE_PASS }} + MACOS_CERT_P12: ${{ secrets.MACOS_CERT_P12 }} + MACOS_CERT_INSTALLER_P12: ${{ secrets.MACOS_CERT_INSTALLER_P12 }} + MACOS_CERT_USER: ${{ secrets.MACOS_CERT_USER }} + MACOS_CERT_PASSPHRASE: ${{ secrets.MACOS_CERT_PASSPHRASE }} + CURA_CONAN_VERSION: ${{ inputs.cura_conan_version }} + ENTERPRISE: ${{ inputs.enterprise }} + STAGING: ${{ inputs.staging }} + +jobs: + cura-installer-create: + runs-on: ${{ inputs.operating_system }} + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Python and pip + uses: actions/setup-python@v4 + with: + python-version: '3.10.x' + cache: 'pip' + cache-dependency-path: .github/workflows/requirements-conan-package.txt + + - name: Install Python requirements for runner + run: pip install -r .github/workflows/requirements-conan-package.txt + + - name: Install MacOS system requirements + run: brew install cmake autoconf automake ninja create-dmg + + - name: Create the default Conan profile + run: conan profile new default --detect --force + + - name: Remove Macos keychain (Bash) + run: security delete-keychain signing_temp.keychain || true + + - name: Configure Macos keychain Developer Cert(Bash) + id: macos-keychain-developer-cert + uses: apple-actions/import-codesign-certs@v1 + with: + keychain-password: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }} + p12-file-base64: ${{ secrets.MACOS_CERT_P12 }} + p12-password: ${{ secrets.MACOS_CERT_PASSPHRASE }} + + - name: Configure Macos keychain Installer Cert (Bash) + id: macos-keychain-installer-cert + uses: apple-actions/import-codesign-certs@v1 + with: + keychain-password: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }} + create-keychain: false # keychain is created in previous use of action. + p12-file-base64: ${{ secrets.MACOS_CERT_INSTALLER_P12 }} + p12-password: ${{ secrets.MACOS_CERT_PASSPHRASE }} + + - name: Get Conan configuration + run: conan config install https://github.com/Ultimaker/conan-config.git + + - name: Set architecture conan profile + if: ${{ inputs.architecture == 'X64' }} + run: conan profile update settings.arch=x86_64 default + + - name: Set Environment variables for Cura (bash) + run: | + . ./cura_inst/bin/activate_github_actions_env.sh + . ./cura_inst/bin/activate_github_actions_version_env.sh + + - name: Unlock Macos keychain (Bash) + run: security unlock -p $TEMP_KEYCHAIN_PASSWORD signing_temp.keychain + env: + TEMP_KEYCHAIN_PASSWORD: ${{ steps.macos-keychain-developer-cert.outputs.keychain-password }} + + # FIXME: This is a workaround to ensure that we use and pack a shared library for OpenSSL 1.1.1l. We currently compile + # OpenSSL statically for CPython, but our Python Dependenies (such as PyQt6) require a shared library. + # Because Conan won't allow for building the same library with two different options (easily) we need to install it explicitly + # and do a manual copy to the VirtualEnv, such that Pyinstaller can find it. + - name: Install OpenSSL shared + run: conan install openssl/1.1.1l@_/_ --build=missing --update -o openssl:shared=True -g deploy + + - name: Copy OpenSSL shared (Bash) + run: | + cp ./openssl/lib/*.so* ./cura_inst/bin/ || true + cp ./openssl/lib/*.dylib* ./cura_inst/bin/ || true + + - name: Create the Cura dist + run: pyinstaller ./cura_inst/UltiMaker-Cura.spec + + - name: Output the name file name and extension + id: filename + shell: python + run: | + import os + enterprise = "-Enterprise" if "${{ inputs.enterprise }}" == "true" else "" + installer_filename = f"UltiMaker-Cura-{os.getenv('CURA_VERSION_FULL')}{enterprise}-macos-${{ inputs.arch }}" + output_env = os.environ["GITHUB_OUTPUT"] + content = "" + if os.path.exists(output_env): + with open(output_env, "r") as f: + content = f.read() + with open(output_env, "w") as f: + f.write(content) + f.writelines(f"INSTALLER_FILENAME={installer_filename}\n") + + - name: Summarize the used Conan dependencies + shell: python + run: | + import os + import json + from pathlib import Path + + conan_install_info_path = Path("cura_inst/conan_install_info.json") + conan_info = {"installed": []} + if os.path.exists(conan_install_info_path): + with open(conan_install_info_path, "r") as f: + conan_info = json.load(f) + sorted_deps = sorted([dep["recipe"]["id"].replace('#', r' rev: ') for dep in conan_info["installed"]]) + + summary_env = os.environ["GITHUB_STEP_SUMMARY"] + content = "" + if os.path.exists(summary_env): + with open(summary_env, "r") as f: + content = f.read() + + with open(summary_env, "w") as f: + f.write(content) + f.writelines("# ${{ steps.filename.outputs.INSTALLER_FILENAME }}\n") + f.writelines("## Conan packages:\n") + for dep in sorted_deps: + f.writelines(f"`{dep}`\n") + + - name: Summarize the used Python modules + shell: python + run: | + import os + import pkg_resources + summary_env = os.environ["GITHUB_STEP_SUMMARY"] + content = "" + if os.path.exists(summary_env): + with open(summary_env, "r") as f: + content = f.read() + + with open(summary_env, "w") as f: + f.write(content) + f.writelines("## Python modules:\n") + for package in pkg_resources.working_set: + f.writelines(f"`{package.key}/{package.version}`\n") + + - name: Create the Macos dmg and pkg (Bash) + run: python ../cura_inst/packaging/MacOS/build_macos.py --source_path ../cura_inst --dist_path . --cura_conan_version $CURA_CONAN_VERSION --filename "${{ steps.filename.outputs.INSTALLER_FILENAME }}" --build_pkg --build_dmg --app_name "$CURA_APP_NAME" + working-directory: dist + + - name: Upload the pkg + uses: actions/upload-artifact@v3 + with: + name: ${{ steps.filename.outputs.INSTALLER_FILENAME }}-pkg + path: | + dist/${{ steps.filename.outputs.INSTALLER_FILENAME }}.pkg + retention-days: 5 + + - name: Upload the dmg + uses: actions/upload-artifact@v3 + with: + name: ${{ steps.filename.outputs.INSTALLER_FILENAME }}-dmg + path: | + dist/${{ steps.filename.outputs.INSTALLER_FILENAME }}.dmg + retention-days: 5 + + notify-export: + if: ${{ always() }} + needs: [ cura-installer-create ] + + uses: ultimaker/cura/.github/workflows/notify.yml@main + with: + success: ${{ contains(join(needs.*.result, ','), 'success') }} + success_title: "Create the Cura distributions" + success_body: "Installers for ${{ inputs.cura_conan_version }}" + failure_title: "Failed to create the Cura distributions" + failure_body: "Failed to create at least 1 installer for ${{ inputs.cura_conan_version }}" + secrets: inherit diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 0000000000..d76a44d917 --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,89 @@ +name: Windows Installer +run-name: ${{ inputs.cura_conan_version }} for Windows-${{ inputs.architecture }} by @${{ github.actor }} + +on: + workflow_dispatch: + inputs: + cura_conan_version: + description: 'Cura Conan Version' + default: 'cura/latest@ultimaker/testing' + required: true + type: string + conan_args: + description: 'Conan args: eq.: --require-override' + default: '' + required: false + type: string + enterprise: + description: 'Build Cura as an Enterprise edition' + default: false + required: true + type: boolean + staging: + description: 'Use staging API' + default: false + required: true + type: boolean + architecture: + description: 'Architecture' + required: true + default: 'X64' + type: choice + options: + - X64 + operating_system: + description: 'OS' + required: true + default: 'windows-2022' + type: choice + options: + - windows-2022 + workflow_call: + inputs: + cura_conan_version: + description: 'Cura Conan Version' + default: 'cura/latest@ultimaker/testing' + required: true + type: string + conan_args: + description: 'Conan args: eq.: --require-override' + default: '' + required: false + type: string + enterprise: + description: 'Build Cura as an Enterprise edition' + default: false + required: true + type: boolean + staging: + description: 'Use staging API' + default: false + required: true + type: boolean + architecture: + description: 'Architecture' + required: true + default: 'X64' + type: string + operating_system: + description: 'OS' + required: true + default: 'windows-2022' + type: string + +env: + CONAN_LOGIN_USERNAME_CURA: ${{ secrets.CONAN_USER }} + CONAN_PASSWORD_CURA: ${{ secrets.CONAN_PASS }} + WIN_CERT_INSTALLER_CER: ${{ secrets.WIN_CERT_INSTALLER_CER }} + WIN_CERT_INSTALLER_CER_PASS: ${{ secrets.WIN_CERT_INSTALLER_CER_PASS }} + CURA_CONAN_VERSION: ${{ inputs.cura_conan_version }} + ENTERPRISE: ${{ inputs.enterprise }} + STAGING: ${{ inputs.staging }} + +jobs: + cura-installer-create: + runs-on: ${{ inputs.operating_system }} + + steps: + - name: Checkout + uses: actions/checkout@v3 \ No newline at end of file diff --git a/CITATION.cff b/CITATION.cff index 627cfa2515..7a93bbf099 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -18,8 +18,8 @@ url: "https://ultimaker.com/software/ultimaker-cura" repository-code: "https://github.com/Ultimaker/Cura" license: LGPL-3.0 license-url: "https://github.com/Ultimaker/Cura/blob/main/LICENSE" -version: 5.2.1 -date-released: "2022-10-19" +version: 5.4.0 +date-released: "2023-07-04" keywords: - Ultimaker - Cura diff --git a/FUNDING.yml b/FUNDING.yml new file mode 100644 index 0000000000..2d108a74e1 --- /dev/null +++ b/FUNDING.yml @@ -0,0 +1 @@ +github: [ultimaker] diff --git a/README.md b/README.md index c40ead2baa..eb04799339 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ [![Badge Test]][Test]    [![Badge Conan]][Conan]    - +![Badge Downloads]

@@ -84,6 +84,7 @@ [Badge Conan]: https://img.shields.io/github/workflow/status/Ultimaker/Cura/conan-package?style=for-the-badge&logoColor=white&labelColor=6185aa&color=4c6987&logo=Conan&label=Conan%20Package [Badge Test]: https://img.shields.io/github/workflow/status/Ultimaker/Cura/unit-test?style=for-the-badge&logoColor=white&labelColor=4a999d&color=346c6e&logo=Codacy&label=Unit%20Test [Badge Size]: https://img.shields.io/github/repo-size/ultimaker/cura?style=for-the-badge&logoColor=white&labelColor=715a97&color=584674&logo=GoogleAnalytics +[Badge Downloads]: https://img.shields.io/github/downloads-pre/Ultimaker/Cura/latest/total?style=for-the-badge diff --git a/conanfile.py b/conanfile.py index d4f365c7a4..77cecf1134 100644 --- a/conanfile.py +++ b/conanfile.py @@ -466,6 +466,7 @@ echo "CURA_APP_NAME={{ cura_app_name }}" >> ${{ env_prefix }}GITHUB_ENV save(self, os.path.join(self._script_dir, f"activate_github_actions_version_env{ext}"), activate_github_actions_version_env) self._generate_cura_version(os.path.join(self._site_packages, "cura")) + self._generate_about_versions(str(self._share_dir.joinpath("cura", "resources", "qml", "Dialogs"))) entitlements_file = "'{}'".format(Path(self.cpp_info.res_paths[2], "MacOS", "cura.entitlements")) self._generate_pyinstaller_spec(location = self._base_dir, @@ -473,7 +474,6 @@ echo "CURA_APP_NAME={{ cura_app_name }}" >> ${{ env_prefix }}GITHUB_ENV icon_path = "'{}'".format(os.path.join(self.package_folder, self.cpp_info.resdirs[2], self.conan_data["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"), entitlements_file = entitlements_file if self.settings.os == "Macos" else "None") - self._generate_about_versions(os.path.join(self.source_folder, "resources", "qml", "Dialogs")) def package(self): copy(self, "cura_app.py", src = self.source_folder, dst = os.path.join(self.package_folder, self.cpp.package.bindirs[0])) diff --git a/cura/CuraActions.py b/cura/CuraActions.py index 193803325f..6c2d3f4cb8 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -1,15 +1,18 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2023 UltiMaker # Cura is released under the terms of the LGPLv3 or higher. -from PyQt6.QtCore import QObject, QUrl -from PyQt6.QtGui import QDesktopServices from typing import List, cast +from PyQt6.QtCore import QObject, QUrl, QMimeData +from PyQt6.QtGui import QDesktopServices +from PyQt6.QtWidgets import QApplication + from UM.Event import CallFunctionEvent from UM.FlameProfiler import pyqtSlot from UM.Math.Vector import Vector from UM.Scene.Selection import Selection from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Operations.GroupedOperation import GroupedOperation from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation from UM.Operations.TranslateOperation import TranslateOperation @@ -19,6 +22,7 @@ from cura.Operations.SetParentOperation import SetParentOperation from cura.MultiplyObjectsJob import MultiplyObjectsJob from cura.Settings.SetObjectExtruderOperation import SetObjectExtruderOperation from cura.Settings.ExtruderManager import ExtruderManager +from cura.Arranging.Nest2DArrange import createGroupOperationForArrange from cura.Operations.SetBuildPlateNumberOperation import SetBuildPlateNumberOperation @@ -181,5 +185,60 @@ class CuraActions(QObject): Selection.clear() + @pyqtSlot() + def cut(self) -> None: + self.copy() + self.deleteSelection() + + @pyqtSlot() + def copy(self) -> None: + mesh_writer = cura.CuraApplication.CuraApplication.getInstance().getMeshFileHandler().getWriter("3MFWriter") + if not mesh_writer: + Logger.log("e", "No 3MF writer found, unable to copy.") + return + + # Get the selected nodes + selected_objects = Selection.getAllSelectedObjects() + # Serialize the nodes to a string + scene_string = mesh_writer.sceneNodesToString(selected_objects) + # Put the string on the clipboard + QApplication.clipboard().setText(scene_string) + + @pyqtSlot() + def paste(self) -> None: + application = cura.CuraApplication.CuraApplication.getInstance() + mesh_reader = application.getMeshFileHandler().getReaderForFile(".3mf") + if not mesh_reader: + Logger.log("e", "No 3MF reader found, unable to paste.") + return + + # Parse the scene from the clipboard + scene_string = QApplication.clipboard().text() + + nodes = mesh_reader.stringToSceneNodes(scene_string) + + if not nodes: + # Nothing to paste + return + + # Find all fixed nodes, these are the nodes that should be avoided when arranging + fixed_nodes = [] + root = application.getController().getScene().getRoot() + for node in DepthFirstIterator(root): + # Only count sliceable objects + if node.callDecoration("isSliceable"): + fixed_nodes.append(node) + # Add the new nodes to the scene, and arrange them + group_operation, not_fit_count = createGroupOperationForArrange(nodes, application.getBuildVolume(), + fixed_nodes, factor=10000, + add_new_nodes_in_scene=True) + group_operation.push() + + # deselect currently selected nodes, and select the new nodes + for node in Selection.getAllSelectedObjects(): + Selection.remove(node) + for node in nodes: + Selection.add(node) + def _openUrl(self, url: QUrl) -> None: QDesktopServices.openUrl(url) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 889e442eaa..64d88d13dc 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -495,6 +495,36 @@ class CuraApplication(QtApplication): def startSplashWindowPhase(self) -> None: """Runs preparations that needs to be done before the starting process.""" + self.setRequiredPlugins([ + # Misc.: + "ConsoleLogger", # You want to be able to read the log if something goes wrong. + "CuraEngineBackend", # Cura is useless without this one since you can't slice. + "FileLogger", # You want to be able to read the log if something goes wrong. + "XmlMaterialProfile", # Cura crashes without this one. + "Marketplace", + # This contains the interface to enable/disable plug-ins, so if you disable it you can't enable it back. + "PrepareStage", # Cura is useless without this one since you can't load models. + "PreviewStage", # This shows the list of the plugin views that are installed in Cura. + "MonitorStage", # Major part of Cura's functionality. + "LocalFileOutputDevice", # Major part of Cura's functionality. + "LocalContainerProvider", # Cura is useless without any profiles or setting definitions. + + # Views: + "SimpleView", # Dependency of SolidView. + "SolidView", # Displays models. Cura is useless without it. + + # Readers & Writers: + "GCodeWriter", # Cura is useless if it can't write its output. + "STLReader", # Most common model format, so disabling this makes Cura 90% useless. + "3MFWriter", # Required for writing project files. + + # Tools: + "CameraTool", # Needed to see the scene. Cura is useless without it. + "SelectionTool", # Dependency of the rest of the tools. + "TranslateTool", # You'll need this for almost every print. + ]) + # Plugins need to be set here, since in the super the check is done if they are actually loaded. + super().startSplashWindowPhase() if not self.getIsHeadLess(): @@ -503,33 +533,7 @@ class CuraApplication(QtApplication): except FileNotFoundError: Logger.log("w", "Unable to find the window icon.") - self.setRequiredPlugins([ - # Misc.: - "ConsoleLogger", #You want to be able to read the log if something goes wrong. - "CuraEngineBackend", #Cura is useless without this one since you can't slice. - "FileLogger", #You want to be able to read the log if something goes wrong. - "XmlMaterialProfile", #Cura crashes without this one. - "Marketplace", #This contains the interface to enable/disable plug-ins, so if you disable it you can't enable it back. - "PrepareStage", #Cura is useless without this one since you can't load models. - "PreviewStage", #This shows the list of the plugin views that are installed in Cura. - "MonitorStage", #Major part of Cura's functionality. - "LocalFileOutputDevice", #Major part of Cura's functionality. - "LocalContainerProvider", #Cura is useless without any profiles or setting definitions. - # Views: - "SimpleView", #Dependency of SolidView. - "SolidView", #Displays models. Cura is useless without it. - - # Readers & Writers: - "GCodeWriter", #Cura is useless if it can't write its output. - "STLReader", #Most common model format, so disabling this makes Cura 90% useless. - "3MFWriter", #Required for writing project files. - - # Tools: - "CameraTool", #Needed to see the scene. Cura is useless without it. - "SelectionTool", #Dependency of the rest of the tools. - "TranslateTool", #You'll need this for almost every print. - ]) self._i18n_catalog = i18nCatalog("cura") self._update_platform_activity_timer = QTimer() diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index e8b6a54e46..e06e9dcf4e 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -56,7 +56,8 @@ class ThreeMFReader(MeshReader): def emptyFileHintSet(self) -> bool: return self._empty_project - def _createMatrixFromTransformationString(self, transformation: str) -> Matrix: + @staticmethod + def _createMatrixFromTransformationString(transformation: str) -> Matrix: if transformation == "": return Matrix() @@ -90,7 +91,8 @@ class ThreeMFReader(MeshReader): return temp_mat - def _convertSavitarNodeToUMNode(self, savitar_node: Savitar.SceneNode, file_name: str = "") -> Optional[SceneNode]: + @staticmethod + def _convertSavitarNodeToUMNode(savitar_node: Savitar.SceneNode, file_name: str = "") -> Optional[SceneNode]: """Convenience function that converts a SceneNode object (as obtained from libSavitar) to a scene node. :returns: Scene node. @@ -119,7 +121,7 @@ class ThreeMFReader(MeshReader): pass um_node.setName(node_name) um_node.setId(node_id) - transformation = self._createMatrixFromTransformationString(savitar_node.getTransformation()) + transformation = ThreeMFReader._createMatrixFromTransformationString(savitar_node.getTransformation()) um_node.setTransformation(transformation) mesh_builder = MeshBuilder() @@ -138,7 +140,7 @@ class ThreeMFReader(MeshReader): um_node.setMeshData(mesh_data) for child in savitar_node.getChildren(): - child_node = self._convertSavitarNodeToUMNode(child) + child_node = ThreeMFReader._convertSavitarNodeToUMNode(child) if child_node: um_node.addChild(child_node) @@ -214,7 +216,7 @@ class ThreeMFReader(MeshReader): CuraApplication.getInstance().getController().getScene().setMetaDataEntry(key, value) for node in scene_3mf.getSceneNodes(): - um_node = self._convertSavitarNodeToUMNode(node, file_name) + um_node = ThreeMFReader._convertSavitarNodeToUMNode(node, file_name) if um_node is None: continue @@ -300,8 +302,23 @@ class ThreeMFReader(MeshReader): if unit is None: unit = "millimeter" elif unit not in conversion_to_mm: - Logger.log("w", "Unrecognised unit {unit} used. Assuming mm instead.".format(unit = unit)) + Logger.log("w", "Unrecognised unit {unit} used. Assuming mm instead.".format(unit=unit)) unit = "millimeter" scale = conversion_to_mm[unit] return Vector(scale, scale, scale) + + @staticmethod + def stringToSceneNodes(scene_string: str) -> List[SceneNode]: + parser = Savitar.ThreeMFParser() + scene = parser.parse(scene_string) + + # Convert the scene to scene nodes + nodes = [] + for savitar_node in scene.getSceneNodes(): + scene_node = ThreeMFReader._convertSavitarNodeToUMNode(savitar_node, "file_name") + if scene_node is None: + continue + nodes.append(scene_node) + + return nodes diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index 57c667145e..3f6fef7201 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -55,11 +55,12 @@ class ThreeMFWriter(MeshWriter): "cura": "http://software.ultimaker.com/xml/cura/3mf/2015/10" } - self._unit_matrix_string = self._convertMatrixToString(Matrix()) + self._unit_matrix_string = ThreeMFWriter._convertMatrixToString(Matrix()) self._archive: Optional[zipfile.ZipFile] = None self._store_archive = False - def _convertMatrixToString(self, matrix): + @staticmethod + def _convertMatrixToString(matrix): result = "" result += str(matrix._data[0, 0]) + " " result += str(matrix._data[1, 0]) + " " @@ -83,7 +84,8 @@ class ThreeMFWriter(MeshWriter): """ self._store_archive = store_archive - def _convertUMNodeToSavitarNode(self, um_node, transformation = Matrix()): + @staticmethod + def _convertUMNodeToSavitarNode(um_node, transformation=Matrix()): """Convenience function that converts an Uranium SceneNode object to a SavitarSceneNode :returns: Uranium Scene node. @@ -100,7 +102,7 @@ class ThreeMFWriter(MeshWriter): node_matrix = um_node.getLocalTransformation() - matrix_string = self._convertMatrixToString(node_matrix.preMultiply(transformation)) + matrix_string = ThreeMFWriter._convertMatrixToString(node_matrix.preMultiply(transformation)) savitar_node.setTransformation(matrix_string) mesh_data = um_node.getMeshData() @@ -133,7 +135,7 @@ class ThreeMFWriter(MeshWriter): # only save the nodes on the active build plate if child_node.callDecoration("getBuildPlateNumber") != active_build_plate_nr: continue - savitar_child_node = self._convertUMNodeToSavitarNode(child_node) + savitar_child_node = ThreeMFWriter._convertUMNodeToSavitarNode(child_node) if savitar_child_node is not None: savitar_node.addChild(savitar_child_node) @@ -221,7 +223,7 @@ class ThreeMFWriter(MeshWriter): for node in nodes: if node == root_node: for root_child in node.getChildren(): - savitar_node = self._convertUMNodeToSavitarNode(root_child, transformation_matrix) + savitar_node = ThreeMFWriter._convertUMNodeToSavitarNode(root_child, transformation_matrix) if savitar_node: savitar_scene.addSceneNode(savitar_node) else: @@ -303,9 +305,19 @@ class ThreeMFWriter(MeshWriter): Logger.log("w", "Can't create snapshot when renderer not initialized.") return None try: - snapshot = Snapshot.snapshot(width = 300, height = 300) + snapshot = Snapshot.snapshot(width=300, height=300) except: Logger.logException("w", "Failed to create snapshot image") return None return snapshot + + @staticmethod + def sceneNodesToString(scene_nodes: [SceneNode]) -> str: + savitar_scene = Savitar.Scene() + for scene_node in scene_nodes: + savitar_node = ThreeMFWriter._convertUMNodeToSavitarNode(scene_node) + savitar_scene.addSceneNode(savitar_node) + parser = Savitar.ThreeMFParser() + scene_string = parser.sceneToString(savitar_scene) + return scene_string diff --git a/plugins/PostProcessingPlugin/PostProcessingPlugin.py b/plugins/PostProcessingPlugin/PostProcessingPlugin.py index fbb4214021..b3ef761af5 100644 --- a/plugins/PostProcessingPlugin/PostProcessingPlugin.py +++ b/plugins/PostProcessingPlugin/PostProcessingPlugin.py @@ -1,5 +1,5 @@ # Copyright (c) 2018 Jaime van Kessel, Ultimaker B.V. -# The PostProcessingPlugin is released under the terms of the AGPLv3 or higher. +# The PostProcessingPlugin is released under the terms of the LGPLv3 or higher. import configparser # The script lists are stored in metadata as serialised config files. import importlib.util diff --git a/plugins/PostProcessingPlugin/PostProcessingPlugin.qml b/plugins/PostProcessingPlugin/PostProcessingPlugin.qml index a80f304aaa..0f379479ba 100644 --- a/plugins/PostProcessingPlugin/PostProcessingPlugin.qml +++ b/plugins/PostProcessingPlugin/PostProcessingPlugin.qml @@ -1,5 +1,5 @@ // Copyright (c) 2022 Jaime van Kessel, Ultimaker B.V. -// The PostProcessingPlugin is released under the terms of the AGPLv3 or higher. +// The PostProcessingPlugin is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 import QtQuick.Controls 2.15 diff --git a/plugins/PostProcessingPlugin/Script.py b/plugins/PostProcessingPlugin/Script.py index 1cc9b59c9c..be661e0889 100644 --- a/plugins/PostProcessingPlugin/Script.py +++ b/plugins/PostProcessingPlugin/Script.py @@ -1,6 +1,6 @@ # Copyright (c) 2015 Jaime van Kessel # Copyright (c) 2018 Ultimaker B.V. -# The PostProcessingPlugin is released under the terms of the AGPLv3 or higher. +# The PostProcessingPlugin is released under the terms of the LGPLv3 or higher. from typing import Optional, Any, Dict, TYPE_CHECKING, List from UM.Signal import Signal, signalemitter diff --git a/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py b/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py index 91b36389f3..2930623a93 100644 --- a/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py +++ b/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py @@ -1,7 +1,7 @@ # ChangeAtZ script - Change printing parameters at a given height # This script is the successor of the TweakAtZ plugin for legacy Cura. # It contains code from the TweakAtZ plugin V1.0-V4.x and from the ExampleScript by Jaime van Kessel, Ultimaker B.V. -# It runs with the PostProcessingPlugin which is released under the terms of the AGPLv3 or higher. +# It runs with the PostProcessingPlugin which is released under the terms of the LGPLv3 or higher. # This script is licensed under the Creative Commons - Attribution - Share Alike (CC BY-SA) terms # Authors of the ChangeAtZ plugin / script: diff --git a/plugins/PostProcessingPlugin/scripts/ColorMix.py b/plugins/PostProcessingPlugin/scripts/ColorMix.py index dacb40e905..534c0208cf 100644 --- a/plugins/PostProcessingPlugin/scripts/ColorMix.py +++ b/plugins/PostProcessingPlugin/scripts/ColorMix.py @@ -1,6 +1,6 @@ # ColorMix script - 2-1 extruder color mix and blending # This script is specific for the Geeetech A10M dual extruder but should work with other Marlin printers. -# It runs with the PostProcessingPlugin which is released under the terms of the AGPLv3 or higher. +# It runs with the PostProcessingPlugin which is released under the terms of the LGPLv3 or higher. # This script is licensed under the Creative Commons - Attribution - Share Alike (CC BY-SA) terms #Authors of the 2-1 ColorMix plug-in / script: diff --git a/plugins/PostProcessingPlugin/scripts/FilamentChange.py b/plugins/PostProcessingPlugin/scripts/FilamentChange.py index d3c1e60192..93941c0992 100644 --- a/plugins/PostProcessingPlugin/scripts/FilamentChange.py +++ b/plugins/PostProcessingPlugin/scripts/FilamentChange.py @@ -1,5 +1,5 @@ # Copyright (c) 2023 Ultimaker B.V. -# The PostProcessingPlugin is released under the terms of the AGPLv3 or higher. +# The PostProcessingPlugin is released under the terms of the LGPLv3 or higher. # Modification 06.09.2020 # add checkbox, now you can choose and use configuration from the firmware itself. diff --git a/plugins/PostProcessingPlugin/scripts/RetractContinue.py b/plugins/PostProcessingPlugin/scripts/RetractContinue.py index b5ea4d4eda..eaa15e0942 100644 --- a/plugins/PostProcessingPlugin/scripts/RetractContinue.py +++ b/plugins/PostProcessingPlugin/scripts/RetractContinue.py @@ -1,5 +1,5 @@ # Copyright (c) 2023 UltiMaker B.V. -# The PostProcessingPlugin is released under the terms of the AGPLv3 or higher. +# The PostProcessingPlugin is released under the terms of the LGPLv3 or higher. from ..Script import Script diff --git a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py index 40a56ace57..7a12c229cc 100644 --- a/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py +++ b/plugins/PostProcessingPlugin/scripts/SearchAndReplace.py @@ -1,5 +1,5 @@ # Copyright (c) 2017 Ghostkeeper -# The PostProcessingPlugin is released under the terms of the AGPLv3 or higher. +# The PostProcessingPlugin is released under the terms of the LGPLv3 or higher. import re #To perform the search and replace. diff --git a/plugins/PostProcessingPlugin/scripts/Stretch.py b/plugins/PostProcessingPlugin/scripts/Stretch.py index 8d35f68822..ab964d160a 100644 --- a/plugins/PostProcessingPlugin/scripts/Stretch.py +++ b/plugins/PostProcessingPlugin/scripts/Stretch.py @@ -1,4 +1,4 @@ -# This PostProcessingPlugin script is released under the terms of the AGPLv3 or higher. +# This PostProcessingPlugin script is released under the terms of the LGPLv3 or higher. """ Copyright (c) 2017 Christophe Baribaud 2017 Python implementation of https://github.com/electrocbd/post_stretch diff --git a/resources/definitions/SV02.def.json b/resources/definitions/SV02.def.json index 95b165075b..728a6c6242 100644 --- a/resources/definitions/SV02.def.json +++ b/resources/definitions/SV02.def.json @@ -59,7 +59,7 @@ "machine_width": { "default_value": 280 }, "material_diameter": { "default_value": 1.75 }, "material_initial_print_temperature": { "value": "material_print_temperature" }, - "prime_tower_min_volume": { "value": "((reveOrValue('layer_height'))/2" }, + "prime_tower_min_volume": { "value": "((resolveOrValue('layer_height'))/2" }, "prime_tower_position_x": { "value": "240" }, "prime_tower_position_y": { "value": "190" }, "prime_tower_size": { "value": "30" }, diff --git a/resources/definitions/anycubic_kobra_plus.def.json b/resources/definitions/anycubic_kobra_plus.def.json new file mode 100644 index 0000000000..944398711f --- /dev/null +++ b/resources/definitions/anycubic_kobra_plus.def.json @@ -0,0 +1,29 @@ +{ + "version": 2, + "name": "Anycubic Kobra Plus", + "inherits": "fdmprinter", + "metadata": + { + "visible": true, + "author": "Jordon Brooks", + "manufacturer": "Anycubic", + "file_formats": "text/x-gcode", + "has_machine_quality": true, + "has_materials": true, + "machine_extruder_trains": { "0": "anycubic_kobra_plus_extruder_0" }, + "preferred_material": "generic_pla", + "preferred_quality_type": "normal", + "quality_definition": "anycubic_kobra_plus" + }, + "overrides": + { + "machine_depth": { "default_value": 302 }, + "machine_end_gcode": { "default_value": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84\nM355 S0; led off" }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_heated_bed": { "default_value": true }, + "machine_height": { "default_value": 352 }, + "machine_name": { "default_value": "Anycubic Kobra Plus" }, + "machine_start_gcode": { "default_value": "G28 ;Home\nG1 Z15.0 F6000 ;Move the platform down 15mm\n;Prime the extruder\nG92 E0\nM355 S1; Turn LED on\n; Add Custom purge lines\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X1.0 Y30 Z0.3 F5000.0 ; Move to start position\nG1 X1.0 Y100.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X1.3 Y100.0 Z0.3 F5000.0 ; Move to side a little\nG1 X1.3 Y30 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 E-2 F500 ; Retract a little \nG1 X50 F500 ; wipe away from the filament line\nG1 X100 F9000 ; Quickly wipe away from the filament line\nG1 Z5.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\n; End custom purge lines" }, + "machine_width": { "default_value": 302 } + } +} \ No newline at end of file diff --git a/resources/definitions/elegoo_base.def.json b/resources/definitions/elegoo_base.def.json index b0a0717c59..c54a388806 100644 --- a/resources/definitions/elegoo_base.def.json +++ b/resources/definitions/elegoo_base.def.json @@ -69,7 +69,7 @@ "material_print_temperature_layer_0": { "value": "210 if material_print_temperature < 210 else material_print_temperature" }, "min_infill_area": { "value": "5" }, "minimum_interface_area": { "default_value": 10 }, - "minimum_support_area": { "default_value": 3 }, + "minimum_support_area": { "value": "3 if support_structure == 'normal' else 0" }, "optimize_wall_printing_order": { "default_value": true }, "prime_tower_brim_enable": { "default_value": true }, "prime_tower_min_volume": { "value": "(layer_height) * (prime_tower_size / 2)**2 * 3 * 0.5 " }, diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 5ba9e87450..9a83817726 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1664,6 +1664,7 @@ "small_skin_width": { "label": "Small Top/Bottom Width", + "description": "Small top/bottom regions are filled with walls instead of the default top/bottom pattern. This helps to avoids jerky motions. Off for the topmost (air-exposed) layer by default (see 'Small Top/Bottom On Surface').", "value": "skin_line_width * 2", "default_value": 1, @@ -5931,7 +5932,7 @@ "maximum_value_warning": "skirt_brim_line_width", "enabled": "resolveOrValue('adhesion_type') == 'brim'", "limit_to_extruder": "skirt_brim_extruder_nr", - "settable_per_mesh": true, + "settable_per_mesh": false, "settable_per_extruder": true }, "brim_replaces_support": @@ -6815,6 +6816,48 @@ "minimum_value_warning": "500", "maximum_value_warning": "100000", "settable_per_mesh": true + }, + "meshfix_fluid_motion_enabled": + { + "label": "Enable Fluid Motion", + "description": "When enabled tool paths are corrected for printers with smooth motion planners. Small movements that deviate from the general tool path direction are smoothed to improve fluid motions.", + "type": "bool", + "default_value": true + }, + "meshfix_fluid_motion_shift_distance": + { + "label": "Fluid Motion Shift Distance", + "description": "Distance points are shifted to smooth the path", + "enabled": "meshfix_fluid_motion_enabled", + "type": "float", + "unit": "mm", + "default_value": 0.1, + "minimum_value": "0.01", + "maximum_value": "1" + }, + "meshfix_fluid_motion_small_distance": + { + "label": "Fluid Motion Small Distance", + "description": "Distance points are shifted to smooth the path", + "enabled": "meshfix_fluid_motion_enabled", + "unit": "mm", + "type": "float", + "default_value": 0.01, + "minimum_value": "0.01", + "maximum_value": "0.1" + }, + "meshfix_fluid_motion_angle": + { + "label": "Fluid Motion Angle", + "description": "If a toolpath-segment deviates more than this angle from the general motion it is smoothed.", + "enabled": "meshfix_fluid_motion_enabled", + "type": "float", + "unit": "\u00b0", + "default_value": 15, + "maximum_value": "90", + "minimum_value": "0", + "minimum_value_warning": "1", + "maximum_value_warning": "35" } } }, diff --git a/resources/extruders/anycubic_kobra_plus_extruder_0.def.json b/resources/extruders/anycubic_kobra_plus_extruder_0.def.json new file mode 100644 index 0000000000..51a6c351bc --- /dev/null +++ b/resources/extruders/anycubic_kobra_plus_extruder_0.def.json @@ -0,0 +1,16 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": + { + "machine": "anycubic_kobra_plus", + "position": "0" + }, + "overrides": + { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} \ No newline at end of file diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index 6cd75b51ac..f945b1c11d 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2022 UltiMaker +// Copyright (c) 2023 UltiMaker // Cura is released under the terms of the LGPLv3 or higher. pragma Singleton @@ -6,7 +6,7 @@ pragma Singleton import QtQuick 2.10 import QtQuick.Controls 2.4 import UM 1.1 as UM -import Cura 1.0 as Cura +import Cura 1.5 as Cura Item { @@ -60,6 +60,7 @@ Item property alias showProfileFolder: showProfileFolderAction property alias documentation: documentationAction property alias showTroubleshooting: showTroubleShootingAction + property alias openSponsershipPage: openSponsershipPageAction property alias reportBug: reportBugAction property alias whatsNew: whatsNewAction property alias about: aboutAction @@ -71,6 +72,15 @@ Item property alias browsePackages: browsePackagesAction + property alias paste: pasteAction + property alias copy: copyAction + property alias cut: cutAction + + readonly property bool copy_paste_enabled: { + const all_enabled_packages = CuraApplication.getPackageManager().allEnabledPackages; + return all_enabled_packages.includes("3MFReader") && all_enabled_packages.includes("3MFWriter"); + } + UM.I18nCatalog{id: catalog; name: "cura"} @@ -81,6 +91,13 @@ Item text: catalog.i18nc("@action:inmenu", "Show Online Troubleshooting") } + Action + { + id: openSponsershipPageAction + onTriggered: Qt.openUrlExternally("https://ultimaker.com/software/ultimaker-cura/sponsor/") + text: catalog.i18nc("@action:inmenu", "Sponsor Cura") + } + Action { id: toggleFullScreenAction @@ -309,6 +326,33 @@ Item onTriggered: CuraActions.centerSelection() } + Action + { + id: copyAction + text: catalog.i18nc("@action:inmenu menubar:edit", "Copy to clipboard") + onTriggered: CuraActions.copy() + enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection && copy_paste_enabled + shortcut: StandardKey.Copy + } + + Action + { + id: pasteAction + text: catalog.i18nc("@action:inmenu menubar:edit", "Paste from clipboard") + onTriggered: CuraActions.paste() + enabled: UM.Controller.toolsEnabled && copy_paste_enabled + shortcut: StandardKey.Paste + } + + Action + { + id: cutAction + text: catalog.i18nc("@action:inmenu menubar:edit", "Cut") + onTriggered: CuraActions.cut() + enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection && copy_paste_enabled + shortcut: StandardKey.Cut + } + Action { id: multiplySelectionAction diff --git a/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml b/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml index f13ca28447..a42239056c 100644 --- a/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml +++ b/resources/qml/ApplicationSwitcher/ApplicationSwitcherPopup.qml @@ -57,10 +57,10 @@ Popup permissionsRequired: [] }, { - displayName: "UltiMaker Academy", //Not translated, since it's a brand name. - thumbnail: UM.Theme.getIcon("Knowledge"), - description: catalog.i18nc("@tooltip:button", "Become a 3D printing expert with UltiMaker e-learning."), - link: "https://academy.ultimaker.com/?utm_source=cura&utm_medium=software&utm_campaign=switcher-academy", + displayName: catalog.i18nc("@label:button", "Sponsor Cura"), + thumbnail: UM.Theme.getIcon("Heart"), + description: catalog.i18nc("@tooltip:button", "Show your support for Cura with a donation."), + link: "https://ultimaker.com/software/ultimaker-cura/sponsor/", permissionsRequired: [] }, { diff --git a/resources/qml/Menus/ContextMenu.qml b/resources/qml/Menus/ContextMenu.qml index f7029939cd..d85703451f 100644 --- a/resources/qml/Menus/ContextMenu.qml +++ b/resources/qml/Menus/ContextMenu.qml @@ -19,6 +19,8 @@ Cura.Menu // Selection-related actions. Cura.MenuItem { action: Cura.Actions.centerSelection; } Cura.MenuItem { action: Cura.Actions.deleteSelection; } + Cura.MenuItem { action: Cura.Actions.copy; } + Cura.MenuItem { action: Cura.Actions.paste; } Cura.MenuItem { action: Cura.Actions.multiplySelection; } // Extruder selection - only visible if there is more than 1 extruder diff --git a/resources/qml/Menus/HelpMenu.qml b/resources/qml/Menus/HelpMenu.qml index 4be25fdffe..6a57a99515 100644 --- a/resources/qml/Menus/HelpMenu.qml +++ b/resources/qml/Menus/HelpMenu.qml @@ -17,6 +17,7 @@ Cura.Menu Cura.MenuItem { action: Cura.Actions.showTroubleshooting} Cura.MenuItem { action: Cura.Actions.documentation } Cura.MenuItem { action: Cura.Actions.reportBug } + Cura.MenuItem { action: Cura.Actions.openSponsershipPage } Cura.MenuSeparator { } Cura.MenuItem { action: Cura.Actions.whatsNew } Cura.MenuItem { action: Cura.Actions.about } diff --git a/resources/quality/anycubic_kobra_plus/anycubic_kobra_plus_normal.inst.cfg b/resources/quality/anycubic_kobra_plus/anycubic_kobra_plus_normal.inst.cfg new file mode 100644 index 0000000000..47983fe3b1 --- /dev/null +++ b/resources/quality/anycubic_kobra_plus/anycubic_kobra_plus_normal.inst.cfg @@ -0,0 +1,28 @@ +[general] +definition = anycubic_kobra_plus +name = Normal +version = 4 + +[metadata] +global_quality = True +quality_type = normal +setting_version = 22 +type = quality +weight = 0 + +[values] +infill_pattern = cubic +layer_height = 0.2 +layer_height_0 = 0.2 +material_final_print_temperature = 195 +material_print_temperature = 195 +retraction_combing = off +retraction_hop = 0.1 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +speed_infill = 40 +speed_layer_0 = 20 +speed_print = 80 +speed_wall_x = 60 +wall_thickness = 1.2 + diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_abs_0.1mm.inst.cfg index 6bc57b7a6e..3a88801570 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_abs_0.1mm.inst.cfg @@ -13,4 +13,8 @@ weight = 0 [values] speed_topbottom = =math.ceil(speed_print * 30 / 55) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_cpe_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_cpe_0.1mm.inst.cfg index 2cba4bb788..cd74f2688f 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_cpe_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_cpe_0.1mm.inst.cfg @@ -14,5 +14,9 @@ weight = 0 [values] speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_nylon_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_nylon_0.1mm.inst.cfg index 3d765aaa1e..a148563d97 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_nylon_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_nylon_0.1mm.inst.cfg @@ -20,6 +20,10 @@ retraction_min_travel = 5 speed_print = 70 speed_topbottom = =math.ceil(speed_print * 30 / 70) speed_wall = =math.ceil(speed_print * 30 / 70) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg index 3e97141c64..7a15e94478 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_pc_0.1mm.inst.cfg @@ -29,7 +29,11 @@ speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) +support_bottom_distance = =support_z_distance support_interface_density = 87.5 +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_petg_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_petg_0.1mm.inst.cfg index ffaf1dd591..d2695b0eaf 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_petg_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_petg_0.1mm.inst.cfg @@ -15,5 +15,9 @@ weight = 0 material_print_temperature = =default_material_print_temperature - 5 speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_pla_0.1mm.inst.cfg index 95d624cf99..1b40b93f91 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_pla_0.1mm.inst.cfg @@ -21,6 +21,10 @@ retraction_hop = 0.2 speed_print = 30 speed_wall = =math.ceil(speed_print * 25 / 30) speed_wall_0 = =math.ceil(speed_print * 20 / 30) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.72 travel_avoid_distance = 0.4 wall_0_inset = 0.015 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg index 90ac201992..75cea75e5b 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_pp_0.1mm.inst.cfg @@ -34,6 +34,10 @@ speed_print = 25 speed_wall = =math.ceil(speed_print * 25 / 25) speed_wall_0 = =math.ceil(speed_wall * 25 / 25) support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_tough-pla_0.1mm.inst.cfg index 90a389ea0b..03daa33819 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.25_tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_tough-pla_0.1mm.inst.cfg @@ -21,6 +21,10 @@ speed_print = 30 speed_topbottom = =math.ceil(speed_print * 20 / 30) speed_wall = =math.ceil(speed_print * 25 / 30) speed_wall_0 = =math.ceil(speed_print * 20 / 30) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.72 wall_0_inset = 0.015 wall_0_wipe_dist = 0.25 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg index ad57f4d87d..f6969a31a3 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.06mm.inst.cfg @@ -22,4 +22,8 @@ speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg index 075c1fd4aa..6d5e7148c4 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.15mm.inst.cfg @@ -23,4 +23,8 @@ speed_print = 60 speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 40 / 60) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg index 5c2bb0f6f4..852c8580d7 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.1mm.inst.cfg @@ -22,4 +22,8 @@ speed_infill = =math.ceil(speed_print * 40 / 55) speed_print = 55 speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg index 6d68564281..df95d49c12 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_abs_0.2mm.inst.cfg @@ -23,4 +23,8 @@ speed_print = 60 speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg index fe501993d4..baa0b0c36d 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.06mm.inst.cfg @@ -28,6 +28,9 @@ speed_print = 40 speed_topbottom = =math.ceil(speed_print * 30 / 35) speed_wall = =math.ceil(speed_print * 35 / 40) speed_wall_0 = =math.ceil(speed_wall * 30 / 35) -support_z_distance = =layer_height +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.4/layer_height)*layer_height wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg index f9c44650c2..f53c0f5aeb 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.15mm.inst.cfg @@ -26,6 +26,9 @@ speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 45 / 45) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) -support_z_distance = =layer_height +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.4/layer_height)*layer_height wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg index d7b82b4a1c..967d3ccd44 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.1mm.inst.cfg @@ -28,6 +28,9 @@ speed_print = 40 speed_topbottom = =math.ceil(speed_print * 30 / 35) speed_wall = =math.ceil(speed_print * 35 / 40) speed_wall_0 = =math.ceil(speed_wall * 30 / 35) -support_z_distance = =layer_height +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.4/layer_height)*layer_height wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg index 76a248a749..de0053edf9 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe-plus_0.2mm.inst.cfg @@ -26,6 +26,9 @@ speed_print = 50 speed_topbottom = =math.ceil(speed_print * 40 / 50) speed_wall = =math.ceil(speed_print * 50 / 50) speed_wall_0 = =math.ceil(speed_wall * 40 / 50) -support_z_distance = =layer_height +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.4/layer_height)*layer_height wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.06mm.inst.cfg index 8a399bd637..7a13861023 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.06mm.inst.cfg @@ -21,4 +21,8 @@ speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.15mm.inst.cfg index e6f19344df..60a9e47834 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.15mm.inst.cfg @@ -20,4 +20,8 @@ speed_print = 60 speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 40 / 60) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.1mm.inst.cfg index 730f7cd2f3..422258c09c 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.1mm.inst.cfg @@ -20,4 +20,8 @@ speed_infill = =math.ceil(speed_print * 45 / 55) speed_print = 55 speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.2mm.inst.cfg index da5699d463..1764954dd5 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_cpe_0.2mm.inst.cfg @@ -20,4 +20,8 @@ speed_print = 60 speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.06mm.inst.cfg index 39f3fd8686..f6be35a2ec 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.06mm.inst.cfg @@ -14,7 +14,10 @@ weight = 1 [values] ooze_shield_angle = 40 raft_airgap = 0.4 -retraction_prime_speed = =retraction_speed +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.15mm.inst.cfg index b834ac75bb..874bcc66f0 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.15mm.inst.cfg @@ -15,7 +15,10 @@ weight = -1 material_print_temperature = =default_material_print_temperature + 5 ooze_shield_angle = 40 raft_airgap = 0.4 -retraction_prime_speed = =retraction_speed +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.1mm.inst.cfg index ea8f7837a2..89c3b6f361 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.1mm.inst.cfg @@ -14,7 +14,10 @@ weight = 0 [values] ooze_shield_angle = 40 raft_airgap = 0.4 -retraction_prime_speed = =retraction_speed +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.2mm.inst.cfg index 88b89d7a47..662aa9fb66 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_nylon_0.2mm.inst.cfg @@ -15,7 +15,10 @@ weight = -2 material_print_temperature = =default_material_print_temperature + 10 ooze_shield_angle = 40 raft_airgap = 0.4 -retraction_prime_speed = =retraction_speed +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg index 046b9f6ce2..4e217f5cca 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.06mm.inst.cfg @@ -31,7 +31,11 @@ speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) +support_bottom_distance = =support_z_distance support_interface_density = 87.5 +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg index c1d488bf5f..b5ec910404 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.15mm.inst.cfg @@ -31,7 +31,11 @@ speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) +support_bottom_distance = =support_z_distance support_interface_density = 87.5 +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg index d2a3b67d4c..ff2159e522 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.1mm.inst.cfg @@ -30,7 +30,11 @@ speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) +support_bottom_distance = =support_z_distance support_interface_density = 87.5 +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg index c95009797d..a524c5c040 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pc_0.2mm.inst.cfg @@ -31,7 +31,11 @@ speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) +support_bottom_distance = =support_z_distance support_interface_density = 87.5 +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.06mm.inst.cfg index fdbdb811c1..adc4670e8d 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.06mm.inst.cfg @@ -20,4 +20,8 @@ speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.15mm.inst.cfg index d71148e5ce..3967838a12 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.15mm.inst.cfg @@ -19,4 +19,8 @@ speed_print = 60 speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 40 / 60) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.1mm.inst.cfg index 69f6059c00..7829f46334 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.1mm.inst.cfg @@ -20,4 +20,8 @@ speed_infill = =math.ceil(speed_print * 45 / 55) speed_print = 55 speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.2mm.inst.cfg index 5291946ccd..db079b04c9 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_petg_0.2mm.inst.cfg @@ -19,4 +19,8 @@ speed_print = 60 speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg index 6de3ad3edb..4b8f9f433b 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.06mm.inst.cfg @@ -21,5 +21,9 @@ retraction_prime_speed = =retraction_speed speed_print = 50 speed_topbottom = =math.ceil(speed_print * 35 / 50) speed_wall = =math.ceil(speed_print * 35 / 50) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg index f076447401..5581284de4 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.15mm.inst.cfg @@ -21,5 +21,9 @@ speed_print = 70 speed_topbottom = =math.ceil(speed_print * 35 / 70) speed_wall = =math.ceil(speed_print * 45 / 70) speed_wall_0 = =math.ceil(speed_wall * 35 / 70) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg index 40b7c5b843..30af138465 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.1mm.inst.cfg @@ -17,5 +17,9 @@ machine_nozzle_heat_up_speed = 1.6 prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg index 8452bce4a9..e5dc960d98 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.2mm.inst.cfg @@ -24,5 +24,9 @@ retraction_prime_speed = =retraction_speed speed_topbottom = =math.ceil(speed_print * 40 / 70) speed_wall = =math.ceil(speed_print * 55 / 70) speed_wall_0 = =math.ceil(speed_wall * 45 / 50) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg index 98990f6fe0..719adc820b 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pla_0.3mm.inst.cfg @@ -27,6 +27,10 @@ raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 speed_wall = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.9 wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg index b2cbff9177..70d53dd331 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.15mm.inst.cfg @@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_wall = =math.ceil(speed_print * 25 / 25) speed_wall_0 = =math.ceil(speed_wall * 25 / 25) support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg index 309f646559..009039d972 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.1mm.inst.cfg @@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_wall = =math.ceil(speed_print * 25 / 25) speed_wall_0 = =math.ceil(speed_wall * 25 / 25) support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg index 234ec47e8f..9c2870b661 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_pp_0.2mm.inst.cfg @@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_wall = =math.ceil(speed_print * 25 / 25) speed_wall_0 = =math.ceil(speed_wall * 25 / 25) support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg index 6268da9a9f..e091136b32 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.06mm.inst.cfg @@ -21,5 +21,9 @@ speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg index d94df8b8f3..450c82a0c2 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.15mm.inst.cfg @@ -21,5 +21,9 @@ speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg index cd358539bb..fa25ccb171 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.1mm.inst.cfg @@ -21,5 +21,9 @@ speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg index a0d698a327..fd3574f313 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.2mm.inst.cfg @@ -22,5 +22,9 @@ speed_roofing = =math.ceil(speed_wall * 20 / 24) speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 36 / 50) speed_wall_0 = =math.ceil(speed_print * 26 / 50) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg index e9e0c2fc7f..cbf086000e 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tough-pla_0.3mm.inst.cfg @@ -27,6 +27,10 @@ raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 speed_wall = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg index 18aaeb6470..c6e9fc00d1 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.15mm.inst.cfg @@ -36,6 +36,10 @@ speed_topbottom = =math.ceil(speed_print * 0.8) speed_wall = =math.ceil(speed_print * 25 / 25) speed_wall_0 = =math.ceil(speed_wall * 25 / 25) support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg index e8e7410cd5..043aa880ad 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.1mm.inst.cfg @@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 0.8) speed_wall = =math.ceil(speed_print * 25 / 25) speed_wall_0 = =math.ceil(speed_wall * 25 / 25) support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg index e24ab778b5..0c8d7eb429 100644 --- a/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_tpu_0.2mm.inst.cfg @@ -36,6 +36,10 @@ speed_topbottom = =math.ceil(speed_print * 0.8) speed_wall = =math.ceil(speed_print * 25 / 25) speed_wall_0 = =math.ceil(speed_wall * 25 / 25) support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.15mm.inst.cfg index 3dff641b42..fd25f84ca5 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.15mm.inst.cfg @@ -22,8 +22,9 @@ speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance / 2 -support_z_distance = =layer_height * 2 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.2mm.inst.cfg index f9d1cb1295..ea26d6b146 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.4_petcf_0.2mm.inst.cfg @@ -22,8 +22,9 @@ speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance / 2 -support_z_distance = =layer_height * 2 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.15mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.15mm.inst.cfg index 864e913a9c..b49ee3061e 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.15mm.inst.cfg @@ -22,8 +22,9 @@ speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance / 2 -support_z_distance = =layer_height * 2 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.2mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.2mm.inst.cfg index 138b118073..db82d6e40e 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.2mm.inst.cfg @@ -22,8 +22,9 @@ speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance / 2 -support_z_distance = =layer_height * 2 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.3mm.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.3mm.inst.cfg index 6f899afbbf..8e94df9387 100644 --- a/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_petcf_0.3mm.inst.cfg @@ -22,8 +22,9 @@ speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance / 2 -support_z_distance = =layer_height * 2 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_abs_0.1mm.inst.cfg index ae9144728a..08053a4f6d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_abs_0.1mm.inst.cfg @@ -13,4 +13,8 @@ weight = 0 [values] speed_topbottom = =math.ceil(speed_print * 30 / 55) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_cpe_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_cpe_0.1mm.inst.cfg index ba519667d0..ca39f8dc7a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_cpe_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_cpe_0.1mm.inst.cfg @@ -14,5 +14,9 @@ weight = 0 [values] speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_nylon_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_nylon_0.1mm.inst.cfg index 710701b22a..009628fd2e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_nylon_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_nylon_0.1mm.inst.cfg @@ -15,11 +15,15 @@ weight = 0 machine_nozzle_cool_down_speed = 0.9 machine_nozzle_heat_up_speed = 1.4 ooze_shield_angle = 40 -raft_airgap = 0.15 +raft_airgap = 0.4 retraction_min_travel = 5 speed_print = 70 speed_topbottom = =math.ceil(speed_print * 30 / 70) speed_wall = =math.ceil(speed_print * 30 / 70) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg index f5a34415b4..eeffba5b98 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_pc_0.1mm.inst.cfg @@ -29,7 +29,11 @@ speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) +support_bottom_distance = =support_z_distance support_interface_density = 87.5 +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_petg_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_petg_0.1mm.inst.cfg index 7b41e45d1c..374ef26315 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_petg_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_petg_0.1mm.inst.cfg @@ -15,5 +15,9 @@ weight = 0 material_print_temperature = =default_material_print_temperature - 5 speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_pla_0.1mm.inst.cfg index 199995e5a1..2b99c9acce 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_pla_0.1mm.inst.cfg @@ -21,6 +21,10 @@ retraction_hop = 0.2 speed_print = 30 speed_wall = =math.ceil(speed_print * 25 / 30) speed_wall_0 = =math.ceil(speed_print * 20 / 30) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.72 travel_avoid_distance = 0.4 wall_0_inset = 0.015 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg index 4b9d902b31..d38c036bcd 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_pp_0.1mm.inst.cfg @@ -34,6 +34,10 @@ speed_print = 25 speed_wall = =math.ceil(speed_print * 25 / 25) speed_wall_0 = =math.ceil(speed_wall * 25 / 25) support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_tough-pla_0.1mm.inst.cfg index 81d1d1f735..4f02a053b4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_tough-pla_0.1mm.inst.cfg @@ -21,6 +21,10 @@ speed_print = 30 speed_topbottom = =math.ceil(speed_print * 20 / 30) speed_wall = =math.ceil(speed_print * 25 / 30) speed_wall_0 = =math.ceil(speed_print * 20 / 30) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.72 wall_0_inset = 0.015 wall_0_wipe_dist = 0.25 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg index 8ecbf19956..7694e37ba3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.06mm.inst.cfg @@ -22,4 +22,8 @@ speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg index f576b20987..c27a4a1b57 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.15mm.inst.cfg @@ -23,4 +23,8 @@ speed_print = 60 speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 40 / 60) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg index 65e2cb0361..f19345a0fe 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.1mm.inst.cfg @@ -22,4 +22,8 @@ speed_infill = =math.ceil(speed_print * 40 / 55) speed_print = 55 speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg index 337054f0de..03f67f9924 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_abs_0.2mm.inst.cfg @@ -23,4 +23,8 @@ speed_print = 60 speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg index e95804af3a..72e6ead239 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.06mm.inst.cfg @@ -28,6 +28,9 @@ speed_print = 40 speed_topbottom = =math.ceil(speed_print * 30 / 35) speed_wall = =math.ceil(speed_print * 35 / 40) speed_wall_0 = =math.ceil(speed_wall * 30 / 35) -support_z_distance = =layer_height +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.4/layer_height)*layer_height wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg index ac1e50fd49..1a4e89f783 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.15mm.inst.cfg @@ -26,6 +26,9 @@ speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 45 / 45) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) -support_z_distance = =layer_height +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.4/layer_height)*layer_height wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg index 77ccf92459..6c2e7b2f94 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.1mm.inst.cfg @@ -28,6 +28,9 @@ speed_print = 40 speed_topbottom = =math.ceil(speed_print * 30 / 35) speed_wall = =math.ceil(speed_print * 35 / 40) speed_wall_0 = =math.ceil(speed_wall * 30 / 35) -support_z_distance = =layer_height +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.4/layer_height)*layer_height wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg index dde22bbd42..b2182320fd 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe-plus_0.2mm.inst.cfg @@ -26,6 +26,9 @@ speed_print = 50 speed_topbottom = =math.ceil(speed_print * 40 / 50) speed_wall = =math.ceil(speed_print * 50 / 50) speed_wall_0 = =math.ceil(speed_wall * 40 / 50) -support_z_distance = =layer_height +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.4/layer_height)*layer_height wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.06mm.inst.cfg index 5e96ec7e28..ab7fc5ef9b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.06mm.inst.cfg @@ -21,4 +21,8 @@ speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.15mm.inst.cfg index ec4cef925d..7c27d79d2d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.15mm.inst.cfg @@ -20,4 +20,8 @@ speed_print = 60 speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 40 / 60) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.1mm.inst.cfg index 2928127314..20c036907a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.1mm.inst.cfg @@ -20,4 +20,8 @@ speed_infill = =math.ceil(speed_print * 45 / 55) speed_print = 55 speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.2mm.inst.cfg index af34967c61..b1094daf5a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_cpe_0.2mm.inst.cfg @@ -20,4 +20,8 @@ speed_print = 60 speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.06mm.inst.cfg index e243e33749..0abeb14221 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.06mm.inst.cfg @@ -14,7 +14,10 @@ weight = 1 [values] ooze_shield_angle = 40 raft_airgap = 0.4 -retraction_prime_speed = =retraction_speed +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.15mm.inst.cfg index 8833881fdf..94536f1904 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.15mm.inst.cfg @@ -15,7 +15,10 @@ weight = -1 material_print_temperature = =default_material_print_temperature + 5 ooze_shield_angle = 40 raft_airgap = 0.4 -retraction_prime_speed = =retraction_speed +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.1mm.inst.cfg index 70f76a5266..f07d801dc0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.1mm.inst.cfg @@ -14,7 +14,10 @@ weight = 0 [values] ooze_shield_angle = 40 raft_airgap = 0.4 -retraction_prime_speed = =retraction_speed +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.2mm.inst.cfg index 0f7b604b15..005ccf6e59 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_nylon_0.2mm.inst.cfg @@ -15,7 +15,10 @@ weight = -2 material_print_temperature = =default_material_print_temperature + 10 ooze_shield_angle = 40 raft_airgap = 0.4 -retraction_prime_speed = =retraction_speed +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 30 switch_extruder_retraction_amount = 30 switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg index c19de26c93..a2e3bd792b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.06mm.inst.cfg @@ -31,7 +31,11 @@ speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) +support_bottom_distance = =support_z_distance support_interface_density = 87.5 +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg index b21da5f2e4..9ef073b635 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.15mm.inst.cfg @@ -31,7 +31,11 @@ speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) +support_bottom_distance = =support_z_distance support_interface_density = 87.5 +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg index c99934288e..e118f0db8a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.1mm.inst.cfg @@ -30,7 +30,11 @@ speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) +support_bottom_distance = =support_z_distance support_interface_density = 87.5 +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg index 7eedf33df9..4351a289b9 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pc_0.2mm.inst.cfg @@ -31,7 +31,11 @@ speed_print = 50 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) +support_bottom_distance = =support_z_distance support_interface_density = 87.5 +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.06mm.inst.cfg index 8bebbf4113..6fe817fba1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.06mm.inst.cfg @@ -20,4 +20,8 @@ speed_infill = =math.ceil(speed_print * 40 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.15mm.inst.cfg index ce957c1a50..060e9b3540 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.15mm.inst.cfg @@ -19,4 +19,8 @@ speed_print = 60 speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 40 / 60) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.1mm.inst.cfg index 4bba37dd01..1e04aad8ce 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.1mm.inst.cfg @@ -20,4 +20,8 @@ speed_infill = =math.ceil(speed_print * 45 / 55) speed_print = 55 speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.2mm.inst.cfg index 6b7f2fba1a..aaf279f115 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_petg_0.2mm.inst.cfg @@ -19,4 +19,8 @@ speed_print = 60 speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg index 5facf88970..f34549bc78 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.06mm.inst.cfg @@ -21,5 +21,9 @@ retraction_prime_speed = =retraction_speed speed_print = 50 speed_topbottom = =math.ceil(speed_print * 35 / 50) speed_wall = =math.ceil(speed_print * 35 / 50) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg index 262fa01441..4a9e914b99 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.15mm.inst.cfg @@ -21,5 +21,9 @@ speed_print = 70 speed_topbottom = =math.ceil(speed_print * 35 / 70) speed_wall = =math.ceil(speed_print * 45 / 70) speed_wall_0 = =math.ceil(speed_wall * 35 / 70) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg index b05f4fdd62..dc73f13bb5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.1mm.inst.cfg @@ -17,5 +17,9 @@ machine_nozzle_heat_up_speed = 1.6 prime_tower_enable = False raft_airgap = 0.25 retraction_prime_speed = =retraction_speed +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg index aea145b1f9..ead512bb50 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.2mm.inst.cfg @@ -24,5 +24,9 @@ retraction_prime_speed = =retraction_speed speed_topbottom = =math.ceil(speed_print * 40 / 70) speed_wall = =math.ceil(speed_print * 55 / 70) speed_wall_0 = =math.ceil(speed_wall * 45 / 50) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg index 31d2b31017..c6641e7a08 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pla_0.3mm.inst.cfg @@ -27,6 +27,10 @@ raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 speed_wall = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.9 wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg index 318a14834f..9712132da9 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.15mm.inst.cfg @@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_wall = =math.ceil(speed_print * 25 / 25) speed_wall_0 = =math.ceil(speed_wall * 25 / 25) support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg index 1527a11fd0..79a0f11262 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.1mm.inst.cfg @@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_wall = =math.ceil(speed_print * 25 / 25) speed_wall_0 = =math.ceil(speed_wall * 25 / 25) support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg index 356fa2d4cb..70207475dc 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_pp_0.2mm.inst.cfg @@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_wall = =math.ceil(speed_print * 25 / 25) speed_wall_0 = =math.ceil(speed_wall * 25 / 25) support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg index 5f63f533f7..f3e17318b6 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.06mm.inst.cfg @@ -21,5 +21,9 @@ speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg index bf64c24170..6a3ec605ad 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.15mm.inst.cfg @@ -21,5 +21,9 @@ speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg index 977232f4d4..9e3a3586f3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.1mm.inst.cfg @@ -21,5 +21,9 @@ speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg index 8e904a41a5..506ed71f9a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.2mm.inst.cfg @@ -22,5 +22,9 @@ speed_roofing = =math.ceil(speed_wall * 20 / 24) speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 36 / 50) speed_wall_0 = =math.ceil(speed_print * 26 / 50) +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg index 0ac60ad5a2..5590368369 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tough-pla_0.3mm.inst.cfg @@ -27,6 +27,10 @@ raft_airgap = 0.25 retraction_prime_speed = =retraction_speed speed_print = 50 speed_wall = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 wall_line_width_0 = =line_width * (1 + magic_spiralize * 0.25) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg index b641bdbe13..281d99afb1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.15mm.inst.cfg @@ -36,6 +36,10 @@ speed_topbottom = =math.ceil(speed_print * 0.8) speed_wall = =math.ceil(speed_print * 25 / 25) speed_wall_0 = =math.ceil(speed_wall * 25 / 25) support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg index 9a4f7c61fd..450b9adeb4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.1mm.inst.cfg @@ -35,6 +35,10 @@ speed_topbottom = =math.ceil(speed_print * 0.8) speed_wall = =math.ceil(speed_print * 25 / 25) speed_wall_0 = =math.ceil(speed_wall * 25 / 25) support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg index 3461b45736..21fbcff466 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_tpu_0.2mm.inst.cfg @@ -36,6 +36,10 @@ speed_topbottom = =math.ceil(speed_print * 0.8) speed_wall = =math.ceil(speed_print * 25 / 25) speed_wall_0 = =math.ceil(speed_wall * 25 / 25) support_angle = 50 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.15mm.inst.cfg index 4921b87434..88ee346758 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.15mm.inst.cfg @@ -22,8 +22,9 @@ speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance / 2 -support_z_distance = =layer_height * 2 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.2mm.inst.cfg index 2dde7772b6..00f9ef51ff 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.4_petcf_0.2mm.inst.cfg @@ -22,8 +22,9 @@ speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance / 2 -support_z_distance = =layer_height * 2 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 0.8 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.15mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.15mm.inst.cfg index df11fcf377..c9a6a2bafe 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.15mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.15mm.inst.cfg @@ -22,8 +22,9 @@ speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance / 2 -support_z_distance = =layer_height * 2 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.2mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.2mm.inst.cfg index 759f3ed41d..7abb9e4018 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.2mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.2mm.inst.cfg @@ -22,8 +22,9 @@ speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance / 2 -support_z_distance = =layer_height * 2 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.3mm.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.3mm.inst.cfg index f18c0e018e..e0c6719bde 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.3mm.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_petcf_0.3mm.inst.cfg @@ -22,8 +22,9 @@ speed_topbottom = =speed_print speed_wall = =speed_print speed_wall_0 = =speed_wall speed_wall_x = =speed_wall -support_bottom_distance = =support_z_distance / 2 -support_top_distance = =support_z_distance / 2 -support_z_distance = =layer_height * 2 +support_bottom_distance = =support_z_distance +support_interface_enable = True +support_top_distance = =support_z_distance +support_z_distance = =math.ceil(0.3/layer_height)*layer_height top_bottom_thickness = 1.2 diff --git a/resources/setting_visibility/expert.cfg b/resources/setting_visibility/expert.cfg index cab4bb7d8f..5388681e8f 100644 --- a/resources/setting_visibility/expert.cfg +++ b/resources/setting_visibility/expert.cfg @@ -366,6 +366,10 @@ multiple_mesh_overlap carve_multiple_volumes alternate_carve_order remove_empty_first_layers +meshfix_fluid_motion_enabled +meshfix_fluid_motion_shift_distance +meshfix_fluid_motion_small_distance +meshfix_fluid_motion_angle [blackmagic] print_sequence diff --git a/resources/themes/cura-light/icons/default/Heart.svg b/resources/themes/cura-light/icons/default/Heart.svg new file mode 100644 index 0000000000..793dcbd6b5 --- /dev/null +++ b/resources/themes/cura-light/icons/default/Heart.svg @@ -0,0 +1,7 @@ + + + + + + +